package org.gcube.portlets.user.geoportaldataentry.server; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; import java.util.Date; import java.util.List; import java.util.Map; import org.gcube.application.geoportal.model.concessioni.Concessione; import org.gcube.application.geoportal.model.concessioni.LayerConcessione; import org.gcube.application.geoportal.model.concessioni.RelazioneScavo; import org.gcube.application.geoportal.model.content.UploadedImage; 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; // TODO: Auto-generated Javadoc /** * The Class ConvertToServiceModel. * * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * * Oct 19, 2020 */ public class ConvertToServiceModel { public static final DateFormat dateFormat = new SimpleDateFormat(ConstantsGeoPortalDataEntryApp.DATE_FORMAT+" "+ConstantsGeoPortalDataEntryApp.TIME_FORMAT); private static final Logger LOG = LoggerFactory.getLogger(ConvertToServiceModel.class); /** * To concessione. * * @param gdb the gdb * @param user the user * @return the concessione */ public static Concessione toConcessione(GenericDatasetBean gdb, GCubeUser user) { Map> mapFields = gdb.getFormDataEntryFields(); Concessione concessione = new Concessione(); List authors = mapFields.get("Autore"); if(authors!=null) { concessione.setAuthors(authors); } List contributors = mapFields.get("Contributore"); if(contributors!=null) { for (String contributor : contributors) { concessione.setContributore(contributor); } } //concessione.setCreationTime(Instant.now()); concessione.setCreationUser(user.getUsername()); List dataInizProgettoList = mapFields.get("Data inizio Progetto"); if(dataInizProgettoList!=null && dataInizProgettoList.size()>0) { String inizioProgetto = dataInizProgettoList.get(0); Instant theIstant = toInstant(inizioProgetto); concessione.setDataInizioProgetto(theIstant); } List dataFineProgettoList = mapFields.get("Data fine Progetto"); if(dataFineProgettoList!=null && dataFineProgettoList.size()>0) { String fineProgetto = dataFineProgettoList.get(0); Instant theIstant = toInstant(fineProgetto); concessione.setDataFineProgetto(theIstant); } List descrizioneLst = mapFields.get("Descrizione del contenuto"); if(descrizioneLst!=null && descrizioneLst.size()>0) { concessione.setDescrizioneContenuto(descrizioneLst.get(0)); } List editors = mapFields.get("Editore"); if(editors!=null) { for (String editor : editors) { concessione.setEditore(editor); } } List fontiFinanziamento = mapFields.get("Fonti del finanziamento"); if(fontiFinanziamento!=null) { concessione.setFontiFinanziamento(fontiFinanziamento); } List licenzaLst = mapFields.get("ID Licenza"); if(licenzaLst!=null && licenzaLst.size()>0) { concessione.setLicenzaID(licenzaLst.get(0)); } List introduzioneLst = mapFields.get("Introduzione"); if(introduzioneLst!=null && introduzioneLst.size()>0) { concessione.setIntroduzione(introduzioneLst.get(0)); } //TODO // concessione.setLastUpdateTime(lastUpdateTime); // concessione.setLastUpdateUser(lastUpdateUser); List nomeLst = mapFields.get("Nome del progetto"); if(nomeLst!=null && nomeLst.size()>0) { concessione.setNome(nomeLst.get(0)); } List paroleChiaveLibereLst = mapFields.get("Parola chiave a scelta libera"); if(paroleChiaveLibereLst!=null){ concessione.setParoleChiaveLibere(paroleChiaveLibereLst); } List setParoleChiaveICCDLst = mapFields.get("Parola chiave relativa alla cronologia"); if(setParoleChiaveICCDLst!=null){ concessione.setParoleChiaveICCD(paroleChiaveLibereLst); } List risorsaCorrelataLst = mapFields.get("Risorsa correlata"); if(risorsaCorrelataLst!=null){ concessione.setRisorseCorrelate(risorsaCorrelataLst); } List responsabileLst = mapFields.get("Responsabile"); if(responsabileLst!=null && responsabileLst.size()>0){ concessione.setResponsabile(responsabileLst.get(0)); } List soggettoLst = mapFields.get("Soggetto"); if(soggettoLst!=null){ concessione.setSoggetto(soggettoLst); } List titolareCopyrightLst = mapFields.get("Titolare Copyright"); if(titolareCopyrightLst!=null && titolareCopyrightLst.size()>0){ concessione.setTitolareCopyright(titolareCopyrightLst.get(0)); } List titolareLicenzaLst = mapFields.get("Titolare Licenza"); if(titolareLicenzaLst!=null && titolareLicenzaLst.size()>0){ concessione.setTitolareLicenza(titolareLicenzaLst.get(0)); } List titolareDatiLst = mapFields.get("Titolare dei dati"); if(titolareDatiLst!=null){ concessione.setTitolari(titolareDatiLst); } return concessione; } public static RelazioneScavo toRelazioneScavo(GenericDatasetBean gdb){ Map> mapFields = gdb.getFormDataEntryFields(); RelazioneScavo relazioneScavo = new RelazioneScavo(); List abstractLst = mapFields.get("Abstract"); if(abstractLst!=null && abstractLst.size()>0) { relazioneScavo.setAbstractSection(abstractLst.get(0)); } List responsabiliLst = mapFields.get("Responsabile del documento"); if(responsabiliLst!=null) { relazioneScavo.setResponsabili(responsabiliLst); } List licenzaIdList = mapFields.get("ID Licenza"); if(licenzaIdList!=null && licenzaIdList.size()>0) { relazioneScavo.setLicenseID(licenzaIdList.get(0)); } //TODO //relazioneScavo.setCreationTime(creationTime); //TODO //relazioneScavo.setPolicy(policy); //TODO //Auto by library //relazioneScavo.setTitolo(titolo); return relazioneScavo; } public static UploadedImage toImmaginiRappresentative(GenericDatasetBean gdb){ Map> mapFields = gdb.getFormDataEntryFields(); UploadedImage uplaodedImage = new UploadedImage(); List titoloLst = mapFields.get("Titolo"); if(titoloLst!=null && titoloLst.size()>0) { uplaodedImage.setTitolo(titoloLst.get(0)); } List didascaliaLst = mapFields.get("Didascalia"); if(didascaliaLst!=null && didascaliaLst.size()>0) { uplaodedImage.setDidascalia(didascaliaLst.get(0)); } List responsabileLst = mapFields.get("Responsabile"); if(responsabileLst!=null) { uplaodedImage.setResponsabili(responsabileLst); } List licenzaIdList = mapFields.get("ID Licenza"); if(licenzaIdList!=null && licenzaIdList.size()>0) { uplaodedImage.setLicenseID(licenzaIdList.get(0)); } //TODO??? List autoreLst = mapFields.get("Autore"); if(autoreLst!=null) { } return uplaodedImage; } public static LayerConcessione toLayerConcessione(GenericDatasetBean gdb){ Map> mapFields = gdb.getFormDataEntryFields(); LayerConcessione layerConcessione = new LayerConcessione(); List titoloLst = mapFields.get("Titolo"); if(titoloLst!=null && titoloLst.size()>0) { layerConcessione.setTitolo(titoloLst.get(0)); } List valutazioneQualitaLst = mapFields.get("Valutazione della qualità"); if(valutazioneQualitaLst!=null && valutazioneQualitaLst.size()>0) { layerConcessione.setValutazioneQualita(valutazioneQualitaLst.get(0)); } List metodoRaccoltaDatiLst = mapFields.get("Metodo di raccolta dei dati"); if(metodoRaccoltaDatiLst!=null && metodoRaccoltaDatiLst.size()>0) { layerConcessione.setMetodoRaccoltaDati(metodoRaccoltaDatiLst.get(0)); } List scalaAcquisizioneLst = mapFields.get("Scala di acquisizione dei dati"); if(scalaAcquisizioneLst!=null && scalaAcquisizioneLst.size()>0) { layerConcessione.setScalaAcquisizione(scalaAcquisizioneLst.get(0)); } List autoreLst = mapFields.get("Autore"); if(autoreLst!=null) { layerConcessione.setAuthors(autoreLst); } return layerConcessione; } public static Instant toInstant(String date) { Instant theInst = null; try { Date theDate = dateFormat.parse(date); theInst = theDate.toInstant(); } catch (ParseException e) { LOG.error("No able to parse: "+date, e); } return theInst; } }