package org.gcube.portlets.user.geoportaldataentry.server; 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.AccessPolicy; 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 { /** The Constant LOG. */ 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; } /** * To relazione scavo. * * @param gdb the gdb * @return the relazione scavo */ 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; } /** * To immagini rappresentative. * * @param gdb the gdb * @return the uploaded image */ 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; } /** * To layer concessione. * * @param gdb the gdb * @return the layer concessione */ 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 politicaDiAccessoLst = mapFields.get("Politica di accesso"); if(politicaDiAccessoLst!=null && politicaDiAccessoLst.size()>0) { 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); } } 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; } /** * To instant. * * @param date the date * @return the instant */ public static Instant toInstant(String date) { Instant theInst = null; try { date = date.trim(); SimpleDateFormat dateFormat = null; if(date.contains(ConstantsGeoPortalDataEntryApp.HOURS_MINUTES_SEPARATOR)) { dateFormat = new SimpleDateFormat(ConstantsGeoPortalDataEntryApp.DATE_FORMAT+" "+ConstantsGeoPortalDataEntryApp.TIME_FORMAT); }else dateFormat = new SimpleDateFormat(ConstantsGeoPortalDataEntryApp.DATE_FORMAT); Date theDate = dateFormat.parse(date); theInst = theDate.toInstant(); } catch (ParseException e) { LOG.error("No able to parse: "+date, e); } return theInst; } }