55 */
66package edu .harvard .iq .dataverse ;
77
8+ import jakarta .ejb .EJB ;
89import java .util .ArrayList ;
910import java .util .List ;
1011import java .util .logging .Logger ;
@@ -27,6 +28,9 @@ public class DatasetLinkingServiceBean implements java.io.Serializable {
2728 @ PersistenceContext (unitName = "VDCNet-ejbPU" )
2829 private EntityManager em ;
2930
31+ @ EJB
32+ DataverseServiceBean dataverseService ;
33+
3034
3135
3236 public List <Dataset > findLinkedDatasets (Long dataverseId ) {
@@ -40,13 +44,44 @@ public List<Dataset> findLinkedDatasets(Long dataverseId) {
4044 }
4145
4246 public List <Dataverse > findLinkingDataverses (Long datasetId ) {
47+ return findLinkingDataverses (datasetId , "" );
48+ }
49+
50+ public List <Dataverse > findLinkingDataverses (Long datasetId , String searchTerm ) {
4351 List <Dataverse > retList = new ArrayList <>();
44- TypedQuery <DatasetLinkingDataverse > typedQuery = em .createNamedQuery ("DatasetLinkingDataverse.findByDatasetId" , DatasetLinkingDataverse .class )
45- .setParameter ("datasetId" , datasetId );
46- for (DatasetLinkingDataverse datasetLinkingDataverse : typedQuery .getResultList ()) {
47- retList .add (datasetLinkingDataverse .getLinkingDataverse ());
52+ if (searchTerm == null || searchTerm .isEmpty ()) {
53+ TypedQuery <DatasetLinkingDataverse > typedQuery = em .createNamedQuery ("DatasetLinkingDataverse.findByDatasetId" , DatasetLinkingDataverse .class )
54+ .setParameter ("datasetId" , datasetId );
55+ for (DatasetLinkingDataverse datasetLinkingDataverse : typedQuery .getResultList ()) {
56+ retList .add (datasetLinkingDataverse .getLinkingDataverse ());
57+ }
58+ return retList ;
59+
60+ } else {
61+
62+ String pattern = searchTerm .toLowerCase ();
63+
64+ String pattern1 = pattern + "%" ;
65+ String pattern2 = "% " + pattern + "%" ;
66+
67+ // Adjust the queries for very short, 1 and 2-character patterns:
68+ if (pattern .length () == 1 ) {
69+ pattern1 = pattern ;
70+ pattern2 = pattern + " %" ;
71+ }
72+ System .out .print ("pattern1: " + pattern1 );
73+ System .out .print ("pattern2: " + pattern2 );
74+ TypedQuery <Long > typedQuery
75+ = em .createNamedQuery ("DatasetLinkingDataverse.findByDatasetIdAndLinkingDataverseName" , Long .class )
76+ .setParameter (1 , datasetId ).setParameter (2 , "%dataverse" ).setParameter (3 , pattern1 )
77+ .setParameter (4 , pattern2 ).setParameter (5 , "%dataverse" ).setParameter (6 , pattern1 ).setParameter (7 , pattern2 );
78+
79+ for (Long id : typedQuery .getResultList ()) {
80+ retList .add (dataverseService .find (id ));
81+ }
82+ return retList ;
4883 }
49- return retList ;
84+
5085 }
5186
5287 public void save (DatasetLinkingDataverse datasetLinkingDataverse ) {
0 commit comments