diff --git a/pom.xml b/pom.xml index 17d33b4..5f65fc1 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,13 @@ 4.11 + + + org.gcube.common + storagehub-client-library + [1.0.0,2.0.0-SNAPSHOT) + + diff --git a/src/main/java/org/gcube/application/geoportal/client/DefaultMongoConcessioni.java b/src/main/java/org/gcube/application/geoportal/client/DefaultMongoConcessioni.java index 1ea1082..37afbec 100644 --- a/src/main/java/org/gcube/application/geoportal/client/DefaultMongoConcessioni.java +++ b/src/main/java/org/gcube/application/geoportal/client/DefaultMongoConcessioni.java @@ -1,9 +1,10 @@ package org.gcube.application.geoportal.client; +import java.io.IOException; import java.io.InputStream; +import java.rmi.RemoteException; import java.util.ArrayList; import java.util.Iterator; -import java.util.List; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; @@ -11,10 +12,11 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import com.fasterxml.jackson.databind.MappingIterator; -import com.fasterxml.jackson.databind.ObjectReader; import org.gcube.application.geoportal.client.utils.Serialization; import org.gcube.application.geoportal.common.model.legacy.Concessione; -import org.gcube.application.geoportal.common.rest.AddSectionToConcessioneRequest; +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.InterfaceConstants; import org.gcube.application.geoportal.common.rest.MongoConcessioni; import org.gcube.common.clients.Call; @@ -117,6 +119,79 @@ public class DefaultMongoConcessioni implements MongoConcessioni{ return toReturn; } + @Override + public void unpublish(String id) throws Exception { + log.info("Publishing {} ",id); + + Call call= new Call(){ + @Override + public Concessione call(WebTarget endpoint) throws Exception { + Response resp= endpoint.path(InterfaceConstants.Methods.PUBLISH_PATH). + path(id).request(MediaType.APPLICATION_JSON).delete(); + check(resp,null); + return null; + } + }; + delegate.make(call); + log.debug("UnPublished {} ",id); + } + + @Override + public Configuration getCurrentConfiguration() throws Exception { + return delegate.make(new Call() { + @Override + public Configuration call(WebTarget webTarget) throws Exception { + return check(webTarget.path(InterfaceConstants.Methods.CONFIGURATION_PATH). + request(MediaType.APPLICATION_JSON).get(),Configuration.class); + } + }); + } + + @Override + public Iterator search(String s) throws Exception { + log.debug("Searching for {}",s); + Call> call=new Call>(){ + @Override + public Iterator call(WebTarget endpoint) throws Exception { + Response resp =endpoint.path(InterfaceConstants.Methods.SEARCH_PATH).request(MediaType.APPLICATION_JSON). + post(Entity.entity(s,MediaType.APPLICATION_JSON)); + return checkCollection(resp,Concessione.class); + } + }; + return delegate.make(call); + } + + @Override + public Iterator query(QueryRequest queryRequest) throws Exception { + log.debug("Querying for {}",queryRequest); +// Call> call=new Call>(){ +// @Override +// public Iterator call(WebTarget endpoint) throws Exception { +// Response resp =endpoint.path(InterfaceConstants.Methods.SEARCH_PATH).request(MediaType.APPLICATION_JSON). +// post(Entity.entity(queryRequest,MediaType.APPLICATION_JSON)); +// return checkCollection(resp,Concessione.class); +// } +// }; +// return delegate.make(call); + + return queryforType(queryRequest,Concessione.class); + } + + @Override + public Iterator queryforType(QueryRequest queryRequest, Class aClass) throws Exception { + log.debug("Querying for {}",queryRequest); + Call> call=new Call>(){ + @Override + public Iterator call(WebTarget endpoint) throws Exception { + Response resp =endpoint.path(InterfaceConstants.Methods.SEARCH_PATH).request(MediaType.APPLICATION_JSON). + post(Entity.entity(queryRequest,MediaType.APPLICATION_JSON)); + return checkCollection(resp,aClass); + } + }; + return delegate.make(call); + } + + @Override public Concessione registerFile(String id, AddSectionToConcessioneRequest request) throws Exception { log.info("Registering {} in {}",request,id); @@ -159,13 +234,23 @@ public class DefaultMongoConcessioni implements MongoConcessioni{ } - protected static T check(Response resp, Class clazz) throws Exception { + protected static T check(Response resp, Class clazz) throws IOException { String resString=resp.readEntity(String.class); if(resp.getStatus()<200||resp.getStatus()>=300) - throw new Exception("RESP STATUS IS "+resp.getStatus()+". Message : "+resString); + throw new RemoteException("RESP STATUS IS "+resp.getStatus()+". Message : "+resString); System.out.println("Resp String is "+resString); if(clazz!=null) return Serialization.read(resString, clazz); else return null; } + + protected static Iterator checkCollection(Response resp, Class clazz) throws IOException { + if(resp.getStatus()<200||resp.getStatus()>=300) + throw new RemoteException("RESP STATUS IS "+resp.getStatus()+". Message : "+resp.readEntity(String.class)); + if(clazz!=null) + return Serialization.readCollection((InputStream) resp.getEntity(), clazz); + else return null; + } + + } diff --git a/src/main/java/org/gcube/application/geoportal/client/legacy/StatefulMongoConcessioni.java b/src/main/java/org/gcube/application/geoportal/client/legacy/StatefulMongoConcessioni.java index 8079b31..2551067 100644 --- a/src/main/java/org/gcube/application/geoportal/client/legacy/StatefulMongoConcessioni.java +++ b/src/main/java/org/gcube/application/geoportal/client/legacy/StatefulMongoConcessioni.java @@ -12,7 +12,7 @@ import org.gcube.application.geoportal.common.model.legacy.InputStreamDescriptor import org.gcube.application.geoportal.common.model.legacy.LayerConcessione; import org.gcube.application.geoportal.common.model.legacy.RelazioneScavo; import org.gcube.application.geoportal.common.model.legacy.UploadedImage; -import org.gcube.application.geoportal.common.rest.AddSectionToConcessioneRequest; +import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest; import org.gcube.application.geoportal.common.rest.TempFile; import org.gcube.application.geoportal.common.utils.StorageUtils; import org.gcube.common.clients.delegates.ProxyDelegate; @@ -135,7 +135,7 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements - protected static AddSectionToConcessioneRequest request(String path,TempFile...files) { + protected static AddSectionToConcessioneRequest request(String path, TempFile...files) { AddSectionToConcessioneRequest req=new AddSectionToConcessioneRequest(); req.setDestinationPath(path); req.setStreams(new ArrayList()); diff --git a/src/main/java/org/gcube/application/geoportal/client/utils/Serialization.java b/src/main/java/org/gcube/application/geoportal/client/utils/Serialization.java index 7a72703..e4f45ef 100644 --- a/src/main/java/org/gcube/application/geoportal/client/utils/Serialization.java +++ b/src/main/java/org/gcube/application/geoportal/client/utils/Serialization.java @@ -1,7 +1,9 @@ package org.gcube.application.geoportal.client.utils; import java.io.IOException; +import java.io.InputStream; import java.time.format.DateTimeFormatter; +import java.util.Iterator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -28,4 +30,12 @@ public static final DateTimeFormatter FULL_FORMATTER=DateTimeFormatter.ofPattern public static String write(Object obj) throws JsonProcessingException, IOException { return mapper.writeValueAsString(obj); } + + public static Iterator readCollection(String jsonString, Class clazz) throws IOException { + return mapper.readerFor(clazz).readValues(jsonString); + } + + public static Iterator readCollection(InputStream is, Class clazz) throws IOException { + return mapper.readerFor(clazz).readValues(is); + } } diff --git a/src/test/java/org/gcube/application/geoportal/StorageTests.java b/src/test/java/org/gcube/application/geoportal/StorageTests.java new file mode 100644 index 0000000..5942bcb --- /dev/null +++ b/src/test/java/org/gcube/application/geoportal/StorageTests.java @@ -0,0 +1,34 @@ +package org.gcube.application.geoportal; + +import org.gcube.application.geoportal.clients.TokenSetter; +import org.gcube.application.geoportal.common.rest.TempFile; +import org.gcube.application.geoportal.common.utils.Files; +import org.gcube.application.geoportal.common.utils.StorageUtils; +import org.gcube.common.storagehub.client.dsl.StorageHubClient; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; + +public class StorageTests { + + public static void main(String[] args) throws FileNotFoundException { + FileInputStream fis =new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")); + String filename= "relazione.pdf"; + + String sourceContext="/d4science.research-infrastructures.eu"; + String targetContext="/pred4s/preprod/preVRE"; + + TokenSetter.set(sourceContext); + + StorageHubClient sgClient=new StorageHubClient(); + + TokenSetter.set(targetContext); + + TempFile file= new StorageUtils().putOntoStorage(fis,filename); + + + System.out.println(new StorageUtils().getUrlById(file.getId())); + + } + +} diff --git a/src/test/java/org/gcube/application/geoportal/common/model/BasicVreTests.java b/src/test/java/org/gcube/application/geoportal/clients/BasicVreTests.java similarity index 72% rename from src/test/java/org/gcube/application/geoportal/common/model/BasicVreTests.java rename to src/test/java/org/gcube/application/geoportal/clients/BasicVreTests.java index aa598e5..d6cb21b 100644 --- a/src/test/java/org/gcube/application/geoportal/common/model/BasicVreTests.java +++ b/src/test/java/org/gcube/application/geoportal/clients/BasicVreTests.java @@ -1,6 +1,5 @@ -package org.gcube.application.geoportal.common.model; +package org.gcube.application.geoportal.clients; -import org.junit.Before; import org.junit.BeforeClass; public class BasicVreTests { diff --git a/src/test/java/org/gcube/application/geoportal/common/model/StatefulClientTests.java b/src/test/java/org/gcube/application/geoportal/clients/StatefulClientTests.java similarity index 95% rename from src/test/java/org/gcube/application/geoportal/common/model/StatefulClientTests.java rename to src/test/java/org/gcube/application/geoportal/clients/StatefulClientTests.java index cba35b5..ce3eaee 100644 --- a/src/test/java/org/gcube/application/geoportal/common/model/StatefulClientTests.java +++ b/src/test/java/org/gcube/application/geoportal/clients/StatefulClientTests.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportal.common.model; +package org.gcube.application.geoportal.clients; import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; import static org.junit.Assert.assertEquals; @@ -9,6 +9,7 @@ import java.io.FileNotFoundException; import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI; import org.gcube.application.geoportal.client.utils.Serialization; +import org.gcube.application.geoportal.common.model.TestModel; import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.gcube.application.geoportal.common.model.legacy.InputStreamDescriptor; import org.gcube.application.geoportal.common.model.legacy.LayerConcessione; @@ -18,7 +19,6 @@ import org.gcube.application.geoportal.common.rest.TempFile; import org.gcube.application.geoportal.common.utils.Files; import org.gcube.application.geoportal.common.utils.StorageUtils; import org.gcube.contentmanagement.blobstorage.transport.backend.RemoteBackendException; -import org.junit.Before; import org.junit.Test; @@ -31,7 +31,7 @@ public class StatefulClientTests extends BasicVreTests{ StorageUtils storage=new StorageUtils(); - Concessione toRegister=TestModel.prepareEmptyConcessione(); + Concessione toRegister= TestModel.prepareEmptyConcessione(); manager.createNew(toRegister); @@ -92,8 +92,7 @@ public class StatefulClientTests extends BasicVreTests{ StorageUtils storage=new StorageUtils(); manager.createNew(TestModel.prepareEmptyConcessione()); - - + manager.delete(); } diff --git a/src/test/java/org/gcube/application/geoportal/common/model/StatelessClientTests.java b/src/test/java/org/gcube/application/geoportal/clients/StatelessClientTests.java similarity index 82% rename from src/test/java/org/gcube/application/geoportal/common/model/StatelessClientTests.java rename to src/test/java/org/gcube/application/geoportal/clients/StatelessClientTests.java index 5e68045..ef21e1f 100644 --- a/src/test/java/org/gcube/application/geoportal/common/model/StatelessClientTests.java +++ b/src/test/java/org/gcube/application/geoportal/clients/StatelessClientTests.java @@ -1,18 +1,22 @@ -package org.gcube.application.geoportal.common.model; +package org.gcube.application.geoportal.clients; import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.File; import java.io.FileInputStream; +import java.nio.charset.Charset; import java.util.Collections; +import java.util.Iterator; import java.util.concurrent.atomic.AtomicLong; +import org.gcube.application.geoportal.common.model.TestModel; 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.report.ValidationReport.ValidationStatus; -import org.gcube.application.geoportal.common.rest.AddSectionToConcessioneRequest; +import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest; import org.gcube.application.geoportal.common.rest.MongoConcessioni; import org.gcube.application.geoportal.common.utils.Files; import org.gcube.application.geoportal.common.utils.StorageUtils; @@ -109,4 +113,29 @@ public class StatelessClientTests extends BasicVreTests{ assertTrue(c.getReport().getStatus().equals(ValidationStatus.PASSED)); } + + + @Test + public void getConfiguration(){ + + } + + @Test + public void searches() throws Exception { + for(File filterFile:new File("src/test/resources/concessioni/filters").listFiles()) { + String query=Files.readFileAsString(filterFile.getAbsolutePath(), Charset.defaultCharset()); + System.out.println("Count for "+filterFile.getName()+"\t"+ count(client.search(query))); + } + } + + + + + // UTILS + + public static long count(Iterator iterator){ + AtomicLong l=new AtomicLong(0); + iterator.forEachRemaining(el->{l.incrementAndGet();}); + return l.get(); + } } diff --git a/src/test/java/org/gcube/application/geoportal/common/model/TokenSetter.java b/src/test/java/org/gcube/application/geoportal/clients/TokenSetter.java similarity index 93% rename from src/test/java/org/gcube/application/geoportal/common/model/TokenSetter.java rename to src/test/java/org/gcube/application/geoportal/clients/TokenSetter.java index 7052726..ae53e71 100644 --- a/src/test/java/org/gcube/application/geoportal/common/model/TokenSetter.java +++ b/src/test/java/org/gcube/application/geoportal/clients/TokenSetter.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportal.common.model; +package org.gcube.application.geoportal.clients; import java.util.Properties; diff --git a/src/test/java/org/gcube/application/geoportal/common/model/ConcessioniTests.java b/src/test/java/org/gcube/application/geoportal/clients/legacy/ConcessioniTests.java similarity index 89% rename from src/test/java/org/gcube/application/geoportal/common/model/ConcessioniTests.java rename to src/test/java/org/gcube/application/geoportal/clients/legacy/ConcessioniTests.java index 735dcc5..afb1726 100644 --- a/src/test/java/org/gcube/application/geoportal/common/model/ConcessioniTests.java +++ b/src/test/java/org/gcube/application/geoportal/clients/legacy/ConcessioniTests.java @@ -1,18 +1,18 @@ -package org.gcube.application.geoportal.common.model; +package org.gcube.application.geoportal.clients.legacy; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicLong; import org.gcube.application.geoportal.client.legacy.ConcessioniManager; +import org.gcube.application.geoportal.clients.BasicVreTests; import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.gcube.application.geoportal.common.model.legacy.GeoServerContent; import org.gcube.application.geoportal.common.model.legacy.LayerConcessione; import org.gcube.application.geoportal.common.model.legacy.PersistedContent; import org.gcube.application.geoportal.common.model.legacy.report.ValidationReport.ValidationStatus; -import org.junit.Before; import org.junit.Test; -public class ConcessioniTests extends BasicVreTests{ +public class ConcessioniTests extends BasicVreTests { static boolean STOP_ON_FAIL=true; @@ -77,9 +77,5 @@ public class ConcessioniTests extends BasicVreTests{ -// @Test -// public void readOne() throws Exception { -// ConcessioniManager manager=new ConcessioniManager(); -// System.out.println(manager.getById(67+"")); -// } + } diff --git a/src/test/java/org/gcube/application/geoportal/common/model/Serializations.java b/src/test/java/org/gcube/application/geoportal/common/model/Serializations.java new file mode 100644 index 0000000..993c926 --- /dev/null +++ b/src/test/java/org/gcube/application/geoportal/common/model/Serializations.java @@ -0,0 +1,33 @@ +package org.gcube.application.geoportal.common.model; + +import org.gcube.application.geoportal.client.utils.Serialization; +import org.gcube.application.geoportal.common.model.legacy.Concessione; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Iterator; +import java.util.concurrent.atomic.AtomicLong; + +public class Serializations { + + @Test + public void readOne(){} + + @Test + public void readMulti() throws IOException { + + Iterator it=Serialization.readCollection( + new FileInputStream(new File("src/test/resources/concessioni/ConcessioniList.json")), + Concessione.class); + AtomicLong l=new AtomicLong(0); + it.forEachRemaining(element->{l.incrementAndGet();}); + + + Assert.assertTrue(l.get()==4); + } + +} diff --git a/src/test/java/org/gcube/application/geoportal/common/model/TestModel.java b/src/test/java/org/gcube/application/geoportal/common/model/TestModel.java index 53b8929..aac4795 100644 --- a/src/test/java/org/gcube/application/geoportal/common/model/TestModel.java +++ b/src/test/java/org/gcube/application/geoportal/common/model/TestModel.java @@ -87,7 +87,7 @@ public class TestModel { RelazioneScavo relScavo=new RelazioneScavo(); relScavo.setAbstractEng("simple abstract section"); - relScavo.setAbstractEng("semplice sezione abstract"); + relScavo.setAbstractIta("semplice sezione abstract"); relScavo.setResponsabili(concessione.getAuthors()); concessione.setRelazioneScavo(relScavo); diff --git a/src/test/java/org/gcube/application/geoportal/usecases/ClearConcessioni.java b/src/test/java/org/gcube/application/geoportal/usecases/ClearConcessioni.java index 76e05ae..332c9b0 100644 --- a/src/test/java/org/gcube/application/geoportal/usecases/ClearConcessioni.java +++ b/src/test/java/org/gcube/application/geoportal/usecases/ClearConcessioni.java @@ -1,12 +1,10 @@ package org.gcube.application.geoportal.usecases; -import org.gcube.application.geoportal.client.legacy.ConcessioniManager; import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI; -import org.gcube.application.geoportal.common.model.TokenSetter; +import org.gcube.application.geoportal.clients.TokenSetter; import org.gcube.application.geoportal.common.model.legacy.Concessione; import java.util.ArrayList; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; @@ -20,8 +18,8 @@ public class ClearConcessioni { ArrayList toSkipIds=new ArrayList<>(); - toSkipIds.add("6102c8dd02ad3d05b5f81df4"); - toSkipIds.add("610415af02ad3d05b5f81ee3"); +// toSkipIds.add("6102c8dd02ad3d05b5f81df4"); +// toSkipIds.add("610415af02ad3d05b5f81ee3"); AtomicLong count=new AtomicLong(0); AtomicLong nullCount=new AtomicLong(0); diff --git a/src/test/java/org/gcube/application/geoportal/usecases/Export.java b/src/test/java/org/gcube/application/geoportal/usecases/Export.java new file mode 100644 index 0000000..4db84af --- /dev/null +++ b/src/test/java/org/gcube/application/geoportal/usecases/Export.java @@ -0,0 +1,159 @@ +package org.gcube.application.geoportal.usecases; + +import lombok.extern.slf4j.Slf4j; +import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI; +import org.gcube.application.geoportal.client.utils.Serialization; +import org.gcube.application.geoportal.clients.TokenSetter; +import org.gcube.application.geoportal.common.model.legacy.*; +import org.gcube.application.geoportal.common.model.legacy.report.ValidationReport; +import org.gcube.application.geoportal.common.rest.TempFile; +import org.gcube.application.geoportal.common.utils.Files; +import org.gcube.application.geoportal.common.utils.StorageUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; + +@Slf4j +/* +Pushes concessioni JSON from folder to geoportal-service + */ +public class Export { + + + public static void main(String[] args) { + + File dir= new File("/Users/fabioisti/git/geoportal-client/import1628178107083"); +// String targetContext="/pred4s/preprod/preVRE"; + String targetContext="/gcube/devsec/devVRE"; + + + + ArrayList found=new ArrayList<>(); + for(File elementFolder:dir.listFiles()) + for(File jsonFile:elementFolder.listFiles((dir1, name) -> {return name.endsWith(".json");})) + try { + log.info("Reading "+jsonFile.getAbsolutePath()); + String json= Files.readFileAsString(jsonFile.getAbsolutePath(), Charset.defaultCharset()); + found.add(Serialization.read(json,Concessione.class)); + } catch (IOException e) { + e.printStackTrace(); + } + + System.out.println("Loaded "+found.size()+" elements from "+dir.getAbsolutePath()); + + TokenSetter.set(targetContext); + ConcessioniManagerI targetManager = statefulMongoConcessioni().build(); + StorageUtils storage = new StorageUtils(); + + AtomicLong count = new AtomicLong(0); + AtomicLong warnCount = new AtomicLong(0); + AtomicLong errCount = new AtomicLong(0); + + for (Concessione c : found) { + try { + log.info("Using {} {}",c.getNome(),c.getMongo_id()); + Concessione result = push(c, targetManager, new File(dir.getAbsolutePath(), + c.getId() + ""), storage); + if (!result.getReport().getStatus().equals(ValidationReport.ValidationStatus.PASSED)) + warnCount.incrementAndGet(); + } catch (Throwable throwable) { + System.err.println(throwable); + errCount.incrementAndGet(); + } finally { + count.incrementAndGet(); + } + } + + System.out.println("Done "+count.get()+" [warn : "+warnCount.get()+", err : "+errCount.get()+"]"); + } + + public static Concessione push(Concessione c, ConcessioniManagerI manager, File dir, StorageUtils storage) throws Exception { + // remove GIS references + LayerConcessione posizionamento= c.getPosizionamentoScavo(); + c.setPosizionamentoScavo(null); + + List piante=c.getPianteFineScavo(); + c.setPianteFineScavo(new ArrayList()); + + List imgs=c.getImmaginiRappresentative(); + c.setImmaginiRappresentative(new ArrayList()); + + List other=c.getGenericContent(); + c.setGenericContent(new ArrayList()); + + RelazioneScavo rel=c.getRelazioneScavo(); + c.setRelazioneScavo(null); + + + // remove source folder id + c.setFolderId(null); + c.setMongo_id(null); + + // PUSH PROJECT + manager.createNew(c); + + + // UPLOAD WOrKSPaCE content + // Relazione + removeContent(rel); + manager.setRelazioneScavo(rel, fromPath(dir.toPath().toAbsolutePath()+File.separator+"rel",storage)[0]); + + // Posizionamento + removeContent(posizionamento); + manager.setPosizionamento(posizionamento, + fromPath(dir.toPath().toAbsolutePath()+File.separator+"pos", storage)); + + + //Piante + for(int i=0; i toReturn=new ArrayList<>(); + for(File f : baseDir.toFile().listFiles()){ + toReturn.add(storage.putOntoStorage(new FileInputStream(f),f.getName())); + } + log.info("Loaded {} files from {} ",toReturn.size(),path); + return toReturn.toArray(new TempFile[toReturn.size()]); + } + + + private static void removeContent(AssociatedContent c){ c.setActualContent(new ArrayList<>());} + +} diff --git a/src/test/java/org/gcube/application/geoportal/usecases/Import.java b/src/test/java/org/gcube/application/geoportal/usecases/Import.java new file mode 100644 index 0000000..5dea760 --- /dev/null +++ b/src/test/java/org/gcube/application/geoportal/usecases/Import.java @@ -0,0 +1,110 @@ +package org.gcube.application.geoportal.usecases; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.gcube.application.geoportal.client.legacy.ConcessioniManager; +import org.gcube.application.geoportal.client.utils.Serialization; +import org.gcube.application.geoportal.clients.TokenSetter; +import org.gcube.application.geoportal.common.model.legacy.*; +import org.gcube.common.storagehub.client.dsl.FileContainer; +import org.gcube.common.storagehub.client.dsl.StorageHubClient; +import org.gcube.common.storagehub.model.exceptions.StorageHubException; + +import java.io.*; +import java.util.ArrayList; + +@Slf4j +/* +Imports Json concessioni into import + */ +public class Import { + + + public static void main(String[] args) throws Exception { + +// Path dir=Files.createTempDirectory(System.currentTimeMillis()+""); + + File dir=new File("import"+System.currentTimeMillis()); + dir.mkdirs(); + String sourceContext="/d4science.research-infrastructures.eu/D4OS/GeoNA-Prototype"; +// String sourceContext="/pred4s/preprod/preVRE"; + + + + // GET FOM SOURCE + TokenSetter.set(sourceContext); + + StorageHubClient sgClient=new StorageHubClient(); + + +// ConcessioniManagerI manager= statefulMongoConcessioni().build(); + + ConcessioniManager sourceManager = new ConcessioniManager(); + ArrayList found=new ArrayList<>(); + sourceManager.getList().forEach((Concessione c)->{ + try { + File currentFolder=new File (dir.toString(),c.getId()+""); + currentFolder.mkdirs(); + + //Load locally + // POSIZIONAMENTO + loadFiles(c.getPosizionamentoScavo(),new File(currentFolder,"pos"),sgClient); + // RELAZIONE + loadFiles(c.getRelazioneScavo(),new File(currentFolder,"rel"),sgClient); + // IMGs + for(int i=0;i toSkipIds=new ArrayList<>(); + + + AtomicLong count=new AtomicLong(0); + AtomicLong nullCount=new AtomicLong(0); + AtomicLong errCount=new AtomicLong(0); + manager.getList().forEachRemaining((Concessione c)->{ + try{ + String currentId=c.getMongo_id(); + if(currentId==null) { + System.out.println("ID IS NULL " + c); + nullCount.incrementAndGet(); + } + else + if(toSkipIds.contains(currentId)) + System.out.println("Skipping "+currentId); + else { + System.out.println("Upublishing " + c.getMongo_id()); + manager.unpublish(c.getMongo_id()); + + System.out.println("Republishing" + c.getMongo_id()); + manager.publish(c.getMongo_id()); + } + }catch(Throwable throwable){ + System.err.println(throwable); + errCount.incrementAndGet(); + }finally { + count.incrementAndGet(); + } + }); + + System.out.println("Done "+count.get()+" [null : "+nullCount.get()+", err : "+errCount.get()+"]"); + + } +} diff --git a/src/test/java/org/gcube/application/geoportal/usecases/UnpublishSingle.java b/src/test/java/org/gcube/application/geoportal/usecases/UnpublishSingle.java new file mode 100644 index 0000000..369ed4d --- /dev/null +++ b/src/test/java/org/gcube/application/geoportal/usecases/UnpublishSingle.java @@ -0,0 +1,17 @@ +package org.gcube.application.geoportal.usecases; + +import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI; +import org.gcube.application.geoportal.clients.TokenSetter; + +import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; + +public class UnpublishSingle { + + public static void main(String[] args) throws Exception { + TokenSetter.set("/gcube/devsec/devVRE"); + + ConcessioniManagerI manager=statefulMongoConcessioni().build(); + + manager.publish("610415af02ad3d05b5f81ee3"); + } +} diff --git a/src/test/resources/Concessione.json b/src/test/resources/concessioni/Concessione.json similarity index 100% rename from src/test/resources/Concessione.json rename to src/test/resources/concessioni/Concessione.json diff --git a/src/test/resources/concessioni/ConcessioniList.json b/src/test/resources/concessioni/ConcessioniList.json new file mode 100644 index 0000000..8258a73 --- /dev/null +++ b/src/test/resources/concessioni/ConcessioniList.json @@ -0,0 +1 @@ +[{"mongo_id":"612fabe58b7a9ee012cf797b","id":0,"recordType":"CONCESSIONE","version":"1.0.0","licenzaID":"CC-BY","policy":"OPEN","nome":"Concessione : publish test","folderId":"5c312758-0233-461f-9b9c-2bf89402f488","lastUpdateTime":"2021-09-01T18:35:49.003","lastUpdateUser":null,"creationTime":"2021-09-01T18:35:49.003","creationUser":null,"report":{"objectName":"Publish report","errorMessages":[],"warningMessages":[],"children":[],"status":"PASSED"},"introduzione":"This is my MONGO project","descrizioneContenuto":"It contains this and that","authors":["Some one","Some, oneelse"],"contributore":"Contrib 1","titolari":["Some one","Some, oneelse"],"responsabile":"Someone","editore":"Editore","fontiFinanziamento":["Big pharma","Pentagon"],"soggetto":["Research Excavation","Archeology"],"risorseCorrelate":null,"dataInizioProgetto":"2021-09-01T18:35:43.733","dataFineProgetto":"2021-09-01T18:35:43.733","titolareLicenza":["Qualcun altro"],"titolareCopyright":["Chiedilo in giro"],"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"centroidLat":43.0,"centroidLong":9.0,"relazioneScavo":{"mongo_id":"612fabf68b7a9ee012cf7980","id":0,"policy":"OPEN","licenseID":"CC-BY","titolo":"Concessione : publish test relazione di scavo","creationTime":"2021-09-01T18:35:49.003","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/pdf","storageID":"60cf254f-bded-4a81-ad4e-4c5f21fdc007","link":"https://data.dev.d4science.org/shub/E_OEVWcE1VUE9SMmlJV0tqaWd2SWx5UkFNRFRqdkRKZEJFNFVGb1B4WDlBQ0Y3WGptL1J3Z1pXU3VWb0dnbEdTUw=="}],"abstractIta":"simple abstract section","abstractEng":null,"responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]},"immaginiRappresentative":[{"mongo_id":"612fac548b7a9ee012cf7995","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"My image number 0","creationTime":"2021-09-01T18:35:43.733","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"image/png","storageID":"18acfb57-6b59-4695-82c7-90d355e5153d","link":"https://data.dev.d4science.org/shub/E_aEN5a2FjaXMwWmhPRjdPUjhtR2NiOHhEb0ZLMDlvS2M3YytiQklxQ3AyWVpwOTBBTmhVK0hzZGNHUHpuV2ttRQ=="}],"didascalia":"You can see my image number 0","format":"TIFF","responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]},{"mongo_id":"612fac648b7a9ee012cf799a","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"My image number 1","creationTime":"2021-09-01T18:35:43.733","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"image/png","storageID":"ad6b709f-752b-431c-88f9-9e21d8febc56","link":"https://data.dev.d4science.org/shub/E_TkdpUXFKcWpybFFIWW5KUkl4dW5ZcklNdlE4WiszZ3d1enRweGYzaGk2UVF5WG5TcW1RQ2VORUswenFqMGpWUw=="}],"didascalia":"You can see my image number 1","format":"TIFF","responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]}],"posizionamentoScavo":{"mongo_id":"612fac198b7a9ee012cf7988","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"Concessione : publish test posizionamento scavo","creationTime":"2021-09-01T18:35:49.003","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"4a420c43-0a5f-49cc-a5da-671446fffff9","link":"https://data.dev.d4science.org/shub/E_OFNvWkFsVTNHVTFCZlZCbXFMekxqcnEwWkVYcG9QdDMyNUZIcVdBS3pSUHBMdFBnWjVlYndjMlVSZFRpd0pUWg=="},{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"07d2b7bb-fd7f-4517-aae9-fd4936e38911","link":"https://data.dev.d4science.org/shub/E_TlhEZUNKOTVIVEQ5aXl2SUg0elRuRnRsdlhpdjdUdU9jQkJhbWEreEhibjYrYldDd0REeWh1SWlYbklFajZkag=="},{"type":"GeoServerContent","id":0,"geoserverHostName":"geoserver-218.dev.d4science.org","geoserverPath":"/srv/geoserver_data/GNA/612fabe58b7a9ee012cf797b/612fac198b7a9ee012cf7988/pos","fileNames":["pos.shp","pos.shx"],"workspace":"gna_conc_612fabe58b7a9ee012cf797b","store":"pos_store","featureType":"pos"}],"layerUUID":null,"layerID":null,"layerName":"pos","wmsLink":"https://geoserver-218.dev.d4science.org/geoserver/gna_conc_612fabe58b7a9ee012cf797b/wms?service=WMS&version=1.1.0&request=GetMap&layers=gna_conc_612fabe58b7a9ee012cf797b:pos&styles=&bbox=8.620919,40.629750,8.621179,40.630258&srs=EPSG:4326&format=application/openlayers&width=400&height=400","workspace":"gna_conc_612fabe58b7a9ee012cf797b","abstractSection":"Posizionamento topografico georeferenziato dell’area interessata dalle indagini","topicCategory":"Society","subTopic":"Archeology","bbox":{"maxLat":40.630257904721645,"maxLong":8.621178639172953,"minLat":40.62975046683799,"minLong":8.62091913167495},"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"valutazioneQualita":"Secondo me si","metodoRaccoltaDati":"Fattobbene","scalaAcquisizione":"1:10000","authors":["Some one","Some, oneelse"],"responsabile":"Someone"},"pianteFineScavo":[{"mongo_id":"612fac3e8b7a9ee012cf7990","id":0,"policy":"RESTRICTED","licenseID":"CC-BY-4.0","titolo":"Concessione : publish test pianta fine scavo","creationTime":"2021-09-01T18:35:49.003","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"cd64f679-308c-44ae-90f7-fc3d0963422d","link":"https://data.dev.d4science.org/shub/E_Q2FhV3pTTnZuTnIwQzRRdUVSUmtTTGlwTVpRQ3hHanNmQnJvMHA0aHhxaHdPd1V4L0pqUnJpeXN4NGZHUS9NMA=="},{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"5a6c5577-6b83-4c90-acc2-9ae81ce0ffc6","link":"https://data.dev.d4science.org/shub/E_TXQzcXdDb3RlcGp0VlpYK3hTeHdUdGxiNWlveE5KYy9kVy90ajMrUG9nYTRmejFwREtPU0xqZC9Gbncrclcxbg=="},{"type":"GeoServerContent","id":0,"geoserverHostName":"geoserver-218.dev.d4science.org","geoserverPath":"/srv/geoserver_data/GNA/612fabe58b7a9ee012cf797b/612fac3e8b7a9ee012cf7990/pianta","fileNames":["pianta.shp","pianta.shx"],"workspace":"gna_conc_612fabe58b7a9ee012cf797b","store":"pianta_store","featureType":"pianta"}],"layerUUID":null,"layerID":null,"layerName":"pianta","wmsLink":"https://geoserver-218.dev.d4science.org/geoserver/gna_conc_612fabe58b7a9ee012cf797b/wms?service=WMS&version=1.1.0&request=GetMap&layers=gna_conc_612fabe58b7a9ee012cf797b:pianta&styles=&bbox=647502.891667,4470387.347517,647527.486073,4470417.525434&srs=EPSG:4326&format=application/openlayers&width=400&height=400","workspace":"gna_conc_612fabe58b7a9ee012cf797b","abstractSection":"Planimetria georeferenziata dell'area indagata al termine delle attività","topicCategory":"Society","subTopic":"Archeology","bbox":{"maxLat":4470417.525433567,"maxLong":647527.4860734959,"minLat":4470387.347516773,"minLong":647502.8916670183},"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"valutazioneQualita":"Secondo me si","metodoRaccoltaDati":"Fattobbene","scalaAcquisizione":"1:10000","authors":["Some one","Some, oneelse"],"responsabile":"Someone"}],"genericContent":[]},{"mongo_id":"612fac7d8b7a9ee012cf799d","id":0,"recordType":"CONCESSIONE","version":"1.0.0","licenzaID":"CC-BY","policy":"OPEN","nome":"Concessione : publish test","folderId":"2e797746-bd79-4dca-9e34-db32b2fc981f","lastUpdateTime":"2021-09-01T18:38:21.679","lastUpdateUser":null,"creationTime":"2021-09-01T18:38:21.679","creationUser":null,"report":{"objectName":"Publish report","errorMessages":[],"warningMessages":[],"children":[],"status":"PASSED"},"introduzione":"This is my MONGO project","descrizioneContenuto":"It contains this and that","authors":["Some one","Some, oneelse"],"contributore":"Contrib 1","titolari":["Some one","Some, oneelse"],"responsabile":"Someone","editore":"Editore","fontiFinanziamento":["Big pharma","Pentagon"],"soggetto":["Research Excavation","Archeology"],"risorseCorrelate":null,"dataInizioProgetto":"2021-09-01T18:38:20.695","dataFineProgetto":"2021-09-01T18:38:20.695","titolareLicenza":["Qualcun altro"],"titolareCopyright":["Chiedilo in giro"],"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"centroidLat":43.0,"centroidLong":9.0,"relazioneScavo":{"mongo_id":"612fac8e8b7a9ee012cf79a2","id":0,"policy":"OPEN","licenseID":"CC-BY","titolo":"Concessione : publish test relazione di scavo","creationTime":"2021-09-01T18:38:21.679","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/pdf","storageID":"7222cf6a-0e9e-40ec-99db-d108fe9842c5","link":"https://data.dev.d4science.org/shub/E_cnVaTWdPM2NscW9Ka1RUd0toMDRVbGRRK2hhSGhPWnIxYlk4L0tCS1FqNkZpb01vRHcwTVEyLzNZZUR0MGN4RQ=="}],"abstractIta":"simple abstract section","abstractEng":null,"responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]},"immaginiRappresentative":[{"mongo_id":"612face28b7a9ee012cf79b7","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"My image number 0","creationTime":"2021-09-01T18:38:20.695","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"image/png","storageID":"eb5a69f2-dc04-4d19-a2f5-0885a754c449","link":"https://data.dev.d4science.org/shub/E_VDlXY2Y1STBuWTc3SXREMis2OHZIMnF5NDdUYmkzWVJTT2JxS05HYi8rbnB1bUFhZFF4T0p5ZStNZGxyR2Rmdg=="}],"didascalia":"You can see my image number 0","format":"TIFF","responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]},{"mongo_id":"612facf28b7a9ee012cf79bc","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"My image number 1","creationTime":"2021-09-01T18:38:20.695","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"image/png","storageID":"d8c1da0b-4575-4457-9bc4-0a7c2c93fdf6","link":"https://data.dev.d4science.org/shub/E_cG9lTXl4a3dTRnp4azRWZG1rNHh1Q1dIYUQ4MjljaDZRUUEyVUdoN3czSWdJWUZlNTVFUzFRaXJhOEsxaTB2aw=="}],"didascalia":"You can see my image number 1","format":"TIFF","responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]}],"posizionamentoScavo":{"mongo_id":"612facae8b7a9ee012cf79aa","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"Concessione : publish test posizionamento scavo","creationTime":"2021-09-01T18:38:21.679","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"7152d15f-7e60-4095-bef8-5936981f9f67","link":"https://data.dev.d4science.org/shub/E_MzV5QllFaGdVZUpuN0ZkejVyT0F5dFc2SnpGaG85c09TaVR0RCtpS2J1SUNBZVFhS2RpZnFnakp3VkJHa2hEOQ=="},{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"043b47d3-7aa9-400d-b4dc-dc103fc78117","link":"https://data.dev.d4science.org/shub/E_QWVQNEhFUFZLbDJubVptaWVsZWRxUlc5cStLdC9UaGI4c3puQkdlWFpHTUVXcFVjR3UzSS9ieHQ1dGJrYnp5VQ=="},{"type":"GeoServerContent","id":0,"geoserverHostName":"geoserver-218.dev.d4science.org","geoserverPath":"/srv/geoserver_data/GNA/612fac7d8b7a9ee012cf799d/612facae8b7a9ee012cf79aa/pos","fileNames":["pos.shp","pos.shx"],"workspace":"gna_conc_612fac7d8b7a9ee012cf799d","store":"pos_store","featureType":"pos"}],"layerUUID":null,"layerID":null,"layerName":"pos","wmsLink":"https://geoserver-218.dev.d4science.org/geoserver/gna_conc_612fac7d8b7a9ee012cf799d/wms?service=WMS&version=1.1.0&request=GetMap&layers=gna_conc_612fac7d8b7a9ee012cf799d:pos&styles=&bbox=8.620919,40.629750,8.621179,40.630258&srs=EPSG:4326&format=application/openlayers&width=400&height=400","workspace":"gna_conc_612fac7d8b7a9ee012cf799d","abstractSection":"Posizionamento topografico georeferenziato dell’area interessata dalle indagini","topicCategory":"Society","subTopic":"Archeology","bbox":{"maxLat":40.630257904721645,"maxLong":8.621178639172953,"minLat":40.62975046683799,"minLong":8.62091913167495},"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"valutazioneQualita":"Secondo me si","metodoRaccoltaDati":"Fattobbene","scalaAcquisizione":"1:10000","authors":["Some one","Some, oneelse"],"responsabile":"Someone"},"pianteFineScavo":[{"mongo_id":"612facd38b7a9ee012cf79b2","id":0,"policy":"RESTRICTED","licenseID":"CC-BY-4.0","titolo":"Concessione : publish test pianta fine scavo","creationTime":"2021-09-01T18:38:21.679","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"2b01a062-e801-4f28-9fbc-0f6f783ecfdc","link":"https://data.dev.d4science.org/shub/E_eXRPd3ZiY0VhVWRTMkRrTnB3Y0d1WlN1Y3NRb2M4azMzMmViVUFnUkpDTFphdGZ5RmhYTXZUUXZLbXpjK2hFVg=="},{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"74e48df4-a266-4e66-a687-0659c2f6cddc","link":"https://data.dev.d4science.org/shub/E_Mml5V0tobXU1RjlRNU1rWGNJa2o5SThKeWJwSWQ5TGN2QVJEUnJ2RkNreWR2aFkrdzJrdEdYL0kwNitDSE8ySg=="},{"type":"GeoServerContent","id":0,"geoserverHostName":"geoserver-218.dev.d4science.org","geoserverPath":"/srv/geoserver_data/GNA/612fac7d8b7a9ee012cf799d/612facd38b7a9ee012cf79b2/pianta","fileNames":["pianta.shp","pianta.shx"],"workspace":"gna_conc_612fac7d8b7a9ee012cf799d","store":"pianta_store","featureType":"pianta"}],"layerUUID":null,"layerID":null,"layerName":"pianta","wmsLink":"https://geoserver-218.dev.d4science.org/geoserver/gna_conc_612fac7d8b7a9ee012cf799d/wms?service=WMS&version=1.1.0&request=GetMap&layers=gna_conc_612fac7d8b7a9ee012cf799d:pianta&styles=&bbox=647502.891667,4470387.347517,647527.486073,4470417.525434&srs=EPSG:4326&format=application/openlayers&width=400&height=400","workspace":"gna_conc_612fac7d8b7a9ee012cf799d","abstractSection":"Planimetria georeferenziata dell'area indagata al termine delle attività","topicCategory":"Society","subTopic":"Archeology","bbox":{"maxLat":4470417.525433567,"maxLong":647527.4860734959,"minLat":4470387.347516773,"minLong":647502.8916670183},"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"valutazioneQualita":"Secondo me si","metodoRaccoltaDati":"Fattobbene","scalaAcquisizione":"1:10000","authors":["Some one","Some, oneelse"],"responsabile":"Someone"}],"genericContent":[]},{"mongo_id":"6130a2808b7a9eef830a4401","id":0,"recordType":"CONCESSIONE","version":"1.0.0","licenzaID":"CC-BY","policy":"OPEN","nome":"Concessione : publish test","folderId":"36d9744b-739b-4560-9eeb-7e9ff3c64753","lastUpdateTime":"2021-09-02T12:08:00.057","lastUpdateUser":null,"creationTime":"2021-09-02T12:08:00.057","creationUser":null,"report":{"objectName":"Publish report","errorMessages":[],"warningMessages":[],"children":[],"status":"PASSED"},"introduzione":"This is my MONGO project","descrizioneContenuto":"It contains this and that","authors":["Some one","Some, oneelse"],"contributore":"Contrib 1","titolari":["Some one","Some, oneelse"],"responsabile":"Someone","editore":"Editore","fontiFinanziamento":["Big pharma","Pentagon"],"soggetto":["Research Excavation","Archeology"],"risorseCorrelate":null,"dataInizioProgetto":"2021-09-02T12:07:59.643","dataFineProgetto":"2021-09-02T12:07:59.643","titolareLicenza":["Qualcun altro"],"titolareCopyright":["Chiedilo in giro"],"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"centroidLat":43.0,"centroidLong":9.0,"relazioneScavo":{"mongo_id":"6130a2908b7a9eef830a4406","id":0,"policy":"OPEN","licenseID":"CC-BY","titolo":"Concessione : publish test relazione di scavo","creationTime":"2021-09-02T12:08:00.057","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/pdf","storageID":"da28aaa3-1ff2-4ca1-845b-d818c764cf3e","link":"https://data.dev.d4science.org/shub/E_bXdDOWJjaEExNzJlQ2wxaG9PNjRoSlU5eTBYdTUvTE1QRjRETnRBSDJXbzMyZXpXQkhqMVNyYXZiSWlCWXdwcg=="}],"abstractIta":"simple abstract section","abstractEng":null,"responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]},"immaginiRappresentative":[{"mongo_id":"6130a2e48b7a9eef830a441b","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"My image number 0","creationTime":"2021-09-02T12:07:59.644","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"image/png","storageID":"f5c859e1-0cfb-482a-ba63-b8e38d24c3eb","link":"https://data.dev.d4science.org/shub/E_UUxNU3NXS1BDUXBWblFEYW4rSzQxd3p6ci80SW5YdksvbGdoQmxwYTVDcUhZZllGcjlNeU1rMzVYd3FZcEFDcw=="}],"didascalia":"You can see my image number 0","format":"TIFF","responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]},{"mongo_id":"6130a2f98b7a9eef830a4420","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"My image number 1","creationTime":"2021-09-02T12:07:59.644","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"image/png","storageID":"0ee98859-7a38-4f39-8955-20fe1f2665a1","link":"https://data.dev.d4science.org/shub/E_aXdBNUlSemY2dzFWL2NyVWp6OTBZMTRlRVVNNE5vSUpIckhIVXlESGJySUVPR2owUjV0TlI0S241VGZab0RVeQ=="}],"didascalia":"You can see my image number 1","format":"TIFF","responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]}],"posizionamentoScavo":{"mongo_id":"6130a2b18b7a9eef830a440e","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"Concessione : publish test posizionamento scavo","creationTime":"2021-09-02T12:08:00.057","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"b4a99b19-ec8f-4660-8c32-e58b2789f323","link":"https://data.dev.d4science.org/shub/E_R05ENnJ2Vnd1SnJ3WDBiRHBqOVZQQUNqbGNxb2lHMzF2ZXN5b0U0UFBNQUVIMFJmRlgzdTVtQlVjZ1R0Q0o1MA=="},{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"240d2794-2005-463d-92e7-ac98d14de136","link":"https://data.dev.d4science.org/shub/E_RnBNRDNaT1NnRmRIY25QUlN4b3VhaVBOdTY3c3UvNkFIejhnT0R1ZE9ZRWJxUTRxcGg5Q2huN3c3azUxV2NwaQ=="},{"type":"GeoServerContent","id":0,"geoserverHostName":"geoserver-218.dev.d4science.org","geoserverPath":"/srv/geoserver_data/GNA/6130a2808b7a9eef830a4401/6130a2b18b7a9eef830a440e/pos","fileNames":["pos.shp","pos.shx"],"workspace":"gna_conc_6130a2808b7a9eef830a4401","store":"pos_store","featureType":"pos"}],"layerUUID":null,"layerID":null,"layerName":"pos","wmsLink":"https://geoserver-218.dev.d4science.org/geoserver/gna_conc_6130a2808b7a9eef830a4401/wms?service=WMS&version=1.1.0&request=GetMap&layers=gna_conc_6130a2808b7a9eef830a4401:pos&styles=&bbox=8.620919,40.629750,8.621179,40.630258&srs=EPSG:4326&format=application/openlayers&width=400&height=400","workspace":"gna_conc_6130a2808b7a9eef830a4401","abstractSection":"Posizionamento topografico georeferenziato dell’area interessata dalle indagini","topicCategory":"Society","subTopic":"Archeology","bbox":{"maxLat":40.630257904721645,"maxLong":8.621178639172953,"minLat":40.62975046683799,"minLong":8.62091913167495},"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"valutazioneQualita":"Secondo me si","metodoRaccoltaDati":"Fattobbene","scalaAcquisizione":"1:10000","authors":["Some one","Some, oneelse"],"responsabile":"Someone"},"pianteFineScavo":[{"mongo_id":"6130a2d48b7a9eef830a4416","id":0,"policy":"RESTRICTED","licenseID":"CC-BY-4.0","titolo":"Concessione : publish test pianta fine scavo","creationTime":"2021-09-02T12:08:00.057","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"715e3380-4d13-453c-adef-66ba17e019be","link":"https://data.dev.d4science.org/shub/E_ZjQ0N2UvZmFHMFQ2VzkxMjUrcDNBNEdtVDRVdG9abnhFR0YrYmR0WWlBbzkrM2V2QWs5MnR0QjNDSFRnUUFQNg=="},{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"88532c9e-7e24-4424-b8f7-ca0f79e7683d","link":"https://data.dev.d4science.org/shub/E_dGUxWmw3d1dNaURxSnRaYzZqWkJMS255ZkdYb1FnbjVXc0srT1pyUkRWOWdob1c5MlJzTjMrMFI3aDBmaDVjNA=="},{"type":"GeoServerContent","id":0,"geoserverHostName":"geoserver-218.dev.d4science.org","geoserverPath":"/srv/geoserver_data/GNA/6130a2808b7a9eef830a4401/6130a2d48b7a9eef830a4416/pianta","fileNames":["pianta.shp","pianta.shx"],"workspace":"gna_conc_6130a2808b7a9eef830a4401","store":"pianta_store","featureType":"pianta"}],"layerUUID":null,"layerID":null,"layerName":"pianta","wmsLink":"https://geoserver-218.dev.d4science.org/geoserver/gna_conc_6130a2808b7a9eef830a4401/wms?service=WMS&version=1.1.0&request=GetMap&layers=gna_conc_6130a2808b7a9eef830a4401:pianta&styles=&bbox=647502.891667,4470387.347517,647527.486073,4470417.525434&srs=EPSG:4326&format=application/openlayers&width=400&height=400","workspace":"gna_conc_6130a2808b7a9eef830a4401","abstractSection":"Planimetria georeferenziata dell'area indagata al termine delle attività","topicCategory":"Society","subTopic":"Archeology","bbox":{"maxLat":4470417.525433567,"maxLong":647527.4860734959,"minLat":4470387.347516773,"minLong":647502.8916670183},"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"valutazioneQualita":"Secondo me si","metodoRaccoltaDati":"Fattobbene","scalaAcquisizione":"1:10000","authors":["Some one","Some, oneelse"],"responsabile":"Someone"}],"genericContent":[]},{"mongo_id":"6130a3198b7a9eef830a4423","id":0,"recordType":"CONCESSIONE","version":"1.0.0","licenzaID":"CC-BY","policy":"OPEN","nome":"Concessione : publish test","folderId":"19286a89-b678-40fd-98f0-93f266a543cb","lastUpdateTime":"2021-09-02T12:10:33.629","lastUpdateUser":null,"creationTime":"2021-09-02T12:10:33.629","creationUser":null,"report":{"objectName":"Publish report","errorMessages":[],"warningMessages":[],"children":[],"status":"PASSED"},"introduzione":"This is my MONGO project","descrizioneContenuto":"It contains this and that","authors":["Some one","Some, oneelse"],"contributore":"Contrib 1","titolari":["Some one","Some, oneelse"],"responsabile":"Someone","editore":"Editore","fontiFinanziamento":["Big pharma","Pentagon"],"soggetto":["Research Excavation","Archeology"],"risorseCorrelate":null,"dataInizioProgetto":"2021-09-02T12:10:28.119","dataFineProgetto":"2021-09-02T12:10:28.119","titolareLicenza":["Qualcun altro"],"titolareCopyright":["Chiedilo in giro"],"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"centroidLat":43.0,"centroidLong":9.0,"relazioneScavo":{"mongo_id":"6130a32f8b7a9eef830a4428","id":0,"policy":"OPEN","licenseID":"CC-BY","titolo":"Concessione : publish test relazione di scavo","creationTime":"2021-09-02T12:10:33.629","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/pdf","storageID":"0af0d4af-1134-4b3c-bf18-bdf4d37b0366","link":"https://data.dev.d4science.org/shub/E_UWVHenRLelp2SWJtRFFoSU1PaHZPRHFZaExMM0kyQWtJYXZWaXR5NDIxdHIyWWFNb3dOaG04R0cwaGFJL3lOVA=="}],"abstractIta":"simple abstract section","abstractEng":null,"responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]},"immaginiRappresentative":[{"mongo_id":"6130a37f8b7a9eef830a443d","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"My image number 0","creationTime":"2021-09-02T12:10:28.119","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"image/png","storageID":"7c544d13-e226-4202-9c06-a850755ca625","link":"https://data.dev.d4science.org/shub/E_VXBBWU9RN2Vpc0NHVGxaenhrRVQzcFRkYnlScFFKY1RiekhQRTVraE92dHU1RVpTTlc4bHFxREVvaGppS1RHeg=="}],"didascalia":"You can see my image number 0","format":"TIFF","responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]},{"mongo_id":"6130a3948b7a9eef830a4442","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"My image number 1","creationTime":"2021-09-02T12:10:28.119","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"image/png","storageID":"8c4b30af-7dcd-4cfd-85d2-8560316715d9","link":"https://data.dev.d4science.org/shub/E_YkFIdERidys5aDBRbkJmMGpmWVdCM0FVdEo2WGNXS010aTE3bklodGFMTmJucDhwckU3L0g3Um5VTEh5NS9qQg=="}],"didascalia":"You can see my image number 1","format":"TIFF","responsabili":["Some one","Some, oneelse"],"soggetto":["Research Excavation","Archeology"]}],"posizionamentoScavo":{"mongo_id":"6130a34c8b7a9eef830a4430","id":0,"policy":"OPEN","licenseID":"CC-BY-4.0","titolo":"Concessione : publish test posizionamento scavo","creationTime":"2021-09-02T12:10:33.629","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"a1da6f0e-3670-43bf-84d9-1a61dac8f912","link":"https://data.dev.d4science.org/shub/E_Skw5MXJTVkZnS2ZRNWdQUWxQR2VLWVNqNUg0L3QzeitFdWdlOFdtazlkZ1ZOR0ZqcW5WYmJtSkpsN2Z3M2x1dw=="},{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"64c4733d-3a94-48b6-aa04-5115573b9d9e","link":"https://data.dev.d4science.org/shub/E_ZTdzTG4zRUlpbFRMSFlIR1lNdUExcVVzaWQ4VmkzbkxoempINnk3MzZtcE9lZlhKVGErcC9PMDVGWU1vK003cg=="},{"type":"GeoServerContent","id":0,"geoserverHostName":"geoserver-218.dev.d4science.org","geoserverPath":"/srv/geoserver_data/GNA/6130a3198b7a9eef830a4423/6130a34c8b7a9eef830a4430/pos","fileNames":["pos.shp","pos.shx"],"workspace":"gna_conc_6130a3198b7a9eef830a4423","store":"pos_store","featureType":"pos"}],"layerUUID":null,"layerID":null,"layerName":"pos","wmsLink":"https://geoserver-218.dev.d4science.org/geoserver/gna_conc_6130a3198b7a9eef830a4423/wms?service=WMS&version=1.1.0&request=GetMap&layers=gna_conc_6130a3198b7a9eef830a4423:pos&styles=&bbox=8.620919,40.629750,8.621179,40.630258&srs=EPSG:4326&format=application/openlayers&width=400&height=400","workspace":"gna_conc_6130a3198b7a9eef830a4423","abstractSection":"Posizionamento topografico georeferenziato dell’area interessata dalle indagini","topicCategory":"Society","subTopic":"Archeology","bbox":{"maxLat":40.630257904721645,"maxLong":8.621178639172953,"minLat":40.62975046683799,"minLong":8.62091913167495},"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"valutazioneQualita":"Secondo me si","metodoRaccoltaDati":"Fattobbene","scalaAcquisizione":"1:10000","authors":["Some one","Some, oneelse"],"responsabile":"Someone"},"pianteFineScavo":[{"mongo_id":"6130a3708b7a9eef830a4438","id":0,"policy":"RESTRICTED","licenseID":"CC-BY-4.0","titolo":"Concessione : publish test pianta fine scavo","creationTime":"2021-09-02T12:10:33.629","actualContent":[{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"27830c55-d762-4cfc-911b-99b254fba366","link":"https://data.dev.d4science.org/shub/E_U2ZqSExFRno4aEhXdC93cEo2elU2ZjRWVWU2TGRsb3RYMS8rYUNyMDVnUU1ZOSt6UUJxRTF0K0pKeGNjZ3RwZA=="},{"type":"WorkspaceContent","id":0,"mimetype":"application/x-shapefile","storageID":"689cd4a9-535d-4d8a-b473-175f7f772d0e","link":"https://data.dev.d4science.org/shub/E_Y2JTbjFHT3pmZzhzSW9Fa2NCN0RmeVBpU04xY2tWdzA1eUdyQVVNN2l6c1M5M3dManBzY3NVZWRsQ0w5b3VBeA=="},{"type":"GeoServerContent","id":0,"geoserverHostName":"geoserver-218.dev.d4science.org","geoserverPath":"/srv/geoserver_data/GNA/6130a3198b7a9eef830a4423/6130a3708b7a9eef830a4438/pianta","fileNames":["pianta.shp","pianta.shx"],"workspace":"gna_conc_6130a3198b7a9eef830a4423","store":"pianta_store","featureType":"pianta"}],"layerUUID":null,"layerID":null,"layerName":"pianta","wmsLink":"https://geoserver-218.dev.d4science.org/geoserver/gna_conc_6130a3198b7a9eef830a4423/wms?service=WMS&version=1.1.0&request=GetMap&layers=gna_conc_6130a3198b7a9eef830a4423:pianta&styles=&bbox=647502.891667,4470387.347517,647527.486073,4470417.525434&srs=EPSG:4326&format=application/openlayers&width=400&height=400","workspace":"gna_conc_6130a3198b7a9eef830a4423","abstractSection":"Planimetria georeferenziata dell'area indagata al termine delle attività","topicCategory":"Society","subTopic":"Archeology","bbox":{"maxLat":4470417.525433567,"maxLong":647527.4860734959,"minLat":4470387.347516773,"minLong":647502.8916670183},"paroleChiaveLibere":["Robba","Stuff"],"paroleChiaveICCD":["vattelapesca","somthing something"],"valutazioneQualita":"Secondo me si","metodoRaccoltaDati":"Fattobbene","scalaAcquisizione":"1:10000","authors":["Some one","Some, oneelse"],"responsabile":"Someone"}],"genericContent":[]}] diff --git a/src/test/resources/concessioni/filters/all.json b/src/test/resources/concessioni/filters/all.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/src/test/resources/concessioni/filters/all.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/test/resources/concessioni/filters/legacyid.json b/src/test/resources/concessioni/filters/legacyid.json new file mode 100644 index 0000000..610e687 --- /dev/null +++ b/src/test/resources/concessioni/filters/legacyid.json @@ -0,0 +1,3 @@ +{ + "id" : {$gt : 0} +} \ No newline at end of file diff --git a/src/test/resources/concessioni/filters/missingCentroid.json b/src/test/resources/concessioni/filters/missingCentroid.json new file mode 100644 index 0000000..ab28660 --- /dev/null +++ b/src/test/resources/concessioni/filters/missingCentroid.json @@ -0,0 +1,4 @@ +{ + "centroidLat" : 0 + +} \ No newline at end of file diff --git a/src/test/resources/concessioni/filters/nonFabio.json b/src/test/resources/concessioni/filters/nonFabio.json new file mode 100644 index 0000000..b40d2fe --- /dev/null +++ b/src/test/resources/concessioni/filters/nonFabio.json @@ -0,0 +1,3 @@ +{ + "creationUser" : {$ne : "fabio.sinibaldi"} +} \ No newline at end of file diff --git a/src/test/resources/concessioni/filters/validated.json b/src/test/resources/concessioni/filters/validated.json new file mode 100644 index 0000000..f05a79f --- /dev/null +++ b/src/test/resources/concessioni/filters/validated.json @@ -0,0 +1,3 @@ +{ + "report.status": {$eq : "PASSED"} +} \ No newline at end of file