comparison src/main/java/edu/harvard/iq/dataverse/DatasetLinkingServiceBean.java @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
comparison
equal deleted inserted replaced
9:5926d6419569 10:a50cf11e5178
1 /*
2 * To change this license header, choose License Headers in Project Properties.
3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor.
5 */
6 package edu.harvard.iq.dataverse;
7
8 import java.util.ArrayList;
9 import java.util.List;
10 import javax.ejb.Stateless;
11 import javax.inject.Named;
12 import javax.persistence.EntityManager;
13 import javax.persistence.PersistenceContext;
14 import javax.persistence.Query;
15 import javax.persistence.TypedQuery;
16
17 /**
18 *
19 * @author skraffmiller
20 */
21 @Stateless
22 @Named
23 public class DatasetLinkingServiceBean implements java.io.Serializable {
24
25 @PersistenceContext(unitName = "VDCNet-ejbPU")
26 private EntityManager em;
27
28 /**
29 * @todo Should this method simply be deleted? It isn't used anywhere and is
30 * throwing exceptions: Syntax error parsing [select object(o.dataverse.id)
31 * from DatasetLinkingDataverse as o where o.linkingDataverse.id
32 * =:linkingDataverseId order by o.id]
33 */
34 @Deprecated
35 public List<Dataset> findLinkedDataverses(Long linkingDataverseId) {
36 List<Dataset> retList = new ArrayList();
37 Query query = em.createQuery("select object(o.dataverse.id) from DatasetLinkingDataverse as o where o.linkingDataverse.id =:linkingDataverseId order by o.id");
38 query.setParameter("linkingDataverseId", linkingDataverseId);
39 for (Object o : query.getResultList()) {
40 DatasetLinkingDataverse convterted = (DatasetLinkingDataverse) o;
41 retList.add(convterted.getDataset());
42 }
43 return retList;
44 }
45
46 public List<Dataset> findDatasetsThisDataverseIdHasLinkedTo(Long dataverseId) {
47 List<Dataset> datasets = new ArrayList<>();
48 TypedQuery<DatasetLinkingDataverse> typedQuery = em.createQuery("SELECT OBJECT(o) FROM DatasetLinkingDataverse AS o WHERE o.linkingDataverse.id = :dataverseId", DatasetLinkingDataverse.class);
49 typedQuery.setParameter("dataverseId", dataverseId);
50 List<DatasetLinkingDataverse> datasetLinkingDataverses = typedQuery.getResultList();
51 for (DatasetLinkingDataverse datasetLinkingDataverse : datasetLinkingDataverses) {
52 datasets.add(datasetLinkingDataverse.getDataset());
53 }
54 return datasets;
55 }
56
57 public List<Dataverse> findLinkingDataverses(Long datasetId) {
58 List<Dataverse> retList = new ArrayList();
59 for (DatasetLinkingDataverse dld : findDatasetLinkingDataverses(datasetId)) {
60 retList.add(dld.getLinkingDataverse());
61 }
62 return retList;
63 }
64
65 public List<DatasetLinkingDataverse> findDatasetLinkingDataverses(Long datasetId) {
66 return em.createQuery("select object(o) from DatasetLinkingDataverse as o where o.dataset.id =:datasetId order by o.id")
67 .setParameter("datasetId", datasetId)
68 .getResultList();
69 }
70
71 public void save(DatasetLinkingDataverse datasetLinkingDataverse) {
72 if (datasetLinkingDataverse.getId() == null) {
73 em.persist(datasetLinkingDataverse);
74 } else {
75 em.merge(datasetLinkingDataverse);
76 }
77 }
78
79 public boolean alreadyLinked(Dataverse dataverse, Dataset dataset) {
80 TypedQuery<DatasetLinkingDataverse> typedQuery = em.createQuery("SELECT OBJECT(o) FROM DatasetLinkingDataverse AS o WHERE o.linkingDataverse.id = :dataverseId AND o.dataset.id = :datasetId", DatasetLinkingDataverse.class);
81 typedQuery.setParameter("dataverseId", dataverse.getId());
82 typedQuery.setParameter("datasetId", dataset.getId());
83 return !typedQuery.getResultList().isEmpty();
84 }
85
86 }