diff --git a/concessioni-use-case/src/main/java/org/gcube/application/cms/concessioni/plugins/ConcessioniLifeCycleManager.java b/concessioni-use-case/src/main/java/org/gcube/application/cms/concessioni/plugins/ConcessioniLifeCycleManager.java new file mode 100644 index 0000000..ae9fde7 --- /dev/null +++ b/concessioni-use-case/src/main/java/org/gcube/application/cms/concessioni/plugins/ConcessioniLifeCycleManager.java @@ -0,0 +1,39 @@ +package org.gcube.application.cms.concessioni.plugins; + +import org.gcube.application.cms.plugins.LifecycleManager; +import org.gcube.application.cms.plugins.faults.InitializationException; +import org.gcube.application.cms.plugins.faults.ShutDownException; +import org.gcube.application.cms.plugins.faults.StepException; +import org.gcube.application.cms.plugins.model.PluginDescriptor; +import org.gcube.application.cms.plugins.reports.ExecutionReport; +import org.gcube.application.cms.plugins.reports.InitializationReport; +import org.gcube.application.cms.plugins.requests.StepExecutionRequest; + +public class ConcessioniLifeCycleManager implements LifecycleManager { + + + @Override + public InitializationReport initInContext() throws InitializationException { + return null; + } + + @Override + public InitializationReport init() throws InitializationException { + return null; + } + + @Override + public void shutdown() throws ShutDownException { + + } + + @Override + public ExecutionReport performStep(StepExecutionRequest request) throws StepException { + return null; + } + + @Override + public PluginDescriptor getDescriptor() { + return null; + } +} diff --git a/geoportal-client/CHANGELOG.md b/geoportal-client/CHANGELOG.md index c312846..5cb3400 100644 --- a/geoportal-client/CHANGELOG.md +++ b/geoportal-client/CHANGELOG.md @@ -4,6 +4,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [v1.0.6-SNAPSHOT] - 2021-09-20 - Changed artifact dependencies +- Default Profiled Documents client ## [v1.0.5] - 2021-09-20 - Refactored repositories diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledConcessioni.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledConcessioni.java new file mode 100644 index 0000000..7102c15 --- /dev/null +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledConcessioni.java @@ -0,0 +1,93 @@ +package org.gcube.application.geoportal.client; + +import org.gcube.application.geoportal.common.model.legacy.Concessione; +import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest; +import org.gcube.application.geoportal.common.model.rest.Configuration; +import org.gcube.application.geoportal.common.model.rest.QueryRequest; +import org.gcube.application.geoportal.common.rest.MongoConcessioni; + +import java.util.Iterator; + +public class DefaultProfiledConcessioni implements MongoConcessioni { + + + @Override + public Concessione createNew(Concessione c) throws Exception { + return null; + } + + @Override + public void deleteById(String id) throws Exception { + + } + + @Override + public void deleteById(String id, Boolean force) throws Exception { + + } + + @Override + public Concessione getById(String id) throws Exception { + return null; + } + + @Override + public Iterator getList() throws Exception { + return null; + } + + @Override + public Concessione publish(String id) throws Exception { + return null; + } + + @Override + public Concessione registerFileSet(String id, AddSectionToConcessioneRequest request) throws Exception { + return null; + } + + @Override + public Concessione cleanFileSet(String id, String path) throws Exception { + return null; + } + + @Override + public Concessione update(String id, String jsonUpdate) throws Exception { + return null; + } + + @Override + public Concessione replace(Concessione replacement) throws Exception { + return null; + } + + @Override + public void unPublish(String id) throws Exception { + + } + + @Override + public Configuration getCurrentConfiguration() throws Exception { + return null; + } + + @Override + public Iterator search(String filter) throws Exception { + return null; + } + + @Override + public Iterator query(QueryRequest request) throws Exception { + return null; + } + + @Override + public String queryForJSON(QueryRequest request) throws Exception { + return null; + } + + @Override + public Iterator queryForType(QueryRequest request, Class clazz) throws Exception { + return null; + } +} diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledDocuments.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledDocuments.java new file mode 100644 index 0000000..df7e07f --- /dev/null +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledDocuments.java @@ -0,0 +1,62 @@ +package org.gcube.application.geoportal.client; + + +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import org.bson.Document; +import org.gcube.application.geoportal.common.model.document.ProfiledDocument; +import org.gcube.application.geoportal.common.model.rest.Configuration; +import org.gcube.application.geoportal.common.model.rest.QueryRequest; +import org.gcube.application.geoportal.common.rest.ProfiledDocumentsI; +import org.gcube.common.clients.delegates.ProxyDelegate; + +import javax.ws.rs.client.WebTarget; +import java.rmi.RemoteException; +import java.util.Iterator; + +@RequiredArgsConstructor +public class DefaultProfiledDocuments implements ProfiledDocumentsI { + + @NonNull + private final ProxyDelegate delegate; + + @Override + public ProfiledDocument createNew(Document toCreate) throws RemoteException { + return null; + } + + @Override + public void deleteById(String id) throws RemoteException { + + } + + @Override + public void deleteById(String id, Boolean force) throws RemoteException { + + } + + @Override + public ProfiledDocument getById(String id) throws RemoteException { + return null; + } + + @Override + public Configuration getConfiguration() throws RemoteException { + return null; + } + + @Override + public Iterator query(QueryRequest request) throws RemoteException { + return null; + } + + @Override + public String querForJSON(QueryRequest request) throws RemoteException { + return null; + } + + @Override + public ProfiledDocument performStep(String id, String step, Document request) { + return null; + } +} diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProjects.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProjects.java deleted file mode 100644 index 37415f2..0000000 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProjects.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.gcube.application.geoportal.client; - -import java.rmi.RemoteException; -import java.util.Iterator; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.gcube.application.geoportal.common.model.project.Project; -import org.gcube.application.geoportal.common.rest.ProjectsI; -import org.gcube.common.clients.Call; -import org.gcube.common.clients.delegates.ProxyDelegate; - -import lombok.NonNull; -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public class DefaultProjects implements ProjectsI{ - - @NonNull - private final ProxyDelegate delegate; - - @Override - public void deleteById(String profileId, String projectId) throws RemoteException { - deleteById(profileId,projectId,false); - } - @Override - public void deleteById(String profileId, String projectId,Boolean force) throws RemoteException { -// Call call= new Call() { -// -// @Override -// public String call(WebTarget endpoint) throws Exception { -// endpoint.path(profileId).path(projectId).request(MediaType.APPLICATION_JSON).delete(); -// } -// }; -// try{ -// delegate.make(call); -// }catch(Exception e) { -//// throw new RemoteException(e); -// } - } - - @Override - public Iterator getAll() throws RemoteException { - Call> call=new Call>(){ - @Override - public Iterator call(WebTarget endpoint) throws Exception { - throw new Exception("Client method not ready"); - } - }; - try{ - return delegate.make(call); - }catch(Exception e) { - throw new RemoteException(e.getMessage()); - } - } - - @Override - public Iterator getByFilter(String filter) throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - @Override - public Iterator getByFilter(String filter, String profileId) throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - @Override - public Project getById(String profileId, String id) throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - @Override - public Iterator getByProfile(String profileId) throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - @Override - public Project registrNew(String profileId, String jsonDocument) throws RemoteException { - // TODO Auto-generated method stub - return null; - } - - @Override - public Project update(String profileId, String projectId, String jsonDocument) throws RemoteException { - // TODO Auto-generated method stub - return null; - } -} diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ProjectsPlugin.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ProjectsPlugin.java index aaa17a5..53637e4 100644 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ProjectsPlugin.java +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ProjectsPlugin.java @@ -6,14 +6,14 @@ import javax.xml.transform.dom.DOMResult; import javax.xml.ws.EndpointReference; import org.gcube.application.geoportal.common.rest.InterfaceConstants; -import org.gcube.application.geoportal.common.rest.ProjectsI; +import org.gcube.application.geoportal.common.rest.ProfiledDocumentsI; import org.gcube.common.calls.jaxrs.GcubeService; import org.gcube.common.calls.jaxrs.TargetFactory; import org.gcube.common.clients.config.ProxyConfig; import org.gcube.common.clients.delegates.ProxyDelegate; import org.w3c.dom.Node; -public class ProjectsPlugin extends GeoportalAbstractPlugin{ +public class ProjectsPlugin extends GeoportalAbstractPlugin{ @Override @@ -22,8 +22,8 @@ public class ProjectsPlugin extends GeoportalAbstractPlugin delegate) { - return new DefaultProjects(delegate); + public ProfiledDocumentsI newProxy(ProxyDelegate delegate) { + return new DefaultProfiledDocuments(delegate); } @Override diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Centroid.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Centroid.java deleted file mode 100644 index ee752e9..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Centroid.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.gcube.application.geoportal.common.model.project; - -public class Centroid { - - private Double x; - private Double y; - private Double z; - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Project.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Project.java deleted file mode 100644 index 7d34cb9..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Project.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.gcube.application.geoportal.common.model.project; - -import org.gcube.application.geoportal.common.model.BasicJSONObject; - -import lombok.NoArgsConstructor; - -@NoArgsConstructor -public class Project { - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/PublicationDetails.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/PublicationDetails.java deleted file mode 100644 index 3656a12..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/PublicationDetails.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.gcube.application.geoportal.common.model.project; - -import java.time.LocalDateTime; - -import lombok.Data; - -@Data -public class PublicationDetails { - - public static enum Policy{ - OPEN,RESTRICTED,EMBARGOED; - } - - private LocalDateTime creation_time; - private String creation_user; - private LocalDateTime last_update_time; - private String last_update_user; - private String version; - private String license; - private String policy; - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Status.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Status.java deleted file mode 100644 index 0783b0a..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/Status.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.gcube.application.geoportal.common.model.project; - -import java.util.List; - -public class Status { - - - private StatusPhase phase; - private List messages; - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/StatusPhase.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/StatusPhase.java deleted file mode 100644 index 522532c..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/project/StatusPhase.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.gcube.application.geoportal.common.model.project; - -public enum StatusPhase { - - DRAFT, - UNDER_VALIDATION, - INVALID, - VALID, - UNDER_PUBLICATION, - PUBLICATION_ERROR, - PUBLISHED - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/ProfiledDocumentsI.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/ProfiledDocumentsI.java new file mode 100644 index 0000000..c7aaabd --- /dev/null +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/ProfiledDocumentsI.java @@ -0,0 +1,28 @@ +package org.gcube.application.geoportal.common.rest; + +import org.bson.Document; +import org.gcube.application.geoportal.common.model.document.ProfiledDocument; +import org.gcube.application.geoportal.common.model.rest.Configuration; +import org.gcube.application.geoportal.common.model.rest.QueryRequest; + +import java.rmi.RemoteException; +import java.util.Iterator; + +public interface ProfiledDocumentsI

