Skip to content

Commit 38e61fb

Browse files
authored
BXC-3191 - Refactor/reorganize solr modules (#1283)
* Some initial splitting out of interfaces * Split up model, request, facet objects. Rename BriefObjectMetadata * Reorganize rest of solr-search classes, update references * Rename solr-search and solr-ingest modules * Update packages in indexing-solr * Fix name * Move context file * Expand cut off facet descriptions
1 parent 10bf2bf commit 38e61fb

File tree

275 files changed

+2269
-1983
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

275 files changed

+2269
-1983
lines changed

.github/workflows/build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
- name: Build with Maven
3636
run: mvn -B -U clean install -DskipTests
3737
- name: Verify DCR modules
38-
run: mvn verify -pl common-utils,access,access-common,admin,deposit,fcrepo-clients,metadata,model-api,model-fcrepo,persistence,auth-api,auth-fcrepo,services,services-camel,solr-ingest,solr-search,sword-server,integration
38+
run: mvn verify -pl common-utils,access,access-common,admin,deposit,fcrepo-clients,metadata,model-api,model-fcrepo,persistence,auth-api,auth-fcrepo,services,services-camel,search-api,search-solr,indexing-solr,sword-server,integration
3939

4040
- name: Set up nodejs
4141
uses: actions/setup-node@v2

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,10 @@ endif
124124
SUSPEND = "n"
125125

126126
build-bxc:
127-
mvn clean install -DskipTests -pl access,access-common,admin,deposit,fcrepo-clients,metadata,persistence,security,services,services-camel,solr-ingest,solr-search,sword-server,migration-util
127+
mvn clean install -DskipTests -pl common-utils,access,access-common,admin,deposit,fcrepo-clients,metadata,model-api,model-fcrepo,persistence,auth-api,auth-fcrepo,services,services-camel,indexing-solr,solr-search,sword-server,integration
128128

129129
verify-bxc:
130-
mvn verify -pl access,access-common,admin,deposit,fcrepo-clients,metadata,persistence,security,services,services-camel,solr-ingest,solr-search,sword-server,migration-util
130+
mvn verify -pl common-utils,access,access-common,admin,deposit,fcrepo-clients,metadata,model-api,model-fcrepo,persistence,auth-api,auth-fcrepo,services,services-camel,indexing-solr,solr-search,sword-server,integration
131131

132132
ifneq ($(VERSION), "")
133133
for i in static/js/public/*.js; do \

access-common/pom.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,12 @@
120120
</dependency>
121121
<dependency>
122122
<groupId>edu.unc.lib.cdr</groupId>
123-
<artifactId>solr-ingest</artifactId>
123+
<artifactId>indexing-solr</artifactId>
124124
<scope>test</scope>
125125
</dependency>
126126
<dependency>
127127
<groupId>edu.unc.lib.cdr</groupId>
128-
<artifactId>solr-ingest</artifactId>
128+
<artifactId>indexing-solr</artifactId>
129129
<scope>test</scope>
130130
<type>test-jar</type>
131131
</dependency>
@@ -191,7 +191,7 @@
191191
<!-- DCR -->
192192
<dependency>
193193
<groupId>edu.unc.lib.cdr</groupId>
194-
<artifactId>solr-search</artifactId>
194+
<artifactId>search-solr</artifactId>
195195
</dependency>
196196
<dependency>
197197
<groupId>edu.unc.lib.cdr</groupId>

solr-search/src/main/java/edu/unc/lib/dl/search/solr/service/SearchActionService.java renamed to access-common/src/main/java/edu/unc/lib/boxc/web/common/search/SearchActionService.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package edu.unc.lib.dl.search.solr.service;
16+
package edu.unc.lib.boxc.web.common.search;
1717

1818
import java.io.UnsupportedEncodingException;
1919
import java.net.URLDecoder;
@@ -25,9 +25,10 @@
2525
import org.springframework.beans.factory.annotation.Autowired;
2626
import org.springframework.stereotype.Component;
2727

28-
import edu.unc.lib.dl.search.solr.model.SearchState;
29-
import edu.unc.lib.dl.search.solr.util.FacetFieldUtil;
30-
import edu.unc.lib.dl.search.solr.util.SearchSettings;
28+
import edu.unc.lib.boxc.search.api.requests.SearchState;
29+
import edu.unc.lib.boxc.search.solr.config.SearchSettings;
30+
import edu.unc.lib.boxc.search.solr.services.SolrSearchService;
31+
import edu.unc.lib.boxc.search.solr.utils.FacetFieldUtil;
3132

3233
/**
3334
* Service class which parses and performs any number of actions on a provided SearchState object.

access-common/src/main/java/edu/unc/lib/dl/ui/controller/AbstractSolrSearchController.java

+10-12
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,16 @@
3030

3131
import edu.unc.lib.boxc.auth.api.models.AccessGroupSet;
3232
import edu.unc.lib.boxc.auth.fcrepo.services.GroupsThreadStore;
33-
import edu.unc.lib.dl.search.solr.exception.InvalidHierarchicalFacetException;
34-
import edu.unc.lib.dl.search.solr.model.HierarchicalBrowseRequest;
35-
import edu.unc.lib.dl.search.solr.model.SearchRequest;
36-
import edu.unc.lib.dl.search.solr.model.SearchResultResponse;
37-
import edu.unc.lib.dl.search.solr.model.SearchState;
38-
import edu.unc.lib.dl.search.solr.service.ChildrenCountService;
39-
import edu.unc.lib.dl.search.solr.service.SearchActionService;
40-
import edu.unc.lib.dl.search.solr.service.SearchStateFactory;
41-
import edu.unc.lib.dl.search.solr.util.SearchSettings;
42-
import edu.unc.lib.dl.search.solr.util.SearchStateUtil;
33+
import edu.unc.lib.boxc.search.api.exceptions.InvalidHierarchicalFacetException;
34+
import edu.unc.lib.boxc.search.api.requests.HierarchicalBrowseRequest;
35+
import edu.unc.lib.boxc.search.api.requests.SearchRequest;
36+
import edu.unc.lib.boxc.search.api.requests.SearchState;
37+
import edu.unc.lib.boxc.search.solr.config.SearchSettings;
38+
import edu.unc.lib.boxc.search.solr.responses.SearchResultResponse;
39+
import edu.unc.lib.boxc.search.solr.services.ChildrenCountService;
40+
import edu.unc.lib.boxc.search.solr.services.SearchStateFactory;
41+
import edu.unc.lib.boxc.search.solr.utils.SearchStateUtil;
42+
import edu.unc.lib.boxc.web.common.search.SearchActionService;
4343
import edu.unc.lib.dl.ui.service.SolrQueryLayerService;
4444
import edu.unc.lib.dl.ui.util.SerializationUtil;
4545

@@ -52,8 +52,6 @@ public abstract class AbstractSolrSearchController {
5252

5353
@Autowired(required = true)
5454
protected SolrQueryLayerService queryLayer;
55-
//@Autowired(required=true)
56-
//protected SearchStateValidator briefSearchRequestValidator;
5755
@Autowired(required = true)
5856
protected SearchActionService searchActionService;
5957
@Autowired

access-common/src/main/java/edu/unc/lib/dl/ui/controller/AbstractStructureResultsController.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@
2626
import org.slf4j.LoggerFactory;
2727
import org.springframework.beans.factory.annotation.Autowired;
2828

29-
import edu.unc.lib.dl.search.solr.exception.InvalidHierarchicalFacetException;
30-
import edu.unc.lib.dl.search.solr.model.HierarchicalBrowseRequest;
31-
import edu.unc.lib.dl.search.solr.model.HierarchicalBrowseResultResponse;
32-
import edu.unc.lib.dl.search.solr.model.SearchState;
33-
import edu.unc.lib.dl.search.solr.service.StructureQueryService;
34-
import edu.unc.lib.dl.search.solr.util.SearchFieldKeys;
29+
import edu.unc.lib.boxc.model.fcrepo.ids.PIDs;
30+
import edu.unc.lib.boxc.search.api.SearchFieldKey;
31+
import edu.unc.lib.boxc.search.api.exceptions.InvalidHierarchicalFacetException;
32+
import edu.unc.lib.boxc.search.api.requests.HierarchicalBrowseRequest;
33+
import edu.unc.lib.boxc.search.api.requests.SearchState;
34+
import edu.unc.lib.boxc.search.solr.responses.HierarchicalBrowseResultResponse;
35+
import edu.unc.lib.boxc.search.solr.services.StructureQueryService;
3536

3637
/**
3738
* Base structure browse controller.
@@ -78,7 +79,7 @@ protected HierarchicalBrowseResultResponse getStructureResult(String pid, boolea
7879
.getParameterMap()));
7980
}
8081
if (pid != null) {
81-
browseRequest.setRootPid(pid);
82+
browseRequest.setRootPid(PIDs.get(pid));
8283
}
8384
browseRequest.setIncludeFiles(includeFiles);
8485

@@ -90,7 +91,7 @@ protected HierarchicalBrowseResultResponse getStructureResult(String pid, boolea
9091
LOG.debug("An invalid facet was provided: " + request.getQueryString(), e);
9192
}
9293

93-
if (pid == null && !searchState.getFacets().containsKey(SearchFieldKeys.ANCESTOR_PATH.name())) {
94+
if (pid == null && !searchState.getFacets().containsKey(SearchFieldKey.ANCESTOR_PATH.name())) {
9495
browseRequest.setRetrievalDepth(1);
9596
}
9697

access-common/src/main/java/edu/unc/lib/dl/ui/controller/LorisContentController.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@
4343
import edu.unc.lib.boxc.auth.fcrepo.services.GroupsThreadStore;
4444
import edu.unc.lib.boxc.model.api.ids.PID;
4545
import edu.unc.lib.boxc.model.fcrepo.ids.PIDs;
46-
import edu.unc.lib.dl.search.solr.model.BriefObjectMetadata;
47-
import edu.unc.lib.dl.search.solr.model.BriefObjectMetadataBean;
48-
import edu.unc.lib.dl.search.solr.model.SimpleIdRequest;
46+
import edu.unc.lib.boxc.search.api.models.ContentObjectRecord;
47+
import edu.unc.lib.boxc.search.api.requests.SimpleIdRequest;
4948
import edu.unc.lib.dl.ui.service.AccessCopiesService;
5049
import edu.unc.lib.dl.ui.service.LorisContentService;
5150

@@ -164,9 +163,9 @@ public String getCanvas(@PathVariable("id") String id, @PathVariable("datastream
164163
PID pid = PIDs.get(id);
165164
// Check if the user is allowed to view this object's manifest
166165
if (this.hasAccess(pid, datastream)) {
167-
SimpleIdRequest idRequest = new SimpleIdRequest(id, GroupsThreadStore
166+
SimpleIdRequest idRequest = new SimpleIdRequest(pid, GroupsThreadStore
168167
.getAgentPrincipals().getPrincipals());
169-
BriefObjectMetadataBean briefObj = queryLayer.getObjectById(idRequest);
168+
ContentObjectRecord briefObj = queryLayer.getObjectById(idRequest);
170169
response.addHeader("Access-Control-Allow-Origin", "*");
171170
return lorisContentService.getCanvas(request, briefObj);
172171
} else {
@@ -191,7 +190,7 @@ public String getSequence(@PathVariable("id") String id, @PathVariable("datastre
191190
PID pid = PIDs.get(id);
192191
// Check if the user is allowed to view this object's manifest
193192
if (this.hasAccess(pid, datastream)) {
194-
List<BriefObjectMetadata> briefObjs = getDatastreams(pid);
193+
List<ContentObjectRecord> briefObjs = getDatastreams(pid);
195194
response.addHeader("Access-Control-Allow-Origin", "*");
196195
return lorisContentService.getSequence(request, briefObjs);
197196
} else {
@@ -217,7 +216,7 @@ public String getManifest(@PathVariable("id") String id, @PathVariable("datastre
217216
// Check if the user is allowed to view this object's manifest
218217
if (this.hasAccess(pid, datastream)) {
219218
try {
220-
List<BriefObjectMetadata> briefObjs = getDatastreams(pid);
219+
List<ContentObjectRecord> briefObjs = getDatastreams(pid);
221220
if (briefObjs.size() == 0) {
222221
response.setStatus(HttpStatus.NOT_FOUND.value());
223222
} else {
@@ -235,7 +234,7 @@ public String getManifest(@PathVariable("id") String id, @PathVariable("datastre
235234
return "";
236235
}
237236

238-
private List<BriefObjectMetadata> getDatastreams(PID pid) {
237+
private List<ContentObjectRecord> getDatastreams(PID pid) {
239238
AgentPrincipals agent = AgentPrincipalsImpl.createFromThread();
240239
return accessCopiesService.listViewableFiles(pid, agent.getPrincipals());
241240
}

access-common/src/main/java/edu/unc/lib/dl/ui/controller/structure/StructureResultsController.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@
3030

3131
import edu.unc.lib.boxc.auth.api.models.AccessGroupSet;
3232
import edu.unc.lib.boxc.auth.fcrepo.services.GroupsThreadStore;
33-
import edu.unc.lib.dl.search.solr.model.BriefObjectMetadataBean;
34-
import edu.unc.lib.dl.search.solr.model.HierarchicalBrowseResultResponse;
35-
import edu.unc.lib.dl.search.solr.model.SimpleIdRequest;
33+
import edu.unc.lib.boxc.model.fcrepo.ids.PIDs;
34+
import edu.unc.lib.boxc.search.api.models.ContentObjectRecord;
35+
import edu.unc.lib.boxc.search.api.requests.SimpleIdRequest;
36+
import edu.unc.lib.boxc.search.solr.responses.HierarchicalBrowseResultResponse;
3637
import edu.unc.lib.dl.ui.controller.AbstractStructureResultsController;
3738
import edu.unc.lib.dl.ui.exception.ResourceNotFoundException;
3839
import edu.unc.lib.dl.ui.util.SerializationUtil;
@@ -99,8 +100,8 @@ String getStructureJSON(@PathVariable("pid") String pid,
99100

100101
AccessGroupSet principals = getAgentPrincipals().getPrincipals();
101102
// Get the parent pid for the selected object and get its structure view
102-
BriefObjectMetadataBean selectedContainer = queryLayer.getObjectById(
103-
new SimpleIdRequest(pid, tierResultFieldsList, principals));
103+
ContentObjectRecord selectedContainer = queryLayer.getObjectById(
104+
new SimpleIdRequest(PIDs.get(pid), tierResultFieldsList, principals));
104105
if (selectedContainer == null) {
105106
throw new ResourceNotFoundException("Object " + pid + " was not found.");
106107
}

access-common/src/main/java/edu/unc/lib/dl/ui/service/AccessCopiesService.java

+17-17
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@
2828
import edu.unc.lib.boxc.auth.api.services.GlobalPermissionEvaluator;
2929
import edu.unc.lib.boxc.model.api.DatastreamType;
3030
import edu.unc.lib.boxc.model.api.ids.PID;
31-
import edu.unc.lib.dl.search.solr.exception.SolrRuntimeException;
32-
import edu.unc.lib.dl.search.solr.model.BriefObjectMetadata;
33-
import edu.unc.lib.dl.search.solr.model.BriefObjectMetadataBean;
34-
import edu.unc.lib.dl.search.solr.model.CutoffFacet;
35-
import edu.unc.lib.dl.search.solr.model.Datastream;
36-
import edu.unc.lib.dl.search.solr.model.SearchRequest;
37-
import edu.unc.lib.dl.search.solr.model.SearchState;
38-
import edu.unc.lib.dl.search.solr.model.SimpleIdRequest;
39-
import edu.unc.lib.dl.search.solr.service.SolrSearchService;
40-
import edu.unc.lib.dl.search.solr.util.SearchFieldKeys;
31+
import edu.unc.lib.boxc.search.api.SearchFieldKey;
32+
import edu.unc.lib.boxc.search.api.exceptions.SolrRuntimeException;
33+
import edu.unc.lib.boxc.search.api.facets.CutoffFacet;
34+
import edu.unc.lib.boxc.search.api.models.ContentObjectRecord;
35+
import edu.unc.lib.boxc.search.api.models.Datastream;
36+
import edu.unc.lib.boxc.search.api.requests.SearchRequest;
37+
import edu.unc.lib.boxc.search.api.requests.SearchState;
38+
import edu.unc.lib.boxc.search.api.requests.SimpleIdRequest;
39+
import edu.unc.lib.boxc.search.solr.models.ContentObjectSolrRecord;
40+
import edu.unc.lib.boxc.search.solr.services.SolrSearchService;
4141

4242
/**
4343
* Service to check for or list resources with access copies
@@ -55,8 +55,8 @@ public class AccessCopiesService extends SolrSearchService {
5555
* @return
5656
*/
5757
@SuppressWarnings("unchecked")
58-
public List<BriefObjectMetadata> listViewableFiles(PID pid, AccessGroupSet principals) {
59-
BriefObjectMetadata briefObj = getObjectById(new SimpleIdRequest(pid, principals));
58+
public List<ContentObjectRecord> listViewableFiles(PID pid, AccessGroupSet principals) {
59+
ContentObjectRecord briefObj = getObjectById(new SimpleIdRequest(pid, principals));
6060
String resourceType = briefObj.getResourceType();
6161
if (searchSettings.resourceTypeFile.equals(resourceType)) {
6262
if (briefObj.getDatastreamObject(DatastreamType.JP2_ACCESS_COPY.getId()) != null) {
@@ -70,8 +70,8 @@ public List<BriefObjectMetadata> listViewableFiles(PID pid, AccessGroupSet princ
7070
}
7171

7272
QueryResponse resp = performQuery(briefObj, principals, MAX_FILES);
73-
List<?> results = resp.getBeans(BriefObjectMetadataBean.class);
74-
List<BriefObjectMetadata> mdObjs = (List<BriefObjectMetadata>) results;
73+
List<?> results = resp.getBeans(ContentObjectSolrRecord.class);
74+
List<ContentObjectRecord> mdObjs = (List<ContentObjectRecord>) results;
7575
mdObjs.add(0, briefObj);
7676
return mdObjs;
7777
}
@@ -83,7 +83,7 @@ public List<BriefObjectMetadata> listViewableFiles(PID pid, AccessGroupSet princ
8383
* @param principals
8484
* @return
8585
*/
86-
public boolean hasViewableFiles(BriefObjectMetadata briefObj, AccessGroupSet principals) {
86+
public boolean hasViewableFiles(ContentObjectRecord briefObj, AccessGroupSet principals) {
8787
String resourceType = briefObj.getResourceType();
8888
if (searchSettings.resourceTypeFile.equals(resourceType)) {
8989
Datastream datastream = briefObj.getDatastreamObject(DatastreamType.JP2_ACCESS_COPY.getId());
@@ -97,7 +97,7 @@ public boolean hasViewableFiles(BriefObjectMetadata briefObj, AccessGroupSet pri
9797
return resp.getResults().getNumFound() > 0;
9898
}
9999

100-
private QueryResponse performQuery(BriefObjectMetadata briefObj, AccessGroupSet principals, int rows) {
100+
private QueryResponse performQuery(ContentObjectRecord briefObj, AccessGroupSet principals, int rows) {
101101
// Search for child objects with jp2 datastreams with user can access
102102
SearchState searchState = new SearchState();
103103
if (!globalPermissionEvaluator.hasGlobalPrincipal(principals)) {
@@ -111,7 +111,7 @@ private QueryResponse performQuery(BriefObjectMetadata briefObj, AccessGroupSet
111111

112112
SearchRequest searchRequest = new SearchRequest(searchState, principals);
113113
SolrQuery query = generateSearch(searchRequest);
114-
query.addFilterQuery(solrSettings.getFieldName(SearchFieldKeys.DATASTREAM.name()) + ":"
114+
query.addFilterQuery(solrSettings.getFieldName(SearchFieldKey.DATASTREAM.name()) + ":"
115115
+ DatastreamType.JP2_ACCESS_COPY.getId() + "|*");
116116

117117
try {

0 commit comments

Comments
 (0)