1033 lines
42 KiB
Java
1033 lines
42 KiB
Java
//package org.gcube.portlets.user.geoportaldataviewer.server;
|
|
//
|
|
//import java.util.ArrayList;
|
|
//import java.util.HashMap;
|
|
//import java.util.LinkedHashMap;
|
|
//import java.util.List;
|
|
//import java.util.function.Function;
|
|
//
|
|
//import org.bson.Document;
|
|
//import org.gcube.application.geoportal.client.utils.Serialization;
|
|
//import org.gcube.application.geoportal.common.model.document.access.Access;
|
|
//import org.gcube.application.geoportal.common.model.document.access.AccessPolicy;
|
|
//import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel;
|
|
//import org.gcube.application.geoportalcommon.geoportal.access.GeportalCheckAccessPolicy;
|
|
//import org.gcube.application.geoportalcommon.geoportal.serdes.Payload;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.config.FilePathDV;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.materialization.GCubeSDIViewerLayerDV;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.BBOXDV;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.FilesetDV;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.materialization.innerobject.PayloadDV;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.project.ProjectDV;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_CONFIGURATION_TYPE;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.view.SectionView;
|
|
//import org.gcube.application.geoportalcommon.shared.geoportal.view.SubDocumentView;
|
|
//import org.gcube.portlets.user.geoportaldataviewer.server.GeoportalDataViewerServiceImpl.ImageDetector;
|
|
//import org.gcube.portlets.user.geoportaldataviewer.server.util.URLParserUtil;
|
|
//import org.gcube.portlets.user.geoportaldataviewer.shared.MetaDataProfileBeanExt;
|
|
//import org.gcube.portlets.user.geoportaldataviewer.shared.ProjectEdit;
|
|
//import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean;
|
|
//import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetadataFieldWrapper;
|
|
//import org.json.JSONArray;
|
|
//import org.json.JSONObject;
|
|
//import org.slf4j.Logger;
|
|
//import org.slf4j.LoggerFactory;
|
|
//
|
|
//import com.google.gson.Gson;
|
|
//import com.google.gson.GsonBuilder;
|
|
//import com.google.gson.JsonObject;
|
|
//import com.google.gson.JsonParser;
|
|
//import com.jayway.jsonpath.JsonPath;
|
|
//import com.jayway.jsonpath.spi.json.JsonOrgJsonProvider;
|
|
//
|
|
///**
|
|
// * The Class Geoportal_JSON_Mapper.
|
|
// *
|
|
// * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
|
// *
|
|
// * Oct 24, 2022
|
|
// */
|
|
//public class Geoportal_JSON_Mapper {
|
|
//
|
|
// public static final String _PAYLOADS = "_payloads";
|
|
//
|
|
// public static final String _MATERIALIZATIONS = "_materializations";
|
|
//
|
|
// public static final String _TYPE_GCUBE_SDI_LAYER = "gcube-sdi-layer";
|
|
//
|
|
// private static final Logger LOG = LoggerFactory.getLogger(Geoportal_JSON_Mapper.class);
|
|
//
|
|
// public static final String FILESET = "fileset";
|
|
//
|
|
// public static final String _OGC_LINKS = "_ogcLinks";
|
|
//
|
|
// public static final String _BBOX = "_bbox";
|
|
//
|
|
// public static final String _TYPE = "_type";
|
|
//
|
|
// public static final String JSON_$_POINTER = "$";
|
|
//
|
|
// public static final String _THEDOCUMENT = "_theDocument";
|
|
//
|
|
// public static ProjectEdit loadProjectEdit(ProjectDV theProjectDV, String scope, String username) throws Exception {
|
|
//
|
|
// String theWholeProjectAsJSON = theProjectDV.getTheDocument().getDocumentAsJSON();
|
|
//
|
|
// LOG.debug("theProjectDV as JSON: " + theWholeProjectAsJSON);
|
|
// LOG.debug("theProjectDV as MAP: " + theProjectDV.getTheDocument().getDocumentAsMap());
|
|
//
|
|
// ProjectEdit projectView = new ProjectEdit();
|
|
// projectView.setTheProjectDV(theProjectDV);
|
|
//
|
|
// LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> linkedMap_UCDId_gCubeProfiles = GcubeProfilesPerUCDIdCache
|
|
// .get(scope);
|
|
//
|
|
// // NO UCD defined, applying default
|
|
// if (linkedMap_UCDId_gCubeProfiles.size() == 0) {
|
|
// LOG.warn("No " + GEOPORTAL_CONFIGURATION_TYPE.gcube_profiles + " found in the UCD");
|
|
// LOG.info("Applying default business logic to display the project");
|
|
// SectionView sectionView = new SectionView();
|
|
// sectionView.setSectionTitle("Document");
|
|
// Document sectionDoc = Document.parse(theProjectDV.getTheDocument().getDocumentAsJSON());
|
|
//
|
|
// // Creating one Project with one SectionView and SubDocumentView
|
|
// String wholeSectionDoc = sectionDoc.toJson();
|
|
//
|
|
// List<FilesetDV> listFiles = new ArrayList<FilesetDV>();
|
|
//
|
|
// // Reading Fileset _payloads
|
|
// String filesetJSONPath = String.format("%s.%s", JSON_$_POINTER, FILESET);
|
|
// List<Payload> listPayloads = readPayloadsForFileset(filesetJSONPath, wholeSectionDoc);
|
|
// FilesetDV filesetDV = new FilesetDV();
|
|
// filesetDV.setGcubeProfileFieldName(FILESET);
|
|
// for (Payload payload : listPayloads) {
|
|
// PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
|
// filesetDV.addPayloadDV(payloadDV);
|
|
// listFiles.add(filesetDV);
|
|
// }
|
|
// }
|
|
//
|
|
// List<GcubeProfilesMetadataForUCD> listProfilesBean = linkedMap_UCDId_gCubeProfiles
|
|
// .get(theProjectDV.getProfileID());
|
|
//
|
|
// com.jayway.jsonpath.Configuration configuration = com.jayway.jsonpath.Configuration.builder()
|
|
// .jsonProvider(new JsonOrgJsonProvider()).build();
|
|
//
|
|
// // LinkedHashMap<Integer, MetaDataProfileBeanExt> mapOfProfilesBeanExt = new
|
|
// // LinkedHashMap<Integer, MetaDataProfileBeanExt>();
|
|
//
|
|
// ArrayList<MetaDataProfileBeanExt> listOfProfilesBeanExt = new ArrayList<MetaDataProfileBeanExt>();
|
|
//
|
|
// // Reading the Project according to list of Profile defined in the UCD
|
|
// for (GcubeProfilesMetadataForUCD gcubeProfileMetaForUCD : listProfilesBean) {
|
|
//
|
|
// GcubeProfileDV gcubeProfileDV = gcubeProfileMetaForUCD.getGcubeProfile();
|
|
//// SectionView sectionView = new SectionView();
|
|
//// sectionView.setSectionTitle(gcubeProfileDV.getSectionTitle());
|
|
//
|
|
// System.out.println("\n\n##### Sto creando la sezione: " + gcubeProfileDV.getSectionTitle());
|
|
// LOG.debug("\n\nThe profile is: " + gcubeProfileDV);
|
|
// // Building JSON/section full PATH and section name
|
|
// String sectionJSONPath = "";
|
|
// String parentPathFromProfile = gcubeProfileDV.getParentName() == null ? "" : gcubeProfileDV.getParentName();
|
|
// String theSectionName = gcubeProfileDV.getSectionName();
|
|
//
|
|
// if (theSectionName.compareTo(JSON_$_POINTER) == 0 || theSectionName.compareTo(JSON_$_POINTER + ".") == 0) {
|
|
// sectionJSONPath = JSON_$_POINTER;
|
|
// theSectionName = "";
|
|
// } else {
|
|
// sectionJSONPath = String.format("%s%s",
|
|
// parentPathFromProfile.endsWith(".") ? parentPathFromProfile : parentPathFromProfile + ".",
|
|
// theSectionName);
|
|
// }
|
|
//
|
|
// LOG.debug("The sectionJSONPath is: " + sectionJSONPath);
|
|
//
|
|
// JsonPath theSectionJsonPath = null;
|
|
// Object data = null;
|
|
// try {
|
|
// theSectionJsonPath = JsonPath.compile(sectionJSONPath);
|
|
// data = theSectionJsonPath.read(theWholeProjectAsJSON, configuration);
|
|
// } catch (Exception e) {
|
|
// LOG.warn("Error on searching the section " + sectionJSONPath + " in the JSON Project: "
|
|
// + theWholeProjectAsJSON);
|
|
// continue;
|
|
// }
|
|
//
|
|
// LOG.debug("Data is instace of: " + data.getClass());
|
|
// LOG.debug("data to string: " + data.toString());
|
|
//
|
|
// // Splitting the General Document in bson.Document according to list of
|
|
// // GcubeProfiles
|
|
// List<Document> listBSONDocument = new ArrayList<Document>();
|
|
// if (data instanceof org.json.JSONObject) {
|
|
// String jsonString = data.toString();
|
|
// LOG.debug("the JSON to string: " + jsonString);
|
|
// Document sectionDoc = Document.parse(jsonString);
|
|
// listBSONDocument.add(sectionDoc);
|
|
//
|
|
// } else if (data instanceof org.json.JSONArray) {
|
|
// org.json.JSONArray dataArray = (org.json.JSONArray) data;
|
|
// for (int i = 0; i < dataArray.length(); i++) {
|
|
// String jsonString = dataArray.get(i).toString();
|
|
// LOG.debug("the array " + i + " JSON to string: " + jsonString);
|
|
// Document sectionDoc = Document.parse(jsonString);
|
|
// listBSONDocument.add(sectionDoc);
|
|
// }
|
|
// }
|
|
//
|
|
// LOG.debug("Result for " + gcubeProfileDV.getSectionName() + " is: " + listBSONDocument);
|
|
// List<MetaDataProfileBean> theProfileBeans = gcubeProfileMetaForUCD.getListMetadataProfileBean();
|
|
// MetaDataProfileBean theProfileBean = theProfileBeans.get(0);
|
|
//
|
|
// // For each bson.Document filling the MetaDataProfileBean and its file
|
|
// for (int i = 0; i < listBSONDocument.size(); i++) {
|
|
//
|
|
// System.out.println("DOCUMENT number " + i + " of the section: " + theProfileBean.getTitle());
|
|
// MetaDataProfileBeanExt theProfileBeanExt = new MetaDataProfileBeanExt();
|
|
// theProfileBeanExt.setCategories(theProfileBean.getCategories());
|
|
// theProfileBeanExt.setTitle(theProfileBean.getTitle());
|
|
// theProfileBeanExt.setType(theProfileBean.getType());
|
|
//
|
|
//// System.out.println("\nPRINTING PROJECT VIEW ON START: ");
|
|
//// for (int j = 0; j < listOfProfilesBeanExt.size(); j++) {
|
|
//// MetaDataProfileBeanExt metaDataProfileBeanExt = listOfProfilesBeanExt.get(j);
|
|
//// System.out.println("MetaDataProfileBeanExt index: " + j + " "+metaDataProfileBeanExt.getType() +" "+metaDataProfileBeanExt.hashCode());
|
|
//// int z = 0;
|
|
//// for (MetadataFieldWrapper mfw : metaDataProfileBeanExt.getMetadataFields()) {
|
|
//// System.out.println("\t MetadataFieldWrapper index: " + z++ + " " + mfw);
|
|
//// }
|
|
//// }
|
|
//
|
|
// Document fromSectionDoc = listBSONDocument.get(i);
|
|
// LOG.debug("\n\nNew section DOC for index " + i + " is: "
|
|
// + new JSONObject(fromSectionDoc.toJson()).toString(2));
|
|
// // Creating the corresponding MetaDataProfileBeanExt for each section
|
|
//
|
|
// // Reading policy and license statically
|
|
// // eg. "_access":{"_policy":"OPEN","_license":"CC0-1.0"}}
|
|
// Document docAccess = null;
|
|
// Access access = null;
|
|
// try {
|
|
// docAccess = fromSectionDoc.get("_access", Document.class);
|
|
// System.out.println("docAccess is: " + docAccess);
|
|
// access = new Access();
|
|
// access.setPolicy(AccessPolicy.valueOf(docAccess.getString("_policy")));
|
|
// access.setLicense(docAccess.getString("_license"));
|
|
// // Access. access.get("_policy");
|
|
// // access.get("_license");
|
|
// System.out.println("access is: " + access);
|
|
// } catch (Exception e) {
|
|
// e.printStackTrace();
|
|
// }
|
|
//
|
|
// // List<MetadataFieldWrapper> copyOfMetadataFields = new
|
|
// // ArrayList<MetadataFieldWrapper>(theProfileBean.getMetadataFields());
|
|
// // int forIndex = 0;
|
|
//
|
|
// List<MetadataFieldWrapper> cloneListOfMFW = cloneList(theProfileBean.getMetadataFields());
|
|
//
|
|
// for (MetadataFieldWrapper metadataField : cloneListOfMFW) {
|
|
//
|
|
// String theFieldName = metadataField.getFieldId() != null ? metadataField.getFieldId()
|
|
// : metadataField.getFieldName();
|
|
// LOG.debug("reading theFieldName: " + theFieldName);
|
|
// Object theOBJFieldValue = fromSectionDoc.get(theFieldName);
|
|
// metadataField.setCurrentValue(theOBJFieldValue + "");
|
|
//
|
|
// if (access != null) {
|
|
// if (theFieldName.equalsIgnoreCase("policy")) {
|
|
// metadataField.setCurrentValue(access.getPolicy().name());
|
|
// } else if (theFieldName.equalsIgnoreCase("licenseID")) {
|
|
// metadataField.setCurrentValue(access.getLicense());
|
|
// }
|
|
// }
|
|
// // copyOfMetadataFields.set(forIndex++, metadataField);
|
|
// }
|
|
//
|
|
// LOG.debug("Before assigning it Metadata fields are: " + cloneListOfMFW);
|
|
//
|
|
// theProfileBeanExt.setMetadataFields(new ArrayList<MetadataFieldWrapper>(cloneListOfMFW));
|
|
// LOG.debug("Metadata fields are: " + theProfileBeanExt.getMetadataFields());
|
|
//
|
|
// // Reading filePaths
|
|
// List<FilePathDV> filePaths = gcubeProfileDV.getFilePaths();
|
|
// List<GCubeSDIViewerLayerDV> listLayers = new ArrayList<GCubeSDIViewerLayerDV>();
|
|
//
|
|
// // READING fileset* field ACCORDING TO filePaths OF THE 'gcubeProfiles' CONFIG
|
|
// if (filePaths != null) {
|
|
// String fromSectionDocJSON = fromSectionDoc.toJson();
|
|
// List<FilesetDV> listFiles = new ArrayList<FilesetDV>();
|
|
//// List<GCubeSDIViewerLayerDV> listLayers = new ArrayList<GCubeSDIViewerLayerDV>();
|
|
// for (FilePathDV filePath : filePaths) {
|
|
//
|
|
// // Reading Fileset _payloads
|
|
// String filesetJSONPath = String.format("%s.%s", JSON_$_POINTER, filePath.getFieldName());
|
|
// List<Payload> listPayloads = readPayloadsForFileset(filesetJSONPath, fromSectionDocJSON);
|
|
// FilesetDV filesetDV = new FilesetDV();
|
|
// filesetDV.setGcubeProfileFieldName(filePath.getGcubeProfileFieldName());
|
|
// for (Payload payload : listPayloads) {
|
|
// PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
|
// filesetDV.addPayloadDV(payloadDV);
|
|
//
|
|
// }
|
|
// listFiles.add(filesetDV);
|
|
//
|
|
// // Reading Fileset _materializations
|
|
// // listLayers = readGcubeSDILayersForFileset(filesetJSONPath,
|
|
// // fromSectionDocJSON);
|
|
// // theProfileBeanExt.set
|
|
//
|
|
// }
|
|
//
|
|
// theProfileBeanExt.setListFileset(listFiles);
|
|
// }
|
|
//
|
|
// System.out.println("\nputting theProfileBeanExt: " + theProfileBeanExt);
|
|
// listOfProfilesBeanExt.add(theProfileBeanExt);
|
|
//
|
|
//// System.out.println("\nPRINTING PROJECT VIEW ON END: ");
|
|
//// for (int j = 0; j < listOfProfilesBeanExt.size(); j++) {
|
|
//// MetaDataProfileBeanExt metaDataProfileBeanExt = listOfProfilesBeanExt.get(j);
|
|
//// System.out.println("MetaDataProfileBeanExt index: " + j + " "+metaDataProfileBeanExt.getType() +" "+metaDataProfileBeanExt.hashCode());
|
|
//// int z = 0;
|
|
//// for (MetadataFieldWrapper mfw : metaDataProfileBeanExt.getMetadataFields()) {
|
|
//// System.out.println("\t MetadataFieldWrapper index: " + z++ + " " + mfw);
|
|
//// }
|
|
//// }
|
|
////
|
|
//// System.out.println(listProfileBeansExt.get(listProfileBeansExt.size()-1));
|
|
// // Geoportal_JSON_Mapper.prettyPrintProjectEdit(projectView);
|
|
// }
|
|
//
|
|
// }
|
|
//
|
|
// projectView.setTheProfileBeans(listOfProfilesBeanExt);
|
|
//
|
|
// // Geoportal_JSON_Mapper.prettyPrintProjectEdit(projectView);
|
|
//
|
|
// return projectView;
|
|
// }
|
|
//
|
|
// public static List<MetadataFieldWrapper> cloneList(List<MetadataFieldWrapper> list) {
|
|
// List<MetadataFieldWrapper> listCloned = new ArrayList<MetadataFieldWrapper>(list.size());
|
|
//
|
|
// Function<MetadataFieldWrapper, MetadataFieldWrapper> cloneWrapper = (mfw) -> {
|
|
//
|
|
// MetadataFieldWrapper newMfw = new MetadataFieldWrapper();
|
|
// newMfw.setAsGroup(mfw.getAsGroup());
|
|
// newMfw.setAsTag(mfw.getAsTag());
|
|
// newMfw.setCurrentValue(mfw.getCurrentValue());
|
|
// newMfw.setDefaultValue(mfw.getDefaultValue());
|
|
// newMfw.setFieldId(mfw.getFieldId());
|
|
// newMfw.setFieldName(mfw.getFieldName());
|
|
// newMfw.setFieldNameFromCategory(mfw.getFieldNameFromCategory());
|
|
// newMfw.setMandatory(mfw.getMandatory());
|
|
// newMfw.setMaxOccurs(mfw.getMaxOccurs());
|
|
// newMfw.setMultiSelection(mfw.isMultiSelection());
|
|
// newMfw.setNote(mfw.getNote());
|
|
// newMfw.setOwnerCategory(mfw.getOwnerCategory());
|
|
// newMfw.setType(mfw.getType());
|
|
// newMfw.setValidator(mfw.getValidator());
|
|
// newMfw.setVocabulary(mfw.getVocabulary());
|
|
//
|
|
// return newMfw;
|
|
//
|
|
// };
|
|
//
|
|
// for (MetadataFieldWrapper item : list) {
|
|
// MetadataFieldWrapper cloned = cloneWrapper.apply(item);
|
|
// listCloned.add(cloned);
|
|
// }
|
|
// return listCloned;
|
|
// }
|
|
//
|
|
// /**
|
|
// * Load project view.
|
|
// *
|
|
// * @param theProjectDV the the project DV
|
|
// * @param scope the scope
|
|
// * @param username the username
|
|
// * @return the project view
|
|
// * @throws Exception the exception
|
|
// */
|
|
// public static ProjectView loadProjectView(ProjectDV theProjectDV, String scope, String username) throws Exception {
|
|
//
|
|
// String theWholeProjectAsJSON = theProjectDV.getTheDocument().getDocumentAsJSON();
|
|
//
|
|
// LOG.debug("theProjectDV as JSON: " + theWholeProjectAsJSON);
|
|
// LOG.debug("theProjectDV as MAP: " + theProjectDV.getTheDocument().getDocumentAsMap());
|
|
//
|
|
// ProjectView projectView = new ProjectView();
|
|
// projectView.setTheProjectDV(theProjectDV);
|
|
//
|
|
// LinkedHashMap<String, List<GcubeProfilesMetadataForUCD>> linkedMap_UCDId_gCubeProfiles = GcubeProfilesPerUCDIdCache
|
|
// .get(scope);
|
|
//
|
|
// // NO UCD defined, applying default
|
|
// if (linkedMap_UCDId_gCubeProfiles.size() == 0) {
|
|
// LOG.warn("No " + GEOPORTAL_CONFIGURATION_TYPE.gcube_profiles + " found in the UCD");
|
|
// LOG.info("Applying default business logic to display the project");
|
|
// SectionView sectionView = new SectionView();
|
|
// sectionView.setSectionTitle("Document");
|
|
// SubDocumentView subDocumentView = new SubDocumentView();
|
|
//
|
|
// Document sectionDoc = Document.parse(theProjectDV.getTheDocument().getDocumentAsJSON());
|
|
// boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, JSON_$_POINTER, username);
|
|
//
|
|
// // If is accessible
|
|
// if (isAccessibleSection) {
|
|
//
|
|
// // Creating one Project with one SectionView and SubDocumentView
|
|
// String wholeSectionDoc = sectionDoc.toJson();
|
|
// subDocumentView.setMetadataAsJSON(wholeSectionDoc);
|
|
//
|
|
// List<FilesetDV> listFiles = new ArrayList<FilesetDV>();
|
|
// List<FilesetDV> listImages = new ArrayList<FilesetDV>();
|
|
// List<GCubeSDIViewerLayerDV> listLayers = new ArrayList<GCubeSDIViewerLayerDV>();
|
|
//
|
|
// // Reading Fileset _payloads
|
|
// String filesetJSONPath = String.format("%s.%s", JSON_$_POINTER, FILESET);
|
|
// List<Payload> listPayloads = readPayloadsForFileset(filesetJSONPath, wholeSectionDoc);
|
|
// FilesetDV filesetDV = new FilesetDV();
|
|
// filesetDV.setGcubeProfileFieldName(FILESET);
|
|
// for (Payload payload : listPayloads) {
|
|
// PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
|
// filesetDV.addPayloadDV(payloadDV);
|
|
// boolean isImage = ImageDetector.isImage(payload.getMimetype());
|
|
//
|
|
// if (isImage) {
|
|
// listImages.add(filesetDV);
|
|
// } else {
|
|
// listFiles.add(filesetDV);
|
|
// }
|
|
// }
|
|
//
|
|
// subDocumentView.setListImages(listImages);
|
|
// subDocumentView.setListFiles(listFiles);
|
|
//
|
|
// // Reading Fileset _materializations / layers
|
|
// listLayers = readGcubeSDILayersForFileset(filesetJSONPath, wholeSectionDoc);
|
|
//
|
|
// subDocumentView.setListLayers(listLayers);
|
|
// sectionView.addSubDocument(subDocumentView);
|
|
// projectView.addSectionView(sectionView);
|
|
//
|
|
// }
|
|
//
|
|
// }
|
|
//
|
|
// List<GcubeProfilesMetadataForUCD> listProfilesBean = linkedMap_UCDId_gCubeProfiles
|
|
// .get(theProjectDV.getProfileID());
|
|
//
|
|
// com.jayway.jsonpath.Configuration configuration = com.jayway.jsonpath.Configuration.builder()
|
|
// .jsonProvider(new JsonOrgJsonProvider()).build();
|
|
//
|
|
// // Reading the Project according to list of Profile defined in the UCD
|
|
// for (GcubeProfilesMetadataForUCD gcubeProfileMetaForUCD : listProfilesBean) {
|
|
//
|
|
// GcubeProfileDV gcubeProfileDV = gcubeProfileMetaForUCD.getGcubeProfile();
|
|
// SectionView sectionView = new SectionView();
|
|
// sectionView.setSectionTitle(gcubeProfileDV.getSectionTitle());
|
|
// LOG.debug("\n\nThe profile is: " + gcubeProfileDV);
|
|
// // Building JSON/section full PATH and section name
|
|
// String sectionJSONPath = "";
|
|
// String parentPathFromProfile = gcubeProfileDV.getParentName() == null ? "" : gcubeProfileDV.getParentName();
|
|
// String theSectionName = gcubeProfileDV.getSectionName();
|
|
//
|
|
// if (theSectionName.compareTo(JSON_$_POINTER) == 0 || theSectionName.compareTo(JSON_$_POINTER + ".") == 0) {
|
|
// sectionJSONPath = JSON_$_POINTER;
|
|
// theSectionName = "";
|
|
// } else {
|
|
// sectionJSONPath = String.format("%s%s",
|
|
// parentPathFromProfile.endsWith(".") ? parentPathFromProfile : parentPathFromProfile + ".",
|
|
// theSectionName);
|
|
// }
|
|
//
|
|
// LOG.debug("The sectionJSONPath is: " + sectionJSONPath);
|
|
//
|
|
// JsonPath theSectionJsonPath = null;
|
|
// Object data = null;
|
|
// try {
|
|
// theSectionJsonPath = JsonPath.compile(sectionJSONPath);
|
|
// data = theSectionJsonPath.read(theWholeProjectAsJSON, configuration);
|
|
// } catch (Exception e) {
|
|
// LOG.warn("Error on searching the section " + sectionJSONPath + " in the JSON Project: "
|
|
// + theWholeProjectAsJSON);
|
|
// continue;
|
|
// }
|
|
//
|
|
// LOG.debug("Data is instace of: " + data.getClass());
|
|
// LOG.debug("data to string: " + data.toString());
|
|
//
|
|
// // Splitting the General Document in bson.Document according to list of
|
|
// // GcubeProfiles
|
|
// List<Document> listBSONDocument = new ArrayList<Document>();
|
|
// if (data instanceof org.json.JSONObject) {
|
|
// String jsonString = data.toString();
|
|
// LOG.debug("the JSON to string: " + jsonString);
|
|
// Document sectionDoc = Document.parse(jsonString);
|
|
// boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, sectionJSONPath,
|
|
// username);
|
|
// if (isAccessibleSection) {
|
|
// listBSONDocument.add(sectionDoc);
|
|
// }
|
|
//
|
|
// } else if (data instanceof org.json.JSONArray) {
|
|
// org.json.JSONArray dataArray = (org.json.JSONArray) data;
|
|
// for (int i = 0; i < dataArray.length(); i++) {
|
|
// String jsonString = dataArray.get(i).toString();
|
|
// LOG.debug("the array " + i + " JSON to string: " + jsonString);
|
|
// Document sectionDoc = Document.parse(jsonString);
|
|
// boolean isAccessibleSection = isAccessibleSectionAccordingToPolicy(sectionDoc, sectionJSONPath,
|
|
// username);
|
|
// if (isAccessibleSection) {
|
|
// listBSONDocument.add(sectionDoc);
|
|
// }
|
|
//
|
|
// }
|
|
// }
|
|
//
|
|
// LOG.debug("Result for " + gcubeProfileDV.getSectionName() + " is: " + listBSONDocument);
|
|
// List<MetaDataProfileBean> theProfileBeans = gcubeProfileMetaForUCD.getListMetadataProfileBean();
|
|
// MetaDataProfileBean theProfileBean = theProfileBeans.get(0);
|
|
//
|
|
// // For each bson.Document creating the SubDocumentView
|
|
// for (int i = 0; i < listBSONDocument.size(); i++) {
|
|
// Document fromSectionDoc = listBSONDocument.get(i);
|
|
// SubDocumentView subDocumentView = new SubDocumentView();
|
|
// Document toSectionDoc = new Document();
|
|
// // Filling the SubDocumentView metadata with the metadataField.getFieldName()
|
|
// // read from the Profile
|
|
// for (MetadataFieldWrapper metadataField : theProfileBean.getMetadataFields()) {
|
|
//
|
|
// String theFieldName = metadataField.getFieldId() != null ? metadataField.getFieldId()
|
|
// : metadataField.getFieldName();
|
|
// LOG.debug("reading theFieldName: " + theFieldName);
|
|
// Object theOBJFieldValue = fromSectionDoc.get(theFieldName);
|
|
//
|
|
// // NB: Using ALWAYS THE metadataField.getFieldName() as LABEL
|
|
// toSectionDoc = sanitizeDocumentValue(toSectionDoc, metadataField.getFieldName(), theOBJFieldValue);
|
|
//
|
|
// }
|
|
// String subToJSON = toSectionDoc.toJson();
|
|
// LOG.debug("theSubSetionDoc is: " + subToJSON);
|
|
// subDocumentView.setMetadataAsJSON(toSectionDoc.toJson());
|
|
//
|
|
// // Reading filePaths
|
|
// List<FilePathDV> filePaths = gcubeProfileDV.getFilePaths();
|
|
//
|
|
// // READING fileset* field ACCORDING TO filePaths OF THE 'gcubeProfiles' CONFIG
|
|
// if (filePaths != null) {
|
|
// String fromSectionDocJSON = fromSectionDoc.toJson();
|
|
// List<FilesetDV> listFiles = new ArrayList<FilesetDV>();
|
|
// List<FilesetDV> listImages = new ArrayList<FilesetDV>();
|
|
// List<GCubeSDIViewerLayerDV> listLayers = new ArrayList<GCubeSDIViewerLayerDV>();
|
|
// for (FilePathDV filePath : filePaths) {
|
|
//
|
|
// // Reading Fileset _payloads
|
|
// String filesetJSONPath = String.format("%s.%s", JSON_$_POINTER, filePath.getFieldName());
|
|
// List<Payload> listPayloads = readPayloadsForFileset(filesetJSONPath, fromSectionDocJSON);
|
|
// if(LOG.isDebugEnabled()) {
|
|
// for (Payload payload : listPayloads) {
|
|
// LOG.debug("read payload: " + payload);
|
|
// }
|
|
// }
|
|
//
|
|
// FilesetDV filesetImages = new FilesetDV();
|
|
// FilesetDV filesetFiles = new FilesetDV();
|
|
//
|
|
// for (Payload payload : listPayloads) {
|
|
// PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
|
// //filesetDV.addPayloadDV(payloadDV);
|
|
// boolean isImage = ImageDetector.isImage(payload.getMimetype());
|
|
//
|
|
// if (isImage) {
|
|
// filesetImages.setGcubeProfileFieldName(filePath.getGcubeProfileFieldName());
|
|
// filesetImages.addPayloadDV(payloadDV);
|
|
// } else {
|
|
// filesetFiles.addPayloadDV(payloadDV);
|
|
// filesetFiles.setGcubeProfileFieldName(filePath.getGcubeProfileFieldName());
|
|
// }
|
|
// }
|
|
//
|
|
// //Setting only if one element exists
|
|
// if(filesetImages.getListPayload()!=null && filesetImages.getListPayload().size()>0) {
|
|
// listImages.add(filesetImages);
|
|
// }
|
|
// if(filesetFiles.getListPayload()!=null && filesetFiles.getListPayload().size()>0) {
|
|
// listFiles.add(filesetFiles);
|
|
// }
|
|
//
|
|
// // Reading Fileset _materializations
|
|
// listLayers = readGcubeSDILayersForFileset(filesetJSONPath, fromSectionDocJSON);
|
|
//
|
|
// }
|
|
// subDocumentView.setListFiles(listFiles);
|
|
// subDocumentView.setListImages(listImages);
|
|
// subDocumentView.setListLayers(listLayers);
|
|
// }
|
|
//
|
|
// sectionView.addSubDocument(subDocumentView);
|
|
//
|
|
// }
|
|
//
|
|
// projectView.addSectionView(sectionView);
|
|
// }
|
|
//
|
|
// LOG.debug("returning the projectView: " + projectView);
|
|
// return projectView;
|
|
// }
|
|
//
|
|
// /**
|
|
// * Read payloads for fileset.
|
|
// *
|
|
// * @param filesetJSONPath the fileset JSON path
|
|
// * @param sectionJSONDocument the section JSON document
|
|
// * @return the list
|
|
// */
|
|
// public static List<Payload> readPayloadsForFileset(String filesetJSONPath, String sectionJSONDocument) {
|
|
// LOG.debug("readPayloadsForFileset called");
|
|
//
|
|
// List<Payload> listPayloads = new ArrayList<Payload>();
|
|
// String _payloadsJSONPath = String.format("%s.%s", filesetJSONPath, _PAYLOADS);
|
|
// try {
|
|
// com.jayway.jsonpath.Configuration configuration = com.jayway.jsonpath.Configuration.builder()
|
|
// .jsonProvider(new JsonOrgJsonProvider()).build();
|
|
//
|
|
// LOG.debug("Reading sectionPath at {} into section document {}", _payloadsJSONPath, sectionJSONDocument);
|
|
// JsonPath theSectionPolycJsonPath = JsonPath.compile(_payloadsJSONPath);
|
|
// Object _payloads = theSectionPolycJsonPath.read(sectionJSONDocument, configuration).toString();
|
|
//
|
|
// if (_payloads instanceof String) {
|
|
// String toStringPayloads = (String) _payloads;
|
|
// LOG.trace("The _payloads is a String {}", toStringPayloads);
|
|
// JSONArray jsonArray = new JSONArray(toStringPayloads);
|
|
// for (int i = 0; i < jsonArray.length(); i++) {
|
|
// Payload payloadDV = Serialization.read(jsonArray.getJSONObject(i).toString(), Payload.class);
|
|
// listPayloads.add(payloadDV);
|
|
// }
|
|
// }
|
|
//
|
|
// LOG.info("returning list of payloads {}", listPayloads);
|
|
// } catch (Exception e) {
|
|
// LOG.warn("Error on reading the JSON Path " + _payloadsJSONPath + " in the doc " + sectionJSONDocument, e);
|
|
// }
|
|
//
|
|
// return listPayloads;
|
|
//
|
|
// }
|
|
//
|
|
// /**
|
|
// * Read images for fileset.
|
|
// *
|
|
// * @param parentJSONPath the parent JSON path
|
|
// * @param sectionJSONDocument the section JSON document
|
|
// * @param limitToFirstOneFound the limit to first one found
|
|
// * @return the list
|
|
// */
|
|
// public static List<PayloadDV> readImagesForFileset(String parentJSONPath, String sectionJSONDocument,
|
|
// boolean limitToFirstOneFound) {
|
|
// LOG.info("readImagesForFileset called");
|
|
//
|
|
// List<PayloadDV> listImages = new ArrayList<PayloadDV>();
|
|
// com.jayway.jsonpath.Configuration config = com.jayway.jsonpath.Configuration.builder()
|
|
// .jsonProvider(new JsonOrgJsonProvider()).build();
|
|
// // Reading Fileset _payloads
|
|
// String filesetJSONPath = String.format("%s.%s", parentJSONPath, _PAYLOADS);
|
|
// LOG.debug("Reading sectionPath {} into section document {}", filesetJSONPath, sectionJSONDocument);
|
|
// JsonPath theSectionPolycJsonPath = JsonPath.compile(filesetJSONPath);
|
|
// Object _filesets = theSectionPolycJsonPath.read(sectionJSONDocument, config);
|
|
//
|
|
// List<Payload> payloads = new ArrayList<Payload>();
|
|
// List<Payload> listPayloads = recursiveFetchingPayloads(config, _filesets, payloads);
|
|
// for (Payload payload : listPayloads) {
|
|
// boolean isImage = ImageDetector.isImage(payload.getMimetype());
|
|
// if (isImage) {
|
|
// PayloadDV payloadDV = ConvertToDataValueObjectModel.toPayloadDV(payload);
|
|
// listImages.add(payloadDV);
|
|
// if (limitToFirstOneFound && listImages.size() == 1)
|
|
// return listImages;
|
|
// }
|
|
// }
|
|
//
|
|
// LOG.debug("readImagesForFileset returning listOfImages: " + listImages);
|
|
// return listImages;
|
|
//
|
|
// }
|
|
//
|
|
// /**
|
|
// * Read gcube SDI layers for fileset.
|
|
// *
|
|
// * @param materializationParentJSONPath the materialization parent JSON path
|
|
// * @param sectionJSONDocument the section JSON document
|
|
// * @return the list
|
|
// */
|
|
// public static List<GCubeSDIViewerLayerDV> readGcubeSDILayersForFileset(String materializationParentJSONPath,
|
|
// String sectionJSONDocument) {
|
|
// LOG.info("readGcubeSDILayersForFileset called");
|
|
//
|
|
// List<GCubeSDIViewerLayerDV> listSDILayers = new ArrayList<GCubeSDIViewerLayerDV>();
|
|
// // _materializations AT THE MOMENT ARE ONLY OF TYPE gcube-sdi-layer. I'm adding
|
|
// // the filtering "_type": "gcube-sdi-layer" to be sure of reading SDI layer
|
|
// String _materializationsJSONPath = String.format("%s.%s[?(@._type=='%s')]", materializationParentJSONPath,
|
|
// _MATERIALIZATIONS, _TYPE_GCUBE_SDI_LAYER);
|
|
// // [?(@._access._policy=='%s')]
|
|
//
|
|
// try {
|
|
// com.jayway.jsonpath.Configuration configurationJSONSmart = com.jayway.jsonpath.Configuration.builder()
|
|
// .jsonProvider(new JsonOrgJsonProvider()).build();
|
|
//
|
|
// LOG.debug("GcubeSDILayers Reading sectionPath {} into section document {}", _materializationsJSONPath,
|
|
// sectionJSONDocument);
|
|
//
|
|
// JsonPath theSectionMaterializationJsonPath = JsonPath.compile(_materializationsJSONPath);
|
|
// Object _materializations = theSectionMaterializationJsonPath.read(sectionJSONDocument,
|
|
// configurationJSONSmart);
|
|
//
|
|
// LOG.trace("_materializations.class(): " + _materializations.getClass());
|
|
//
|
|
// listSDILayers = recursiveFetchingLayers(configurationJSONSmart, _materializations, listSDILayers);
|
|
//
|
|
// } catch (Exception e) {
|
|
// LOG.debug("Error on reading the JSON Path " + _materializationsJSONPath + " in the doc "
|
|
// + sectionJSONDocument, e);
|
|
// }
|
|
// LOG.info("returning list of layers {}", listSDILayers);
|
|
// return listSDILayers;
|
|
//
|
|
// }
|
|
//
|
|
// /**
|
|
// * Recursive fetching layers.
|
|
// *
|
|
// * @param config the config
|
|
// * @param objectJSON the object JSON
|
|
// * @param listSDILayers the list SDI layers
|
|
// * @return the list
|
|
// */
|
|
// private static List<GCubeSDIViewerLayerDV> recursiveFetchingLayers(com.jayway.jsonpath.Configuration config,
|
|
// Object objectJSON, List<GCubeSDIViewerLayerDV> listSDILayers) {
|
|
//
|
|
// if (objectJSON == null)
|
|
// return listSDILayers;
|
|
//
|
|
// if (objectJSON instanceof JSONArray) {
|
|
// JSONArray theJsonArray = (JSONArray) objectJSON;
|
|
// LOG.debug("jsonArray: " + theJsonArray.toString(3));
|
|
//
|
|
// for (int i = 0; i < theJsonArray.length(); i++) {
|
|
// recursiveFetchingLayers(config, theJsonArray.get(i), listSDILayers);
|
|
// }
|
|
// } else if (objectJSON instanceof JSONObject) {
|
|
// JSONObject theJsonObject = (JSONObject) objectJSON;
|
|
// LOG.debug("theJSONObject: " + theJsonObject.toString(3));
|
|
// GCubeSDIViewerLayerDV gsdiLayer = converLayer(config, theJsonObject);
|
|
// listSDILayers.add(gsdiLayer);
|
|
// }
|
|
//
|
|
// return listSDILayers;
|
|
// }
|
|
//
|
|
// /**
|
|
// * Recursive fetching payloads.
|
|
// *
|
|
// * @param config the config
|
|
// * @param objectJSON the object JSON
|
|
// * @param payloads the payloads
|
|
// * @return the list
|
|
// */
|
|
// public static List<Payload> recursiveFetchingPayloads(com.jayway.jsonpath.Configuration config, Object objectJSON,
|
|
// List<Payload> payloads) {
|
|
// LOG.debug("recursiveFetchingPayloads called");
|
|
//
|
|
// if (objectJSON == null)
|
|
// return payloads;
|
|
//
|
|
// if (objectJSON instanceof JSONArray) {
|
|
// JSONArray theJsonArray = (JSONArray) objectJSON;
|
|
// LOG.trace("jsonArray: " + theJsonArray.toString(3));
|
|
//
|
|
// for (int i = 0; i < theJsonArray.length(); i++) {
|
|
// payloads = recursiveFetchingPayloads(config, theJsonArray.get(i), payloads);
|
|
// }
|
|
// } else if (objectJSON instanceof JSONObject) {
|
|
// JSONObject toStringPayloads = (JSONObject) objectJSON;
|
|
// LOG.trace("The _payloads is a String {}", toStringPayloads.toString(3));
|
|
// Payload payload;
|
|
// try {
|
|
// payload = Serialization.read(toStringPayloads.toString(), Payload.class);
|
|
// payloads.add(payload);
|
|
// } catch (Exception e) {
|
|
// LOG.warn("Error on converting the JSON Boject " + toStringPayloads + "as "
|
|
// + Payload.class.getSimpleName() + e.getMessage());
|
|
// }
|
|
//
|
|
// }
|
|
//
|
|
// return payloads;
|
|
//
|
|
// }
|
|
//
|
|
// /**
|
|
// * Conver layer.
|
|
// *
|
|
// * @param config the config
|
|
// * @param thJsonObject the th json object
|
|
// * @return the g cube SDI viewer layer DV
|
|
// */
|
|
// // TODO THIS PART SHOULD BE REVISITED/OPTIMIZED
|
|
// private static GCubeSDIViewerLayerDV converLayer(com.jayway.jsonpath.Configuration config,
|
|
// JSONObject thJsonObject) {
|
|
// LOG.debug("converLayer called for " + thJsonObject);
|
|
//
|
|
// GCubeSDIViewerLayerDV gsdiLayer = new GCubeSDIViewerLayerDV();
|
|
// try {
|
|
// String theType = thJsonObject.getString(_TYPE);
|
|
// gsdiLayer.setType(theType);
|
|
// LOG.debug(_TYPE + " is: " + theType);
|
|
// } catch (Exception e) {
|
|
// LOG.warn("No " + _TYPE + " found", e);
|
|
// }
|
|
// String toSerializeJSONOBJ = thJsonObject.toString();
|
|
// String jsonPath = null;
|
|
// try {
|
|
// jsonPath = String.format("%s.%s", JSON_$_POINTER, _BBOX);
|
|
// HashMap<String, Object> bbox = JsonPath.using(config).parse(toSerializeJSONOBJ).read(jsonPath,
|
|
// HashMap.class);
|
|
// BBOXDV bboxDV = new BBOXDV(bbox);
|
|
// gsdiLayer.setBbox(bboxDV);
|
|
// LOG.debug(_BBOX + " is: " + bboxDV);
|
|
// } catch (Exception e) {
|
|
// LOG.warn(jsonPath + " error: ", e);
|
|
// }
|
|
// try {
|
|
// jsonPath = String.format("%s.%s", JSON_$_POINTER, _OGC_LINKS);
|
|
// String jsonString = JsonPath.using(config).parse(toSerializeJSONOBJ).read(jsonPath).toString();
|
|
// Gson gson = new Gson();
|
|
// HashMap<String, String> map = gson.fromJson(jsonString, HashMap.class);
|
|
// gsdiLayer.setOgcLinks(map);
|
|
// LOG.debug(_OGC_LINKS + " are: " + map);
|
|
// } catch (Exception e) {
|
|
// LOG.warn(jsonPath + " error: ", e);
|
|
// }
|
|
//
|
|
// try {
|
|
// String wmsLink = gsdiLayer.getWMSLink();
|
|
// if (wmsLink != null) {
|
|
// String layerName = URLParserUtil.extractValueOfParameterFromURL("layers", wmsLink);
|
|
// gsdiLayer.setLayerName(layerName);
|
|
// }
|
|
// } catch (Exception e) {
|
|
// LOG.warn(jsonPath + " error: ", e);
|
|
// }
|
|
//
|
|
// LOG.debug("converLayer returning: " + gsdiLayer);
|
|
// return gsdiLayer;
|
|
// }
|
|
//
|
|
// /**
|
|
// * Checks if is accessible section according to policy.
|
|
// *
|
|
// * @param section the section
|
|
// * @param sectionJSONPath the section JSON path
|
|
// * @param myLogin the my login
|
|
// * @return true, if is accessible section according to policy
|
|
// */
|
|
// public static boolean isAccessibleSectionAccordingToPolicy(Document section, String sectionJSONPath,
|
|
// String myLogin) {
|
|
// LOG.debug("isAccessibleSectionAccordingToPolicy called");
|
|
// boolean isAccessible = true;
|
|
//
|
|
// // Skipping the root, going to check the access_policy of subsections
|
|
// if (sectionJSONPath.compareTo(JSON_$_POINTER) != 0) {
|
|
// isAccessible = checkAccessPolicy(section.toJson(), myLogin);
|
|
// }
|
|
//
|
|
// return isAccessible;
|
|
// }
|
|
//
|
|
// /**
|
|
// * Check access policy.
|
|
// *
|
|
// * @param sectionDocumentJSON the section document JSON
|
|
// * @param myLogin the my login
|
|
// * @return true, if successful
|
|
// */
|
|
// private static boolean checkAccessPolicy(String sectionDocumentJSON, String myLogin) {
|
|
// LOG.info("checkAccessPolicy called");
|
|
// // CHECKING THE POLICY
|
|
// // see ticket #24390
|
|
// // First reading the access policy from the fileset
|
|
// String accessPolicyPath = JSON_$_POINTER + ".fileset._access._policy";
|
|
// boolean isAccessible = true;
|
|
// try {
|
|
// com.jayway.jsonpath.Configuration configuration = com.jayway.jsonpath.Configuration.builder()
|
|
// .jsonProvider(new JsonOrgJsonProvider()).build();
|
|
//
|
|
// LOG.debug("Reading access policy at {} into section document {}", accessPolicyPath, sectionDocumentJSON);
|
|
// String _policy = null;
|
|
// try {
|
|
// JsonPath theSectionPolycJsonPath = JsonPath.compile(accessPolicyPath);
|
|
// _policy = theSectionPolycJsonPath.read(sectionDocumentJSON, configuration).toString();
|
|
//
|
|
// if (_policy == null)
|
|
// throw new Exception("Policy is null");
|
|
//
|
|
// } catch (Exception e) {
|
|
// LOG.debug("Access policy not found in: " + accessPolicyPath);
|
|
// }
|
|
//
|
|
// // If policy does not exist into fileset, reading from the parent section
|
|
// if (_policy == null) {
|
|
// accessPolicyPath = JSON_$_POINTER + "._access._policy";
|
|
// LOG.debug("Reading access policy at {} into section document {}", accessPolicyPath,
|
|
// sectionDocumentJSON);
|
|
// try {
|
|
// JsonPath theSectionPolycJsonPath = JsonPath.compile(accessPolicyPath);
|
|
// _policy = theSectionPolycJsonPath.read(sectionDocumentJSON, configuration).toString();
|
|
//
|
|
// if (_policy == null)
|
|
// throw new Exception("Policy is null");
|
|
//
|
|
// } catch (Exception e) {
|
|
// LOG.debug("Access policy not found in: " + accessPolicyPath);
|
|
// }
|
|
// }
|
|
//
|
|
// LOG.debug("The section {} has policy {}", accessPolicyPath, _policy);
|
|
// isAccessible = GeportalCheckAccessPolicy.isAccessible(_policy, myLogin);
|
|
// } catch (Exception e) {
|
|
// LOG.error(accessPolicyPath + " not found. Check OK");
|
|
// }
|
|
// LOG.info("It is {} accessible the section {} accessible? {}", isAccessible, sectionDocumentJSON);
|
|
// return isAccessible;
|
|
// }
|
|
//
|
|
// /**
|
|
// * Sanitize document value.
|
|
// *
|
|
// * @param toDoc the to doc
|
|
// * @param fieldLabel the field label
|
|
// * @param theObjectFieldValue the the object field value
|
|
// * @return the document
|
|
// */
|
|
// private static Document sanitizeDocumentValue(Document toDoc, String fieldLabel, Object theObjectFieldValue) {
|
|
//
|
|
// if (theObjectFieldValue != null) {
|
|
// if (theObjectFieldValue instanceof String) {
|
|
// String toString = (String) theObjectFieldValue;
|
|
// if (toString != null && !toString.isEmpty()) {
|
|
// toDoc.append(fieldLabel, toString.trim());
|
|
// } else {
|
|
// LOG.debug("Skipping String field " + fieldLabel + " its value is null or empty");
|
|
// }
|
|
//
|
|
// } else if (theObjectFieldValue instanceof ArrayList) {
|
|
// ArrayList toArrayList = (ArrayList) theObjectFieldValue;
|
|
// if (toArrayList != null && !toArrayList.isEmpty()) {
|
|
// toDoc.append(fieldLabel, theObjectFieldValue);
|
|
// } else {
|
|
// LOG.debug("Skipping ArrayList field " + fieldLabel + " its value is null or empty");
|
|
// }
|
|
// } else {
|
|
// toDoc.append(fieldLabel, theObjectFieldValue);
|
|
// }
|
|
// } else {
|
|
// LOG.debug("Skipping field " + fieldLabel + " its value is null or empty");
|
|
// }
|
|
//
|
|
// return toDoc;
|
|
// }
|
|
//
|
|
// /**
|
|
// * Pretty print JSON.
|
|
// *
|
|
// * @param jsonString the json string
|
|
// * @return the string
|
|
// */
|
|
// private static String prettyPrintJSON(String jsonString) {
|
|
//
|
|
// Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
|
// JsonObject jsonObject = new JsonParser().parse(jsonString).getAsJsonObject();
|
|
// return gson.toJson(jsonObject);
|
|
// }
|
|
//
|
|
// /**
|
|
// * Pretty print project view.
|
|
// *
|
|
// * @param projectView the project view
|
|
// */
|
|
// public static void prettyPrintProjectView(ProjectView projectView) {
|
|
//
|
|
// for (SectionView section : projectView.getListSections()) {
|
|
// System.out.println("\n\n###### Section Title: " + section.getSectionTitle() + " ######");
|
|
// int i = 1;
|
|
// for (SubDocumentView subDocument : section.getListSubDocuments()) {
|
|
// System.out.println("## " + SubDocumentView.class.getSimpleName() + " n." + i);
|
|
// System.out.println("***** Metadata");
|
|
// System.out.println(prettyPrintJSON(subDocument.getMetadataAsJSON()));
|
|
// System.out.println("***** Files");
|
|
// if (subDocument.getListFiles() != null) {
|
|
// for (FilesetDV filesetDV : subDocument.getListFiles()) {
|
|
// System.out.println("******* File Fileset name: " + filesetDV.getGcubeProfileFieldName());
|
|
// for (PayloadDV payload : filesetDV.getListPayload()) {
|
|
// System.out.println("********* Payload: " + payload);
|
|
// }
|
|
// }
|
|
// }
|
|
// System.out.println("***** Images");
|
|
// if (subDocument.getListImages() != null) {
|
|
// for (FilesetDV filesetDV : subDocument.getListImages()) {
|
|
// System.out.println("******* Image Fileset name: " + filesetDV.getGcubeProfileFieldName());
|
|
// for (PayloadDV payload : filesetDV.getListPayload()) {
|
|
// System.out.println("********* Payload: " + payload);
|
|
// }
|
|
// }
|
|
// }
|
|
// System.out.println("***** Layers");
|
|
// if (subDocument.getListLayers() != null) {
|
|
// for (GCubeSDIViewerLayerDV layer : subDocument.getListLayers()) {
|
|
// System.out.println("******* Layer type: " + layer.getType());
|
|
// System.out.println("******* Layer: " + layer);
|
|
// }
|
|
// }
|
|
// i++;
|
|
// }
|
|
//
|
|
// }
|
|
// }
|
|
//
|
|
// /**
|
|
// * Pretty print project view.
|
|
// *
|
|
// * @param projectView the project view
|
|
// */
|
|
// public static void prettyPrintProjectEdit(ProjectEdit projectEdit) {
|
|
//
|
|
// for (MetaDataProfileBeanExt mpb : projectEdit.getTheProfileBeans()) {
|
|
// System.out.println("\n\n###### Title: " + mpb.getTitle() + " - Type: " + mpb.getType() + " ######");
|
|
// int i = 1;
|
|
// for (MetadataFieldWrapper fieldWrapper : mpb.getMetadataFields()) {
|
|
// System.out.println("## " + MetadataFieldWrapper.class.getSimpleName() + " n." + i);
|
|
// System.out.println("***** Metadata");
|
|
// // System.out.println(mfw);
|
|
// System.out.println("\tfieldId: " + fieldWrapper.getFieldId() + ", fieldName: "
|
|
// + fieldWrapper.getFieldName() + ", CurrentValue: " + fieldWrapper.getCurrentValue());
|
|
// i++;
|
|
// }
|
|
// i = 1;
|
|
// System.out.println("***** Files");
|
|
// for (FilesetDV fileSet : mpb.getListFileset()) {
|
|
// System.out.println("## " + FilesetDV.class.getSimpleName() + " n." + i);
|
|
// System.out.println(fileSet);
|
|
// i++;
|
|
// }
|
|
//
|
|
// }
|
|
// }
|
|
//
|
|
//}
|