geoportal-data-entry-app/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/ConvertToServiceModel.java

439 lines
14 KiB
Java
Raw Normal View History

2020-10-19 17:53:16 +02:00
package org.gcube.portlets.user.geoportaldataentry.server;
import java.text.ParseException;
import java.text.SimpleDateFormat;
2020-10-21 12:38:57 +02:00
import java.time.LocalDateTime;
import java.time.ZoneId;
2020-10-19 17:53:16 +02:00
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.gcube.application.geoportal.common.model.legacy.AbstractRelazione;
2021-07-23 17:40:50 +02:00
import org.gcube.application.geoportal.common.model.legacy.AccessPolicy;
import org.gcube.application.geoportal.common.model.legacy.Concessione;
import org.gcube.application.geoportal.common.model.legacy.LayerConcessione;
import org.gcube.application.geoportal.common.model.legacy.RelazioneScavo;
import org.gcube.application.geoportal.common.model.legacy.UploadedImage;
2020-10-19 17:53:16 +02:00
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp;
import org.gcube.portlets.widgets.mpformbuilder.shared.GenericDatasetBean;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The Class ConvertToServiceModel.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Oct 21, 2020
2020-10-19 17:53:16 +02:00
*/
public class ConvertToServiceModel {
2020-10-20 15:25:26 +02:00
/** The Constant LOG. */
2020-10-19 17:53:16 +02:00
private static final Logger LOG = LoggerFactory.getLogger(ConvertToServiceModel.class);
2020-10-21 12:38:57 +02:00
public static final String HOURS_MINUTES_SEPARATOR = ConstantsGeoPortalDataEntryApp.HOURS_MINUTES_SEPARATOR;
2020-10-21 12:38:57 +02:00
public static final String DATE_FORMAT = ConstantsGeoPortalDataEntryApp.DATE_FORMAT;
2020-10-21 12:38:57 +02:00
public static final String TIME_FORMAT = ConstantsGeoPortalDataEntryApp.TIME_FORMAT;
2020-10-20 15:25:26 +02:00
2020-10-19 17:53:16 +02:00
/**
* To concessione.
*
* @param gdb the gdb
2020-10-19 17:53:16 +02:00
* @param user the user
* @return the concessione
* @throws Exception the exception
2020-10-19 17:53:16 +02:00
*/
public static Concessione toConcessione(GenericDatasetBean gdb, GCubeUser user) throws Exception {
2020-10-19 17:53:16 +02:00
Map<String, List<String>> mapFields = gdb.getFormDataEntryFields();
2020-10-19 17:53:16 +02:00
Concessione concessione = new Concessione();
// List<String> authors = mapFields.get("Autore");
// if(authors!=null) {
// concessione.setAuthors(authors);
// }
List<String> authors = mapFields.get("Nome Autore, Email, Ruolo");
if (authors != null) {
2020-10-19 17:53:16 +02:00
concessione.setAuthors(authors);
}
2020-10-19 17:53:16 +02:00
List<String> contributors = mapFields.get("Contributore");
if (contributors != null) {
2020-10-19 17:53:16 +02:00
for (String contributor : contributors) {
concessione.setContributore(contributor);
}
}
// concessione.setCreationTime(Instant.now());
2020-10-19 17:53:16 +02:00
concessione.setCreationUser(user.getUsername());
2020-10-19 17:53:16 +02:00
List<String> dataInizProgettoList = mapFields.get("Data inizio Progetto");
if (dataInizProgettoList != null && dataInizProgettoList.size() > 0) {
2020-10-19 17:53:16 +02:00
String inizioProgetto = dataInizProgettoList.get(0);
2020-10-21 12:38:57 +02:00
LocalDateTime theLDT = toLocalDateTime(inizioProgetto);
concessione.setDataInizioProgetto(theLDT);
2020-10-19 17:53:16 +02:00
}
2020-10-19 17:53:16 +02:00
List<String> dataFineProgettoList = mapFields.get("Data fine Progetto");
if (dataFineProgettoList != null && dataFineProgettoList.size() > 0) {
2020-10-19 17:53:16 +02:00
String fineProgetto = dataFineProgettoList.get(0);
2020-10-21 12:38:57 +02:00
LocalDateTime theLDT = toLocalDateTime(fineProgetto);
concessione.setDataFineProgetto(theLDT);
2020-10-19 17:53:16 +02:00
}
2020-10-19 17:53:16 +02:00
List<String> descrizioneLst = mapFields.get("Descrizione del contenuto");
if (descrizioneLst != null && descrizioneLst.size() > 0) {
2020-10-19 17:53:16 +02:00
concessione.setDescrizioneContenuto(descrizioneLst.get(0));
}
2020-10-19 17:53:16 +02:00
List<String> editors = mapFields.get("Editore");
if (editors != null && editors.size() > 0) {
2020-10-27 12:37:29 +01:00
concessione.setEditore(editors.get(0));
2020-10-19 17:53:16 +02:00
}
2020-10-27 12:37:29 +01:00
List<String> fontiFinanziamento = mapFields.get("Fonte del finanziamento");
if (fontiFinanziamento != null) {
2020-10-19 17:53:16 +02:00
concessione.setFontiFinanziamento(fontiFinanziamento);
}
List<String> licenzaLst = mapFields.get("ID Licenza");
if (licenzaLst != null && licenzaLst.size() > 0) {
concessione.setLicenzaID(licenzaLst.get(0));
2020-10-19 17:53:16 +02:00
}
2020-10-19 17:53:16 +02:00
List<String> introduzioneLst = mapFields.get("Introduzione");
if (introduzioneLst != null && introduzioneLst.size() > 0) {
2020-10-19 17:53:16 +02:00
concessione.setIntroduzione(introduzioneLst.get(0));
}
2020-10-19 17:53:16 +02:00
List<String> nomeLst = mapFields.get("Nome del progetto");
if (nomeLst != null && nomeLst.size() > 0) {
2020-10-19 17:53:16 +02:00
concessione.setNome(nomeLst.get(0));
}
2020-10-19 17:53:16 +02:00
List<String> paroleChiaveLibereLst = mapFields.get("Parola chiave a scelta libera");
// LOG.debug("Parola chiave a scelta libera: "+paroleChiaveLibereLst);
if (paroleChiaveLibereLst != null) {
2020-10-19 17:53:16 +02:00
concessione.setParoleChiaveLibere(paroleChiaveLibereLst);
}
List<String> paroleChiaveICCDLst = mapFields.get("Parola chiave relativa alla cronologia");
// LOG.debug("Parola chiave relativa alla cronologia: "+paroleChiaveICCDLst);
if (paroleChiaveICCDLst != null) {
concessione.setParoleChiaveICCD(paroleChiaveICCDLst);
2020-10-19 17:53:16 +02:00
}
2020-10-19 17:53:16 +02:00
List<String> risorsaCorrelataLst = mapFields.get("Risorsa correlata");
if (risorsaCorrelataLst != null) {
2020-10-19 17:53:16 +02:00
concessione.setRisorseCorrelate(risorsaCorrelataLst);
}
2020-10-19 17:53:16 +02:00
List<String> responsabileLst = mapFields.get("Responsabile");
if (responsabileLst != null && responsabileLst.size() > 0) {
2020-10-19 17:53:16 +02:00
concessione.setResponsabile(responsabileLst.get(0));
}
2020-10-19 17:53:16 +02:00
List<String> soggettoLst = mapFields.get("Soggetto");
if (soggettoLst != null) {
2020-10-19 17:53:16 +02:00
concessione.setSoggetto(soggettoLst);
}
2020-10-19 17:53:16 +02:00
List<String> titolareCopyrightLst = mapFields.get("Titolare Copyright");
if (titolareCopyrightLst != null) {
2020-12-01 18:15:13 +01:00
concessione.setTitolareCopyright(titolareCopyrightLst);
2020-10-19 17:53:16 +02:00
}
2020-10-19 17:53:16 +02:00
List<String> titolareLicenzaLst = mapFields.get("Titolare Licenza");
if (titolareLicenzaLst != null) {
2020-12-01 18:15:13 +01:00
concessione.setTitolareLicenza(titolareLicenzaLst);
2020-10-19 17:53:16 +02:00
}
2020-10-19 17:53:16 +02:00
List<String> titolareDatiLst = mapFields.get("Titolare dei dati");
if (titolareDatiLst != null) {
2020-10-19 17:53:16 +02:00
concessione.setTitolari(titolareDatiLst);
}
List<String> latList = mapFields.get("Latitudine Centroide");
if (latList != null && latList.size() > 0) {
try {
2020-12-10 11:31:19 +01:00
String theLat = latList.get(0);
if (theLat != null && !theLat.isEmpty()) {
2020-12-10 11:31:19 +01:00
Double centroidLat = Double.parseDouble(theLat);
2020-12-10 11:25:45 +01:00
concessione.setCentroidLat(centroidLat);
}
} catch (Exception e) {
throw new Exception("Unable to parse " + latList.get(0) + " as valid latitude");
}
}
List<String> longList = mapFields.get("Longitudine Centroide");
if (longList != null && longList.size() > 0) {
try {
2020-12-10 11:31:19 +01:00
String theLong = longList.get(0);
if (theLong != null && !theLong.isEmpty()) {
2020-12-10 11:31:19 +01:00
Double centroidLong = Double.parseDouble(theLong);
2020-12-10 11:25:45 +01:00
concessione.setCentroidLong(centroidLong);
}
} catch (Exception e) {
throw new Exception("Unable to parse " + longList.get(0) + " as valid longitude");
}
}
2020-10-19 17:53:16 +02:00
return concessione;
2020-10-19 17:53:16 +02:00
}
2020-10-20 15:25:26 +02:00
/**
* To relazione scavo.
*
* @param gdb the gdb
* @return the relazione scavo
*/
public static RelazioneScavo toRelazioneScavo(GenericDatasetBean gdb) {
2020-10-19 17:53:16 +02:00
Map<String, List<String>> mapFields = gdb.getFormDataEntryFields();
RelazioneScavo relazioneScavo = new RelazioneScavo();
2020-10-19 17:53:16 +02:00
List<String> responsabiliLst = mapFields.get("Responsabile del documento");
if (responsabiliLst != null) {
2020-10-19 17:53:16 +02:00
relazioneScavo.setResponsabili(responsabiliLst);
}
2020-10-27 12:37:29 +01:00
List<String> autoreList = mapFields.get("Autore del documento");
if (autoreList != null) {
// TODO
2020-10-27 12:37:29 +01:00
}
List<String> politicaDiAccessoLst = mapFields.get("Politica di accesso");
LOG.debug("Relazione di Scavo: Politica di accesso lst: "+politicaDiAccessoLst);
if (politicaDiAccessoLst != null && politicaDiAccessoLst.size() > 0) {
try {
AccessPolicy ap = AccessPolicy.valueOf(politicaDiAccessoLst.get(0));
LOG.debug("Relazione di Scavo: AccessPolicy: "+ap);
relazioneScavo.setPolicy(ap);
} catch (Exception e) {
LOG.warn("I cannot cast " + politicaDiAccessoLst.get(0) + " to " + AccessPolicy.values(), e);
}
}
List<String> licenzaIdList = mapFields.get("ID Licenza");
if (licenzaIdList != null && licenzaIdList.size() > 0) {
LOG.debug("Relazione di Scavo: ID Licenza lst: "+licenzaIdList);
2020-10-19 17:53:16 +02:00
relazioneScavo.setLicenseID(licenzaIdList.get(0));
LOG.debug("Relazione di Scavo: ID Licenza: "+relazioneScavo.getLicenseID());
2020-10-19 17:53:16 +02:00
}
// TODO
List<String> periodoDiEmbargo = mapFields.get("Periodo di embargo");
if (periodoDiEmbargo != null && periodoDiEmbargo.size() > 0) {
String dateFromTo = periodoDiEmbargo.get(0);
String[] dates = dateFromTo.split(",");
String dateFrom = dates[0];
String dateTo = dates[0];
// TODO MUST BE INTENGRATED IN THE SERVICE
}
2020-10-19 17:53:16 +02:00
return relazioneScavo;
}
/**
* To abstract relazione scavo.
*
* @param gdb the gdb
* @return the abstract relazione
*/
public static AbstractRelazione toAbstractRelazioneScavo(GenericDatasetBean gdb) {
2021-01-15 15:08:38 +01:00
Map<String, List<String>> mapFields = gdb.getFormDataEntryFields();
AbstractRelazione abstractrelazione = new AbstractRelazione();
2021-01-15 15:08:38 +01:00
List<String> abstractLstIta = mapFields.get("Abstract in Italiano");
if (abstractLstIta != null && abstractLstIta.size() > 0) {
abstractrelazione.setAbstractIta(abstractLstIta.get(0));
}
2021-01-15 15:08:38 +01:00
List<String> abstractLstEng = mapFields.get("Abstract in Inglese");
if (abstractLstEng != null && abstractLstEng.size() > 0) {
abstractrelazione.setAbstractEng(abstractLstEng.get(0));
}
// THIS SHOULD BE ALWAYS "OPEN"
List<String> politicaDiAccessoLst = mapFields.get("Politica di accesso");
if (politicaDiAccessoLst != null && politicaDiAccessoLst.size() > 0) {
2021-01-15 15:08:38 +01:00
try {
AccessPolicy ap = AccessPolicy.valueOf(politicaDiAccessoLst.get(0));
abstractrelazione.setPolicy(ap);
} catch (Exception e) {
LOG.warn("I cannot cast " + politicaDiAccessoLst.get(0) + " to " + AccessPolicy.values(), e);
2021-01-15 15:08:38 +01:00
}
}
// THIS SHOULD BE ALWAYS "CC-BY-4.0"
2021-01-15 15:08:38 +01:00
List<String> licenzaIdList = mapFields.get("ID Licenza");
if (licenzaIdList != null && licenzaIdList.size() > 0) {
abstractrelazione.setLicenseID(licenzaIdList.get(0));
}
return abstractrelazione;
2021-01-15 15:08:38 +01:00
}
2020-10-20 15:25:26 +02:00
/**
* To immagini rappresentative.
*
* @param gdb the gdb
* @return the uploaded image
*/
public static UploadedImage toImmaginiRappresentative(GenericDatasetBean gdb) {
2020-10-19 17:53:16 +02:00
Map<String, List<String>> mapFields = gdb.getFormDataEntryFields();
2020-10-19 17:53:16 +02:00
UploadedImage uplaodedImage = new UploadedImage();
2021-01-15 15:08:38 +01:00
// List<String> titoloLst = mapFields.get("Titolo");
// if(titoloLst!=null && titoloLst.size()>0) {
// uplaodedImage.setTitolo(titoloLst.get(0));
// }
//
2020-10-19 17:53:16 +02:00
List<String> didascaliaLst = mapFields.get("Didascalia");
if (didascaliaLst != null && didascaliaLst.size() > 0) {
2020-10-19 17:53:16 +02:00
uplaodedImage.setDidascalia(didascaliaLst.get(0));
}
// NB here is setResponsabili but should be setAuthor
2021-01-15 15:08:38 +01:00
List<String> responsabileLst = mapFields.get("Autore");
if (responsabileLst != null) {
2020-10-19 17:53:16 +02:00
uplaodedImage.setResponsabili(responsabileLst);
// uplaodedImage.setAuthor is missing!!!
2020-10-19 17:53:16 +02:00
}
2021-01-15 15:08:38 +01:00
// List<String> autoreList = mapFields.get("Autore");
// if(autoreList!=null) {
// //TODO
// }
2020-12-01 18:15:13 +01:00
List<String> politicaDiAccessoLst = mapFields.get("Politica di accesso");
if (politicaDiAccessoLst != null && politicaDiAccessoLst.size() > 0) {
2020-12-01 18:15:13 +01:00
try {
AccessPolicy ap = AccessPolicy.valueOf(politicaDiAccessoLst.get(0));
uplaodedImage.setPolicy(ap);
} catch (Exception e) {
LOG.warn("I cannot cast " + politicaDiAccessoLst.get(0) + " to " + AccessPolicy.values(), e);
2020-12-01 18:15:13 +01:00
}
}
List<String> licenzaIdList = mapFields.get("ID Licenza");
if (licenzaIdList != null && licenzaIdList.size() > 0) {
uplaodedImage.setLicenseID(licenzaIdList.get(0));
}
2020-10-19 17:53:16 +02:00
return uplaodedImage;
}
2020-10-20 15:25:26 +02:00
/**
* To layer concessione.
*
* @param gdb the gdb
* @return the layer concessione
*/
public static LayerConcessione toLayerConcessione(GenericDatasetBean gdb) {
Map<String, List<String>> mapFields = gdb.getFormDataEntryFields();
LayerConcessione layerConcessione = new LayerConcessione();
List<String> titoloLst = mapFields.get("Titolo");
if (titoloLst != null && titoloLst.size() > 0) {
layerConcessione.setTitolo(titoloLst.get(0));
}
2020-10-20 15:25:26 +02:00
List<String> politicaDiAccessoLst = mapFields.get("Politica di accesso");
if (politicaDiAccessoLst != null && politicaDiAccessoLst.size() > 0) {
2020-10-20 15:25:26 +02:00
try {
AccessPolicy ap = AccessPolicy.valueOf(politicaDiAccessoLst.get(0));
layerConcessione.setPolicy(ap);
} catch (Exception e) {
LOG.warn("I cannot cast " + politicaDiAccessoLst.get(0) + " to " + AccessPolicy.values(), e);
2020-10-20 15:25:26 +02:00
}
}
List<String> valutazioneQualitaLst = mapFields.get("Valutazione della qualità");
if (valutazioneQualitaLst != null && valutazioneQualitaLst.size() > 0) {
layerConcessione.setValutazioneQualita(valutazioneQualitaLst.get(0));
}
List<String> metodoRaccoltaDatiLst = mapFields.get("Metodo di raccolta dei dati");
if (metodoRaccoltaDatiLst != null && metodoRaccoltaDatiLst.size() > 0) {
layerConcessione.setMetodoRaccoltaDati(metodoRaccoltaDatiLst.get(0));
}
List<String> scalaAcquisizioneLst = mapFields.get("Scala di acquisizione dei dati");
if (scalaAcquisizioneLst != null && scalaAcquisizioneLst.size() > 0) {
layerConcessione.setScalaAcquisizione(scalaAcquisizioneLst.get(0));
}
// TODO
List<String> periodoDiEmbargo = mapFields.get("Periodo di embargo");
if (periodoDiEmbargo != null && periodoDiEmbargo.size() > 0) {
String dateFromTo = periodoDiEmbargo.get(0);
String[] dates = dateFromTo.split(",");
String dateFrom = dates[0];
String dateTo = dates[0];
// TODO MUST BE INTENGRATED IN THE SERVICE
}
2020-12-01 18:15:13 +01:00
List<String> licenzaIdList = mapFields.get("ID Licenza");
if (licenzaIdList != null && licenzaIdList.size() > 0) {
2020-12-01 18:15:13 +01:00
layerConcessione.setLicenseID(licenzaIdList.get(0));
}
List<String> autoreLst = mapFields.get("Autore");
if (autoreLst != null) {
layerConcessione.setAuthors(autoreLst);
}
return layerConcessione;
}
2020-10-20 15:25:26 +02:00
/**
2020-10-21 12:38:57 +02:00
* To local date time.
2020-10-20 15:25:26 +02:00
*
* @param date the date
2020-10-21 12:38:57 +02:00
* @return the local date time
2020-10-20 15:25:26 +02:00
*/
2020-10-21 12:38:57 +02:00
public static LocalDateTime toLocalDateTime(String date) {
LocalDateTime theLocalDT = null;
2020-10-19 17:53:16 +02:00
try {
2020-10-20 15:25:26 +02:00
date = date.trim();
SimpleDateFormat dateFormat = null;
if (date.contains(HOURS_MINUTES_SEPARATOR)) {
dateFormat = new SimpleDateFormat(DATE_FORMAT + " " + TIME_FORMAT);
} else
2020-10-21 12:38:57 +02:00
dateFormat = new SimpleDateFormat(DATE_FORMAT);
2020-10-19 17:53:16 +02:00
Date theDate = dateFormat.parse(date);
2020-10-21 12:38:57 +02:00
theLocalDT = convertToLocalDateTimeViaInstant(theDate);
2020-10-19 17:53:16 +02:00
} catch (ParseException e) {
LOG.error("No able to parse: " + date, e);
2020-10-19 17:53:16 +02:00
}
2020-10-21 12:38:57 +02:00
return theLocalDT;
}
2020-10-21 12:38:57 +02:00
/**
* Convert to local date time via instant.
*
* @param dateToConvert the date to convert
* @return the local date time
*/
public static LocalDateTime convertToLocalDateTimeViaInstant(Date dateToConvert) {
return dateToConvert.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
2020-10-19 17:53:16 +02:00
}
2020-10-19 17:53:16 +02:00
}