From 5ced0095d6ef617b138cc56da146c4d02acd2829 Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Tue, 7 Dec 2021 13:05:08 +0100 Subject: [PATCH] Init Concessioni profile support --- .../cms/plugins/InitializablePlugin.java | 2 +- .../cms/plugins/model/PluginDescriptor.java | 2 ++ .../model/concessioni/SerializationTest.java | 2 +- .../common/model/profile/DefaultCompiler.java | 7 ----- .../geoportal/common/model/profile/Field.java | 12 -------- .../common/model/profile/FieldMapping.java | 7 ----- .../model/profile/HandlerDeclaration.java | 12 ++++++++ .../common/model/profile/IndexDefinition.java | 7 ----- .../common/model/profile/IsoMapper.java | 7 ----- .../common/model/profile/Profile.java | 20 ++++++++----- .../common/model/profile/Validator.java | 5 ---- .../engine/ImplementationProvider.java | 6 ++-- .../engine/mongo/ProfiledMongoManager.java | 14 ++++----- .../engine/providers/ProfileMapCache.java | 30 ++++++++++++++----- .../main/resources/profiles/concessione.json | 16 ++++++++++ .../geoportal/service/ProjectTests.java | 2 +- 16 files changed, 78 insertions(+), 73 deletions(-) delete mode 100644 geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/DefaultCompiler.java delete mode 100644 geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Field.java delete mode 100644 geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/FieldMapping.java create mode 100644 geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/HandlerDeclaration.java delete mode 100644 geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/IndexDefinition.java delete mode 100644 geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/IsoMapper.java delete mode 100644 geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Validator.java create mode 100644 geoportal-service/src/main/resources/profiles/concessione.json diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/InitializablePlugin.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/InitializablePlugin.java index dee80c0..9a4e502 100644 --- a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/InitializablePlugin.java +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/InitializablePlugin.java @@ -4,7 +4,7 @@ import org.gcube.application.cms.plugins.faults.InitializationException; import org.gcube.application.cms.plugins.faults.ShutDownException; import org.gcube.application.cms.plugins.reports.InitializationReport; -public interface InitializablePlugin { +public interface InitializablePlugin extends Plugin{ /** * To be called once per context * @return diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/model/PluginDescriptor.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/model/PluginDescriptor.java index 290fa19..c086957 100644 --- a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/model/PluginDescriptor.java +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/model/PluginDescriptor.java @@ -13,6 +13,8 @@ public class PluginDescriptor { @NonNull private String ID; + @NonNull + private String type; private String label; private String description; private ComparableVersion version; diff --git a/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/SerializationTest.java b/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/SerializationTest.java index 418fe72..494a1a8 100644 --- a/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/SerializationTest.java +++ b/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/SerializationTest.java @@ -41,7 +41,7 @@ public class SerializationTest { System.out.println("Profile is "+mapper.writeValueAsString(concessione)); - Assert.assertTrue(concessione.getFields().size()>0); + //Assert.assertTrue(concessione .getFields().size()>0); } diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/DefaultCompiler.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/DefaultCompiler.java deleted file mode 100644 index 019f08a..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/DefaultCompiler.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.gcube.application.geoportal.common.model.profile; - -public class DefaultCompiler { - - - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Field.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Field.java deleted file mode 100644 index 75bd604..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Field.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.gcube.application.geoportal.common.model.profile; - -import lombok.Data; -import lombok.Getter; - -@Data -public class Field { - - - - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/FieldMapping.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/FieldMapping.java deleted file mode 100644 index be913ee..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/FieldMapping.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.gcube.application.geoportal.common.model.profile; - -public class FieldMapping { - - - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/HandlerDeclaration.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/HandlerDeclaration.java new file mode 100644 index 0000000..3f70dae --- /dev/null +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/HandlerDeclaration.java @@ -0,0 +1,12 @@ +package org.gcube.application.geoportal.common.model.profile; + +import lombok.Data; +import org.bson.Document; + +@Data +public class HandlerDeclaration { + + private String id; + private String type; + private Document configuration; +} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/IndexDefinition.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/IndexDefinition.java deleted file mode 100644 index 67ee4dd..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/IndexDefinition.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.gcube.application.geoportal.common.model.profile; - -public class IndexDefinition { - - - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/IsoMapper.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/IsoMapper.java deleted file mode 100644 index 1cbd4b8..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/IsoMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.gcube.application.geoportal.common.model.profile; - -public class IsoMapper { - - private String className; - -} diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Profile.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Profile.java index 8e7f3f4..d674add 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Profile.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Profile.java @@ -7,19 +7,23 @@ import javax.xml.bind.annotation.XmlRootElement; import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; +import org.bson.Document; +import org.gcube.application.geoportal.common.model.document.AccountingInfo; +import org.gcube.application.geoportal.common.model.document.ComparableVersion; @Data @NoArgsConstructor @XmlRootElement public class Profile{ - private String name; private String id; - private List fields; - - private List defaultCompilers; - private List validators; - private IsoMapper isoMapper; - private List centroidsMapping; - private List indexes; + private ComparableVersion version; + + private String name; + private String description; + private AccountingInfo creationInfo; + + private Document schema; + + private List handlers; } diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Validator.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Validator.java deleted file mode 100644 index d161f5d..0000000 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/profile/Validator.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.gcube.application.geoportal.common.model.profile; - -public class Validator { - -} diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/ImplementationProvider.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/ImplementationProvider.java index 3f62f97..d842d82 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/ImplementationProvider.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/ImplementationProvider.java @@ -38,9 +38,9 @@ public class ImplementationProvider { @Setter private ISProvider isProvider=new ISProvider(); -// @Getter -// @Setter -// private EMFProvider emfProvider=new ScopedEMFProvider(); + @Getter + @Setter + private ProfileMapCache profiles=new ProfileMapCache(); @Getter 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 a9d87f6..1786426 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,7 +8,9 @@ import org.bson.types.ObjectId; import org.gcube.application.geoportal.common.model.document.ProfiledDocument; import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.gcube.application.geoportal.common.model.legacy.report.ValidationReport; +import org.gcube.application.geoportal.common.model.profile.Profile; import org.gcube.application.geoportal.common.model.rest.QueryRequest; +import org.gcube.application.geoportal.service.engine.ImplementationProvider; import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException; import org.gcube.application.geoportal.service.model.internal.faults.DeletionException; import org.gcube.application.geoportal.service.utils.Serialization; @@ -17,6 +19,7 @@ import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import java.io.IOException; import java.security.InvalidParameterException; +import java.util.Map; import java.util.concurrent.LinkedBlockingQueue; import java.util.function.Consumer; @@ -26,16 +29,13 @@ import static org.gcube.application.geoportal.service.engine.mongo.ConcessioniMo public class ProfiledMongoManager extends MongoManager implements MongoManagerI{ - String profileId; + Profile profile; public ProfiledMongoManager(String profileId) throws ConfigurationException { if(profileId==null) throw new InvalidParameterException("Profile ID cannot be null"); - //check profile existance - //ProfileManager.get(profileId); - // TODO GET FROM PROFILES - if (!profileId.equals("profiled-concessioni")) throw new WebApplicationException("Profile "+profileId+" not registered", Response.Status.NOT_FOUND); - - + Map profiles=ImplementationProvider.get().getProfiles().getObject(); + if(!profiles.containsKey(profileId)) + throw new WebApplicationException("Profile "+profileId+" not registered", Response.Status.NOT_FOUND); } private ProfiledDocument onUpdate(ProfiledDocument updatedDocument){ diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ProfileMapCache.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ProfileMapCache.java index e7e195d..4848361 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ProfileMapCache.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ProfileMapCache.java @@ -1,12 +1,19 @@ package org.gcube.application.geoportal.service.engine.providers; +import com.fasterxml.jackson.core.JsonProcessingException; +import lombok.extern.slf4j.Slf4j; import org.gcube.application.geoportal.common.model.profile.Profile; +import org.gcube.application.geoportal.common.utils.Files; import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException; +import org.gcube.application.geoportal.service.utils.Serialization; +import java.io.IOException; +import java.nio.charset.Charset; import java.util.Collections; +import java.util.HashMap; import java.util.Map; - +@Slf4j public class ProfileMapCache extends AbstractScopedMap> { public ProfileMapCache() { @@ -26,16 +33,25 @@ public class ProfileMapCache extends AbstractScopedMap> { @Override protected Map retrieveObject() throws ConfigurationException { - // TODO Auto-generated method stub - - Profile p=new Profile(); - p. - return Collections.singletonMap("") + // Load from resources + HashMap toReturn=new HashMap<>(); + + try { + Profile p=Serialization.read(Files. + readFileAsString(Files.getFileFromResources("profiles/concessione.json").getAbsolutePath(), Charset.defaultCharset()), Profile.class); + log.debug("Loaded "+p.getName()+" ID "+p.getId()); + toReturn.put(p.getId(),p); - return null; + }catch (JsonProcessingException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return toReturn; + } } diff --git a/geoportal-service/src/main/resources/profiles/concessione.json b/geoportal-service/src/main/resources/profiles/concessione.json new file mode 100644 index 0000000..263e876 --- /dev/null +++ b/geoportal-service/src/main/resources/profiles/concessione.json @@ -0,0 +1,16 @@ +{ + "id" : "concessione", + "version" : "1.0.0", + "name" : "Concessione", + "description" : "Embedded profile for concessioni [mibac] management", + "creationInfo": { + "user" : { + "username": "fabio.sinibaldi" + } + }, + "handlers" : [ + { + "id" : "concessioniLifecycle", + "type" : "LifecycleManagement"} + ] +} \ No newline at end of file diff --git a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ProjectTests.java b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ProjectTests.java index 80447b0..12b4bce 100644 --- a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ProjectTests.java +++ b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/ProjectTests.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertEquals; public class ProjectTests extends BasicServiceTestUnit{ - String testProfileId="profiled-concessioni"; + String testProfileId="concessione"; @Before public void setContext(){