{ + + // CRUD + public P createNew(Document toCreate)throws RemoteException; + public void deleteById(String id) throws RemoteException; + public void deleteById(String id,Boolean force) throws RemoteException; + public P getById(String id) throws RemoteException; + + // CONFIG + public Configuration getConfiguration() throws RemoteException; + + // QUERY + public Iterator

query (QueryRequest request) throws RemoteException; + public String querForJSON(QueryRequest request)throws RemoteException; + + //Execution + public P performStep(String id, String step, Document request); +} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/ProjectsI.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/ProjectsI.java deleted file mode 100644 index 6ff8a00..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/ProjectsI.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.gcube.application.geoportal.common.rest; - -import org.gcube.application.geoportal.common.model.project.Project; - -import java.util.Iterator; - -public interface ProjectsI { - - - public Iterator getAll() throws Exception; - public Iterator getByProfile(String profileId) throws Exception; - public Project getById(String profileId,String id) throws Exception; - public Iterator getByFilter(String filter)throws Exception; - public Iterator getByFilter(String filter, String profileId)throws Exception; - public Project registrNew(String profileId, String jsonDocument)throws Exception; - public Project update(String profileId, String projectId,String jsonDocument) throws Exception; - public void deleteById(String profileId, String projectId)throws Exception; - public void deleteById(String profileId, String projectId, Boolean force)throws Exception; -} diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/GeoPortalService.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/GeoPortalService.java index 2edcabe..d06a0f5 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/GeoPortalService.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/GeoPortalService.java @@ -4,7 +4,8 @@ import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; import org.gcube.application.geoportal.common.rest.InterfaceConstants; import org.gcube.application.geoportal.service.rest.ConcessioniOverMongo; -import org.gcube.application.geoportal.service.rest.Projects; + +import org.gcube.application.geoportal.service.rest.ProfiledDocuments; import org.gcube.application.geoportal.service.rest.Sections; import org.gcube.application.geoportal.service.utils.Serialization; import org.glassfish.jersey.server.ResourceConfig; @@ -21,7 +22,7 @@ public class GeoPortalService extends ResourceConfig{ //Register interrfaces // registerClasses(Concessioni.class); registerClasses(ConcessioniOverMongo.class); - registerClasses(Projects.class); + registerClasses(ProfiledDocuments.class); registerClasses(Sections.class); diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java index 3cc1de8..fc6cb22 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java @@ -8,6 +8,7 @@ import org.bson.Document; import org.bson.types.ObjectId; import org.gcube.application.cms.plugins.LifecycleManager; import org.gcube.application.cms.plugins.faults.StepException; +import org.gcube.application.cms.plugins.reports.ExecutionReport; import org.gcube.application.cms.plugins.requests.StepExecutionRequest; import org.gcube.application.geoportal.common.model.document.*; import org.gcube.application.geoportal.common.model.legacy.Concessione; @@ -67,12 +68,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI< UserUtils.AuthenticatedUser u = UserUtils.getCurrent(); updatedDocument.getInfo().setLastEditInfo(u.asInfo()); - StepExecutionRequest request=new StepExecutionRequest(); - request.setStep(StepExecutionRequest.Steps.ON_UPDATE_DOCUMENT); - request.setProfile(profile); - request.setDocument(updatedDocument); - - return lfManager.performStep(request).getResult(); + return step(updatedDocument,StepExecutionRequest.Steps.ON_UPDATE_DOCUMENT).getResult(); } private Document asDocument(ProfiledDocument d) throws JsonProcessingException { @@ -117,20 +113,13 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI< toRegister.setProfileVersion(profile.getVersion()); toRegister.setVersion(new ComparableVersion("1.0.0")); - // TODO Apply Lifecycle + // Apply Lifecycle - StepExecutionRequest request=new StepExecutionRequest(); - request.setDocument(toRegister); - request.setProfile(profile); - request.setStep(StepExecutionRequest.Steps.ON_INIT_DOCUMENT); - - log.debug("Delegating init document to LCM. Request is {} ",request); - - toRegister=lfManager.performStep(request).getResult(); + toRegister=step(toRegister,StepExecutionRequest.Steps.ON_INIT_DOCUMENT).getResult(); log.debug("Going to register {} ",toRegister); - + // Insert object ObjectId id =insert(asDocument(toRegister),getCollectionName()); log.info("Obtained id {} ",id); @@ -140,10 +129,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI< @Override public ProfiledDocument update(String id, ProfiledDocument toSet) throws IOException, StepException { log.trace("Replacing {} ",toSet); - // DEFAULT ON UPDATE toSet=onUpdate(toSet); - // TODO SPECIFIC ON UPDATE - return asProfiledDocument(replace(asDocument(toSet),getCollectionName())); } @@ -229,4 +215,16 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI< public ProfiledDocument performStep(String id, String step, Document options) { throw new RuntimeException("TO IMPLEMENT"); } + + + + private ExecutionReport step(ProfiledDocument theDocument,String step) throws StepException { + log.info("[Profile {} ] Invoking Step {} on " ,profile.getId(),step,lfManager.getDescriptor()); + StepExecutionRequest request=new StepExecutionRequest(); + request.setDocument(theDocument); + request.setProfile(profile); + request.setStep(StepExecutionRequest.Steps.ON_INIT_DOCUMENT); + log.debug("Requesting Step Execution {} ",request); + return lfManager.performStep(request); + } } diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/Projects.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/ProfiledDocuments.java similarity index 96% rename from geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/Projects.java rename to geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/ProfiledDocuments.java index 3abe341..0422a28 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/Projects.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/ProfiledDocuments.java @@ -19,11 +19,11 @@ import javax.ws.rs.core.MediaType; @Path(InterfaceConstants.Methods.PROJECTS+"/{"+InterfaceConstants.Parameters.PROFILE_ID+"}") @Slf4j -public class Projects { +public class ProfiledDocuments { private ProfiledMongoManager manager; - public Projects(@PathParam(InterfaceConstants.Parameters.PROFILE_ID) String profileID) throws ConfigurationException { + public ProfiledDocuments(@PathParam(InterfaceConstants.Parameters.PROFILE_ID) String profileID) throws ConfigurationException { log.debug("Accessing profiles "+profileID); manager=new GuardedMethod(){ @Override diff --git a/pom.xml b/pom.xml index 52e946b..d2c300a 100644 --- a/pom.xml +++ b/pom.xml @@ -32,24 +32,26 @@ - + geoportal-service + + geoportal-common cms-plugin-framework - + geoportal-client - geoportal-common - + + concessioni-use-case + cms-test-commons use-cases - concessioni-use-case