Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/search/ArtifactSearch_V1.java')
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/search/ArtifactSearch_V1.java78
1 files changed, 42 insertions, 36 deletions
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/search/ArtifactSearch_V1.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/search/ArtifactSearch_V1.java
index 81afa7838ac..00b4f41032e 100644
--- a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/search/ArtifactSearch_V1.java
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/search/ArtifactSearch_V1.java
@@ -10,22 +10,24 @@
*******************************************************************************/
package org.eclipse.osee.orcs.rest.internal.search;
-import java.util.Map;
+import java.util.LinkedList;
+import java.util.List;
+import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
+import javax.ws.rs.POST;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.UriInfo;
-import org.eclipse.osee.framework.core.data.IOseeBranch;
-import org.eclipse.osee.framework.core.data.TokenFactory;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.orcs.data.HasLocalId;
import org.eclipse.osee.orcs.rest.internal.OrcsApplication;
-import org.eclipse.osee.orcs.rest.internal.search.dsl.DslTranslatorImpl;
-import org.eclipse.osee.orcs.rest.internal.search.dsl.PredicateHandlerFactory;
-import org.eclipse.osee.orcs.rest.internal.search.dsl.SearchDsl;
-import org.eclipse.osee.orcs.rest.internal.search.dsl.SearchDsl.DslTranslator;
-import org.eclipse.osee.orcs.rest.internal.search.dsl.SearchMethod;
+import org.eclipse.osee.orcs.rest.internal.search.dsl.DslFactory;
+import org.eclipse.osee.orcs.rest.internal.search.dsl.DslTranslator;
+import org.eclipse.osee.orcs.rest.internal.search.dsl.SearchQueryBuilder;
+import org.eclipse.osee.orcs.rest.model.search.SearchParameters;
+import org.eclipse.osee.orcs.rest.model.search.SearchResult;
import org.eclipse.osee.orcs.search.QueryBuilder;
import org.eclipse.osee.orcs.search.QueryFactory;
@@ -35,15 +37,11 @@ import org.eclipse.osee.orcs.search.QueryFactory;
*/
public class ArtifactSearch_V1 extends ArtifactSearch {
- private final SearchDsl dsl;
+ private final SearchQueryBuilder searchQueryBuilder;
public ArtifactSearch_V1(UriInfo uriInfo, Request request, String branchUuid) {
super(uriInfo, request, branchUuid);
-
- Map<SearchMethod, PredicateHandler> handlers = PredicateHandlerFactory.getHandlers();
- DslTranslator translator = new DslTranslatorImpl();
- // Can have a single instance of this
- dsl = new SearchDsl(handlers, translator);
+ searchQueryBuilder = DslFactory.createQueryBuilder();
}
/**
@@ -102,45 +100,53 @@ public class ArtifactSearch_V1 extends ArtifactSearch {
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public SearchResult getSearchWithQueryParams(@QueryParam("alt") String alt, @QueryParam("fields") String fields, @QueryParam("q") String rawQuery, @QueryParam("fromTx") int fromTransaction, @QueryParam("inherits") boolean includeTypeInheritance, @QueryParam("cached") boolean includeCache, @QueryParam("includeDeleted") boolean includeDeleted) throws OseeCoreException {
- return search(alt, fields, rawQuery, fromTransaction, includeTypeInheritance, includeCache, includeDeleted);
+ DslTranslator translator = DslFactory.createTranslator();
+ SearchParameters params =
+ new SearchParameters(getBranchUuid(), translator.translate(rawQuery), alt, fields, fromTransaction,
+ includeTypeInheritance, includeCache, includeDeleted);
+ return search(params);
}
- // @GET
- // @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- // public SearchResult getSearchWithMatrixParams(@MatrixParam("alt") String alt, @MatrixParam("fields") String fields, @MatrixParam("q") String rawQuery, @MatrixParam("fromTx") int fromTransaction, @MatrixParam("inherits") boolean includeTypeInheritance, @MatrixParam("cached") boolean includeCache, @MatrixParam("includeDeleted") boolean includeDeleted) throws OseeCoreException {
- // return search(alt, fields, rawQuery, fromTransaction, includeTypeInheritance, includeCache, includeDeleted);
- // }
+ @POST
+ @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+ public SearchResult getSearchWithMatrixParams(SearchParameters parameters) throws OseeCoreException {
+ return search(parameters);
+ }
- private SearchResult search(String alt, String fields, String rawQuery, int fromTransaction, boolean includeTypeInheritance, boolean includeCache, boolean includeDeleted) throws OseeCoreException {
+ private SearchResult search(SearchParameters params) throws OseeCoreException {
long startTime = System.currentTimeMillis();
- IOseeBranch branch = TokenFactory.createBranch(getBranchUuid(), "searchBranch");
-
QueryFactory qFactory = OrcsApplication.getOrcsApi().getQueryFactory(null); // Fix this
- QueryBuilder builder = dsl.build(qFactory, branch, rawQuery);
+ QueryBuilder builder = searchQueryBuilder.build(qFactory, params);
- builder.includeCache(includeCache);
- builder.includeTypeInheritance(includeTypeInheritance);
- builder.includeDeleted(includeDeleted);
+ builder.includeCache(params.isIncludeCache());
+ builder.includeTypeInheritance(params.isIncludeTypeInheritance());
+ builder.includeDeleted(params.isIncludeDeleted());
- if (fromTransaction > 0) {
- builder.fromTransaction(fromTransaction);
+ if (params.getFromTx() > 0) {
+ builder.fromTransaction(params.getFromTx());
}
- SearchResult result = new SearchResult();
- SearchParameters params = new SearchParameters(getBranchUuid(), rawQuery, alt, fields);
- result.setPredicates(dsl.getPredicates());
- result.setSearchParams(params);
- if (fields.equals("count")) {
+ SearchResult result;
+ if (params.getFields().equals("count")) {
+ result = new SearchResult();
int total = builder.getCount();
result.setTotal(total);
+ } else if (params.getFields().equals("ids")) {
+ List<Integer> localIds = new LinkedList<Integer>();
+ for (HasLocalId art : builder.getResultsAsLocalIds()) {
+ localIds.add(art.getLocalId());
+ }
+ result = new SearchResult();
+ result.setIds(localIds);
+ result.setTotal(localIds.size());
} else {
- // builder.createSearch();
- // builder.createSearchWithMatches();
throw new UnsupportedOperationException();
}
+ result.setSearchParams(params);
result.setSearchTime(System.currentTimeMillis() - startTime);
return result;
}

Back to the top