From 608039a4d58f0aaccce153be7b008752e5590cd2 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 11 Mar 2022 12:01:27 +0100 Subject: [PATCH] Moving to Project ad UCD models.. --- .../ConvertToDataValueObjectModel.java | 137 ++++- .../ConvertToDataViewModel.java | 1 + .../MockDocumentConfigurationReader.java | 4 +- .../geoportalcommon/MongoServiceCommon.java | 532 +++++++++--------- .../geoportalcommon/ProjectDVBuilder.java | 102 ++++ .../geoportal/GeoportalClientCaller.java | 33 ++ .../geoportal/ProjectsCaller.java | 281 +++++++++ .../geoportal/UseCaseDescriptorCaller.java | 64 +++ .../config}/Configuration.java | 2 +- .../config}/DocumentConfig.java | 2 +- .../config}/FilePath.java | 2 +- .../config}/GcubeProfile.java | 2 +- .../shared/ResultSetPaginatedData.java | 8 +- .../shared/geoportal/DocumentDV.java | 51 ++ .../geoportal/HandlerDeclarationDV.java | 62 ++ .../shared/geoportal/ProjectDV.java | 113 ++++ .../shared/geoportal/RelationshipDV.java | 50 ++ .../shared/geoportal/TemporalReferenceDV.java | 47 ++ .../shared/geoportal/UseCaseDescriptorDV.java | 114 ++++ .../config}/ConfigurationDV.java | 2 +- .../config}/DocumentConfigDV.java | 2 +- .../config}/FilePathDV.java | 2 +- .../config}/GcubeProfileDV.java | 19 +- .../LoadDocumentConfiguration.java | 2 +- .../org/gcube/application/Project_Tests.java | 55 ++ .../org/gcube/application/TestGNACommon.java | 81 ++- .../java/org/gcube/application/UCD_Tests.java | 53 ++ 27 files changed, 1474 insertions(+), 349 deletions(-) create mode 100644 src/main/java/org/gcube/application/geoportalcommon/ProjectDVBuilder.java create mode 100644 src/main/java/org/gcube/application/geoportalcommon/geoportal/GeoportalClientCaller.java create mode 100644 src/main/java/org/gcube/application/geoportalcommon/geoportal/ProjectsCaller.java create mode 100644 src/main/java/org/gcube/application/geoportalcommon/geoportal/UseCaseDescriptorCaller.java rename src/main/java/org/gcube/application/geoportalcommon/{geoportalconfig => geoportal/config}/Configuration.java (80%) rename src/main/java/org/gcube/application/geoportalcommon/{geoportalconfig => geoportal/config}/DocumentConfig.java (86%) rename src/main/java/org/gcube/application/geoportalcommon/{geoportalconfig => geoportal/config}/FilePath.java (84%) rename src/main/java/org/gcube/application/geoportalcommon/{geoportalconfig => geoportal/config}/GcubeProfile.java (94%) create mode 100644 src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/DocumentDV.java create mode 100644 src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/HandlerDeclarationDV.java create mode 100644 src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/ProjectDV.java create mode 100644 src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/RelationshipDV.java create mode 100644 src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/TemporalReferenceDV.java create mode 100644 src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/UseCaseDescriptorDV.java rename src/main/java/org/gcube/application/geoportalcommon/shared/{geoportalconfig => geoportal/config}/ConfigurationDV.java (90%) rename src/main/java/org/gcube/application/geoportalcommon/shared/{geoportalconfig => geoportal/config}/DocumentConfigDV.java (94%) rename src/main/java/org/gcube/application/geoportalcommon/shared/{geoportalconfig => geoportal/config}/FilePathDV.java (92%) rename src/main/java/org/gcube/application/geoportalcommon/shared/{geoportalconfig => geoportal/config}/GcubeProfileDV.java (92%) create mode 100644 src/test/java/org/gcube/application/Project_Tests.java create mode 100644 src/test/java/org/gcube/application/UCD_Tests.java diff --git a/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataValueObjectModel.java b/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataValueObjectModel.java index c42ef55..2159c64 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataValueObjectModel.java +++ b/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataValueObjectModel.java @@ -1,16 +1,26 @@ package org.gcube.application.geoportalcommon; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Set; -import org.gcube.application.geoportalcommon.geoportalconfig.Configuration; -import org.gcube.application.geoportalcommon.geoportalconfig.DocumentConfig; -import org.gcube.application.geoportalcommon.geoportalconfig.FilePath; -import org.gcube.application.geoportalcommon.geoportalconfig.GcubeProfile; -import org.gcube.application.geoportalcommon.shared.geoportalconfig.ConfigurationDV; -import org.gcube.application.geoportalcommon.shared.geoportalconfig.DocumentConfigDV; -import org.gcube.application.geoportalcommon.shared.geoportalconfig.FilePathDV; -import org.gcube.application.geoportalcommon.shared.geoportalconfig.GcubeProfileDV; +import org.bson.Document; +import org.gcube.application.geoportal.common.model.document.Project; +import org.gcube.application.geoportal.common.model.document.Relationship; +import org.gcube.application.geoportal.common.model.document.temporal.TemporalReference; +import org.gcube.application.geoportalcommon.geoportal.config.Configuration; +import org.gcube.application.geoportalcommon.geoportal.config.DocumentConfig; +import org.gcube.application.geoportalcommon.geoportal.config.FilePath; +import org.gcube.application.geoportalcommon.geoportal.config.GcubeProfile; +import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV; +import org.gcube.application.geoportalcommon.shared.geoportal.ProjectDV; +import org.gcube.application.geoportalcommon.shared.geoportal.RelationshipDV; +import org.gcube.application.geoportalcommon.shared.geoportal.TemporalReferenceDV; +import org.gcube.application.geoportalcommon.shared.geoportal.config.ConfigurationDV; +import org.gcube.application.geoportalcommon.shared.geoportal.config.DocumentConfigDV; +import org.gcube.application.geoportalcommon.shared.geoportal.config.FilePathDV; +import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -128,4 +138,115 @@ public class ConvertToDataValueObjectModel { return fpVO; } + public static ProjectDV toProjectDV(Project project, ProjectDVBuilder projectReader) throws Exception { + LOG.info("toProjectDV called"); + + if (project == null) + return null; + + LOG.info("toProjectDV called for project id=%s with ", project.getId(), projectReader); + if (LOG.isTraceEnabled()) + LOG.trace("Source project is: " + project); + + try { + + ProjectDV theProject = new ProjectDV(); + theProject.setId(project.getId()); + theProject.setProfileID(project.getProfileID()); + theProject.setProfileVersion( + project.getProfileVersion() != null ? project.getProfileVersion().getValue() : ""); + + Relationship[] relations = project.getRelationships(); + + if (relations != null && projectReader.isIncludeRelationships()) { + List listRelations = new ArrayList(relations.length); + for (Relationship relationship : relations) { + listRelations.add(toRelationshipDV(relationship)); + } + + theProject.setRelationships(listRelations); + } + + if (projectReader.isIncludeSpatialReference()) { + theProject.setSpatialReference(toDocumentDV(project.getSpatialReference(), DocumentDV.class, + projectReader.getListDocumentKeys(), projectReader.isIncludeFullDocumentMap())); + } + + if (projectReader.isIncludeTemporalReference()) { + theProject.setTemporalReference(toTemporalReferenceDV(project.getTemporalReference(), + projectReader.getListDocumentKeys(), projectReader.isIncludeFullDocumentMap())); + } + +// if (projectReader.isIncludeValidationReport()) { +// theProject.setValidationReport(toValidationReport(concessione.getReport())); +// if (theProject.getValidationReport() != null) +// theProject.setValidationStatus(theConcessione.getValidationReport().getStatus()); +// } +// +// LOG.info("Returning concessioneDV with id: " + theConcessione.getItemId()); +// +// if (LOG.isTraceEnabled()) +// LOG.trace("Returning: " + theConcessione); + + return theProject; + } catch (Exception e) { + LOG.error("Error on converting project: " + project, e); + return null; + } + + } + + public static TemporalReferenceDV toTemporalReferenceDV(TemporalReference temporalReference, + List listDocumentKeys, boolean getFullMap) { + if (temporalReference == null) + return null; + + TemporalReferenceDV trDV = toDocumentDV(temporalReference, TemporalReferenceDV.class, listDocumentKeys, + getFullMap); + trDV.setField(temporalReference.getField()); + return trDV; + } + + public static T toDocumentDV(Document document, Class toType, + List listDocumentKeys, boolean getFullMap) { + if (document == null) + return null; + + T documentDV; + if (toType == TemporalReferenceDV.class) { + documentDV = (T) new TemporalReferenceDV(); + } else { + documentDV = (T) new DocumentDV(); + } + + if (listDocumentKeys != null && !getFullMap) { + LinkedHashMap documentAsMap = new LinkedHashMap(listDocumentKeys.size()); + for (String key : listDocumentKeys) { + documentAsMap.put(key, document.get(key)); + } + documentDV.setDocumentAsMap(documentAsMap); + } + + if (getFullMap) { + Set keySet = document.keySet(); + LinkedHashMap documentAsMap = new LinkedHashMap(keySet.size()); + for (String key : keySet) { + documentAsMap.put(key, document.get(key)); + } + documentDV.setDocumentAsMap(documentAsMap); + } + + documentDV.setDocumentAsJSON(document.toJson()); + + return documentDV; + } + + public static RelationshipDV toRelationshipDV(Relationship relationship) { + + if (relationship == null) + return null; + + return new RelationshipDV(relationship.getRelationshipName(), relationship.getTargetID()); + } + } diff --git a/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataViewModel.java b/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataViewModel.java index a19bb6e..626ee52 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataViewModel.java +++ b/src/main/java/org/gcube/application/geoportalcommon/ConvertToDataViewModel.java @@ -54,6 +54,7 @@ public class ConvertToDataViewModel { public static final String TIME_FORMAT = "HH" + HOURS_MINUTES_SEPARATOR + "mm"; + /** * To concessione. * diff --git a/src/main/java/org/gcube/application/geoportalcommon/MockDocumentConfigurationReader.java b/src/main/java/org/gcube/application/geoportalcommon/MockDocumentConfigurationReader.java index 4fac4ed..857cc9c 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/MockDocumentConfigurationReader.java +++ b/src/main/java/org/gcube/application/geoportalcommon/MockDocumentConfigurationReader.java @@ -6,8 +6,8 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; -import org.gcube.application.geoportalcommon.geoportalconfig.DocumentConfig; -import org.gcube.application.geoportalcommon.shared.geoportalconfig.DocumentConfigDV; +import org.gcube.application.geoportalcommon.geoportal.config.DocumentConfig; +import org.gcube.application.geoportalcommon.shared.geoportal.config.DocumentConfigDV; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/src/main/java/org/gcube/application/geoportalcommon/MongoServiceCommon.java b/src/main/java/org/gcube/application/geoportalcommon/MongoServiceCommon.java index 6c1b142..1fe1108 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/MongoServiceCommon.java +++ b/src/main/java/org/gcube/application/geoportalcommon/MongoServiceCommon.java @@ -1,266 +1,266 @@ -package org.gcube.application.geoportalcommon; - -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.bson.Document; -import org.gcube.application.geoportal.common.model.legacy.Concessione; -import org.gcube.application.geoportal.common.model.rest.QueryRequest; -import org.gcube.application.geoportal.common.model.rest.QueryRequest.OrderedRequest; -import org.gcube.application.geoportal.common.model.rest.QueryRequest.OrderedRequest.Direction; -import org.gcube.application.geoportal.common.model.rest.QueryRequest.PagedRequest; -import org.gcube.application.geoportal.common.rest.MongoConcessioni; -import org.gcube.application.geoportalcommon.shared.ItemField; -import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData; -import org.gcube.application.geoportalcommon.shared.SearchingFilter; -import org.gcube.application.geoportalcommon.shared.SearchingFilter.LOGICAL_OP; -import org.gcube.application.geoportalcommon.shared.SearchingFilter.ORDER; -import org.gcube.application.geoportalcommon.shared.WhereClause; -import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.mongodb.BasicDBList; -import com.mongodb.BasicDBObject; -import com.mongodb.BasicDBObjectBuilder; - -/** - * The Class MongoServiceCommon. - * - * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it - * - * Dec 3, 2021 - */ -public class MongoServiceCommon { - - private static Logger LOG = LoggerFactory.getLogger(MongoServiceCommon.class); - - /** - * Gets the instance mongo concessioni. - * - * @return the instance mongo concessioni - */ - public MongoConcessioni getInstanceMongoConcessioni() { - return mongoConcessioni().build(); - } - - /** - * Gets the list of concessioni. - * - * @param reloadFromService the reload from service - * @return the list of concessioni - * @throws Exception the exception - */ - public List getListOfConcessioni() throws Exception { - LOG.info("called getListOfConcessioni"); - - List listOfConcessioni = new ArrayList(); - LOG.info("Loading list of concessioni from client mongo"); - MongoConcessioni clientMongo = getInstanceMongoConcessioni(); - - Iterator concessioni = clientMongo.getList(); - if (concessioni != null) { - while (concessioni.hasNext()) { - Concessione concessione = (Concessione) concessioni.next(); - listOfConcessioni.add(concessione); - - } - } - - LOG.info("read list of concessioni with size: " + listOfConcessioni.size()); - return listOfConcessioni; - } - - /** - * Query on mongo. - * - * @param offset the offset - * @param limit the limit - * @param filter the filter - * @param recordType the record type - * @return the result set paginated data - * @throws Exception the exception - */ - public ResultSetPaginatedData queryOnMongo(Integer totalItems, Integer offset, Integer limit, SearchingFilter filter, String recordType) throws Exception { - - try { - - if (recordType.equalsIgnoreCase("concessione")) { - MongoConcessioni clientMongo = getInstanceMongoConcessioni(); - - if(totalItems==null || totalItems < 0) { - // TODO MUST BE REPLACED BY COUNT - List listOfConcessioni = getListOfConcessioni(); - int listConcessioniSize = listOfConcessioni.size(); - totalItems = listConcessioniSize; - } - - Integer offsetIndex = offset; - Integer limitIndex = limit; - - if (offset == null || offset<0) { - offsetIndex = 0; - } - if (limit == null || limit<0) { - limitIndex = totalItems; - } - - ResultSetPaginatedData searchedData = new ResultSetPaginatedData(offsetIndex, limitIndex, false); - searchedData.setTotalItems(totalItems); - - List toReturnList = new ArrayList(); - Direction sDirection = null; - List orderingFields = new ArrayList(); - - if (filter == null) { - LOG.info("No filter found, creating empty filter"); - filter = new SearchingFilter(); - } - - ORDER order = filter.getOrder(); - - if (order == null) { - order = ORDER.ASC; - LOG.info("No direction/order found, using default: " + order); - } - - switch (order) { - case ASC: - sDirection = Direction.ASCENDING; - break; - case DESC: - sDirection = Direction.DESCENDING; - break; - } - - List orderByFields = filter.getOrderByFields(); - - if(orderByFields==null) { - orderByFields = new ArrayList(); - } - - if(orderByFields.isEmpty()) { - ItemField orderD = new ItemField("", Arrays.asList("name"), false, false, false); - LOG.info("Order by is null, adding default: " + orderD); - orderByFields.add(orderD); - } - - for (ItemField itemField : orderByFields) { - if (itemField.getJsonFields() != null) { - for (String field : itemField.getJsonFields()) { - orderingFields.add(field); - } - } - - } - - QueryRequest request = new QueryRequest(); - PagedRequest paging = new PagedRequest(); - paging.setOffset(offsetIndex); - paging.setLimit(limitIndex); - request.setPaging(paging); - - OrderedRequest ordering = new OrderedRequest(); - ordering.setDirection(sDirection); - ordering.setFields(orderingFields); - - request.setOrdering(ordering); - - Document query = new Document(); - if(filter.getConditions()!=null) { - for (WhereClause whereClause : filter.getConditions()) { - - LOGICAL_OP searchWithOperator = whereClause.getOperator(); - if(searchWithOperator==null) { - searchWithOperator = LOGICAL_OP.OR; - } - - if (whereClause.getSearchInto() != null) { - Map searchFields = whereClause.getSearchInto(); - BasicDBObjectBuilder builder = BasicDBObjectBuilder.start(); - for (String key : searchFields.keySet()) { - // using regex and case-insensitive - BasicDBObject bs = new BasicDBObject(); - bs.append("$regex", searchFields.get(key)); - bs.append("$options", "i"); - builder.append(key, bs); - - - } - //Building list of Document in OR clause - BasicDBList list = new BasicDBList(); - Map map = builder.get().toMap(); - for (Object key : map.keySet()) { - - BasicDBObject value = (BasicDBObject) map.get(key); - Document doc = new Document((String) key, value); - list.add(doc); - } - - //query = new Document(); - query.put(searchWithOperator.getOperator(), list); - -// BasicDBObject bs = new BasicDBObject(); -// bs.append("$eq", "PASSED"); -// query.put("report.status", bs); - - } - } - } - - request.setFilter(query); - - LOG.info("Paging offset: " + offsetIndex + ", limit: " + limitIndex); - LOG.info("Direction: " + sDirection); - LOG.info("Order by Fields: " + orderingFields); - LOG.info("Search for conditions: " + filter.getConditions()); - if (query != null) { - LOG.info("Search query to JSON: " + query.toJson()); - } - - Iterator concessioni = clientMongo.query(request); - int i = 0; - while (concessioni.hasNext()) { - Concessione concessione = concessioni.next(); - ConcessioneDV concessioneDV = ConvertToDataViewModel.toMetadataConcessione(concessione, true); - toReturnList.add(concessioneDV); - i++; - LOG.trace(i+") converted: " + concessioneDV); - } - 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 concessioni: ", e); - throw new Exception("Error occurred on loading list of Concessioni. Error: " + e.getMessage()); - } - - return null; - - } - -} +//package org.gcube.application.geoportalcommon; +// +//import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; +// +//import java.util.ArrayList; +//import java.util.Arrays; +//import java.util.Iterator; +//import java.util.List; +//import java.util.Map; +// +//import org.bson.Document; +//import org.gcube.application.geoportal.common.model.legacy.Concessione; +//import org.gcube.application.geoportal.common.model.rest.QueryRequest; +//import org.gcube.application.geoportal.common.model.rest.QueryRequest.OrderedRequest; +//import org.gcube.application.geoportal.common.model.rest.QueryRequest.OrderedRequest.Direction; +//import org.gcube.application.geoportal.common.model.rest.QueryRequest.PagedRequest; +//import org.gcube.application.geoportal.common.rest.MongoConcessioni; +//import org.gcube.application.geoportalcommon.shared.ItemField; +//import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData; +//import org.gcube.application.geoportalcommon.shared.SearchingFilter; +//import org.gcube.application.geoportalcommon.shared.SearchingFilter.LOGICAL_OP; +//import org.gcube.application.geoportalcommon.shared.SearchingFilter.ORDER; +//import org.gcube.application.geoportalcommon.shared.WhereClause; +//import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//import com.mongodb.BasicDBList; +//import com.mongodb.BasicDBObject; +//import com.mongodb.BasicDBObjectBuilder; +// +///** +// * The Class MongoServiceCommon. +// * +// * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it +// * +// * Dec 3, 2021 +// */ +//public class MongoServiceCommon { +// +// private static Logger LOG = LoggerFactory.getLogger(MongoServiceCommon.class); +// +// /** +// * Gets the instance mongo concessioni. +// * +// * @return the instance mongo concessioni +// */ +// public MongoConcessioni getInstanceMongoConcessioni() { +// return mongoConcessioni().build(); +// } +// +// /** +// * Gets the list of concessioni. +// * +// * @param reloadFromService the reload from service +// * @return the list of concessioni +// * @throws Exception the exception +// */ +// public List getListOfConcessioni() throws Exception { +// LOG.info("called getListOfConcessioni"); +// +// List listOfConcessioni = new ArrayList(); +// LOG.info("Loading list of concessioni from client mongo"); +// MongoConcessioni clientMongo = getInstanceMongoConcessioni(); +// +// Iterator concessioni = clientMongo.getList(); +// if (concessioni != null) { +// while (concessioni.hasNext()) { +// Concessione concessione = (Concessione) concessioni.next(); +// listOfConcessioni.add(concessione); +// +// } +// } +// +// LOG.info("read list of concessioni with size: " + listOfConcessioni.size()); +// return listOfConcessioni; +// } +// +// /** +// * Query on mongo. +// * +// * @param offset the offset +// * @param limit the limit +// * @param filter the filter +// * @param recordType the record type +// * @return the result set paginated data +// * @throws Exception the exception +// */ +// public ResultSetPaginatedData queryOnMongo(Integer totalItems, Integer offset, Integer limit, SearchingFilter filter, String recordType) throws Exception { +// +// try { +// +// if (recordType.equalsIgnoreCase("concessione")) { +// MongoConcessioni clientMongo = getInstanceMongoConcessioni(); +// +// if(totalItems==null || totalItems < 0) { +// // TODO MUST BE REPLACED BY COUNT +// List listOfConcessioni = getListOfConcessioni(); +// int listConcessioniSize = listOfConcessioni.size(); +// totalItems = listConcessioniSize; +// } +// +// Integer offsetIndex = offset; +// Integer limitIndex = limit; +// +// if (offset == null || offset<0) { +// offsetIndex = 0; +// } +// if (limit == null || limit<0) { +// limitIndex = totalItems; +// } +// +// ResultSetPaginatedData searchedData = new ResultSetPaginatedData(offsetIndex, limitIndex, false); +// searchedData.setTotalItems(totalItems); +// +// List toReturnList = new ArrayList(); +// Direction sDirection = null; +// List orderingFields = new ArrayList(); +// +// if (filter == null) { +// LOG.info("No filter found, creating empty filter"); +// filter = new SearchingFilter(); +// } +// +// ORDER order = filter.getOrder(); +// +// if (order == null) { +// order = ORDER.ASC; +// LOG.info("No direction/order found, using default: " + order); +// } +// +// switch (order) { +// case ASC: +// sDirection = Direction.ASCENDING; +// break; +// case DESC: +// sDirection = Direction.DESCENDING; +// break; +// } +// +// List orderByFields = filter.getOrderByFields(); +// +// if(orderByFields==null) { +// orderByFields = new ArrayList(); +// } +// +// if(orderByFields.isEmpty()) { +// ItemField orderD = new ItemField("", Arrays.asList("name"), false, false, false); +// LOG.info("Order by is null, adding default: " + orderD); +// orderByFields.add(orderD); +// } +// +// for (ItemField itemField : orderByFields) { +// if (itemField.getJsonFields() != null) { +// for (String field : itemField.getJsonFields()) { +// orderingFields.add(field); +// } +// } +// +// } +// +// QueryRequest request = new QueryRequest(); +// PagedRequest paging = new PagedRequest(); +// paging.setOffset(offsetIndex); +// paging.setLimit(limitIndex); +// request.setPaging(paging); +// +// OrderedRequest ordering = new OrderedRequest(); +// ordering.setDirection(sDirection); +// ordering.setFields(orderingFields); +// +// request.setOrdering(ordering); +// +// Document query = new Document(); +// if(filter.getConditions()!=null) { +// for (WhereClause whereClause : filter.getConditions()) { +// +// LOGICAL_OP searchWithOperator = whereClause.getOperator(); +// if(searchWithOperator==null) { +// searchWithOperator = LOGICAL_OP.OR; +// } +// +// if (whereClause.getSearchInto() != null) { +// Map searchFields = whereClause.getSearchInto(); +// BasicDBObjectBuilder builder = BasicDBObjectBuilder.start(); +// for (String key : searchFields.keySet()) { +// // using regex and case-insensitive +// BasicDBObject bs = new BasicDBObject(); +// bs.append("$regex", searchFields.get(key)); +// bs.append("$options", "i"); +// builder.append(key, bs); +// +// +// } +// //Building list of Document in OR clause +// BasicDBList list = new BasicDBList(); +// Map map = builder.get().toMap(); +// for (Object key : map.keySet()) { +// +// BasicDBObject value = (BasicDBObject) map.get(key); +// Document doc = new Document((String) key, value); +// list.add(doc); +// } +// +// //query = new Document(); +// query.put(searchWithOperator.getOperator(), list); +// +//// BasicDBObject bs = new BasicDBObject(); +//// bs.append("$eq", "PASSED"); +//// query.put("report.status", bs); +// +// } +// } +// } +// +// request.setFilter(query); +// +// LOG.info("Paging offset: " + offsetIndex + ", limit: " + limitIndex); +// LOG.info("Direction: " + sDirection); +// LOG.info("Order by Fields: " + orderingFields); +// LOG.info("Search for conditions: " + filter.getConditions()); +// if (query != null) { +// LOG.info("Search query to JSON: " + query.toJson()); +// } +// +// Iterator concessioni = clientMongo.query(request); +// int i = 0; +// while (concessioni.hasNext()) { +// Concessione concessione = concessioni.next(); +// ConcessioneDV concessioneDV = ConvertToDataViewModel.toMetadataConcessione(concessione, true); +// toReturnList.add(concessioneDV); +// i++; +// LOG.trace(i+") converted: " + concessioneDV); +// } +// 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 concessioni: ", e); +// throw new Exception("Error occurred on loading list of Concessioni. Error: " + e.getMessage()); +// } +// +// return null; +// +// } +// +//} diff --git a/src/main/java/org/gcube/application/geoportalcommon/ProjectDVBuilder.java b/src/main/java/org/gcube/application/geoportalcommon/ProjectDVBuilder.java new file mode 100644 index 0000000..06d2147 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/ProjectDVBuilder.java @@ -0,0 +1,102 @@ +package org.gcube.application.geoportalcommon; + +import java.util.List; + +/** + * The Class ProjectDVBuilder. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Mar 10, 2022 + */ +public class ProjectDVBuilder { + + private boolean validationReport; + private boolean spatialReference; + private boolean temporalReference; + private boolean relationships; + private List listDocumentKeys; + private boolean fullDocumentMap; + + private ProjectDVBuilder() { + + } + + public static ProjectDVBuilder newBuilder() { + return new ProjectDVBuilder(); + } + + public boolean isIncludeValidationReport() { + return validationReport; + } + + public boolean isIncludeSpatialReference() { + return spatialReference; + } + + public boolean isIncludeTemporalReference() { + return temporalReference; + } + + public boolean isIncludeRelationships() { + return relationships; + } + + public List getListDocumentKeys() { + return listDocumentKeys; + } + + public boolean isIncludeFullDocumentMap() { + return fullDocumentMap; + } + + public ProjectDVBuilder validationReport(boolean includeValidationReport) { + this.validationReport = includeValidationReport; + return this; + } + + public ProjectDVBuilder spatialReference(boolean includeSpatialReference) { + this.spatialReference = includeSpatialReference; + return this; + } + + public ProjectDVBuilder temporalReference(boolean includeTemporalReference) { + this.temporalReference = includeTemporalReference; + return this; + } + + public ProjectDVBuilder relationships(boolean includeRelationships) { + this.relationships = includeRelationships; + return this; + } + + public ProjectDVBuilder listDocumentKeys(List listDocumentKeys) { + this.listDocumentKeys = listDocumentKeys; + return this; + } + + public ProjectDVBuilder fullDocumentMap(boolean includeFullDocumentMap) { + this.fullDocumentMap = includeFullDocumentMap; + return this; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("ProjectDVBuilder [validationReport="); + builder.append(validationReport); + builder.append(", spatialReference="); + builder.append(spatialReference); + builder.append(", temporalReference="); + builder.append(temporalReference); + builder.append(", relationships="); + builder.append(relationships); + builder.append(", listDocumentKeys="); + builder.append(listDocumentKeys); + builder.append(", fullDocumentMap="); + builder.append(fullDocumentMap); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportal/GeoportalClientCaller.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/GeoportalClientCaller.java new file mode 100644 index 0000000..dc25cfb --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/GeoportalClientCaller.java @@ -0,0 +1,33 @@ +package org.gcube.application.geoportalcommon.geoportal; + +/** + * The Class GeoportalClientCaller + * + * Wrapping the geoportal Clients + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Mar 11, 2022 + */ +public class GeoportalClientCaller { + + + /** + * Use case descriptor client. + * + * @return the use case descriptor caller + */ + public static UseCaseDescriptorCaller useCaseDescriptors() { + return new UseCaseDescriptorCaller(); + } + + /** + * Projects client + * + * @return the projects caller + */ + public static ProjectsCaller projects() { + return new ProjectsCaller(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportal/ProjectsCaller.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/ProjectsCaller.java new file mode 100644 index 0000000..683914e --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/ProjectsCaller.java @@ -0,0 +1,281 @@ +package org.gcube.application.geoportalcommon.geoportal; + +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.projects; + +import java.io.File; +import java.io.FileNotFoundException; +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.bson.Document; +import org.gcube.application.geoportal.common.model.configuration.Configuration; +import org.gcube.application.geoportal.common.model.document.Project; +import org.gcube.application.geoportal.common.model.rest.QueryRequest; +import org.gcube.application.geoportal.common.model.rest.QueryRequest.OrderedRequest; +import org.gcube.application.geoportal.common.model.rest.QueryRequest.OrderedRequest.Direction; +import org.gcube.application.geoportal.common.model.rest.QueryRequest.PagedRequest; +import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest; +import org.gcube.application.geoportal.common.rest.Projects; +import org.gcube.application.geoportal.common.utils.FileSets; +import org.gcube.application.geoportal.common.utils.StorageUtils; +import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel; +import org.gcube.application.geoportalcommon.ProjectDVBuilder; +import org.gcube.application.geoportalcommon.shared.ItemField; +import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData; +import org.gcube.application.geoportalcommon.shared.SearchingFilter; +import org.gcube.application.geoportalcommon.shared.SearchingFilter.LOGICAL_OP; +import org.gcube.application.geoportalcommon.shared.SearchingFilter.ORDER; +import org.gcube.application.geoportalcommon.shared.WhereClause; +import org.gcube.application.geoportalcommon.shared.geoportal.ProjectDV; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.mongodb.BasicDBList; +import com.mongodb.BasicDBObject; +import com.mongodb.BasicDBObjectBuilder; + +public class ProjectsCaller { + + private static Logger LOG = LoggerFactory.getLogger(GeoportalClientCaller.class); + + public Projects getClient(String profileID) { + LOG.info("getProjectsClient called for profileID={}", profileID); + return projects(profileID).build(); + } + + public Project createNew(String profileID, String jsonDocument) throws RemoteException { + LOG.info("createNew called on profileID={}", profileID); + Document myDocument = Document.parse(jsonDocument); + Projects client = getClient(profileID); + Project project = client.createNew(myDocument); + return project; + } + + public Project registerFileSet(String profileID, Project project, File theFile, String parentPath, String fieldName, + String fieldDefinition) throws RemoteException, FileNotFoundException, JsonProcessingException { + LOG.info( + "registerFileSet called with [profileID={}, projectID={}, theFile={}, parentPath={}, fieldName={}, fieldDefinition={}", + parentPath, project.getId(), theFile, parentPath, fieldName, fieldDefinition); + + Projects client = getClient(profileID); + + // Prepare request + RegisterFileSetRequest fsRequest = FileSets.prepareRequest(new StorageUtils(), parentPath, fieldName, + fieldDefinition, theFile); + + project = client.registerFileSet(project.getId(), fsRequest); + LOG.trace("Resulting Project : " + project); + return project; + } + + public List getListForProfileID(String profileID) throws Exception { + LOG.info("getlistOfProjectsForProfileID called for profileID: {}", profileID); + Projects client = (Projects) getClient(profileID); + + List listProjects = new ArrayList(); + Iterator projects = client.query(new QueryRequest()); + for (Iterator iterator = projects; projects.hasNext();) { + Project prg = (Project) iterator.next(); + listProjects.add(prg); + + } + LOG.info("returning %d {}", listProjects.size(), Project.class.getName()); + return listProjects; + } + + public Configuration getConfiguration(String profileID) throws Exception { + LOG.info("getConfiguration called for profileID: {} ", profileID); + Projects client = (Projects) getClient(profileID); + Configuration config = client.getConfiguration(); + LOG.debug("returning: {} ", config); + return config; + } + + /** + * Query on mongo. + * + * @param offset the offset + * @param limit the limit + * @param filter the filter + * @param recordType the record type + * @return the result set paginated data + * @throws Exception the exception + */ + public ResultSetPaginatedData queryOnMongo(String profileID, Integer totalItems, Integer offset, Integer limit, + SearchingFilter filter, String recordType, ProjectDVBuilder projectDVBuilder) throws Exception { + + try { + + Projects geoportalClient = getClient(profileID); + + if (totalItems == null || totalItems < 0) { + // TODO MUST BE REPLACED BY COUNT + List listOfProjects = getListForProfileID(profileID); + int listConcessioniSize = listOfProjects.size(); + totalItems = listConcessioniSize; + } + + Integer offsetIndex = offset; + Integer limitIndex = limit; + + if (offset == null || offset < 0) { + offsetIndex = 0; + } + if (limit == null || limit < 0) { + limitIndex = totalItems; + } + + ResultSetPaginatedData searchedData = new ResultSetPaginatedData(offsetIndex, limitIndex, false); + searchedData.setTotalItems(totalItems); + + List toReturnList = new ArrayList(); + Direction sDirection = null; + List orderingFields = new ArrayList(); + + if (filter == null) { + LOG.info("No filter found, creating empty filter"); + filter = new SearchingFilter(); + } + + ORDER order = filter.getOrder(); + + if (order == null) { + order = ORDER.ASC; + LOG.info("No direction/order found, using default: " + order); + } + + switch (order) { + case ASC: + sDirection = Direction.ASCENDING; + break; + case DESC: + sDirection = Direction.DESCENDING; + break; + } + + List orderByFields = filter.getOrderByFields(); + + if (orderByFields == null) { + orderByFields = new ArrayList(); + } + + if (orderByFields.isEmpty()) { + ItemField orderD = new ItemField("", Arrays.asList("name"), false, false, false); + LOG.info("Order by is null, adding default: " + orderD); + orderByFields.add(orderD); + } + + for (ItemField itemField : orderByFields) { + if (itemField.getJsonFields() != null) { + for (String field : itemField.getJsonFields()) { + orderingFields.add(field); + } + } + + } + + QueryRequest request = new QueryRequest(); + PagedRequest paging = new PagedRequest(); + paging.setOffset(offsetIndex); + paging.setLimit(limitIndex); + request.setPaging(paging); + + OrderedRequest ordering = new OrderedRequest(); + ordering.setDirection(sDirection); + ordering.setFields(orderingFields); + + request.setOrdering(ordering); + + Document query = new Document(); + if (filter.getConditions() != null) { + for (WhereClause whereClause : filter.getConditions()) { + + LOGICAL_OP searchWithOperator = whereClause.getOperator(); + if (searchWithOperator == null) { + searchWithOperator = LOGICAL_OP.OR; + } + + if (whereClause.getSearchInto() != null) { + Map searchFields = whereClause.getSearchInto(); + BasicDBObjectBuilder builder = BasicDBObjectBuilder.start(); + for (String key : searchFields.keySet()) { + // using regex and case-insensitive + BasicDBObject bs = new BasicDBObject(); + bs.append("$regex", searchFields.get(key)); + bs.append("$options", "i"); + builder.append(key, bs); + + } + // Building list of Document in OR clause + BasicDBList list = new BasicDBList(); + Map map = builder.get().toMap(); + for (Object key : map.keySet()) { + + BasicDBObject value = (BasicDBObject) map.get(key); + Document doc = new Document((String) key, value); + list.add(doc); + } + + // query = new Document(); + query.put(searchWithOperator.getOperator(), list); + +// BasicDBObject bs = new BasicDBObject(); +// bs.append("$eq", "PASSED"); +// query.put("report.status", bs); + + } + } + } + + request.setFilter(query); + + LOG.info("Paging offset: " + offsetIndex + ", limit: " + limitIndex); + LOG.info("Direction: " + sDirection); + LOG.info("Order by Fields: " + orderingFields); + LOG.info("Search for conditions: " + filter.getConditions()); + if (query != null) { + LOG.info("Search query to JSON: " + query.toJson()); + } + + Iterator projects = 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 concessioni: ", e); + throw new Exception("Error occurred on loading list of Concessioni. Error: " + e.getMessage()); + } + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportal/UseCaseDescriptorCaller.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/UseCaseDescriptorCaller.java new file mode 100644 index 0000000..a062c8f --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/UseCaseDescriptorCaller.java @@ -0,0 +1,64 @@ +package org.gcube.application.geoportalcommon.geoportal; + +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.useCaseDescriptors; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.bson.Document; +import org.gcube.application.geoportal.common.model.rest.QueryRequest; +import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor; +import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.mongodb.BasicDBObject; + +public class UseCaseDescriptorCaller { + + private static Logger LOG = LoggerFactory.getLogger(UseCaseDescriptorCaller.class); + + public UseCaseDescriptorsI useCaseDescriptorsClient() { + LOG.info("useCaseDescriptorsClient called"); + return useCaseDescriptors().build(); + } + + public List getList() throws Exception { + LOG.info("getlistOfUseCaseDescriptors called"); + UseCaseDescriptorsI client = useCaseDescriptorsClient(); + List listUCD = new ArrayList(); + Iterator useCaseDescrs = client.query(new QueryRequest()); + for (Iterator iterator = useCaseDescrs; useCaseDescrs.hasNext();) { + UseCaseDescriptor prg = (UseCaseDescriptor) iterator.next(); + listUCD.add(prg); + + } + LOG.info("returning %d {}", listUCD.size(), UseCaseDescriptor.class.getName()); + return listUCD; + } + + public UseCaseDescriptor geUCDForId(String profileID) throws Exception { + LOG.info("getUseCaseDescriptorForId called for profileID: {}", profileID); + UseCaseDescriptorsI client = useCaseDescriptorsClient(); + QueryRequest queryRequest = new QueryRequest(); + Document queryDoc = new Document(); + BasicDBObject bs = new BasicDBObject(); + bs.append("$eq", profileID); + queryDoc.put("_id", bs); + + LOG.debug("Performing query: {}", queryDoc.toJson()); + queryRequest.setFilter(queryDoc); + Iterator useCaseDescrs = client.query(queryRequest); + + UseCaseDescriptor ucd = null; + + if (useCaseDescrs.hasNext()) { + ucd = useCaseDescrs.next(); + } + + LOG.info("for profileID: {}, returning: {}", profileID, ucd); + return ucd; + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/Configuration.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/config/Configuration.java similarity index 80% rename from src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/Configuration.java rename to src/main/java/org/gcube/application/geoportalcommon/geoportal/config/Configuration.java index 1b359ab..3e43ff5 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/Configuration.java +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/config/Configuration.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.geoportalconfig; +package org.gcube.application.geoportalcommon.geoportal.config; import java.util.List; diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/DocumentConfig.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/config/DocumentConfig.java similarity index 86% rename from src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/DocumentConfig.java rename to src/main/java/org/gcube/application/geoportalcommon/geoportal/config/DocumentConfig.java index 30f65bc..f32b918 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/DocumentConfig.java +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/config/DocumentConfig.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.geoportalconfig; +package org.gcube.application.geoportalcommon.geoportal.config; import javax.xml.bind.annotation.XmlRootElement; diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/FilePath.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/config/FilePath.java similarity index 84% rename from src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/FilePath.java rename to src/main/java/org/gcube/application/geoportalcommon/geoportal/config/FilePath.java index e6df7a7..914fce6 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/FilePath.java +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/config/FilePath.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.geoportalconfig; +package org.gcube.application.geoportalcommon.geoportal.config; import javax.xml.bind.annotation.XmlRootElement; diff --git a/src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/GcubeProfile.java b/src/main/java/org/gcube/application/geoportalcommon/geoportal/config/GcubeProfile.java similarity index 94% rename from src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/GcubeProfile.java rename to src/main/java/org/gcube/application/geoportalcommon/geoportal/config/GcubeProfile.java index 79710b1..d41f95f 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/geoportalconfig/GcubeProfile.java +++ b/src/main/java/org/gcube/application/geoportalcommon/geoportal/config/GcubeProfile.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.geoportalconfig; +package org.gcube.application.geoportalcommon.geoportal.config; import java.util.List; diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/ResultSetPaginatedData.java b/src/main/java/org/gcube/application/geoportalcommon/shared/ResultSetPaginatedData.java index 507aeb3..2c26db6 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/ResultSetPaginatedData.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/ResultSetPaginatedData.java @@ -6,7 +6,7 @@ package org.gcube.application.geoportalcommon.shared; import java.io.Serializable; import java.util.List; -import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV; +import org.gcube.application.geoportalcommon.shared.geoportal.ProjectDV; /** * The Class ResultSetPaginatedData. @@ -21,7 +21,7 @@ public class ResultSetPaginatedData implements Serializable { * */ private static final long serialVersionUID = 6800997954077785719L; - private List data; + private List data; private int offset = 0; private int limit; private boolean isServerSearchFinished = false; @@ -52,7 +52,7 @@ public class ResultSetPaginatedData implements Serializable { * * @return the data */ - public List getData() { + public List getData() { return data; } @@ -88,7 +88,7 @@ public class ResultSetPaginatedData implements Serializable { * * @param data the new data */ - public void setData(List data) { + public void setData(List data) { this.data = data; } diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/DocumentDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/DocumentDV.java new file mode 100644 index 0000000..4b095d8 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/DocumentDV.java @@ -0,0 +1,51 @@ +package org.gcube.application.geoportalcommon.shared.geoportal; + +import java.io.Serializable; +import java.util.LinkedHashMap; + +public class DocumentDV implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 4978517506036855883L; + private LinkedHashMap documentAsMap; + private String documentAsJSON; + + public DocumentDV() { + } + + public DocumentDV(LinkedHashMap documentAsMap, String documentAsJSON) { + super(); + this.documentAsMap = documentAsMap; + this.documentAsJSON = documentAsJSON; + } + + public LinkedHashMap getDocumentAsMap() { + return documentAsMap; + } + + public String getDocumentAsJSON() { + return documentAsJSON; + } + + public void setDocumentAsMap(LinkedHashMap documentAsMap) { + this.documentAsMap = documentAsMap; + } + + public void setDocumentAsJSON(String documentAsJSON) { + this.documentAsJSON = documentAsJSON; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("DocumentDV [documentAsMap="); + builder.append(documentAsMap); + builder.append(", documentAsJSON="); + builder.append(documentAsJSON); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/HandlerDeclarationDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/HandlerDeclarationDV.java new file mode 100644 index 0000000..95054db --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/HandlerDeclarationDV.java @@ -0,0 +1,62 @@ +package org.gcube.application.geoportalcommon.shared.geoportal; + +import java.io.Serializable; + +public class HandlerDeclarationDV implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 9095207023666383038L; + private String id; + private String type; + private DocumentDV configuration; + + HandlerDeclarationDV() { + } + + public HandlerDeclarationDV(String id, String type, DocumentDV configuration) { + super(); + this.id = id; + this.type = type; + this.configuration = configuration; + } + + public String getId() { + return id; + } + + public String getType() { + return type; + } + + public DocumentDV getConfiguration() { + return configuration; + } + + public void setId(String id) { + this.id = id; + } + + public void setType(String type) { + this.type = type; + } + + public void setConfiguration(DocumentDV configuration) { + this.configuration = configuration; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("HandlerDeclarationDV [id="); + builder.append(id); + builder.append(", type="); + builder.append(type); + builder.append(", configuration="); + builder.append(configuration); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/ProjectDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/ProjectDV.java new file mode 100644 index 0000000..d614a2f --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/ProjectDV.java @@ -0,0 +1,113 @@ +package org.gcube.application.geoportalcommon.shared.geoportal; + +import java.io.Serializable; +import java.util.List; + +public class ProjectDV implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 498764909635626624L; + private String id; + private String version; + // private PublicationInfo info; + private String profileID; + private String profileVersion; + private List relationships; + private DocumentDV spatialReference; + private TemporalReferenceDV temporalReference; + private DocumentDV theDocument; + + public ProjectDV() { + + } + + public String getId() { + return id; + } + + public String getVersion() { + return version; + } + + public String getProfileID() { + return profileID; + } + + public String getProfileVersion() { + return profileVersion; + } + + public List getRelationships() { + return relationships; + } + + public DocumentDV getSpatialReference() { + return spatialReference; + } + + public TemporalReferenceDV getTemporalReference() { + return temporalReference; + } + + public DocumentDV getTheDocument() { + return theDocument; + } + + public void setId(String id) { + this.id = id; + } + + public void setVersion(String version) { + this.version = version; + } + + public void setProfileID(String profileID) { + this.profileID = profileID; + } + + public void setProfileVersion(String profileVersion) { + this.profileVersion = profileVersion; + } + + public void setRelationships(List relationships) { + this.relationships = relationships; + } + + public void setSpatialReference(DocumentDV spatialReference) { + this.spatialReference = spatialReference; + } + + public void setTemporalReference(TemporalReferenceDV temporalReference) { + this.temporalReference = temporalReference; + } + + public void setTheDocument(DocumentDV theDocument) { + this.theDocument = theDocument; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("ProjectDV [id="); + builder.append(id); + builder.append(", version="); + builder.append(version); + builder.append(", profileID="); + builder.append(profileID); + builder.append(", profileVersion="); + builder.append(profileVersion); + builder.append(", relationships="); + builder.append(relationships); + builder.append(", spatialReference="); + builder.append(spatialReference); + builder.append(", temporalReference="); + builder.append(temporalReference); + builder.append(", theDocument="); + builder.append(theDocument); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/RelationshipDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/RelationshipDV.java new file mode 100644 index 0000000..aab9638 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/RelationshipDV.java @@ -0,0 +1,50 @@ +package org.gcube.application.geoportalcommon.shared.geoportal; + +import java.io.Serializable; + +public class RelationshipDV implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 8295671124305773593L; + private String relationshipName; + private String targetID; + + public RelationshipDV() { + + } + + public RelationshipDV(String relationshipName, String targetID) { + this.relationshipName = relationshipName; + this.targetID = targetID; + } + + public String getTargetID() { + return targetID; + } + + public void setTargetID(String targetID) { + this.targetID = targetID; + } + + public String getRelationshipName() { + return relationshipName; + } + + public void setRelationshipName(String relationshipName) { + this.relationshipName = relationshipName; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("RelationshipDV [relationshipName="); + builder.append(relationshipName); + builder.append(", targetID="); + builder.append(targetID); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/TemporalReferenceDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/TemporalReferenceDV.java new file mode 100644 index 0000000..8b404ac --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/TemporalReferenceDV.java @@ -0,0 +1,47 @@ +package org.gcube.application.geoportalcommon.shared.geoportal; + +/** + * The Class TemporalReferenceDV. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Mar 10, 2022 + */ +public class TemporalReferenceDV extends DocumentDV { + + /** + * + */ + private static final long serialVersionUID = -7990905553022863653L; + private String field; + + /** + * Instantiates a new temporal reference DV. + */ + public TemporalReferenceDV() { + + } + + public TemporalReferenceDV(String field) { + super(); + this.field = field; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("TemporalReferenceDV [field="); + builder.append(field); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/UseCaseDescriptorDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/UseCaseDescriptorDV.java new file mode 100644 index 0000000..c1cfeab --- /dev/null +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/UseCaseDescriptorDV.java @@ -0,0 +1,114 @@ +package org.gcube.application.geoportalcommon.shared.geoportal; + +import java.io.Serializable; +import java.util.List; + +public class UseCaseDescriptorDV implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -2864888245002804887L; + private String id; + private String version; + private String name; + private String description; + + private String fieldType; + private String fieldLabel; + + private List handlers; + + UseCaseDescriptorDV() { + } + + public UseCaseDescriptorDV(String id, String version, String name, String description, String fieldType, + String fieldLabel, List handlers) { + super(); + this.id = id; + this.version = version; + this.name = name; + this.description = description; + this.fieldType = fieldType; + this.fieldLabel = fieldLabel; + this.handlers = handlers; + } + + public String getId() { + return id; + } + + public String getVersion() { + return version; + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public String getFieldType() { + return fieldType; + } + + public String getFieldLabel() { + return fieldLabel; + } + + public List getHandlers() { + return handlers; + } + + public void setId(String id) { + this.id = id; + } + + public void setVersion(String version) { + this.version = version; + } + + public void setName(String name) { + this.name = name; + } + + public void setDescription(String description) { + this.description = description; + } + + public void setFieldType(String fieldType) { + this.fieldType = fieldType; + } + + public void setFieldLabel(String fieldLabel) { + this.fieldLabel = fieldLabel; + } + + public void setHandlers(List handlers) { + this.handlers = handlers; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("UseCaseDescriptorDV [id="); + builder.append(id); + builder.append(", version="); + builder.append(version); + builder.append(", name="); + builder.append(name); + builder.append(", description="); + builder.append(description); + builder.append(", fieldType="); + builder.append(fieldType); + builder.append(", fieldLabel="); + builder.append(fieldLabel); + builder.append(", handlers="); + builder.append(handlers); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/ConfigurationDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/ConfigurationDV.java similarity index 90% rename from src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/ConfigurationDV.java rename to src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/ConfigurationDV.java index 5a32558..7b57069 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/ConfigurationDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/ConfigurationDV.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.shared.geoportalconfig; +package org.gcube.application.geoportalcommon.shared.geoportal.config; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/DocumentConfigDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/DocumentConfigDV.java similarity index 94% rename from src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/DocumentConfigDV.java rename to src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/DocumentConfigDV.java index 37a4293..c610cb2 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/DocumentConfigDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/DocumentConfigDV.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.shared.geoportalconfig; +package org.gcube.application.geoportalcommon.shared.geoportal.config; import java.io.Serializable; diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/FilePathDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/FilePathDV.java similarity index 92% rename from src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/FilePathDV.java rename to src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/FilePathDV.java index 5c630c7..5d65fe2 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/FilePathDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/FilePathDV.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.shared.geoportalconfig; +package org.gcube.application.geoportalcommon.shared.geoportal.config; import java.io.Serializable; diff --git a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/GcubeProfileDV.java b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/GcubeProfileDV.java similarity index 92% rename from src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/GcubeProfileDV.java rename to src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/GcubeProfileDV.java index d569451..578d284 100644 --- a/src/main/java/org/gcube/application/geoportalcommon/shared/geoportalconfig/GcubeProfileDV.java +++ b/src/main/java/org/gcube/application/geoportalcommon/shared/geoportal/config/GcubeProfileDV.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportalcommon.shared.geoportalconfig; +package org.gcube.application.geoportalcommon.shared.geoportal.config; import java.io.Serializable; import java.util.List; @@ -8,14 +8,14 @@ import java.util.List; * * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it * - * Mar 7, 2022 + * Mar 7, 2022 */ public class GcubeProfileDV implements Serializable { /** * */ - private static final long serialVersionUID = -7910384776524845043L; + private static final long serialVersionUID = -6177379075015880565L; public static final int MIN_MAX_NOT_SPECIFIED = -1; @@ -46,15 +46,6 @@ public class GcubeProfileDV implements Serializable { public GcubeProfileDV() { } - /** - * Gets the serialversionuid. - * - * @return the serialversionuid - */ - public static long getSerialversionuid() { - return serialVersionUID; - } - /** * Gets the gcube secondary type. * @@ -91,9 +82,9 @@ public class GcubeProfileDV implements Serializable { return sectionTitle; } - /** - * Gets the parent name. If is null or empty return the "" /(empty string) as default. + * Gets the parent name. If is null or empty return the "" /(empty string) as + * default. * * @return the parent name */ diff --git a/src/test/java/org/gcube/application/LoadDocumentConfiguration.java b/src/test/java/org/gcube/application/LoadDocumentConfiguration.java index 0c2dad6..e2e8935 100644 --- a/src/test/java/org/gcube/application/LoadDocumentConfiguration.java +++ b/src/test/java/org/gcube/application/LoadDocumentConfiguration.java @@ -5,7 +5,7 @@ import java.nio.file.Files; import java.nio.file.Paths; import org.gcube.application.geoportalcommon.MockDocumentConfigurationReader; -import org.gcube.application.geoportalcommon.geoportalconfig.DocumentConfig; +import org.gcube.application.geoportalcommon.geoportal.config.DocumentConfig; import org.gcube.common.scope.api.ScopeProvider; import org.junit.Test; diff --git a/src/test/java/org/gcube/application/Project_Tests.java b/src/test/java/org/gcube/application/Project_Tests.java new file mode 100644 index 0000000..325402d --- /dev/null +++ b/src/test/java/org/gcube/application/Project_Tests.java @@ -0,0 +1,55 @@ +package org.gcube.application; + +import java.util.List; + +import org.gcube.application.geoportal.common.model.document.Project; +import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel; +import org.gcube.application.geoportalcommon.ProjectDVBuilder; +import org.gcube.application.geoportalcommon.geoportal.GeoportalClientCaller; +import org.gcube.application.geoportalcommon.geoportal.ProjectsCaller; +import org.gcube.application.geoportalcommon.shared.geoportal.ProjectDV; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; +import org.junit.Before; +import org.junit.Test; + +public class Project_Tests { + + private ProjectsCaller client = null; + // private static String CONTEXT = "/pred4s/preprod/preVRE"; + // private static String TOKEN = ""; //preVRE + + private static String CONTEXT = "/gcube/devsec/devVRE"; + private static String TOKEN = ""; // devVRE + private static String PROFILE_ID = "profiledConcessioni"; + + @Before + public void getClient() { + // assumeTrue(GCubeTest.isTestInfrastructureEnabled()); + ScopeProvider.instance.set(CONTEXT); + SecurityTokenProvider.instance.set(TOKEN); + client = GeoportalClientCaller.projects(); + } + + @Test + public void getList() throws Exception { + List listOfProjects = client.getListForProfileID(PROFILE_ID); + + int i = 0; + for (Project project : listOfProjects) { + System.out.println(++i + ") " + project); + } + } + + @Test + public void getListProjectsDV() throws Exception { + List listOfProjects = client.getListForProfileID(PROFILE_ID); + ProjectDVBuilder projectBuilder = ProjectDVBuilder.newBuilder().fullDocumentMap(true); + int i = 0; + for (Project project : listOfProjects) { + ProjectDV projectDV = ConvertToDataValueObjectModel.toProjectDV(project, projectBuilder); + System.out.println(++i + ") " + projectDV); + } + + } +} diff --git a/src/test/java/org/gcube/application/TestGNACommon.java b/src/test/java/org/gcube/application/TestGNACommon.java index 9664dff..dbc2262 100644 --- a/src/test/java/org/gcube/application/TestGNACommon.java +++ b/src/test/java/org/gcube/application/TestGNACommon.java @@ -1,26 +1,13 @@ package org.gcube.application; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - import org.gcube.application.geoportalcommon.GeoportalCommon; -import org.gcube.application.geoportalcommon.GeoportalCommonConstants; -import org.gcube.application.geoportalcommon.MongoServiceCommon; import org.gcube.application.geoportalcommon.shared.GNADataEntryConfigProfile; import org.gcube.application.geoportalcommon.shared.GNADataViewerConfigProfile; import org.gcube.application.geoportalcommon.shared.GeoNaItemRef; import org.gcube.application.geoportalcommon.shared.ItemField; -import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData; -import org.gcube.application.geoportalcommon.shared.SearchingFilter; -import org.gcube.application.geoportalcommon.shared.SearchingFilter.LOGICAL_OP; -import org.gcube.application.geoportalcommon.shared.WhereClause; import org.gcube.application.geoportalcommon.shared.config.RoleRights; -import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; -import org.junit.Before; -import org.junit.Test; public class TestGNACommon { @@ -57,40 +44,40 @@ public class TestGNACommon { } // @Test - public void queryConcessioniTest() throws Exception { - try { - - ScopeProvider.instance.set(CONTEXT); - MongoServiceCommon msc = new MongoServiceCommon(); - SearchingFilter filter = new SearchingFilter(); - - Map searchInto = new HashMap(); - searchInto.put("nome", "san"); - searchInto.put("authors", "silvia"); - // searchInto.put("report.status", "PASSED"); - - WhereClause where1 = new WhereClause(LOGICAL_OP.OR, searchInto); - - Map searchInto2 = new HashMap(); - searchInto2.put("report.status", "PASSED"); - WhereClause where2 = new WhereClause(LOGICAL_OP.AND, searchInto2); - - ArrayList list = new ArrayList(); - list.add(where1); - // list.add(where2); - filter.setConditions(list); - ResultSetPaginatedData result = msc.queryOnMongo(30, 0, 30, filter, "concessione"); - - int i = 0; - for (ConcessioneDV concessione : result.getData()) { - System.out.println(++i + ") " + concessione); - } - - } catch (Exception e) { - e.printStackTrace(); - } - - } +// public void queryConcessioniTest() throws Exception { +// try { +// +// ScopeProvider.instance.set(CONTEXT); +// MongoServiceCommon msc = new MongoServiceCommon(); +// SearchingFilter filter = new SearchingFilter(); +// +// Map searchInto = new HashMap(); +// searchInto.put("nome", "san"); +// searchInto.put("authors", "silvia"); +// // searchInto.put("report.status", "PASSED"); +// +// WhereClause where1 = new WhereClause(LOGICAL_OP.OR, searchInto); +// +// Map searchInto2 = new HashMap(); +// searchInto2.put("report.status", "PASSED"); +// WhereClause where2 = new WhereClause(LOGICAL_OP.AND, searchInto2); +// +// ArrayList list = new ArrayList(); +// list.add(where1); +// // list.add(where2); +// filter.setConditions(list); +// ResultSetPaginatedData result = msc.queryOnMongo(30, 0, 30, filter, "concessione"); +// +// int i = 0; +// for (ConcessioneDV concessione : result.getData()) { +// System.out.println(++i + ") " + concessione); +// } +// +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } // @Test public void readGNDataEntryConfigsFromIS() throws Exception { diff --git a/src/test/java/org/gcube/application/UCD_Tests.java b/src/test/java/org/gcube/application/UCD_Tests.java new file mode 100644 index 0000000..4f99c1e --- /dev/null +++ b/src/test/java/org/gcube/application/UCD_Tests.java @@ -0,0 +1,53 @@ +package org.gcube.application; + +import java.util.List; + +import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor; +import org.gcube.application.geoportalcommon.geoportal.GeoportalClientCaller; +import org.gcube.application.geoportalcommon.geoportal.UseCaseDescriptorCaller; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; +import org.junit.Before; +import org.junit.Test; + +public class UCD_Tests { + + private UseCaseDescriptorCaller client = null; + + // private static String CONTEXT = "/pred4s/preprod/preVRE"; + // private static String TOKEN = ""; //preVRE + + private static String CONTEXT = "/gcube/devsec/devVRE"; + private static String TOKEN = ""; // devVRE + + private static String PROFILE_ID = "profiledConcessioni"; + + @Before + public void getClient() { + // assumeTrue(GCubeTest.isTestInfrastructureEnabled()); + ScopeProvider.instance.set(CONTEXT); + SecurityTokenProvider.instance.set(TOKEN); + client = GeoportalClientCaller.useCaseDescriptors(); + } + + // @Test + public void getList() throws Exception { + ScopeProvider.instance.set(CONTEXT); + SecurityTokenProvider.instance.set(TOKEN); + List listOfUCD = client.getList(); + + int i = 0; + for (UseCaseDescriptor useCaseDescriptor : listOfUCD) { + System.out.println(++i + ") " + useCaseDescriptor); + } + } + + @Test + public void getItemByID() throws Exception { + ScopeProvider.instance.set(CONTEXT); + SecurityTokenProvider.instance.set(TOKEN); + + UseCaseDescriptor ucd = client.geUCDForId(PROFILE_ID); + System.out.println(ucd); + } +}