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
			if ( a != null)
31
				a.setId(DigestUtils.md5Hex(a.getFirstname() + a.getLastname() + a.getEmail() +
32
						(a.getOrganization() != null ? a.getOrganization().getId() : "") +
33
						(a.getDepartment() != null ? a.getDepartment() : "")
34
				) + publication.getId());
35
		}
36

    
37

    
38
		getSession().saveOrUpdate(publication);
39
		return publication;
40
	}
41

    
42
	public BigInteger generateIdentifierID() {
43
		return (BigInteger) getSession().createSQLQuery("select nextval('identifier_id_seq') as id").list().get(0);
44
	}
45
}
(9-9/12)