Project

General

Profile

1

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

    
4
import eu.dnetlib.goldoa.domain.*;
5
import org.hibernate.Criteria;
6
import org.hibernate.criterion.Restrictions;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
9
import org.springframework.jdbc.core.JdbcTemplate;
10
import org.springframework.jdbc.core.PreparedStatementSetter;
11
import org.springframework.jdbc.core.RowMapper;
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.Arrays;
21
import java.util.List;
22

    
23

    
24
/**
25
 * Created by antleb on 3/13/15.
26
 */
27
@Repository
28
public class OrganizationDAO extends AbstractDao<String, Organization>{
29

    
30
	private static final String SEARCH_ORGANIZATIONS = "select id, name from organisation where lower(name) like lower(?)";
31
	private static final String GET_ORGANIZATION = "select o.id, name, shortname, array_agg(distinct budget) as budgets from organisation o left join organization_budget ob on ob.organization=o.id where o.id = ? group by o.id, name, shortname";
32
	private static final String GET_AFFILIATED_WITH_USER = "select o.id, name, shortname, array_agg(distinct budget) as budgets \n" +
33
			"from organisation o \n" +
34
			"left join organization_budget ob on ob.organization=o.id \n" +
35
			"join affiliation a on a.organization=o.id\n" +
36
			"where a.person=?\n" +
37
			"group by o.id, name, shortname";
38

    
39
	private final String INSERT_ORGANIZATION = "insert into organisation (name, shortname, source, id) values (?,?,?,?)";
40
	private final String UPDATE_ORGANIZATION = "update organisation set name=?, shortname=?, source=? where id=?";
41

    
42
	private final String INSERT_ORGANIZATION_BUDGET = "insert into organization_budget (organization, budget) values (?, ?)";
43

    
44
	@SuppressWarnings("unchecked")
45
	public Organization getOrganization(String id) {
46
		List<Organization> rs = (List<Organization>) createEntityCriteria().add(Restrictions.ilike("id", id)).list();
47
		if(rs.size() == 0)
48
			return null;
49
		return rs.get(0);
50
	}
51

    
52
	@SuppressWarnings("unchecked")
53
	public List<Object> search(String term) {
54
		return createEntityCriteria().add(Restrictions.
55
				like("name","%" + term.toLowerCase() + "%").ignoreCase()).list();
56
	}
57

    
58
	public Organization saveOrganization(Organization organization) {
59
	    persist(organization);
60
		return organization;
61
	}
62

    
63
	public void insertOrganization(final Organization organization) {
64
		saveOrganization(organization);
65
	}
66

    
67
	public List<Organization> getAffiliatedWithUser(String email) {
68
	    Criteria cr = getSession().createCriteria(User.class);
69
        User user = (User) cr.add(Restrictions.eq("email",email)).list().get(0);
70

    
71
        List<Affiliation> afs = user.getAffiliations();
72
        List<Organization> orgs = new ArrayList<>();
73
        for(Affiliation af : afs)
74
            orgs.add(af.getOrganization());
75
        return orgs;
76
	}
77

    
78
	public void deleteOrganizationBudgets(Organization organization) {
79
		/*organization.setBudgets(null);
80
		saveOrganization(organization);*/
81
	}
82
}
83

    
(7-7/12)