package org.hadatac.console.controllers.dataacquisitionsearch; import org.hadatac.console.controllers.AuthApplication; import org.hadatac.console.controllers.triplestore.UserManagement; import org.hadatac.console.http.JsonHandler; import org.hadatac.console.controllers.metadataacquisition.ViewSubject; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import java.util.Set; import java.util.HashSet; import org.hadatac.console.models.FacetHandler; import org.hadatac.console.models.FacetsWithCategories; import org.hadatac.console.models.SpatialQueryResults; import org.hadatac.console.models.SysUser; import org.hadatac.console.models.ObjectDetails; import play.data.DynamicForm; import play.data.Form; import play.mvc.Controller; import play.mvc.Result; import org.hadatac.console.views.formdata.FacetFormData; import org.hadatac.console.views.html.dataacquisitionsearch.dataacquisition_browser; import org.hadatac.data.model.AcquisitionQueryResult; import org.hadatac.entity.pojo.Measurement; public class DataAcquisitionSearch extends Controller { public static FacetFormData facet_form = new FacetFormData(); public static FacetsWithCategories field_facets = new FacetsWithCategories(); public static FacetsWithCategories query_facets = new FacetsWithCategories(); public static FacetsWithCategories pivot_facets = new FacetsWithCategories(); public static FacetsWithCategories range_facets = new FacetsWithCategories(); public static FacetsWithCategories cluster_facets = new FacetsWithCategories(); public static SpatialQueryResults query_results = new SpatialQueryResults(); //Postconditions: field_facets will be modified if there are facets in the JsonHandler public static void getFacets(JsonHandler jh){ //Get the facets try { if (jh.getFieldCountJson()) { for (String key : jh.categories_and_facets.keySet()) { for (String facet : jh.categories_and_facets.get(key)){ if (facet.equals("null")) {field_facets.addFacet(key, "missing"); continue;} field_facets.addFacet(key, facet); } } } } catch (Exception e){ e.printStackTrace(); } } public static List<String> getPermissions(String permissions) { List<String> result = new ArrayList<String>(); if (permissions != null) { StringTokenizer tokens = new StringTokenizer(permissions, ","); while (tokens.hasMoreTokens()) { result.add(tokens.nextToken()); } } return result; } public static Result index(int page, int rows, String facets) { System.out.println("[DataAcquisitionSearch] Page: " + page + " Rows:" + rows + " Facets:" + facets); FacetHandler handler = new FacetHandler(); handler.loadFacets(facets); System.out.println("DataAcquisitionSearch : <" + handler.toSolrQuery() + ">"); AcquisitionQueryResult results = null; String ownerUri; final SysUser user = AuthApplication.getLocalUser(session()); if(null == user){ ownerUri = "Public"; results = Measurement.find(ownerUri, page, rows, handler); } else{ ownerUri = UserManagement.getUriByEmail(user.getEmail()); if(null == ownerUri){ ownerUri = "Public"; } results = Measurement.find(ownerUri, page, rows, handler); } System.out.println("[DataAcquisitionSearch] Total size response: " + results.getDocumentSize()); Set<String> setObj = new HashSet<String>(); ObjectDetails objDetails = new ObjectDetails(); if (results != null) { for (Measurement m: results.getDocuments()) { setObj.add(m.getObjectUri()); } for (String uri: setObj) { if (uri != null) { String html = ViewSubject.findBasicHTML(uri); if (html != null) { objDetails.putObject(uri, html); } } } } return ok(dataacquisition_browser.render(page, rows, facets, results.getDocumentSize(), results, results.toJSON(), handler, Measurement.buildQuery(ownerUri, page, rows, handler), objDetails.toJSON())); } public static Result postIndex(int page, int rows, String facets) { return index(page, rows, facets); } }