Skip to content

Commit

Permalink
WIP added response classes for results
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremythuff committed Dec 10, 2018
1 parent 1c74b5b commit 1429299
Show file tree
Hide file tree
Showing 9 changed files with 124 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import edu.tamu.sage.exceptions.DiscoveryContextNotFoundException;
import edu.tamu.sage.model.DiscoveryView;
import edu.tamu.sage.model.repo.DiscoveryViewRepo;
import edu.tamu.sage.model.response.DiscoveryContext;
Expand Down Expand Up @@ -74,13 +75,11 @@ public ApiResponse deleteDiscoveryView(@WeaverValidatedModel DiscoveryView disco

@RequestMapping(value="/context/{slug}", method = RequestMethod.GET)
@PreAuthorize("hasRole('ANONYMOUS')")
public ApiResponse findBySlug(@PathVariable String slug) {
public ApiResponse findBySlug(@PathVariable String slug) throws DiscoveryContextNotFoundException {
DiscoveryView discoveryView = discoveryViewRepo.findOneBySlug(slug);

if(discoveryView == null) {
return new ApiResponse(ERROR, "Could not find Discovery Context for " + slug);
throw new DiscoveryContextNotFoundException(String.format("Could not find Discovery Context for %s", slug));
}

return new ApiResponse(SUCCESS, DiscoveryContext.of(discoveryView, solrDiscoveryService.readSolrCore(discoveryView)));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package edu.tamu.sage.controller.handler;

import static edu.tamu.weaver.response.ApiStatus.ERROR;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import edu.tamu.sage.exceptions.DiscoveryContextNotFoundException;
import edu.tamu.weaver.response.ApiResponse;

@RestController
@ControllerAdvice
public class DiscoveryViewControllerAdvice {

@ResponseStatus(value = HttpStatus.OK)
@ExceptionHandler(DiscoveryContextNotFoundException.class)
public ApiResponse handleFcrepoOperationFailedException(DiscoveryContextNotFoundException e) {
return new ApiResponse(ERROR, e.getMessage());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package edu.tamu.sage.exceptions;

public class DiscoveryContextNotFoundException extends Exception {

/**
*
*/
private static final long serialVersionUID = -787392244167335114L;

public DiscoveryContextNotFoundException(String message) {
super(message);
}

}
11 changes: 5 additions & 6 deletions src/main/java/edu/tamu/sage/model/response/DiscoveryContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import edu.tamu.sage.model.DiscoveryView;

Expand All @@ -12,16 +11,16 @@ public class DiscoveryContext implements Serializable {

private String name;

private List<Map<String, String>> results;
private List<Result> results;

public DiscoveryContext() {}

public DiscoveryContext(String name, List<Map<String, String>> results) {
public DiscoveryContext(String name, List<Result> results) {
this.name = name;
this.results = results;
}

public static DiscoveryContext of(DiscoveryView discoveryView, List<Map<String, String>> results) {
public static DiscoveryContext of(DiscoveryView discoveryView, List<Result> results) {
return new DiscoveryContext(discoveryView.getName(), results);
}

Expand All @@ -33,11 +32,11 @@ public void setName(String name) {
this.name = name;
}

public List<Map<String, String>> getResultsMap() {
public List<Result> getResults() {
return results;
}

public void setResultsMap(List<Map<String, String>> results) {
public void setResults(List<Result> results) {
this.results = results;
}
}
37 changes: 37 additions & 0 deletions src/main/java/edu/tamu/sage/model/response/Result.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package edu.tamu.sage.model.response;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.apache.solr.common.SolrDocument;

public class Result {

private List<ResultField> fields;

public Result() {
this.fields = new ArrayList<ResultField>();
}

public List<ResultField> getFields() {
return fields;
}

public void setFields(List<ResultField> fields) {
this.fields = fields;
}

public void addResultField(ResultField resultField) {
this.fields.add(resultField);
}

public static Result of(SolrDocument doc, Collection<String> fieldNames) {
Result result = new Result();
for (String s: fieldNames) {
result.addResultField(ResultField.of(s, doc.getFieldValue(s).toString()));
}
return result;
}

}
33 changes: 33 additions & 0 deletions src/main/java/edu/tamu/sage/model/response/ResultField.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package edu.tamu.sage.model.response;

public class ResultField {

String Key;
String Value;

public ResultField(String key, String value) {
this.Key = key;
this.Value = value;
}

public String getKey() {
return Key;
}

public void setKey(String key) {
Key = key;
}

public String getValue() {
return Value;
}

public void setValue(String value) {
Value = value;
}

public static ResultField of(String key, String value) {
return new ResultField(key, value);
}

}
18 changes: 5 additions & 13 deletions src/main/java/edu/tamu/sage/service/SolrDiscoveryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
Expand All @@ -19,16 +17,17 @@
import org.springframework.stereotype.Service;

import edu.tamu.sage.model.DiscoveryView;
import edu.tamu.sage.model.response.Result;

@Service
public class SolrDiscoveryService {

private Logger logger = LoggerFactory.getLogger(this.getClass());

public List<Map<String,String>> readSolrCore(DiscoveryView discoveryView) {
public List<Result> readSolrCore(DiscoveryView discoveryView) {
logger.info("Using Reader: "+discoveryView.getName()+" to read from SOLR Core: "+discoveryView.getSource().getName()+" - "+discoveryView.getSource().getUri());

List<Map<String,String>> mappedResults = new ArrayList<Map<String,String>>();
List<Result> results = new ArrayList<Result>();

SolrClient solr = new HttpSolrClient(discoveryView.getSource().getUri());

Expand All @@ -47,14 +46,7 @@ public List<Map<String,String>> readSolrCore(DiscoveryView discoveryView) {
SolrDocumentList docs = rsp.getResults();
for (SolrDocument doc : docs) {
Collection<String> fieldNames = doc.getFieldNames();
Map<String,String> resultsMap = new HashMap<String,String>();
for (String s: fieldNames) {
System.out.println(doc.getFieldValue(s));
resultsMap.put(s, doc.getFieldValue(s).toString());
}
if (!resultsMap.isEmpty()) {
mappedResults.add(resultsMap);
}
results.add(Result.of(doc, fieldNames));
}

} catch (Exception e) {
Expand All @@ -68,7 +60,7 @@ public List<Map<String,String>> readSolrCore(DiscoveryView discoveryView) {
e.printStackTrace();
}
}
return mappedResults;
return results;
}

}
2 changes: 2 additions & 0 deletions src/main/webapp/app/views/discovery/discovery-context.html
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
<h1>{{discoveryContext.name}}</h1>

<div ng-repeat="(i, result) in discoveryContext.results">{{i}}{{result.title_tesim}}</div>
2 changes: 1 addition & 1 deletion src/main/webapp/app/views/management/discovery-view.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ <h1>Discovery View Management</h1>
<tbody>
<tr ng-repeat="discoveryView in $data">
<td data-title="'Name'" sortable="'name'">
{{discoveryView.name}}
<a href="discovery-context/{{discoveryView.slug}}">{{discoveryView.name}}</a>
</td>
<td data-title="'Solr Source'" sortable="'SolrSource'">
{{discoveryView.source.name}}
Expand Down

0 comments on commit 1429299

Please sign in to comment.