#24136 Integrated the temporal reference on the front-end side
This commit is contained in:
parent
d99480a442
commit
b1c0137000
|
@ -16,6 +16,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|||
- [#23913] Integrated with GUI presentation configurations read from IS
|
||||
- [#23927] Integrated with Relationship definition in UCD
|
||||
- [#23834] Integrated with the create/view/delete Relationship facility
|
||||
- [#24136] Integrated the temporal dimension on the front-end side
|
||||
|
||||
## [v1.4.0] - 2022-06-08
|
||||
|
||||
|
|
6
pom.xml
6
pom.xml
|
@ -85,6 +85,12 @@
|
|||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>20140107</version>
|
||||
</dependency>
|
||||
|
||||
<!-- REQUIRED FOR JDK_11 -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
|
|
|
@ -55,11 +55,13 @@ import org.gcube.application.geoportalcommon.shared.geoportal.project.LifecycleI
|
|||
import org.gcube.application.geoportalcommon.shared.geoportal.project.ProjectDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.project.PublicationInfoDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.project.RelationshipDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.project.TemporalReferenceDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_CONFIGURATION_TYPE;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_DATA_HANDLER;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.HandlerDeclarationDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.RelationshipDefinitionDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
||||
import org.gcube.application.geoportalcommon.util.DateUtils;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -73,6 +75,9 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
|
|||
import com.fasterxml.jackson.databind.JsonSerializer;
|
||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
|
||||
import com.jayway.jsonpath.DocumentContext;
|
||||
import com.jayway.jsonpath.JsonPath;
|
||||
import com.jayway.jsonpath.Option;
|
||||
|
||||
/**
|
||||
* The Class ConvertToDataValueObjectModel.
|
||||
|
@ -586,6 +591,12 @@ public class ConvertToDataValueObjectModel {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* To spatial reference.
|
||||
*
|
||||
* @param geoJSONObject the geo JSON object
|
||||
* @return the geo JSON
|
||||
*/
|
||||
public static GeoJSON toSpatialReference(String geoJSONObject) {
|
||||
LOG.debug("toSpatialReference called");
|
||||
|
||||
|
@ -1159,6 +1170,12 @@ public class ConvertToDataValueObjectModel {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* To relationship definition.
|
||||
*
|
||||
* @param relationshipDefinition the relationship definition
|
||||
* @return the relationship definition DV
|
||||
*/
|
||||
public static RelationshipDefinitionDV toRelationshipDefinition(RelationshipDefinition relationshipDefinition) {
|
||||
|
||||
RelationshipDefinitionDV rdv = new RelationshipDefinitionDV();
|
||||
|
@ -1170,6 +1187,12 @@ public class ConvertToDataValueObjectModel {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* To payload DV.
|
||||
*
|
||||
* @param payload the payload
|
||||
* @return the payload DV
|
||||
*/
|
||||
public static PayloadDV toPayloadDV(Payload payload) {
|
||||
PayloadDV p = new PayloadDV();
|
||||
p.setName(payload.getName());
|
||||
|
@ -1179,6 +1202,13 @@ public class ConvertToDataValueObjectModel {
|
|||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert.
|
||||
*
|
||||
* @param toConvert the to convert
|
||||
* @return the index layer DV
|
||||
* @throws InvalidObjectException the invalid object exception
|
||||
*/
|
||||
public static IndexLayerDV convert(Index toConvert) throws InvalidObjectException {
|
||||
|
||||
if (toConvert == null || toConvert.getType() == null)
|
||||
|
@ -1203,4 +1233,78 @@ public class ConvertToDataValueObjectModel {
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* To timeline JSON model.
|
||||
*
|
||||
* @param theProject the the project
|
||||
* @param sourceJsonTemplate the source json template
|
||||
* @param targetUCD the target UCD
|
||||
* @param targetProjectID the target project ID
|
||||
* @param relationName the relation name
|
||||
* @return the JSON object
|
||||
*/
|
||||
public static JSONObject toTimelineJSONModel(Project theProject, JSONObject sourceJsonTemplate, String targetUCD,
|
||||
String targetProjectID, String relationName) {
|
||||
|
||||
com.jayway.jsonpath.Configuration jsonPathConfig = com.jayway.jsonpath.Configuration.defaultConfiguration()
|
||||
.addOptions(Option.ALWAYS_RETURN_LIST);
|
||||
|
||||
DocumentContext targetDoc = JsonPath.using(jsonPathConfig).parse(theProject.getTheDocument().toJson());
|
||||
|
||||
JSONObject targetJsonObject = new JSONObject();
|
||||
targetJsonObject.put("id", targetUCD + "," + targetProjectID);
|
||||
|
||||
if (relationName != null)
|
||||
targetJsonObject.put("relationship_name", relationName);
|
||||
|
||||
for (Object key : sourceJsonTemplate.keySet()) {
|
||||
String jsonPath = null;
|
||||
String theKey = null;
|
||||
try {
|
||||
theKey = key + "";
|
||||
LOG.debug("Searching key: " + theKey);
|
||||
jsonPath = sourceJsonTemplate.getString(theKey);
|
||||
LOG.debug("with key: " + theKey + " read JSON path: " + jsonPath);
|
||||
List<String> listValue = targetDoc.read(jsonPath);
|
||||
String result = "";
|
||||
for (int i = 0; i < listValue.size() - 1; i++) {
|
||||
result += listValue.get(i) + ", ";
|
||||
}
|
||||
result += listValue.get(listValue.size() - 1);
|
||||
targetJsonObject.put(theKey, result);
|
||||
} catch (Exception e) {
|
||||
LOG.trace("Error on setting key: {}, path: {}", theKey, jsonPath);
|
||||
}
|
||||
}
|
||||
|
||||
return targetJsonObject;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* To temporal reference DV.
|
||||
*
|
||||
* @param theProject the the project
|
||||
* @param timelineJSONObject the timeline JSON object
|
||||
* @return the temporal reference DV
|
||||
*/
|
||||
public static TemporalReferenceDV toTemporalReferenceDV(Project theProject, JSONObject timelineJSONObject) {
|
||||
|
||||
TemporalReferenceDV tr = null;
|
||||
|
||||
if (timelineJSONObject != null) {
|
||||
tr = new TemporalReferenceDV();
|
||||
tr.setProjectID(theProject.getId());
|
||||
tr.setProfileID(theProject.getProfileID());
|
||||
tr.setJsonTimelineObject(timelineJSONObject.toString());
|
||||
String start = timelineJSONObject.getString("start");
|
||||
tr.setStart(DateUtils.toDate(start));
|
||||
String end = timelineJSONObject.getString("end");
|
||||
tr.setEnd(DateUtils.toDate(end));
|
||||
}
|
||||
|
||||
return tr;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ public class ConvertToDataViewModel {
|
|||
/** The Constant LOG. */
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ConvertToDataViewModel.class);
|
||||
|
||||
public static final String DATE_FORMAT = "dd-MM-yyyy";
|
||||
public static final String DATE_FORMAT = "yyyy-MM-dd";
|
||||
|
||||
public static final String HOURS_MINUTES_SEPARATOR = ":";
|
||||
|
||||
|
@ -58,28 +58,6 @@ public class ConvertToDataViewModel {
|
|||
|
||||
}
|
||||
|
||||
// /**
|
||||
// * To workspace content.
|
||||
// *
|
||||
// * @param wContent the w content
|
||||
// * @return the workspace content DV
|
||||
// */
|
||||
// public static WorkspaceContentDV toWorkspaceContent(WorkspaceContent wContent) {
|
||||
// LOG.debug("toWorkspaceContent called");
|
||||
//
|
||||
// if (wContent == null)
|
||||
// return null;
|
||||
//
|
||||
// WorkspaceContentDV theWSDV = new WorkspaceContentDV();
|
||||
// theWSDV.setLink(wContent.getLink());
|
||||
// theWSDV.setMimetype(wContent.getMimetype());
|
||||
// theWSDV.setStorageID(wContent.getStorageID());
|
||||
// theWSDV.setId(wContent.getId());
|
||||
// theWSDV.setName(wContent.getName());
|
||||
//
|
||||
// return theWSDV;
|
||||
// }
|
||||
|
||||
/**
|
||||
* To bound map.
|
||||
*
|
||||
|
|
|
@ -1,177 +0,0 @@
|
|||
//package org.gcube.application.geoportalcommon;
|
||||
//
|
||||
//import java.io.IOException;
|
||||
//import java.nio.file.Files;
|
||||
//import java.nio.file.Paths;
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.LinkedHashMap;
|
||||
//import java.util.List;
|
||||
//
|
||||
//import org.bson.Document;
|
||||
//import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
||||
//import org.gcube.application.geoportalcommon.geoportal.config.GcubeProfile;
|
||||
//import org.gcube.application.geoportalcommon.geoportal.config.ItemField;
|
||||
//import org.gcube.application.geoportalcommon.shared.geoportal.ConfigurationDV;
|
||||
//import org.gcube.application.geoportalcommon.shared.geoportal.GEOPORTAL_CONFIGURATION_TYPE;
|
||||
//import org.gcube.application.geoportalcommon.shared.geoportal.GEOPORTAL_DATA_HANDLER;
|
||||
//import org.gcube.application.geoportalcommon.shared.geoportal.HandlerDeclarationDV;
|
||||
//import org.gcube.application.geoportalcommon.shared.geoportal.UseCaseDescriptorDV;
|
||||
//import org.gcube.application.geoportalcommon.shared.geoportal.config.DocumentConfigDV;
|
||||
//import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV;
|
||||
//import org.gcube.application.geoportalcommon.shared.geoportal.config.ItemFieldDV;
|
||||
//import org.slf4j.Logger;
|
||||
//import org.slf4j.LoggerFactory;
|
||||
//
|
||||
//public class MockDocumentConfigurationReader {
|
||||
// private static final Logger LOG = LoggerFactory.getLogger(MockDocumentConfigurationReader.class);
|
||||
//
|
||||
// private List<DocumentConfigDV> listDocumentConfigsDV = new ArrayList<DocumentConfigDV>();
|
||||
//
|
||||
// public MockDocumentConfigurationReader() {
|
||||
// try {
|
||||
// //loadConfigurations();
|
||||
// } catch (Exception e) {
|
||||
// // TODO Auto-generated catch block
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private void loadConfigurations() {
|
||||
//
|
||||
// List<UseCaseDescriptorDV> listUCDDV = new ArrayList<UseCaseDescriptorDV>();
|
||||
// UseCaseDescriptorDV usecaseDescriptorDV = new UseCaseDescriptorDV("theId","version","listConcessioni", null);
|
||||
// List<HandlerDeclarationDV> handlers = new ArrayList<HandlerDeclarationDV>();
|
||||
//
|
||||
//
|
||||
//
|
||||
// HandlerDeclarationDV hdDV = new HandlerDeclarationDV();
|
||||
// hdDV.setId(handlerDeclaration.getId());
|
||||
// hdDV.setType(handlerDeclaration.getType());
|
||||
// hdDV.setItemType("MISSING ITEM TYPE IN THE SERVICE MODEL");
|
||||
// hdDV.setDataHandlerType(to_GEOPORTAL_DATA_HANDLER(handlerDeclaration.getId()));
|
||||
//
|
||||
//// List<GcubeProfileDV> gcubeProfiles = new ArrayList<GcubeProfileDV>();
|
||||
//// GcubeProfileDV profile = new GcubeProfileDV();
|
||||
//// profile.setGcubeName("GcubeName");
|
||||
//// profile.setGcubeSecondaryType("GcubeSecondaryType");
|
||||
//// gcubeProfiles.add(profile);
|
||||
////
|
||||
//// ConfigurationDV<List<GcubeProfileDV>> configuration = new ConfigurationDV<List<GcubeProfileDV>>(gcubeProfiles);
|
||||
//// HandlerDeclarationDV handler = new HandlerDeclarationDV(GEOPORTAL_DATA_HANDLER.geoportal_data_entry.getId(), GEOPORTAL_DATA_HANDLER.geoportal_data_entry.getType(), "Concessioni", configuration,GEOPORTAL_DATA_HANDLER.geoportal_data_entry);
|
||||
////
|
||||
//// handlers.add(handler);
|
||||
//// usecaseDescriptorDV.setHandlers(handlers);
|
||||
//// listUCDDV.add(usecaseDescriptorDV);
|
||||
//
|
||||
//
|
||||
// try {
|
||||
// GEOPORTAL_CONFIGURATION_TYPE geoportalConfigType = null;
|
||||
//
|
||||
// String jsonConfig = readFile(
|
||||
// "/home/francescomangiacrapa/git/geoportal-data-common/src/test/resources/geoportal-config5.json");
|
||||
//
|
||||
// Document document = org.gcube.application.geoportal.client.utils.Serialization.read(jsonConfig, Document.class);
|
||||
//
|
||||
// LinkedHashMap<String, String> configuration = (LinkedHashMap<String, String>) document.get("_configuration");
|
||||
//
|
||||
//
|
||||
// List<String> configurations = new ArrayList<String>(configuration.values());
|
||||
//
|
||||
// switch (geoportalConfigType) {
|
||||
// case gcube_profiles: {
|
||||
//
|
||||
// List<GcubeProfileDV> listGcubeProfiles = new ArrayList<GcubeProfileDV>(configurations.size());
|
||||
//
|
||||
// int i = 0;
|
||||
// for (String gCubeProfile : configurations) {
|
||||
// LOG.debug(i++ + ") the gCubeProfile is: " + gCubeProfile);
|
||||
// GcubeProfile profile = org.gcube.application.geoportal.client.utils.Serialization.read(gCubeProfile,
|
||||
// GcubeProfile.class);
|
||||
// listGcubeProfiles.add(ConvertToDataValueObjectModel.toGcubeProfileDV(profile));
|
||||
// }
|
||||
//
|
||||
// ConfigurationDV<List<GcubeProfileDV>> dDV = new ConfigurationDV<List<GcubeProfileDV>>(
|
||||
// listGcubeProfiles);
|
||||
// dDV.setConfiguration(listGcubeProfiles);
|
||||
// dDV.setConfigurationType(GEOPORTAL_CONFIGURATION_TYPE.gcube_profiles);
|
||||
// hdDV.setConfiguration(dDV);
|
||||
// LOG.info("returning {}", hdDV);
|
||||
// return hdDV;
|
||||
// }
|
||||
// case item_fields: {
|
||||
//
|
||||
// List<ItemFieldDV> listItemFields = new ArrayList<ItemFieldDV>(configurations.size());
|
||||
//
|
||||
// int i = 0;
|
||||
// for (String itemField : configurations) {
|
||||
// LOG.debug(i++ + ") the itemField is: " + itemField);
|
||||
// ItemField profile = org.gcube.application.geoportal.client.utils.Serialization.read(itemField,
|
||||
// ItemField.class);
|
||||
// listItemFields.add(ConvertToDataValueObjectModel.toItemFieldDV(profile));
|
||||
// }
|
||||
//
|
||||
// ConfigurationDV<List<ItemFieldDV>> dDV = new ConfigurationDV<List<ItemFieldDV>>(listItemFields);
|
||||
// dDV.setConfiguration(listItemFields);
|
||||
// dDV.setConfigurationType(GEOPORTAL_CONFIGURATION_TYPE.item_fields);
|
||||
// hdDV.setConfiguration(dDV);
|
||||
// LOG.info("returning {}", hdDV);
|
||||
// return hdDV;
|
||||
// }
|
||||
//
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// } catch (Exception e) {
|
||||
// LOG.error("Error on getting " + HandlerDeclaration.class.getSimpleName(), e);
|
||||
// throw e;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// //THIS IS A MOCK
|
||||
// private void loadDocumentConfiguration() throws Exception {
|
||||
// System.out.println("loadDocumentConfiguration called");
|
||||
// String filePath = "/home/francescomangiacrapa/git/geoportal-data-common/src/test/resources/geoportal-config.json";
|
||||
//
|
||||
// DocumentConfigDV dc = getDocumentConfigVO(filePath);
|
||||
// listDocumentConfigsDV.add(dc);
|
||||
//
|
||||
// filePath = "/home/francescomangiacrapa/git/geoportal-data-common/src/test/resources/geoportal-config2.json";
|
||||
// dc = getDocumentConfigVO(filePath);
|
||||
// listDocumentConfigsDV.add(dc);
|
||||
//
|
||||
// filePath = "/home/francescomangiacrapa/git/geoportal-data-common/src/test/resources/geoportal-config3.json";
|
||||
// dc = getDocumentConfigVO(filePath);
|
||||
// listDocumentConfigsDV.add(dc);
|
||||
//
|
||||
// filePath = "/home/francescomangiacrapa/git/geoportal-data-common/src/test/resources/geoportal-config4.json";
|
||||
// dc = getDocumentConfigVO(filePath);
|
||||
// listDocumentConfigsDV.add(dc);
|
||||
// }
|
||||
//
|
||||
// private DocumentConfigDV getDocumentConfigVO(String filePath) throws JsonProcessingException, IOException {
|
||||
// String theFile = readFile(filePath);
|
||||
// System.out.println("the file is: " + theFile);
|
||||
// DocumentConfig dc = org.gcube.application.geoportal.client.utils.Serialization.read(theFile,
|
||||
// DocumentConfig.class);
|
||||
// System.out.println(dc);
|
||||
//
|
||||
// return ConvertToDataValueObjectModel.toDocumentConfigDV(dc);
|
||||
// }
|
||||
//
|
||||
// public static String readFile(String filePath) {
|
||||
// String content = "";
|
||||
//
|
||||
// try {
|
||||
// content = new String(Files.readAllBytes(Paths.get(filePath)));
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
//
|
||||
// return content;
|
||||
// }
|
||||
//
|
||||
// public List<DocumentConfigDV> getListDocumentConfig() {
|
||||
// return listDocumentConfigsDV;
|
||||
// }
|
||||
//}
|
|
@ -1,266 +0,0 @@
|
|||
//package org.gcube.application.geoportalcommon;
|
||||
//
|
||||
//import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.Arrays;
|
||||
//import java.util.Iterator;
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//
|
||||
//import org.bson.Document;
|
||||
//import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||
//import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||
//import org.gcube.application.geoportal.common.model.rest.QueryRequest.OrderedRequest;
|
||||
//import org.gcube.application.geoportal.common.model.rest.QueryRequest.OrderedRequest.Direction;
|
||||
//import org.gcube.application.geoportal.common.model.rest.QueryRequest.PagedRequest;
|
||||
//import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
||||
//import org.gcube.application.geoportalcommon.shared.ItemFieldDV;
|
||||
//import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData;
|
||||
//import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
||||
//import org.gcube.application.geoportalcommon.shared.SearchingFilter.LOGICAL_OP;
|
||||
//import org.gcube.application.geoportalcommon.shared.SearchingFilter.ORDER;
|
||||
//import org.gcube.application.geoportalcommon.shared.WhereClause;
|
||||
//import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
||||
//import org.slf4j.Logger;
|
||||
//import org.slf4j.LoggerFactory;
|
||||
//
|
||||
//import com.mongodb.BasicDBList;
|
||||
//import com.mongodb.BasicDBObject;
|
||||
//import com.mongodb.BasicDBObjectBuilder;
|
||||
//
|
||||
///**
|
||||
// * The Class MongoServiceCommon.
|
||||
// *
|
||||
// * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
// *
|
||||
// * Dec 3, 2021
|
||||
// */
|
||||
//public class MongoServiceCommon {
|
||||
//
|
||||
// private static Logger LOG = LoggerFactory.getLogger(MongoServiceCommon.class);
|
||||
//
|
||||
// /**
|
||||
// * Gets the instance mongo concessioni.
|
||||
// *
|
||||
// * @return the instance mongo concessioni
|
||||
// */
|
||||
// public MongoConcessioni getInstanceMongoConcessioni() {
|
||||
// return mongoConcessioni().build();
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Gets the list of concessioni.
|
||||
// *
|
||||
// * @param reloadFromService the reload from service
|
||||
// * @return the list of concessioni
|
||||
// * @throws Exception the exception
|
||||
// */
|
||||
// public List<Concessione> getListOfConcessioni() throws Exception {
|
||||
// LOG.info("called getListOfConcessioni");
|
||||
//
|
||||
// List<Concessione> listOfConcessioni = new ArrayList<Concessione>();
|
||||
// LOG.info("Loading list of concessioni from client mongo");
|
||||
// MongoConcessioni clientMongo = getInstanceMongoConcessioni();
|
||||
//
|
||||
// Iterator<Concessione> concessioni = clientMongo.getList();
|
||||
// if (concessioni != null) {
|
||||
// while (concessioni.hasNext()) {
|
||||
// Concessione concessione = (Concessione) concessioni.next();
|
||||
// listOfConcessioni.add(concessione);
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// LOG.info("read list of concessioni with size: " + listOfConcessioni.size());
|
||||
// return listOfConcessioni;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Query on mongo.
|
||||
// *
|
||||
// * @param offset the offset
|
||||
// * @param limit the limit
|
||||
// * @param filter the filter
|
||||
// * @param recordType the record type
|
||||
// * @return the result set paginated data
|
||||
// * @throws Exception the exception
|
||||
// */
|
||||
// public ResultSetPaginatedData queryOnMongo(Integer totalItems, Integer offset, Integer limit, SearchingFilter filter, String recordType) throws Exception {
|
||||
//
|
||||
// try {
|
||||
//
|
||||
// if (recordType.equalsIgnoreCase("concessione")) {
|
||||
// MongoConcessioni clientMongo = getInstanceMongoConcessioni();
|
||||
//
|
||||
// if(totalItems==null || totalItems < 0) {
|
||||
// // TODO MUST BE REPLACED BY COUNT
|
||||
// List<Concessione> listOfConcessioni = getListOfConcessioni();
|
||||
// int listConcessioniSize = listOfConcessioni.size();
|
||||
// totalItems = listConcessioniSize;
|
||||
// }
|
||||
//
|
||||
// Integer offsetIndex = offset;
|
||||
// Integer limitIndex = limit;
|
||||
//
|
||||
// if (offset == null || offset<0) {
|
||||
// offsetIndex = 0;
|
||||
// }
|
||||
// if (limit == null || limit<0) {
|
||||
// limitIndex = totalItems;
|
||||
// }
|
||||
//
|
||||
// ResultSetPaginatedData searchedData = new ResultSetPaginatedData(offsetIndex, limitIndex, false);
|
||||
// searchedData.setTotalItems(totalItems);
|
||||
//
|
||||
// List<ConcessioneDV> toReturnList = new ArrayList<ConcessioneDV>();
|
||||
// Direction sDirection = null;
|
||||
// List<String> orderingFields = new ArrayList<String>();
|
||||
//
|
||||
// if (filter == null) {
|
||||
// LOG.info("No filter found, creating empty filter");
|
||||
// filter = new SearchingFilter();
|
||||
// }
|
||||
//
|
||||
// ORDER order = filter.getOrder();
|
||||
//
|
||||
// if (order == null) {
|
||||
// order = ORDER.ASC;
|
||||
// LOG.info("No direction/order found, using default: " + order);
|
||||
// }
|
||||
//
|
||||
// switch (order) {
|
||||
// case ASC:
|
||||
// sDirection = Direction.ASCENDING;
|
||||
// break;
|
||||
// case DESC:
|
||||
// sDirection = Direction.DESCENDING;
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// List<ItemField> orderByFields = filter.getOrderByFields();
|
||||
//
|
||||
// if(orderByFields==null) {
|
||||
// orderByFields = new ArrayList<ItemField>();
|
||||
// }
|
||||
//
|
||||
// if(orderByFields.isEmpty()) {
|
||||
// ItemField orderD = new ItemField("", Arrays.asList("name"), false, false, false);
|
||||
// LOG.info("Order by is null, adding default: " + orderD);
|
||||
// orderByFields.add(orderD);
|
||||
// }
|
||||
//
|
||||
// for (ItemField itemField : orderByFields) {
|
||||
// if (itemField.getJsonFields() != null) {
|
||||
// for (String field : itemField.getJsonFields()) {
|
||||
// orderingFields.add(field);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// QueryRequest request = new QueryRequest();
|
||||
// PagedRequest paging = new PagedRequest();
|
||||
// paging.setOffset(offsetIndex);
|
||||
// paging.setLimit(limitIndex);
|
||||
// request.setPaging(paging);
|
||||
//
|
||||
// OrderedRequest ordering = new OrderedRequest();
|
||||
// ordering.setDirection(sDirection);
|
||||
// ordering.setFields(orderingFields);
|
||||
//
|
||||
// request.setOrdering(ordering);
|
||||
//
|
||||
// Document query = new Document();
|
||||
// if(filter.getConditions()!=null) {
|
||||
// for (WhereClause whereClause : filter.getConditions()) {
|
||||
//
|
||||
// LOGICAL_OP searchWithOperator = whereClause.getOperator();
|
||||
// if(searchWithOperator==null) {
|
||||
// searchWithOperator = LOGICAL_OP.OR;
|
||||
// }
|
||||
//
|
||||
// if (whereClause.getSearchInto() != null) {
|
||||
// Map<String, Object> searchFields = whereClause.getSearchInto();
|
||||
// BasicDBObjectBuilder builder = BasicDBObjectBuilder.start();
|
||||
// for (String key : searchFields.keySet()) {
|
||||
// // using regex and case-insensitive
|
||||
// BasicDBObject bs = new BasicDBObject();
|
||||
// bs.append("$regex", searchFields.get(key));
|
||||
// bs.append("$options", "i");
|
||||
// builder.append(key, bs);
|
||||
//
|
||||
//
|
||||
// }
|
||||
// //Building list of Document in OR clause
|
||||
// BasicDBList list = new BasicDBList();
|
||||
// Map map = builder.get().toMap();
|
||||
// for (Object key : map.keySet()) {
|
||||
//
|
||||
// BasicDBObject value = (BasicDBObject) map.get(key);
|
||||
// Document doc = new Document((String) key, value);
|
||||
// list.add(doc);
|
||||
// }
|
||||
//
|
||||
// //query = new Document();
|
||||
// query.put(searchWithOperator.getOperator(), list);
|
||||
//
|
||||
//// BasicDBObject bs = new BasicDBObject();
|
||||
//// bs.append("$eq", "PASSED");
|
||||
//// query.put("report.status", bs);
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// request.setFilter(query);
|
||||
//
|
||||
// LOG.info("Paging offset: " + offsetIndex + ", limit: " + limitIndex);
|
||||
// LOG.info("Direction: " + sDirection);
|
||||
// LOG.info("Order by Fields: " + orderingFields);
|
||||
// LOG.info("Search for conditions: " + filter.getConditions());
|
||||
// if (query != null) {
|
||||
// LOG.info("Search query to JSON: " + query.toJson());
|
||||
// }
|
||||
//
|
||||
// Iterator<Concessione> concessioni = clientMongo.query(request);
|
||||
// int i = 0;
|
||||
// while (concessioni.hasNext()) {
|
||||
// Concessione concessione = concessioni.next();
|
||||
// ConcessioneDV concessioneDV = ConvertToDataViewModel.toMetadataConcessione(concessione, true);
|
||||
// toReturnList.add(concessioneDV);
|
||||
// i++;
|
||||
// LOG.trace(i+") converted: " + concessioneDV);
|
||||
// }
|
||||
// LOG.debug("read " + toReturnList + " project/s");
|
||||
//
|
||||
// searchedData.setData(toReturnList);
|
||||
//
|
||||
// // TODO WORKAROUND MUST BE REMOVE AFTER THE QUERY COUNT
|
||||
// // AND LIST.SIZE WILL BE AVAILABLE IN THE SERVICE
|
||||
// if (filter.getConditions() != null) {
|
||||
// searchedData.setTotalItems(toReturnList.size());
|
||||
// totalItems = toReturnList.size();
|
||||
// }
|
||||
//
|
||||
// if (totalItems == limit || totalItems == 0) {
|
||||
// LOG.debug("Page completed returning " + totalItems + " items");
|
||||
// int newOffset = offsetIndex + limitIndex;
|
||||
// searchedData.setServerSearchFinished(newOffset > totalItems || totalItems == 0);
|
||||
// LOG.debug("is Search finished: " + searchedData.isServerSearchFinished());
|
||||
//
|
||||
// }
|
||||
//
|
||||
// return searchedData;
|
||||
// }
|
||||
//
|
||||
// } catch (Exception e) {
|
||||
// LOG.error("Error on loading paginated and filtered list of concessioni: ", e);
|
||||
// throw new Exception("Error occurred on loading list of Concessioni. Error: " + e.getMessage());
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
//
|
||||
// }
|
||||
//
|
||||
//}
|
|
@ -4,6 +4,7 @@ import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPl
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.bson.Document;
|
||||
|
@ -12,6 +13,7 @@ import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDec
|
|||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.RelationshipDefinition;
|
||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||
import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_DATA_HANDLER;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -29,6 +31,8 @@ public class UseCaseDescriptorCaller {
|
|||
|
||||
private static Logger LOG = LoggerFactory.getLogger(UseCaseDescriptorCaller.class);
|
||||
|
||||
public static final String TIMELINE_CONFIG_TJT_DOCUMENT = "tjt_document";
|
||||
|
||||
/**
|
||||
* Use case descriptors client.
|
||||
*
|
||||
|
@ -189,4 +193,37 @@ public class UseCaseDescriptorCaller {
|
|||
return ucd.getRelationshipDefinitions();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read temporal dimension template.
|
||||
*
|
||||
* @param profileID the profile ID
|
||||
* @return the document
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public Document readTemporalDimensionTemplate(String profileID) throws Exception {
|
||||
|
||||
UseCaseDescriptorsI client = useCaseDescriptorsClient();
|
||||
UseCaseDescriptor ucd = client.getById(profileID);
|
||||
|
||||
List<HandlerDeclaration> timelineHandlers = ucd
|
||||
.getHandlersByType(GEOPORTAL_DATA_HANDLER.geoportal_timeline_json_template.getType());
|
||||
|
||||
if (timelineHandlers != null && timelineHandlers.size() > 0) {
|
||||
HandlerDeclaration handler = timelineHandlers.get(0); // only one expected
|
||||
Document config = handler.getConfiguration();
|
||||
try {
|
||||
LinkedHashMap<String, Object> tjtDoc = (LinkedHashMap<String, Object>) config
|
||||
.get(TIMELINE_CONFIG_TJT_DOCUMENT);
|
||||
return new Document(tjtDoc);
|
||||
} catch (Exception e) {
|
||||
LOG.warn("Error on reading the handler type "
|
||||
+ GEOPORTAL_DATA_HANDLER.geoportal_timeline_json_template.getType() + " in the profileID: "
|
||||
+ profileID, e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ public class ProjectDV implements Serializable {
|
|||
|
||||
// Shortcut to "SPATIAL REFERENCE" containted into IdentificationReferenceDV
|
||||
private GeoJSON spatialReference;
|
||||
private TemporalReferenceDV temporalReference;
|
||||
|
||||
public ProjectDV() {
|
||||
|
||||
|
@ -113,6 +114,14 @@ public class ProjectDV implements Serializable {
|
|||
this.spatialReference = spatialReference;
|
||||
}
|
||||
|
||||
public TemporalReferenceDV getTemporalReference() {
|
||||
return temporalReference;
|
||||
}
|
||||
|
||||
public void setTemporalReference(TemporalReferenceDV temporalReference) {
|
||||
this.temporalReference = temporalReference;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
@ -136,6 +145,8 @@ public class ProjectDV implements Serializable {
|
|||
builder.append(lifecycleInformationDV);
|
||||
builder.append(", spatialReference=");
|
||||
builder.append(spatialReference);
|
||||
builder.append(", temporalReference=");
|
||||
builder.append(temporalReference);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.gcube.application.geoportalcommon.shared.geoportal.project;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV;
|
||||
|
||||
/**
|
||||
|
@ -16,7 +18,13 @@ public class TemporalReferenceDV extends DocumentDV {
|
|||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -7990905553022863653L;
|
||||
private String field;
|
||||
private String profileID;
|
||||
private String projectID;
|
||||
|
||||
private String jsonTimelineObject;
|
||||
|
||||
private Date start;
|
||||
private Date end;
|
||||
|
||||
/**
|
||||
* Instantiates a new temporal reference DV.
|
||||
|
@ -25,24 +33,59 @@ public class TemporalReferenceDV extends DocumentDV {
|
|||
|
||||
}
|
||||
|
||||
public TemporalReferenceDV(String field) {
|
||||
super();
|
||||
this.field = field;
|
||||
public String getJsonTimelineObject() {
|
||||
return jsonTimelineObject;
|
||||
}
|
||||
|
||||
public String getField() {
|
||||
return field;
|
||||
public void setJsonTimelineObject(String jsonTimelineObject) {
|
||||
this.jsonTimelineObject = jsonTimelineObject;
|
||||
}
|
||||
|
||||
public void setField(String field) {
|
||||
this.field = field;
|
||||
public String getProfileID() {
|
||||
return profileID;
|
||||
}
|
||||
|
||||
public String getProjectID() {
|
||||
return projectID;
|
||||
}
|
||||
|
||||
public Date getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
public Date getEnd() {
|
||||
return end;
|
||||
}
|
||||
|
||||
public void setProfileID(String profileID) {
|
||||
this.profileID = profileID;
|
||||
}
|
||||
|
||||
public void setProjectID(String projectID) {
|
||||
this.projectID = projectID;
|
||||
}
|
||||
|
||||
public void setStart(Date start) {
|
||||
this.start = start;
|
||||
}
|
||||
|
||||
public void setEnd(Date end) {
|
||||
this.end = end;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("TemporalReferenceDV [field=");
|
||||
builder.append(field);
|
||||
builder.append("TemporalReferenceDV [profileID=");
|
||||
builder.append(profileID);
|
||||
builder.append(", projectID=");
|
||||
builder.append(projectID);
|
||||
builder.append(", jsonTimelineObject=");
|
||||
builder.append(jsonTimelineObject);
|
||||
builder.append(", start=");
|
||||
builder.append(start);
|
||||
builder.append(", end=");
|
||||
builder.append(end);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import java.util.Date;
|
|||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Aug 4, 2021
|
||||
* Aug 4, 2021
|
||||
*/
|
||||
public class DateUtils {
|
||||
|
||||
|
@ -62,4 +62,26 @@ public class DateUtils {
|
|||
return null;
|
||||
return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||
}
|
||||
|
||||
public static Date toDate(String date) {
|
||||
|
||||
if (date == null || date.isEmpty())
|
||||
return null;
|
||||
|
||||
try {
|
||||
LocalDate localDate = LocalDate.parse(date);
|
||||
return asDate(localDate);
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
try {
|
||||
LocalDateTime dateTime = LocalDateTime.parse(date);
|
||||
return asDate(dateTime);
|
||||
} catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue