Project

General

Profile

1

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

    
4
import eu.dnetlib.goldoa.domain.*;
5
import eu.dnetlib.goldoa.service.PublicationManagerImpl;
6
import eu.dnetlib.goldoa.service.UserManagerImpl;
7
import org.apache.commons.codec.digest.DigestUtils;
8
import org.apache.log4j.Logger;
9
import org.hibernate.criterion.Restrictions;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
12
import org.springframework.stereotype.Repository;
13

    
14
import javax.sql.DataSource;
15
import java.sql.PreparedStatement;
16
import java.sql.ResultSet;
17
import java.sql.SQLException;
18
import java.sql.Types;
19
import java.util.ArrayList;
20
import java.util.List;
21

    
22
@Repository
23
public class PublicationDAO extends AbstractDao<String,Publication>{
24

    
25
	private static Logger logger = Logger.getLogger(PublicationDAO.class);
26

    
27
	@SuppressWarnings("unchecked")
28
	public Publication getPublication(final String publicationId) {
29
        List<Publication> ps = createEntityCriteria().add(Restrictions.eq("id",publicationId)).list();
30
        if(ps.size() > 0)
31
            return ps.get(0);
32
        return null;
33
	}
34

    
35
	public Publication savePublication(Publication publication) {
36

    
37
		for(Author a : publication.getAuthors())
38
			a.setId(DigestUtils.md5Hex(a.getFirstname()+ a.getLastname() + a.getEmail() +
39
					(a.getOrganization()!=null?a.getOrganization().getId():"") +
40
					(a.getDepartment()!=null?a.getDepartment():"")
41
			) + publication.getId());
42
		
43
		Publication p = getPublication(publication.getId());
44
		Publication pub_merged = null;
45

    
46
		if(p!=null)
47
			pub_merged = (Publication) getSession().merge(publication);
48
		else
49
			persist(publication);
50

    
51

    
52
		return publication;
53
	}
54

    
55
}
(9-9/12)