diff --git a/cms-test-commons/CHANGELOG.md b/cms-test-commons/CHANGELOG.md index 28ef4c6..442d5fd 100644 --- a/cms-test-commons/CHANGELOG.md +++ b/cms-test-commons/CHANGELOG.md @@ -1,5 +1,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). # Changelog for org.gcube.application.cms.cms-test-commons +## [v1.0.1-SNAPSHOT] - 2021-09-11 +- Introduced profiled documents + ## [v1.0.0] - 2021-09-11 - First release \ No newline at end of file diff --git a/cms-test-commons/pom.xml b/cms-test-commons/pom.xml index 601fc78..5e8a717 100644 --- a/cms-test-commons/pom.xml +++ b/cms-test-commons/pom.xml @@ -5,7 +5,7 @@ 4.0.0 cms-test-commons - 1.0.0 + 1.0.1-SNAPSHOT CMS Test Commons diff --git a/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestFilters.java b/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniFilters.java similarity index 50% rename from cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestFilters.java rename to cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniFilters.java index ac55535..b998b87 100644 --- a/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestFilters.java +++ b/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniFilters.java @@ -1,33 +1,20 @@ -package org.gcube.application.cms.tests.model; +package org.gcube.application.cms.tests.model.concessioni; import org.gcube.application.geoportal.common.utils.Files; -import sun.misc.IOUtils; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLDecoder; import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.nio.file.Paths; -import java.util.Enumeration; import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import java.util.stream.Stream; -public class TestFilters { +public class TestConcessioniFilters { public static final HashMap filters=new HashMap<>(); static{ - for(File f:new File(TestModel.getBaseFolder(),"filters").listFiles()){ + for(File f:new File(TestConcessioniModel.getBaseFolder(),"filters").listFiles()){ try { filters.put(f.getName(), Files.readFileAsString(f.getAbsolutePath(), Charset.defaultCharset())); } catch (IOException e) { diff --git a/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestModel.java b/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniModel.java similarity index 97% rename from cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestModel.java rename to cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniModel.java index 541f8b8..27ae3c5 100644 --- a/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestModel.java +++ b/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniModel.java @@ -1,4 +1,4 @@ -package org.gcube.application.cms.tests.model; +package org.gcube.application.cms.tests.model.concessioni; import java.io.File; import java.time.LocalDateTime; @@ -8,7 +8,7 @@ import java.util.Arrays; import org.bson.types.ObjectId; import org.gcube.application.geoportal.common.model.legacy.*; -public class TestModel { +public class TestConcessioniModel { public static File getBaseFolder(){ File toReturn =new File("../test-data/concessioni"); diff --git a/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestQueries.java b/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniQueries.java similarity index 72% rename from cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestQueries.java rename to cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniQueries.java index b633bcd..8be7fa6 100644 --- a/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/TestQueries.java +++ b/cms-test-commons/src/main/java/org/gcube/application/cms/tests/model/concessioni/TestConcessioniQueries.java @@ -1,21 +1,19 @@ -package org.gcube.application.cms.tests.model; +package org.gcube.application.cms.tests.model.concessioni; import org.gcube.application.geoportal.common.utils.Files; -import sun.misc.IOUtils; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.Charset; import java.util.HashMap; -public class TestQueries { +public class TestConcessioniQueries { public static final HashMap queries =new HashMap<>(); static{ - for(File f:new File(TestModel.getBaseFolder(),"queries").listFiles()){ + for(File f:new File(TestConcessioniModel.getBaseFolder(),"queries").listFiles()){ try { queries.put(f.getName(), Files.readFileAsString(f.getAbsolutePath(), Charset.defaultCharset())); } catch (IOException e) { diff --git a/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/Serialization.java b/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/Serialization.java new file mode 100644 index 0000000..1f50d09 --- /dev/null +++ b/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/Serialization.java @@ -0,0 +1,6 @@ +package org.gcube.application.cms.commons.model; + +public class Serialization { + + +} diff --git a/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/Models.java b/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/Models.java index e8aab7d..d1694ca 100644 --- a/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/Models.java +++ b/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/Models.java @@ -1,7 +1,7 @@ package org.gcube.application.cms.commons.model.concessioni; -import org.gcube.application.cms.tests.model.TestFilters; -import org.gcube.application.cms.tests.model.TestModel; +import org.gcube.application.cms.tests.model.concessioni.TestConcessioniFilters; +import org.gcube.application.cms.tests.model.concessioni.TestConcessioniModel; import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.junit.Test; @@ -11,14 +11,14 @@ public class Models { @Test public void checkFilters(){ - assertTrue(TestFilters.filters.size()>0); - TestFilters.filters.keySet().forEach(f -> { + assertTrue(TestConcessioniFilters.filters.size()>0); + TestConcessioniFilters.filters.keySet().forEach(f -> { System.out.println(f);}); } @Test public void checkConcessione(){ - Concessione c= TestModel.prepareConcessione(3,5); + Concessione c= TestConcessioniModel.prepareConcessione(3,5); assertTrue(c.getPianteFineScavo().size()==3); assertTrue(c.getImmaginiRappresentative().size()==5); } diff --git a/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/PathsTest.java b/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/PathsTest.java index 3f3d0ca..203e8d1 100644 --- a/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/PathsTest.java +++ b/cms-test-commons/src/test/java/org/gcube/application/cms/commons/model/concessioni/PathsTest.java @@ -2,7 +2,7 @@ package org.gcube.application.cms.commons.model.concessioni; import static org.junit.Assert.assertEquals; -import org.gcube.application.cms.tests.model.TestModel; +import org.gcube.application.cms.tests.model.concessioni.TestConcessioniModel; import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.gcube.application.geoportal.common.model.legacy.Concessione.Paths; import org.gcube.application.geoportal.common.model.legacy.LayerConcessione; @@ -17,8 +17,8 @@ public class PathsTest { @Test public void embeddedPaths() { - Concessione c= TestModel.prepareConcessione(); - c=TestModel.setIds(c); + Concessione c= TestConcessioniModel.prepareConcessione(); + c= TestConcessioniModel.setIds(c); 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 21cd9bd..418fe72 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 @@ -3,11 +3,10 @@ package org.gcube.application.cms.commons.model.concessioni; import java.io.File; import java.io.IOException; -import org.gcube.application.cms.tests.model.TestModel; +import org.gcube.application.cms.tests.model.concessioni.TestConcessioniModel; import org.gcube.application.geoportal.common.model.legacy.AccessPolicy; import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.gcube.application.geoportal.common.model.profile.Profile; -import org.gcube.application.geoportal.common.utils.Files; import org.junit.Assert; import org.junit.Test; @@ -38,7 +37,7 @@ public class SerializationTest { @Test public void readProfile() throws JsonProcessingException, IOException { - Profile concessione=mapper.readerFor(Profile.class).readValue(new File(TestModel.getBaseFolder(),"ProfileConcessioni.json")); + Profile concessione=mapper.readerFor(Profile.class).readValue(new File(TestConcessioniModel.getBaseFolder(),"ProfileConcessioni.json")); System.out.println("Profile is "+mapper.writeValueAsString(concessione)); @@ -48,7 +47,7 @@ public class SerializationTest { @Test public void readConcessione() throws JsonProcessingException, IOException { - Concessione concessione=mapper.readerFor(Concessione.class).readValue(new File(TestModel.getBaseFolder(),"Concessione.json")); + Concessione concessione=mapper.readerFor(Concessione.class).readValue(new File(TestConcessioniModel.getBaseFolder(),"Concessione.json")); System.out.println("Concessione is "+concessione.toString()); concessione.getRelazioneScavo().setPolicy(AccessPolicy.EMBARGOED); @@ -61,7 +60,7 @@ public class SerializationTest { @Test public void generic() throws JsonProcessingException, IOException { - Concessione conc= TestModel.prepareConcessione(); + Concessione conc= TestConcessioniModel.prepareConcessione(); conc.validate(); full(conc); } diff --git a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/StatelessClientTests.java b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/StatelessClientTests.java index 67acbb4..7da0e2c 100644 --- a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/StatelessClientTests.java +++ b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/StatelessClientTests.java @@ -11,6 +11,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.concurrent.atomic.AtomicLong; +import org.bson.Document; import org.gcube.application.cms.tests.model.TestFilters; import org.gcube.application.cms.tests.model.TestModel; import org.gcube.application.cms.tests.model.TestQueries; @@ -20,6 +21,7 @@ import org.gcube.application.geoportal.common.model.legacy.*; import org.gcube.application.geoportal.common.model.legacy.Concessione.Paths; import org.gcube.application.geoportal.common.model.legacy.report.ValidationReport.ValidationStatus; import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest; +import org.gcube.application.geoportal.common.model.rest.QueryRequest; import org.gcube.application.geoportal.common.rest.MongoConcessioni; import org.gcube.application.geoportal.common.utils.FileSets; import org.gcube.application.geoportal.common.utils.Files; @@ -45,11 +47,18 @@ public class StatelessClientTests extends BasicVreTests{ throw new RuntimeException(e); } }); + + } @Test public void query() throws Exception { + QueryRequest req=new QueryRequest(); + req.setFilter(Document.parse("{ \"nome\" : { \"$eq\" : \"mock\" } }")); + + System.out.println("FRA "+ count(client.query(req))); + // No Transformation System.out.print("First Registered \t"); Iterator queriedDocuments=client.query( diff --git a/geoportal-common/CHANGELOG.md b/geoportal-common/CHANGELOG.md index 3c7bdcd..88e6ff2 100644 --- a/geoportal-common/CHANGELOG.md +++ b/geoportal-common/CHANGELOG.md @@ -5,6 +5,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # [v1.0.8-SNAPSHOT] - 2021-11-10 - Fixes [#22369](https://support.d4science.org/issues/22369) - Fixes [#22338](https://support.d4science.org/issues/22338) +- Profiled Documents + + # [v1.0.7] - 2021-09-20 - Refactored repositories diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Access.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Access.java index c4365ba..b4eea40 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Access.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Access.java @@ -4,7 +4,6 @@ import lombok.*; @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/AccountingInfo.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/AccountingInfo.java index 8551657..42130dc 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/AccountingInfo.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/AccountingInfo.java @@ -6,7 +6,6 @@ import java.time.LocalDateTime; @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/ComparableVersion.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/ComparableVersion.java index 119f122..56a340d 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/ComparableVersion.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/ComparableVersion.java @@ -19,6 +19,8 @@ package org.gcube.application.geoportal.common.model.document; * under the License. */ +import lombok.*; + import java.math.BigInteger; import java.util.ArrayDeque; import java.util.ArrayList; @@ -60,6 +62,12 @@ import java.util.Properties; * @author Kenney Westerhof * @author Hervé Boutemy */ + +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +@ToString public class ComparableVersion implements Comparable { diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Context.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Context.java index 37293dc..6bd23be 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Context.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Context.java @@ -4,7 +4,6 @@ import lombok.*; @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/LifecycleInformation.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/LifecycleInformation.java index bf5dc73..06e4e33 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/LifecycleInformation.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/LifecycleInformation.java @@ -2,11 +2,24 @@ package org.gcube.application.geoportal.common.model.document; import lombok.*; +import java.util.List; + @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString public class LifecycleInformation { + + public enum Status{ + PASSED,ERROR,WARNING + } + + + private String phase; + private Status lastOperationStatus; + private List errorMessages; + private List warningMessages; + private List children; + } diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/ProfiledDocument.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/ProfiledDocument.java index 383c359..12e07aa 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/ProfiledDocument.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/ProfiledDocument.java @@ -7,7 +7,6 @@ import org.bson.Document; @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/PublicationInfo.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/PublicationInfo.java index a6ec97f..5843717 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/PublicationInfo.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/PublicationInfo.java @@ -5,7 +5,6 @@ import org.gcube.application.geoportal.common.model.legacy.AccessPolicy; @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Relationship.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Relationship.java index a592214..8f05dda 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Relationship.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/Relationship.java @@ -4,9 +4,12 @@ import lombok.*; @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString public class Relationship { + + private String relationshipName; + private String targetID; + } diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/TemporalReference.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/TemporalReference.java index 3dbb3cc..889db6e 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/TemporalReference.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/TemporalReference.java @@ -4,9 +4,10 @@ import lombok.*; @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString public class TemporalReference { + + private String field; } diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/User.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/User.java index afbe67b..afe11b6 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/User.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/model/document/User.java @@ -4,7 +4,6 @@ import lombok.*; @NoArgsConstructor @AllArgsConstructor -@RequiredArgsConstructor @Getter @Setter @ToString diff --git a/geoportal-service/CHANGELOG.md b/geoportal-service/CHANGELOG.md index 48d75ec..1cee4e4 100644 --- a/geoportal-service/CHANGELOG.md +++ b/geoportal-service/CHANGELOG.md @@ -7,6 +7,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Fixes [#22193](https://support.d4science.org/issues/22193) - Fixes [#22280](https://support.d4science.org/issues/22280) - Fixes [#20755](https://support.d4science.org/issues/20755) +- Profiled Documents + ## [v1.0.6] 2021-09-20 - Refactored repositories diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/MongoManagerI.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/MongoManagerI.java index 9eed45e..f5bf0de 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/MongoManagerI.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/MongoManagerI.java @@ -1,24 +1,29 @@ package org.gcube.application.geoportal.service.engine.mongo; +import com.fasterxml.jackson.core.JsonProcessingException; +import org.bson.Document; import org.gcube.application.geoportal.common.model.rest.QueryRequest; +import org.gcube.application.geoportal.service.model.internal.faults.DeletionException; + +import java.io.IOException; public interface MongoManagerI { // create - public T registerNew(T toRegister); + public T registerNew(T toRegister) throws IOException; // update - public T update(String id,T toSet); + public T update(String id,T toSet) throws IOException; // delete - public void delete(String id); + public void delete(String id,boolean force) throws DeletionException; // get By ID - public T getByID(String id); + public T getByID(String id) throws IOException; // query @@ -37,4 +42,6 @@ public interface MongoManagerI { // deIndex public T deIndex(String id); + + public T performStep(String id, String step, Document options); } 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 55de3e1..2f86ea2 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 @@ -1,5 +1,145 @@ package org.gcube.application.geoportal.service.engine.mongo; -public class ProfiledMongoManager { +import com.fasterxml.jackson.core.JsonProcessingException; +import com.mongodb.client.MongoDatabase; +import lombok.extern.slf4j.Slf4j; +import org.bson.Document; +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.rest.QueryRequest; +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; +import java.io.IOException; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.function.Consumer; + +import static org.gcube.application.geoportal.service.engine.mongo.ConcessioniMongoManager.asConcessione; + +@Slf4j +public class ProfiledMongoManager extends MongoManager implements MongoManagerI{ + + + public ProfiledMongoManager() throws ConfigurationException { + } + + private ProfiledDocument onUpdate(ProfiledDocument updatedDocument){ + throw new RuntimeException("Implement Me"); + } + + private Document asDocument(ProfiledDocument d) throws JsonProcessingException { + return Document.parse(Serialization.write(d)); + } + + private ProfiledDocument asProfiledDocument(Document d) throws IOException { + return Serialization.read(d.toJson(),ProfiledDocument.class); + } + + private String getCollectionName(){ + return null; + } + + @Override + protected MongoDatabase getDatabase() { + return null; + } + + @Override + public ProfiledDocument registerNew(ProfiledDocument toRegister) throws IOException { + super.insert(asDocument(toRegister),getCollectionName()); + + log.trace("Going to register {} ",toRegister); + toRegister=onUpdate(toRegister); + log.trace("Concessione with defaults is {}",toRegister); + ObjectId id=insert(asDocument(toRegister), getCollectionName()); + + log.trace("Obtained id {}",id); + ProfiledDocument toReturn=asProfiledDocument(getById(id,getCollectionName())); + toReturn.setId(asString(id)); + + + toReturn = asProfiledDocument(replace(asDocument(toReturn),getCollectionName())); + log.debug("Registered {} ",toReturn); + return toReturn; + } + + @Override + public ProfiledDocument update(String id, ProfiledDocument toSet) throws IOException { + log.trace("Replacing {} ",toSet); + toSet=onUpdate(toSet); + return asProfiledDocument(replace(asDocument(toSet),getCollectionName())); + } + + @Override + public void delete(String id,boolean force) throws DeletionException { + log.debug("Deleting by ID {}, force {}",id,force); + try{ + ProfiledDocument doc =getByID(id); + + + //if(!force&&isPublished(id)) throw new Exception("Cannot delete published documents. Unpublish it or use force = true"); + + try{ + // TODO CHECK PHASE AND STATUS + // DEINDEX + // DEMATERIALIZE + // DELETE CONTENT + // DELETE ENTRY + throw new DeletionException("IMPLEMENT THIS"); + // delete(asId(id), getCollectionName()); + }catch(DeletionException e) { + //storing updated - partially deleted + // concessione=onUpdate(concessione); + // replace(asDocument(concessione), collectionName); + throw e; + } + }catch(Throwable t){ + throw new DeletionException("Unable to delete "+id,t); + } + } + + @Override + public ProfiledDocument getByID(String id) throws IOException { + return asProfiledDocument(super.getById(asId(id),getCollectionName())); + } + + @Override + public Iterable query(QueryRequest queryRequest) { + log.info("Searching concessione for filter {} ",queryRequest); + LinkedBlockingQueue queue=new LinkedBlockingQueue(); + query(queryRequest,getCollectionName()).forEach( + (Consumer) (Document d)->{try{ + queue.put(d); + }catch(Throwable t){log.warn("Unable to translate "+d);}}); + log.info("Returned {} elements ",queue.size()); + return queue; + } + + @Override + public ProfiledDocument materialize(String id) { + throw new RuntimeException("TO IMPLEMENT"); + } + + @Override + public ProfiledDocument dematerialize(String id) { + throw new RuntimeException("TO IMPLEMENT"); + } + + @Override + public ProfiledDocument index(String id) { + throw new RuntimeException("TO IMPLEMENT"); + } + + @Override + public ProfiledDocument deIndex(String id) { + throw new RuntimeException("TO IMPLEMENT"); + } + + @Override + public ProfiledDocument performStep(String id, String step, Document options) { + throw new RuntimeException("TO IMPLEMENT"); + } } diff --git a/test-data/concessioni/queries/emptyresult.json b/test-data/concessioni/queries/emptyresult.json new file mode 100644 index 0000000..2592e30 --- /dev/null +++ b/test-data/concessioni/queries/emptyresult.json @@ -0,0 +1,4 @@ +{ + "filter" : { "nome" : { "$eq" : "stupid_mock_impossible_to_find_one" } } + +} \ No newline at end of file