Project

General

Profile

1

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

    
4
import eu.dnetlib.goldoa.domain.Affiliation;
5
import eu.dnetlib.goldoa.domain.Organization;
6
import eu.dnetlib.goldoa.domain.User;
7
import org.hibernate.Criteria;
8
import org.hibernate.criterion.MatchMode;
9
import org.hibernate.criterion.Restrictions;
10
import org.springframework.stereotype.Repository;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14

    
15

    
16
/**
17
 * Created by antleb on 3/13/15.
18
 */
19
@Repository
20
public class OrganizationDAO extends AbstractDao<String, Organization>{
21

    
22
	private static final String SEARCH_ORGANIZATIONS = "select id, name from organisation where lower(name) like lower(?)";
23
	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";
24
	private static final String GET_AFFILIATED_WITH_USER = "select o.id, name, shortname, array_agg(distinct budget) as budgets \n" +
25
			"from organisation o \n" +
26
			"left join organization_budget ob on ob.organization=o.id \n" +
27
			"join affiliation a on a.organization=o.id\n" +
28
			"where a.person=?\n" +
29
			"group by o.id, name, shortname";
30

    
31
	private final String INSERT_ORGANIZATION = "insert into organisation (name, shortname, source, id) values (?,?,?,?)";
32
	private final String UPDATE_ORGANIZATION = "update organisation set name=?, shortname=?, source=? where id=?";
33

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

    
36
	@SuppressWarnings("unchecked")
37
	public Organization getOrganization(String id) {
38
		List<Organization> rs = (List<Organization>) createEntityCriteria().add(Restrictions.ilike("id", id)).list();
39
		if(rs.size() == 0)
40
			return null;
41
		return rs.get(0);
42
	}
43

    
44
	@SuppressWarnings("unchecked")
45
	public List<Object> search(String term) {
46
		return createEntityCriteria().add(Restrictions.
47
				ilike("name",term, MatchMode.ANYWHERE)).list();
48
	}
49

    
50
	public Organization saveOrganization(Organization organization) {
51
	    persist(organization);
52
		return organization;
53
	}
54

    
55
	public void insertOrganization(final Organization organization) {
56
		saveOrganization(organization);
57
	}
58

    
59
	public List<Organization> getAffiliatedWithUser(String email) {
60
	    Criteria cr = getSession().createCriteria(User.class);
61
        User user = (User) cr.add(Restrictions.eq("email",email)).list().get(0);
62

    
63
        List<Affiliation> afs = user.getAffiliations();
64
        List<Organization> orgs = new ArrayList<>();
65
        for(Affiliation af : afs)
66
            orgs.add(af.getOrganization());
67
        return orgs;
68
	}
69

    
70
	public void deleteOrganizationBudgets(Organization organization) {
71
		/*organization.setBudgets(null);
72
		saveOrganization(organization);*/
73
	}
74
}
75

    
(7-7/12)