migration in progress
This commit is contained in:
parent
5c8c2a342d
commit
310817e425
|
@ -1,5 +1,7 @@
|
|||
package org.gcube.application.geoportalcommon;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
|
@ -45,6 +47,15 @@ import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescrip
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
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;
|
||||
|
||||
/**
|
||||
* The Class ConvertToDataValueObjectModel.
|
||||
*
|
||||
|
@ -63,6 +74,10 @@ public class ConvertToDataValueObjectModel {
|
|||
public static final String HOURS_MINUTES_SEPARATOR = ":";
|
||||
|
||||
public static final String TIME_FORMAT = "HH" + HOURS_MINUTES_SEPARATOR + "mm";
|
||||
|
||||
public static List<String> KEYSET_POSSIBLE_DATE = Arrays.asList("start", "end", "created", "updated", "inizio",
|
||||
"fine", "creato", "aggiornato");
|
||||
|
||||
/**
|
||||
* To use case descriptor DV.
|
||||
*
|
||||
|
@ -129,6 +144,12 @@ public class ConvertToDataValueObjectModel {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* To GEOPORTA L DAT A HANDLER.
|
||||
*
|
||||
* @param id the id
|
||||
* @return the geoportal data handler
|
||||
*/
|
||||
public static GEOPORTAL_DATA_HANDLER to_GEOPORTAL_DATA_HANDLER(String id) {
|
||||
|
||||
if (id == null)
|
||||
|
@ -364,7 +385,6 @@ public class ConvertToDataValueObjectModel {
|
|||
* @param project the project
|
||||
* @param projectReader the project reader
|
||||
* @return the project DV
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public static ProjectDV toProjectDV(Project project, ProjectDVBuilder projectReader) {
|
||||
LOG.info("toProjectDV called");
|
||||
|
@ -385,7 +405,7 @@ public class ConvertToDataValueObjectModel {
|
|||
project.getProfileVersion() != null ? project.getProfileVersion().getValue() : "");
|
||||
theProject.setVersion(project.getVersion() != null ? project.getVersion().getValue() : "");
|
||||
|
||||
theProject.setTheDocument(toDocumentDV(project.getTheDocument(), DocumentDV.class,
|
||||
theProject.setTheDocument(toGenericDocumentDV(project.getTheDocument(), DocumentDV.class,
|
||||
projectReader.getListDocumentKeys(), projectReader.isIncludeFullDocumentMap()));
|
||||
|
||||
List<Relationship> relations = project.getRelationships();
|
||||
|
@ -451,7 +471,6 @@ public class ConvertToDataValueObjectModel {
|
|||
*
|
||||
* @param project the project
|
||||
* @return the result document DV
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public static ResultDocumentDV toResultDocumentDV(Project project) {
|
||||
LOG.info("toResultDocumentDV called");
|
||||
|
@ -465,8 +484,8 @@ public class ConvertToDataValueObjectModel {
|
|||
|
||||
try {
|
||||
|
||||
ResultDocumentDV rd = (ResultDocumentDV) toDocumentDV(project.getTheDocument(), ResultDocumentDV.class,
|
||||
null, true);
|
||||
ResultDocumentDV rd = (ResultDocumentDV) toGenericDocumentDV(project.getTheDocument(),
|
||||
ResultDocumentDV.class, null, true);
|
||||
rd.setId(project.getId());
|
||||
rd.setProfileID(project.getProfileID());
|
||||
|
||||
|
@ -492,6 +511,12 @@ public class ConvertToDataValueObjectModel {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* To publication info DV.
|
||||
*
|
||||
* @param info the info
|
||||
* @return the publication info DV
|
||||
*/
|
||||
private static PublicationInfoDV toPublicationInfoDV(PublicationInfo info) {
|
||||
if (info == null)
|
||||
return null;
|
||||
|
@ -505,6 +530,12 @@ public class ConvertToDataValueObjectModel {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* To access DV.
|
||||
*
|
||||
* @param access the access
|
||||
* @return the access DV
|
||||
*/
|
||||
private static AccessDV toAccessDV(Access access) {
|
||||
if (access == null)
|
||||
return null;
|
||||
|
@ -516,6 +547,12 @@ public class ConvertToDataValueObjectModel {
|
|||
return acDV;
|
||||
}
|
||||
|
||||
/**
|
||||
* To accounting info DV.
|
||||
*
|
||||
* @param creationInfo the creation info
|
||||
* @return the accounting info DV
|
||||
*/
|
||||
private static AccountingInfoDV toAccountingInfoDV(AccountingInfo creationInfo) {
|
||||
if (creationInfo == null)
|
||||
return null;
|
||||
|
@ -531,18 +568,26 @@ public class ConvertToDataValueObjectModel {
|
|||
return aidv;
|
||||
}
|
||||
|
||||
/**
|
||||
* To identification reference DV.
|
||||
*
|
||||
* @param identificationReference the identification reference
|
||||
* @param listDocumentKeys the list document keys
|
||||
* @param getFullMap the get full map
|
||||
* @return the identification reference DV
|
||||
*/
|
||||
private static IdentificationReferenceDV toIdentificationReferenceDV(
|
||||
IdentificationReference identificationReference, List<String> listDocumentKeys, boolean getFullMap) {
|
||||
if (identificationReference == null)
|
||||
return null;
|
||||
|
||||
IdentificationReferenceDV idv = (IdentificationReferenceDV) toDocumentDV(identificationReference,
|
||||
IdentificationReferenceDV idv = (IdentificationReferenceDV) toGenericDocumentDV(identificationReference,
|
||||
IdentificationReferenceDV.class, listDocumentKeys, getFullMap);
|
||||
idv.setType(identificationReference.getType());
|
||||
|
||||
return idv;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* To date format string.
|
||||
*
|
||||
|
@ -597,24 +642,24 @@ public class ConvertToDataValueObjectModel {
|
|||
// }
|
||||
|
||||
/**
|
||||
* To document DV.
|
||||
* To generic document DV.
|
||||
*
|
||||
* @param <T> the generic type
|
||||
* @param document the document
|
||||
* @param toType the to type
|
||||
* @param targetClass the target class
|
||||
* @param listDocumentKeys the list document keys
|
||||
* @param getFullMap the get full map
|
||||
* @return the t
|
||||
* @return the document DV
|
||||
*/
|
||||
public static <T extends DocumentDV> DocumentDV toDocumentDV(Document document, Class<T> targetClass,
|
||||
public static <T extends DocumentDV> DocumentDV toGenericDocumentDV(Document document, Class<T> targetClass,
|
||||
List<String> listDocumentKeys, boolean getFullMap) {
|
||||
if (document == null)
|
||||
return null;
|
||||
|
||||
T documentDV;
|
||||
if (targetClass == null)
|
||||
if (targetClass == null) {
|
||||
documentDV = (T) new DocumentDV();
|
||||
else {
|
||||
} else {
|
||||
try {
|
||||
documentDV = targetClass.newInstance();
|
||||
} catch (InstantiationException e) {
|
||||
|
@ -631,7 +676,8 @@ public class ConvertToDataValueObjectModel {
|
|||
if (listDocumentKeys != null && !getFullMap) {
|
||||
LinkedHashMap<String, Object> documentAsMap = new LinkedHashMap<String, Object>(listDocumentKeys.size());
|
||||
for (String key : listDocumentKeys) {
|
||||
documentAsMap.put(key, document.get(key));
|
||||
|
||||
documentAsMap = fillMapValue(document, key, documentAsMap);
|
||||
}
|
||||
documentDV.setDocumentAsMap(documentAsMap);
|
||||
}
|
||||
|
@ -640,7 +686,8 @@ public class ConvertToDataValueObjectModel {
|
|||
Set<String> keySet = document.keySet();
|
||||
LinkedHashMap<String, Object> documentAsMap = new LinkedHashMap<String, Object>(keySet.size());
|
||||
for (String key : keySet) {
|
||||
documentAsMap.put(key, document.get(key));
|
||||
// documentAsMap.put(key, document.get(key));
|
||||
documentAsMap = fillMapValue(document, key, documentAsMap);
|
||||
}
|
||||
documentDV.setDocumentAsMap(documentAsMap);
|
||||
}
|
||||
|
@ -649,6 +696,95 @@ public class ConvertToDataValueObjectModel {
|
|||
|
||||
return documentDV;
|
||||
}
|
||||
|
||||
public static final DateTimeFormatter FULL_FORMATTER=DateTimeFormatter.ofPattern("uuuuMMdd_HH-mm-ss");
|
||||
|
||||
public static class MyLocalDateSerializer extends JsonSerializer<LocalDate> {
|
||||
@Override
|
||||
public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
||||
gen.writeString(value.format(FULL_FORMATTER));
|
||||
}
|
||||
}
|
||||
|
||||
public static class ParseDeserializer extends StdDeserializer<LocalDateTime> {
|
||||
public ParseDeserializer() {
|
||||
super(LocalDateTime.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
|
||||
return LocalDateTime.parse(p.getValueAsString()); // or overloaded with an appropriate format
|
||||
}
|
||||
}
|
||||
|
||||
public static class MyLocalDateDeserializer extends JsonDeserializer<LocalDate> {
|
||||
|
||||
@Override
|
||||
public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
return LocalDate.parse(p.getValueAsString(),FULL_FORMATTER);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill map.
|
||||
*
|
||||
* @param document the document
|
||||
* @param key the key
|
||||
* @param documentAsMap the document as map
|
||||
* @return the linked hash map
|
||||
*/
|
||||
public static LinkedHashMap<String, Object> fillMapValue(Document document, String key,
|
||||
LinkedHashMap<String, Object> documentAsMap) {
|
||||
|
||||
Object value = document.get(key);
|
||||
String keyLower = key.toLowerCase();
|
||||
|
||||
/*
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
JavaTimeModule javaTimeModule = new JavaTimeModule();
|
||||
javaTimeModule.addDeserializer(LocalDateTime.class, new ParseDeserializer());
|
||||
// javaTimeModule.addSerializer(LocalDate.class, new MyLocalDateSerializer());
|
||||
objectMapper.registerModule(javaTimeModule);
|
||||
|
||||
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
|
||||
objectMapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false);
|
||||
*/
|
||||
|
||||
|
||||
//checking if the key is a Date
|
||||
for (String possibleDate : KEYSET_POSSIBLE_DATE) {
|
||||
if (keyLower.contains(possibleDate)) {
|
||||
try {
|
||||
LOG.debug("value "+value+" is instance of: "+value.getClass());
|
||||
Document documentDate = new Document((Map) value);
|
||||
String jsonValue = documentDate.toJson();
|
||||
LOG.debug("jsonValue "+value);
|
||||
|
||||
//LocalDate asDate = objectMapper.readerFor(LocalDate.class).readValue(jsonValue);
|
||||
|
||||
LocalDateTime asDate = org.gcube.application.geoportal.client.utils.Serialization.read(jsonValue, LocalDateTime.class);
|
||||
LOG.info("Casted as date: " + asDate);
|
||||
value = asDate;
|
||||
break;
|
||||
} catch (Exception e) {
|
||||
LOG.warn("### MUST BE FIXED ### the field {} with value {} is not a date", key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
documentAsMap.put(key, value);
|
||||
return documentAsMap;
|
||||
}
|
||||
|
||||
public class LocalDateDeserializer extends JsonDeserializer<LocalDate> {
|
||||
|
||||
@Override
|
||||
public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
return LocalDate.parse(p.getValueAsString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* To relationship DV.
|
||||
|
@ -667,7 +803,7 @@ public class ConvertToDataValueObjectModel {
|
|||
/**
|
||||
* To validation report.
|
||||
*
|
||||
* @param validationReport the validation report
|
||||
* @param li the li
|
||||
* @return the validation report DV
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
|
@ -689,6 +825,12 @@ public class ConvertToDataValueObjectModel {
|
|||
return liDV;
|
||||
}
|
||||
|
||||
/**
|
||||
* To lifecycle information DV status.
|
||||
*
|
||||
* @param status the status
|
||||
* @return the lifecycle information D v. status
|
||||
*/
|
||||
public static LifecycleInformationDV.Status toLifecycleInformationDVStatus(LifecycleInformation.Status status) {
|
||||
|
||||
if (status == null)
|
||||
|
|
|
@ -446,41 +446,13 @@ public class ProjectsCaller {
|
|||
LOG.info("Paging offset: " + offsetIndex + ", limit: " + limitIndex);
|
||||
LOG.info("Direction: " + sDirection);
|
||||
LOG.info("Projection: " + projectionDocument);
|
||||
LOG.info("Order by Fields: " + orderingFields);
|
||||
LOG.info("Order by Fields: " + ordering);
|
||||
LOG.info("Search for conditions: " + filter.getConditions());
|
||||
if (query != null) {
|
||||
LOG.info("Search query to JSON: " + query.toJson());
|
||||
}
|
||||
|
||||
return geoportalClient.query(request);
|
||||
// int i = 0;
|
||||
// while (projects.hasNext()) {
|
||||
// Project project = projects.next();
|
||||
// ProjectDV projectDV = ConvertToDataValueObjectModel.toProjectDV(project, projectDVBuilder);
|
||||
// toReturnList.add(projectDV);
|
||||
// i++;
|
||||
// LOG.trace(i + ") converted: " + projectDV);
|
||||
// }
|
||||
// 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 Project: ", e);
|
||||
|
|
|
@ -4,8 +4,6 @@ import java.io.Serializable;
|
|||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.ResultDocumentDV;
|
||||
import org.gcube.application.geoportalcommon.shared.geoportal.config.ItemFieldDV;
|
||||
|
||||
/**
|
||||
|
@ -99,16 +97,14 @@ public class SearchingFilter implements Serializable {
|
|||
|
||||
}
|
||||
|
||||
private void addProjectionBaseInfo(Class<? extends DocumentDV> theClass) {
|
||||
private void addProjectionBaseInfo() {
|
||||
|
||||
if (projection != null) {
|
||||
projection.put("_profileID", 1);
|
||||
projection.put("_profileVersion", 1);
|
||||
projection.put("_version", 1);
|
||||
if (theClass.isAssignableFrom(ResultDocumentDV.class)) {
|
||||
projection.put("_lifecycleInformation", 1);
|
||||
projection.put("_info", 1);
|
||||
}
|
||||
projection.put("_lifecycleInformation", 1);
|
||||
projection.put("_info", 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -122,6 +118,8 @@ public class SearchingFilter implements Serializable {
|
|||
public SearchingFilter(List<ItemFieldDV> orderByFields, ORDER order) {
|
||||
this.orderByFields = orderByFields;
|
||||
this.order = order;
|
||||
if (this.order == null)
|
||||
order = ORDER.ASC;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -145,9 +143,9 @@ public class SearchingFilter implements Serializable {
|
|||
this.conditions = conditions;
|
||||
}
|
||||
|
||||
public void setProjection(LinkedHashMap<String, Object> projection, Class<? extends DocumentDV> theClass) {
|
||||
public void setProjection(LinkedHashMap<String, Object> projection) {
|
||||
this.projection = projection;
|
||||
addProjectionBaseInfo(theClass);
|
||||
addProjectionBaseInfo();
|
||||
}
|
||||
|
||||
public LinkedHashMap<String, Object> getProjection() {
|
||||
|
|
|
@ -3,6 +3,8 @@ package org.gcube.application;
|
|||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
@ -19,6 +21,17 @@ import org.junit.Test;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
import com.fasterxml.jackson.databind.JsonSerializer;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JSR310Module;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
|
||||
public class LoadDocumentConfiguration {
|
||||
|
||||
private static String TOKEN = "";
|
||||
|
@ -36,7 +49,7 @@ public class LoadDocumentConfiguration {
|
|||
|
||||
// MockDocumentConfigurationReader mock = new MockDocumentConfigurationReader();
|
||||
// System.out.println(mock.getListDocumentConfig());
|
||||
|
||||
|
||||
toHandlerDeclarationDV(null);
|
||||
}
|
||||
|
||||
|
@ -80,10 +93,10 @@ public class LoadDocumentConfiguration {
|
|||
LOG.debug("File as JSON: " + jsonConfig);
|
||||
|
||||
Document document = org.gcube.application.geoportal.client.utils.Serialization.read(jsonConfig, Document.class);
|
||||
|
||||
|
||||
LinkedHashMap<String, String> configuration = (LinkedHashMap<String, String>) document.get("_configuration");
|
||||
|
||||
//configuration.values();
|
||||
|
||||
// configuration.values();
|
||||
|
||||
try {
|
||||
List<String> gcubeProfiles = new ArrayList<String>(configuration.values());
|
||||
|
|
Loading…
Reference in New Issue