Project

General

Profile

1

    
2
package eu.dnetlib.goldoa.service.dao;
3

    
4
import eu.dnetlib.goldoa.domain.Author;
5
import eu.dnetlib.goldoa.domain.Publication;
6
import org.apache.commons.codec.digest.DigestUtils;
7
import org.apache.log4j.Logger;
8
import org.hibernate.criterion.Restrictions;
9
import org.springframework.stereotype.Repository;
10

    
11
import java.math.BigInteger;
12
import java.util.List;
13

    
14
@Repository
15
public class PublicationDAO extends AbstractDao<String,Publication>{
16

    
17
	private static Logger logger = Logger.getLogger(PublicationDAO.class);
18

    
19
	@SuppressWarnings("unchecked")
20
	public Publication getPublication(final String publicationId) {
21
        List<Publication> ps = createEntityCriteria().add(Restrictions.eq("id",publicationId)).list();
22
        if(ps.size() > 0)
23
            return ps.get(0);
24
        return null;
25
	}
26

    
27
	public Publication savePublication(Publication publication) {
28

    
29
		for(Author a : publication.getAuthors())
30
			a.setId(DigestUtils.md5Hex(a.getFirstname()+ a.getLastname() + a.getEmail() +
31
					(a.getOrganization()!=null?a.getOrganization().getId():"") +
32
					(a.getDepartment()!=null?a.getDepartment():"")
33
			) + publication.getId());
34
		
35
		Publication p = getPublication(publication.getId());
36
		Publication pub_merged = null;
37

    
38
		if(p!=null)
39
			pub_merged = (Publication) getSession().merge(publication);
40
		else
41
			persist(publication);
42

    
43

    
44
		return publication;
45
	}
46

    
47
	public BigInteger generateIdentifierID() {
48
		return (BigInteger) getSession().createSQLQuery("select nextval('identifier_id_seq') as id").list().get(0);
49
	}
50
}
(9-9/12)