TestReports + #21897

master
Fabio Sinibaldi 3 years ago
parent 27a326ea33
commit f34d3bff2d

@ -4,7 +4,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
## [v1.0.4-SNAPSHOT] - 2020-11-11
Serialization utils
Queries & Filters support
Test Reports
UseCases
Fixes #21897
## [v1.0.3] - 2020-11-11
Stateful Concessioni Manager client over mongo

@ -76,11 +76,8 @@
<artifactId>common-generic-clients</artifactId>
</dependency>
<!-- REMOVE FROM GCUBE 5 -->
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-gcube-calls</artifactId>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
@ -122,6 +119,20 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>3.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.cliftonlabs</groupId>
<artifactId>json-simple</artifactId>
<version>3.1.0</version>
<scope>test</scope>
</dependency>
</dependencies>

@ -1,17 +1,9 @@
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 javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.gcube.application.geoportal.client.utils.Serialization;
import org.gcube.application.geoportal.common.model.legacy.Concessione;
import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest;
@ -22,11 +14,14 @@ import org.gcube.application.geoportal.common.rest.MongoConcessioni;
import org.gcube.common.clients.Call;
import org.gcube.common.clients.delegates.ProxyDelegate;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;
import java.io.InputStream;
import java.rmi.RemoteException;
import java.util.Iterator;
@RequiredArgsConstructor
@Slf4j
@ -35,18 +30,15 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
@NonNull
private final ProxyDelegate<WebTarget> delegate;
private ObjectMapper mapper=Serialization.mapper;
private final ObjectMapper mapper=Serialization.mapper;
@Override
public Concessione createNew(Concessione c) throws Exception {
log.debug("Serializing {} ",c);
final String serialized=mapper.writeValueAsString(c);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.request(MediaType.APPLICATION_JSON).post(Entity.entity(serialized, MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
Call<WebTarget,Concessione> call= endpoint -> {
Response resp= endpoint.request(MediaType.APPLICATION_JSON).post(Entity.entity(serialized, MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
};
Concessione toReturn = delegate.make(call);
log.info("Registered {}",toReturn);
@ -61,25 +53,19 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
@Override
public void deleteById(String id,Boolean force) throws Exception {
log.debug("Deleting by id {}",id);
delegate.make(new Call<WebTarget,String>(){
@Override
public String call(WebTarget endpoint) throws Exception {
check(endpoint.path(id).queryParam(InterfaceConstants.Parameters.FORCE,force).request(MediaType.APPLICATION_JSON).delete(),null);
log.info("Deleted by id {}",id);
return null;
}
delegate.make((Call<WebTarget, String>) endpoint -> {
check(endpoint.path(id).queryParam(InterfaceConstants.Parameters.FORCE,force).request(MediaType.APPLICATION_JSON).delete(),null);
log.info("Deleted by id {}",id);
return null;
});
}
@Override
public Concessione getById(String id) throws Exception {
log.debug("Loading by id {}",id);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.path(id).request(MediaType.APPLICATION_JSON).get();
return check(resp,Concessione.class);
}
Call<WebTarget,Concessione> call= endpoint -> {
Response resp= endpoint.path(id).request(MediaType.APPLICATION_JSON).get();
return check(resp,Concessione.class);
};
Concessione toReturn = delegate.make(call);
log.debug("Loaded {}",toReturn);
@ -89,30 +75,18 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
@Override
public Iterator<Concessione> getList() throws Exception {
log.debug("Getting list");
Call<WebTarget,Iterator<Concessione>> call=new Call<WebTarget,Iterator<Concessione>>(){
@Override
public Iterator<Concessione> call(WebTarget endpoint) throws Exception {
Iterable<Concessione> toReturn=new ArrayList<Concessione>();
MappingIterator<Concessione> iterator=mapper.readerFor(Concessione.class).readValues(
endpoint.request(MediaType.APPLICATION_JSON).get(InputStream.class));
return iterator;
}
};
Call<WebTarget,Iterator<Concessione>> call= endpoint -> mapper.readerFor(Concessione.class).readValues(
endpoint.request(MediaType.APPLICATION_JSON).get(InputStream.class));
return delegate.make(call);
}
@Override
public Concessione publish(String id) throws Exception {
log.info("Publishing {} ",id);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.path(InterfaceConstants.Methods.PUBLISH_PATH).
path(id).request(MediaType.APPLICATION_JSON).put(Entity.entity(id, MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
Call<WebTarget,Concessione> call= endpoint -> {
Response resp= endpoint.path(InterfaceConstants.Methods.PUBLISH_PATH).
path(id).request(MediaType.APPLICATION_JSON).put(Entity.entity(id, MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
};
Concessione toReturn = delegate.make(call);
log.debug("Published {} ",toReturn);
@ -120,17 +94,14 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
}
@Override
public void unpublish(String id) throws Exception {
public void unPublish(String id) throws Exception {
log.info("Publishing {} ",id);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@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;
}
Call<WebTarget,Concessione> call= endpoint -> {
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);
@ -138,25 +109,17 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
@Override
public Configuration getCurrentConfiguration() throws Exception {
return delegate.make(new Call<WebTarget, Configuration>() {
@Override
public Configuration call(WebTarget webTarget) throws Exception {
return check(webTarget.path(InterfaceConstants.Methods.CONFIGURATION_PATH).
request(MediaType.APPLICATION_JSON).get(),Configuration.class);
}
});
return delegate.make(webTarget -> check(webTarget.path(InterfaceConstants.Methods.CONFIGURATION_PATH).
request(MediaType.APPLICATION_JSON).get(),Configuration.class));
}
@Override
public Iterator<Concessione> search(String s) throws Exception {
log.debug("Searching for {}",s);
Call<WebTarget,Iterator<Concessione>> call=new Call<WebTarget,Iterator<Concessione>>(){
@Override
public Iterator<Concessione> 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);
}
Call<WebTarget,Iterator<Concessione>> call= endpoint -> {
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);
}
@ -164,29 +127,21 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
@Override
public Iterator<Concessione> query(QueryRequest queryRequest) throws Exception {
log.debug("Querying for {}",queryRequest);
// Call<WebTarget,Iterator<Concessione>> call=new Call<WebTarget,Iterator<Concessione>>(){
// @Override
// public Iterator<Concessione> 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);
}
return queryforType(queryRequest,Concessione.class);
@Override
public String queryForJSON(QueryRequest queryRequest) throws Exception {
return null;
}
@Override
public <T> Iterator<T> queryforType(QueryRequest queryRequest, Class<T> aClass) throws Exception {
public <T> Iterator<T> queryForType(QueryRequest queryRequest, Class<T> aClass) throws Exception {
log.debug("Querying for {}",queryRequest);
Call<WebTarget, Iterator<T>> call=new Call<WebTarget, Iterator<T>>(){
@Override
public Iterator<T> 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);
}
Call<WebTarget, Iterator<T>> call= endpoint -> {
Response resp =endpoint.path(InterfaceConstants.Methods.QUERY_PATH).request(MediaType.APPLICATION_JSON).
post(Entity.entity(queryRequest,MediaType.APPLICATION_JSON));
return checkCollection(resp,aClass);
};
return delegate.make(call);
}
@ -195,14 +150,11 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
@Override
public Concessione registerFileSet(String id, AddSectionToConcessioneRequest request) throws Exception {
log.info("Registering {} in {}",request,id);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.path(InterfaceConstants.Methods.REGISTER_FILES_PATH).
path(id).request(MediaType.APPLICATION_JSON).post(Entity.entity(mapper.writeValueAsString(request),
MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
Call<WebTarget,Concessione> call= endpoint -> {
Response resp= endpoint.path(InterfaceConstants.Methods.REGISTER_FILES_PATH).
path(id).request(MediaType.APPLICATION_JSON).post(Entity.entity(mapper.writeValueAsString(request),
MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
};
Concessione toReturn = delegate.make(call);
log.debug("Registered Fileset {} result is {} ",request,toReturn);
@ -212,14 +164,11 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
@Override
public Concessione cleanFileSet(String id, String path)throws Exception{
log.info("Cleaning Fileset at {} in {}",path,id);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.path(InterfaceConstants.Methods.DELETE_FILES_PATH).
path(id).request(MediaType.APPLICATION_JSON).post(Entity.entity(path,
MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
Call<WebTarget,Concessione> call= endpoint -> {
Response resp= endpoint.path(InterfaceConstants.Methods.DELETE_FILES_PATH).
path(id).request(MediaType.APPLICATION_JSON).post(Entity.entity(path,
MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
};
Concessione toReturn = delegate.make(call);
log.debug("Cleaned path {} result {} ",path,toReturn);
@ -228,29 +177,25 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
@Override
public Concessione update(String id, String jsonUpdate) throws Exception {
// TODO Auto-generated method stub
return null;
throw new Exception("To implement");
}
@Override
public Concessione replace(Concessione replacement) throws Exception {
log.info("Replacing {}",replacement);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.
request(MediaType.APPLICATION_JSON).
put(Entity.entity(mapper.writeValueAsString(replacement),
MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
Call<WebTarget,Concessione> call= endpoint -> {
Response resp= endpoint.
request(MediaType.APPLICATION_JSON).
put(Entity.entity(mapper.writeValueAsString(replacement),
MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
};
Concessione toReturn = delegate.make(call);
log.debug("Reloaded {} ",toReturn);
return toReturn;
}
protected static<T> T check(Response resp, Class<T> clazz) throws IOException {
String resString=resp.readEntity(String.class);
if(resp.getStatus()<200||resp.getStatus()>=300)

@ -14,7 +14,7 @@ public interface ConcessioniManagerI extends MongoConcessioni{
public Concessione addImmagineRappresentativa(UploadedImage toAdd,TempFile f) throws Exception;
public Concessione addPiantaFineScavo(LayerConcessione toAdd,TempFile...files)throws Exception;
public Concessione setPosizionamento(LayerConcessione toSet,TempFile...files)throws Exception;
public Concessione setRelazioneScavo(RelazioneScavo toSet,TempFile f)throws Exception;
public Concessione setRelazioneScavo(RelazioneScavo toSet,TempFile...files)throws Exception;

@ -99,14 +99,14 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
}
@Override
public Concessione setRelazioneScavo(RelazioneScavo toSet, TempFile f) throws Exception {
public Concessione setRelazioneScavo(RelazioneScavo toSet, TempFile... files) throws Exception {
if(currentC==null) throw new Exception("Invalid operation : current Concessione is null.");
currentC.setRelazioneScavo(toSet);
currentC=replace(currentC);
currentC=super.registerFileSet(currentC.getMongo_id(),
FileSets.build(Paths.RELAZIONE,f).getTheRequest());
FileSets.build(Paths.RELAZIONE,files).getTheRequest());
return currentC;
}

@ -6,6 +6,8 @@ import org.gcube.application.geoportal.common.rest.TempFile;
import org.gcube.application.geoportal.common.utils.StorageUtils;
import org.gcube.contentmanagement.blobstorage.transport.backend.RemoteBackendException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collection;
@ -62,4 +64,23 @@ public class FileSets {
toReturn.add(storage.putOntoStorage(desc.getStream(), desc.getFilename()));
return toReturn.toArray(new TempFile[toReturn.size()]);
}
public static AddSectionToConcessioneRequest prepareRequestFromFolder(StorageUtils storage, String path, File directory) throws FileNotFoundException {
File[] children =directory.listFiles();
System.out.println("Found "+children+ " files to push");
InputStreamDescriptor[] iss=new InputStreamDescriptor[children.length];
return prepareRequest(storage,path,children);
}
public static AddSectionToConcessioneRequest prepareRequest(StorageUtils storage, String path, File... toUpload) throws FileNotFoundException {
FileSets.RequestBuilder builder = FileSets.build(path);
for (File f : toUpload) {
if(!f.isDirectory())
builder.add(FileSets.asTemp(storage, new InputStreamDescriptor(new FileInputStream(f), f.getName())));
}
return builder.getTheRequest();
}
}

@ -0,0 +1,42 @@
package org.gcube.application.geoportal.client.utils;
import org.apache.commons.io.IOUtils;
import org.bson.Document;
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
import org.gcube.application.geoportal.common.utils.Files;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
public class Queries {
public static QueryRequest parse(String json) throws IOException {
Document queryDocument=Document.parse(json);
QueryRequest req=new QueryRequest();
if(queryDocument.containsKey("ordering"))
req.setOrdering(Serialization.read(((Document)queryDocument.get("ordering")).toJson(),QueryRequest.OrderedRequest.class));
if(queryDocument.containsKey("paging"))
req.setPaging(Serialization.read(((Document)queryDocument.get("paging")).toJson(),QueryRequest.PagedRequest.class));
req.setProjection(queryDocument.get("projection",Document.class));
req.setFilter(queryDocument.get("filter",Document.class));
return req;
};
public static QueryRequest readPath(String jsonFilePath) throws IOException{
return parse(Files.readFileAsString(jsonFilePath, Charset.defaultCharset()));
}
public static QueryRequest readFile(File jsonFile)throws IOException{
return parse(Files.readFileAsString(jsonFile.getAbsolutePath(), Charset.defaultCharset()));
}
public static QueryRequest read(InputStream is)throws IOException{
return parse(IOUtils.toString(is));
}
}

@ -31,7 +31,7 @@ public class StatefulClientTests extends BasicVreTests{
Concessione toRegister= TestModel.prepareEmptyConcessione();
toRegister.setNome("Mock module");
manager.createNew(toRegister);
UploadedImage toRegisterImg=TestModel.prepareConcessione().getImmaginiRappresentative().get(0);
@ -48,7 +48,8 @@ public class StatefulClientTests extends BasicVreTests{
//Relazione
manager.setRelazioneScavo(TestModel.prepareConcessione().getRelazioneScavo(),
storage.putOntoStorage(new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")), "relazione.pdf"));
storage.putOntoStorage(new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")), "relazione_it.pdf"),
storage.putOntoStorage(new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")), "relazione_en.pdf"));
// Posizionamento scavo
manager.setPosizionamento(TestModel.prepareConcessione().getPosizionamentoScavo(),
@ -67,7 +68,7 @@ public class StatefulClientTests extends BasicVreTests{
@Test
public void testRegisterNew() throws RemoteBackendException, FileNotFoundException, Exception {
Concessione published=publishNew();
// VARIOUS CHECKS
assertNotNull(published.getReport());

@ -12,6 +12,8 @@ import java.util.Iterator;
import java.util.concurrent.atomic.AtomicLong;
import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI;
import org.gcube.application.geoportal.client.utils.Queries;
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.Concessione.Paths;
@ -80,6 +82,12 @@ public class StatelessClientTests extends BasicVreTests{
public Concessione publish(Boolean verify) throws Exception {
return publish(verify,client);
}
public static Concessione publish(Boolean verify,MongoConcessioni client) throws Exception {
Concessione c= client.createNew(TestModel.prepareConcessione());
String mongoId=c.getMongo_id();
@ -136,11 +144,51 @@ public class StatelessClientTests extends BasicVreTests{
}
}
@Test
public void query() throws Exception {
// No Transformation
System.out.print("First Registered \t");
Iterator<Concessione> queriedDocuments=client.query(
Queries.readPath("src/test/resources/concessioni/queries/firstRegistered.json"));
// Expected one result
assertTrue(count(queriedDocuments)==1);
System.out.print("Last Registered \t");
// Expected one result
queriedDocuments=client.query(
Queries.readPath("src/test/resources/concessioni/queries/lastRegistered.json"));
assertTrue(count(queriedDocuments)==1);
queriedDocuments.forEachRemaining((Concessione c)->{System.out.println(c.getNome());});
// Transformations
System.out.println(
client.queryForJSON(
Queries.readPath("src/test/resources/concessioni/queries/lastNameRegisteredByFabio.json")));
System.out.println(
client.queryForJSON(
Queries.readPath("src/test/resources/concessioni/queries/publicationWarningMessages.json")));
// String query=Files.readFileAsString(filterFile.getAbsolutePath(), Charset.defaultCharset());
// System.out.println("Count for "+filterFile.getName()+"\t"+ count(client.search(query)));
// }
}
@Test
public void testCleanFileSet() throws Exception {
Concessione c=publish(false);
client.unpublish(c.getMongo_id());
client.unPublish(c.getMongo_id());
//Precheck to be sure
assertFalse(c.getPosizionamentoScavo().getActualContent().isEmpty());
@ -163,4 +211,6 @@ public class StatelessClientTests extends BasicVreTests{
iterator.forEachRemaining(el->{l.incrementAndGet();});
return l.get();
}
}

@ -22,9 +22,9 @@ public class EditFileSet {
String context="/gcube/devsec/devVRE";
String publishOption="true";
String toUpdateId="6131ebbc02ad3d2580412be3";
String toEditPath= Concessione.Paths.POSIZIONAMENTO;
String folderPath="/Users/fabioisti/Downloads/GNA_ELAIUSSA_FAC-SIMILE_2021/GNA_topografia_Elaiussa/PLANIMETRIE_SAGGI";
String toUpdateId="6131f42502ad3d2580412da7";
String toEditPath= Concessione.Paths.piantaByIndex(0);
String folderPath="/Users/fabioisti/Documents/GNA_Ferrandina_2020_inserimento/New Folder With Items/topografia/Piante";
//Check params
Boolean publish = Boolean.parseBoolean(publishOption);
@ -38,13 +38,13 @@ public class EditFileSet {
//Prepare Fileset
System.out.println("Preparing request..");
StorageUtils storage=new StorageUtils();
AddSectionToConcessioneRequest request= prepareRequest(storage,toEditPath,sourceFolder);
AddSectionToConcessioneRequest request= FileSets.prepareRequestFromFolder(storage,toEditPath,sourceFolder);
MongoConcessioni client=mongoConcessioni().build();
// Unpublish
System.out.println("Unpublishing "+toUpdateId);
client.unpublish(toUpdateId);
client.unPublish(toUpdateId);
// update Fileset
System.out.println("Removing old fileset.. ");
@ -63,15 +63,5 @@ public class EditFileSet {
}
private static AddSectionToConcessioneRequest prepareRequest(StorageUtils storage, String path, File directory) throws FileNotFoundException {
File[] children =directory.listFiles();
System.out.println("Found "+children+ " files to push");
InputStreamDescriptor[] iss=new InputStreamDescriptor[children.length];
FileSets.RequestBuilder builder = FileSets.build(path);
for (File f : directory.listFiles())
builder.add(FileSets.asTemp(storage, new InputStreamDescriptor(new FileInputStream(f),f.getName())));
return builder.getTheRequest();
}
}

@ -35,7 +35,7 @@ public class RepublishAll {
System.out.println("Skipping "+currentId);
else {
System.out.println("Upublishing " + c.getMongo_id());
manager.unpublish(c.getMongo_id());
manager.unPublish(c.getMongo_id());
System.out.println("Republishing" + c.getMongo_id());
manager.publish(c.getMongo_id());

@ -0,0 +1,171 @@
package org.gcube.application.geoportal.usecases.mocks;
import com.opencsv.CSVReader;
import lombok.extern.slf4j.Slf4j;
import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI;
import org.gcube.application.geoportal.client.utils.FileSets;
import org.gcube.application.geoportal.clients.StatelessClientTests;
import org.gcube.application.geoportal.clients.TokenSetter;
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.UploadedImage;
import org.gcube.application.geoportal.common.model.legacy.report.ValidationReport;
import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest;
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
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.service.IClient;
import java.io.*;
import java.lang.reflect.Array;
import java.util.*;
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni;
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni;
import static org.junit.Assert.assertTrue;
@Slf4j
public class MockFromFolder {
public static void main(String[] args) throws Exception {
//PARAMS
String context="/gcube/devsec/devVRE";
//Concessioni 04-03
//String packageBaseDir="/Users/fabioisti/Documents/Concessioni 04-03/";
//String csvDescriptor="src/test/resources/concessioni/concessioni04-03.csv";
//DATASET_GNA_01
// String packageBaseDir="/Users/fabioisti/Documents/DATASET_GNA_01";
// String csvDescriptor="src/test/resources/concessioni/DATASET_GNA_01.csv";
//DATASET_GNA_02
//String packageBaseDir="/Users/fabioisti/Documents/DATASET_GNA_02";
//String csvDescriptor="src/test/resources/concessioni/DATASET_GNA_02.csv";
// invio_08_02
// String packageBaseDir="/Users/fabioisti/Documents/invio_08_05";
// String csvDescriptor="src/test/resources/concessioni/invio_08_05.csv";
// concessioni 23_04
String packageBaseDir="/Users/fabioisti/Documents/Concessioni_23_04";
String csvDescriptor="src/test/resources/concessioni/concessioni_23_04.csv";
TokenSetter.set(context);
MongoConcessioni client=mongoConcessioni().build();
StorageUtils storage=new StorageUtils();
long publishedCount=0l;
long successcount=0l;
long entrycount=0l;
//Parse CSV descriptor
File baseDir=new File(packageBaseDir);
ArrayList<Concessione> pushed=new ArrayList<>();
CSVReader reader = new CSVReader(new FileReader(csvDescriptor));
String [] nextLine;
//reads one line at a time
while ((nextLine = reader.readNext()) != null)
{
entrycount++;
//Create new
String projectName = nextLine[0];
String positionPath = nextLine[1];
String piantePath = nextLine[2];
try {
//NB raggruppa per file
Map.Entry<String,List<File>> posSets = clusterizeFiles(positionPath, baseDir).entrySet().stream().findFirst().get();
Map<String, List<File>> pianteSets = clusterizeFiles(piantePath, baseDir);
// Sometimes they are the same
if(positionPath.equals(piantePath))
pianteSets.remove(posSets.getKey());
log.debug("Entry {} pos Size {} piante {} ",projectName,posSets.getValue().size(),pianteSets.size());
Concessione c = createMock(projectName, pianteSets, posSets.getValue(), client, storage);
publishedCount++;
if (c.getReport().getStatus().equals(ValidationReport.ValidationStatus.PASSED))
successcount++;
pushed.add(c);
}catch(Throwable t){
System.err.println("Problematic entry "+projectName);
t.printStackTrace(System.err);
}
}
System.out.println("Done "+publishedCount+" [SUCCESS : "+successcount+"] \t OUT OF :"+entrycount+" entries");
pushed.forEach(c -> {
try{
System.out.println(c.getNome()+"\t"+c.getMongo_id()+"\t"+c.getReport().getStatus());
}catch(Throwable t){
System.out.println(c.getNome()+"\t"+c.getMongo_id()+"\t PROBLEMATIC, NO REPORT");
}
});
}
private static Map<String,List<File>> clusterizeFiles(String basePath,File packageFolder) throws IOException {
log.debug("Clusterizing "+basePath);
HashMap<String,List<File>> toReturn = new HashMap<>();
File baseDir=new File(packageFolder,basePath);
for(File shp:baseDir.listFiles((dir,name)->{return name.endsWith(".shp");})) {
String basename=shp.getName().substring(0,shp.getName().lastIndexOf("."));
List<File> fileset=new ArrayList<>();
for (File shpSet : baseDir.listFiles((dir, name) -> {return name.startsWith(basename);}))
fileset.add(shpSet);
log.debug("SHP {} Set size {} ",basename,fileset.size());
toReturn.put(basename,fileset);
}
return toReturn;
}
private static Concessione createMock(String baseName,Map<String,List<File>> piante, List<File> pos,
MongoConcessioni client, StorageUtils storage) throws Exception {
Concessione c=TestModel.prepareConcessione(piante.size(), 2);
c.setNome("Mock for "+baseName);
c= client.createNew(c);
String mongoId=c.getMongo_id();
// TEST DATA, DO NOT CARE
client.registerFileSet(mongoId, FileSets.prepareRequest(storage,
Concessione.Paths.RELAZIONE,new File ("src/test/resources/concessioni/relazione.pdf")));
client.registerFileSet(mongoId, FileSets.prepareRequest(storage,
Concessione.Paths.imgByIndex(0),new File("src/test/resources/concessioni/immagine.png")));
// POSIZIONAMENTO
client.registerFileSet(mongoId, FileSets.prepareRequest(storage,
Concessione.Paths.POSIZIONAMENTO,pos.toArray(new File[pos.size()])));
Map.Entry<String,List<File>>[] entries= piante.entrySet().toArray(new Map.Entry[0]);
for( int i= 0; i< piante.size();i++)
client.registerFileSet(mongoId, FileSets.prepareRequest(storage,
Concessione.Paths.piantaByIndex(i),entries[i].getValue().toArray(new File[0])));
c=client.publish(mongoId);
System.out.println("@@@ Concessione "+c.getNome()+"\t STATUS : "+ c.getReport().getStatus());
return c;
}
}

@ -0,0 +1,6 @@
"GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL","GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL/GNA_topografia_Aquileia Casa Bestie Ferite","GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL/GNA_topografia_Aquileia Casa Bestie Ferite"
"GNA_Castelseprio castrum-borgo_2019_rev_CdL","GNA_Castelseprio castrum-borgo_2019_rev_CdL/GNA_topografia_Castelseprio castrum-borgo","GNA_Castelseprio castrum-borgo_2019_rev_CdL/GNA_topografia_Castelseprio castrum-borgo"
"GNA_Monte Postale_2019_rev_CdL_FPDC","GNA_Monte Postale_2019_rev_CdL_FPDC/GNA_topografia_Monte Postale","GNA_Monte Postale_2019_rev_CdL_FPDC/GNA_topografia_Monte Postale"
"GNA_Castelseprio castrum-borgo_2019_rev_CdL","GNA_Castelseprio castrum-borgo_2019_rev_CdL/GNA_topografia_Castelseprio castrum-borgo","GNA_Castelseprio castrum-borgo_2019_rev_CdL/GNA_topografia_Castelseprio castrum-borgo"
"GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL","GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL/GNA_topografia_Aquileia Casa Bestie Ferite","GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL/GNA_topografia_Aquileia Casa Bestie Ferite"
"GNA_Appia Antica V miglio_2019_rev_CdL","GNA_Appia Antica V miglio_2019_rev_CdL/GNA_topografia_Appia Antica V miglio","GNA_Appia Antica V miglio_2019_rev_CdL/GNA_topografia_Appia Antica V miglio"
1 GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL/GNA_topografia_Aquileia Casa Bestie Ferite GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL/GNA_topografia_Aquileia Casa Bestie Ferite
2 GNA_Castelseprio castrum-borgo_2019_rev_CdL GNA_Castelseprio castrum-borgo_2019_rev_CdL/GNA_topografia_Castelseprio castrum-borgo GNA_Castelseprio castrum-borgo_2019_rev_CdL/GNA_topografia_Castelseprio castrum-borgo
3 GNA_Monte Postale_2019_rev_CdL_FPDC GNA_Monte Postale_2019_rev_CdL_FPDC/GNA_topografia_Monte Postale GNA_Monte Postale_2019_rev_CdL_FPDC/GNA_topografia_Monte Postale
4 GNA_Castelseprio castrum-borgo_2019_rev_CdL GNA_Castelseprio castrum-borgo_2019_rev_CdL/GNA_topografia_Castelseprio castrum-borgo GNA_Castelseprio castrum-borgo_2019_rev_CdL/GNA_topografia_Castelseprio castrum-borgo
5 GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL/GNA_topografia_Aquileia Casa Bestie Ferite GNA_Aquileia Casa Bestie Ferite_2019_rev_CdL/GNA_topografia_Aquileia Casa Bestie Ferite
6 GNA_Appia Antica V miglio_2019_rev_CdL GNA_Appia Antica V miglio_2019_rev_CdL/GNA_topografia_Appia Antica V miglio GNA_Appia Antica V miglio_2019_rev_CdL/GNA_topografia_Appia Antica V miglio

@ -0,0 +1,5 @@
"GNA_Bostel di Rotzo_Rev_FPDC","GNA_Bostel di Rotzo_Rev_FPDC/GNA_topografia_Bostel di Rotzo","GNA_Bostel di Rotzo_Rev_FPDC/GNA_topografia_Bostel di Rotzo"
"GNA_Braida Murada_Rev_FPDC","GNA_Braida Murada_Rev_FPDC/GNA_topografia_Braida Murada","GNA_Braida Murada_Rev_FPDC/GNA_topografia_Braida Murada"
"GNA_Egnazia_Rev_FPDC","GNA_Bostel di Rotzo_Rev_FPDC/GNA_topografia_Bostel di Rotzo","GNA_Bostel di Rotzo_Rev_FPDC/GNA_topografia_Bostel di Rotzo"
"GNA_Ferrandina_Rev_FPDC","GNA_Ferrandina_Rev_FPDC/GNA_topografia_Ferrandina","GNA_Ferrandina_Rev_FPDC/GNA_topografia_Ferrandina"
"GNA_Timpone della Motta_Rev_FPDC","GNA_Timpone della Motta_Rev_FPDC/GNA_topografia_Timpone della Motta","GNA_Timpone della Motta_Rev_FPDC/GNA_topografia_Timpone della Motta"
1 GNA_Bostel di Rotzo_Rev_FPDC GNA_Bostel di Rotzo_Rev_FPDC/GNA_topografia_Bostel di Rotzo GNA_Bostel di Rotzo_Rev_FPDC/GNA_topografia_Bostel di Rotzo
2 GNA_Braida Murada_Rev_FPDC GNA_Braida Murada_Rev_FPDC/GNA_topografia_Braida Murada GNA_Braida Murada_Rev_FPDC/GNA_topografia_Braida Murada
3 GNA_Egnazia_Rev_FPDC GNA_Bostel di Rotzo_Rev_FPDC/GNA_topografia_Bostel di Rotzo GNA_Bostel di Rotzo_Rev_FPDC/GNA_topografia_Bostel di Rotzo
4 GNA_Ferrandina_Rev_FPDC GNA_Ferrandina_Rev_FPDC/GNA_topografia_Ferrandina GNA_Ferrandina_Rev_FPDC/GNA_topografia_Ferrandina
5 GNA_Timpone della Motta_Rev_FPDC GNA_Timpone della Motta_Rev_FPDC/GNA_topografia_Timpone della Motta GNA_Timpone della Motta_Rev_FPDC/GNA_topografia_Timpone della Motta

@ -0,0 +1,18 @@
"Acquacadda_Nuxis_2019_def","Acquacadda_Nuxis_2019_def/D_posizionamento saggi_NUXIS 2019","Acquacadda_Nuxis_2019_def/E_piante fine scavo vettoriali_NUXIS 2019"
"Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)","Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)/GNA_SAN BASILIO_2019/GNA_topografia_San Basilio/POSIZIONAMENTO SAGGI E AREE DELLE INDAGINI","Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)/GNA_SAN BASILIO_2019/GNA_topografia_San Basilio/PLANIMETRIE SAGGI AREE DELLE INDAGINI"
"Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)","Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)/S.Basilio-UniVe_GNA/D.GNA_Posizionamento_San Basilio","Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)/S.Basilio-UniVe_GNA/E-F.GNA_Pianta fine scavo_San Basilio/GNA_Pianta di fine scavo_San Basilio"
"C_F_GNA_Oscurusciuto_2020","C_F_GNA_Oscurusciuto_2020/D-E-F_GNA_topografia_Oscurusciuto/Posizionamento_limiti_saggi_indagati_Oscurusciuto_vettoriale","C_F_GNA_Oscurusciuto_2020/D-E-F_GNA_topografia_Oscurusciuto/Pianta_fine_scavo_Oscurusciuto_2019_vettoriale"
"Cerchiara-Damale_rev","Cerchiara-Damale_rev/D. Posizionamento saggio","Cerchiara-Damale_rev/D. Posizionamento saggio/E. Pianta fine scavo_vettoriale"
"Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)","Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)/IVa_E_Tav.1_Shape Posizionamento area scavo","Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)/IVa_E_Tav.1_Shape Posizionamento area scavo"
"Cervia Vecchia_rev","Cervia Vecchia_rev/D_GNA_topografia_Cervia","Cervia Vecchia_rev/D_GNA_topografia_Cervia"
"Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019","Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019/Civitavecchia (RM)_Ficoncella_documentazione fine scavo 2019_IVa/IVa_D_E_F_topografia_Aquae_Tauri/Posizionamento saggi 2019","Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019/Civitavecchia (RM)_Ficoncella_documentazione fine scavo 2019_IVa/IVa_D_E_F_topografia_Aquae_Tauri/Pianta di fine scavo 2019"
"Frascineto Timpone delle Fave_rev","Frascineto Timpone delle Fave_rev/D. Posizionamento dell'area","Frascineto Timpone delle Fave_rev/D. Posizionamento dell'area"
"GNA_AQUILEIAcomellimoro_2019_rev","GNA_AQUILEIAcomellimoro_2019_rev/GNA_topografia_AQUILEIAcomellimoro_2019/D.Posizionamento_AQU19COM","GNA_AQUILEIAcomellimoro_2019_rev/GNA_topografia_AQUILEIAcomellimoro_2019/E.Planimetria generale_AQU19COM"
"GNA_Poggio Pimperiale_Poggibonsi","GNA_Poggio Pimperiale_Poggibonsi/5591449/GNA_topografia_PoggioImperiale/POSIZIONAMENTO","GNA_Poggio Pimperiale_Poggibonsi/5591449/GNA_topografia_PoggioImperiale/PLANIMETRIE SAGGI/SHAPE A22"
"Jesolo (Ve) - Loc. San Mauro e Torre del Caligo","Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/GNA_topografia_Jesolo/GIS_shp","Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/GNA_topografia_Jesolo/GIS_shp"
"Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)","Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)/IVa_D_E_F_GNA_topografia_Via Nomentum-Eretum","Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)/IVa_D_E_F_GNA_topografia_Via Nomentum-Eretum"
"Quarto d'Altino -Loc. Fornace","Quarto d'Altino -Loc. Fornace/Cupitò/GNA_Altino_posizionamento_shp","Quarto d'Altino -Loc. Fornace/Cupitò/GNA_Altino_posizionamento_shp"
"Tolfa (RM)_Bufalareccia_documentazione IVa 2019","Tolfa (RM)_Bufalareccia_documentazione IVa 2019/IVa_D_GNA_posizionamento dei limiti in formato vectoriale_Bufalareccia 2019","Tolfa (RM)_Bufalareccia_documentazione IVa 2019/IVa_E_GNA_pianta di fine scavo multipolygon_Bufalareccia 2019"
"UNIME_ LAINO_REV","UNIME_ LAINO_REV/D. Limiti saggi/laino 2019 limiti saggi","UNIME_ LAINO_REV/D. Limiti saggi/laino 2019 limiti saggi"
"UNIME_TORTORA_rev","UNIME_TORTORA_rev/tortora 2019 limiti saggi","UNIME_TORTORA_rev/tortora 2019 pianta fine scavo"
"UsiniTomestighes","UsiniTomestighes/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/D_GNA_Posizionamento_limiti_aree_indagate","UsiniTomestighes/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/E_GNA_Piante_fine_scavo_Tomestighes/Area A_est"
1 Acquacadda_Nuxis_2019_def Acquacadda_Nuxis_2019_def/D_posizionamento saggi_NUXIS 2019 Acquacadda_Nuxis_2019_def/E_piante fine scavo vettoriali_NUXIS 2019
2 Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova) Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)/GNA_SAN BASILIO_2019/GNA_topografia_San Basilio/POSIZIONAMENTO SAGGI E AREE DELLE INDAGINI Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)/GNA_SAN BASILIO_2019/GNA_topografia_San Basilio/PLANIMETRIE SAGGI AREE DELLE INDAGINI
3 Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia) Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)/S.Basilio-UniVe_GNA/D.GNA_Posizionamento_San Basilio Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)/S.Basilio-UniVe_GNA/E-F.GNA_Pianta fine scavo_San Basilio/GNA_Pianta di fine scavo_San Basilio
4 C_F_GNA_Oscurusciuto_2020 C_F_GNA_Oscurusciuto_2020/D-E-F_GNA_topografia_Oscurusciuto/Posizionamento_limiti_saggi_indagati_Oscurusciuto_vettoriale C_F_GNA_Oscurusciuto_2020/D-E-F_GNA_topografia_Oscurusciuto/Pianta_fine_scavo_Oscurusciuto_2019_vettoriale
5 Cerchiara-Damale_rev Cerchiara-Damale_rev/D. Posizionamento saggio Cerchiara-Damale_rev/D. Posizionamento saggio/E. Pianta fine scavo_vettoriale
6 Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa) Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)/IVa_E_Tav.1_Shape Posizionamento area scavo Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)/IVa_E_Tav.1_Shape Posizionamento area scavo
7 Cervia Vecchia_rev Cervia Vecchia_rev/D_GNA_topografia_Cervia Cervia Vecchia_rev/D_GNA_topografia_Cervia
8 Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019 Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019/Civitavecchia (RM)_Ficoncella_documentazione fine scavo 2019_IVa/IVa_D_E_F_topografia_Aquae_Tauri/Posizionamento saggi 2019 Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019/Civitavecchia (RM)_Ficoncella_documentazione fine scavo 2019_IVa/IVa_D_E_F_topografia_Aquae_Tauri/Pianta di fine scavo 2019
9 Frascineto Timpone delle Fave_rev Frascineto Timpone delle Fave_rev/D. Posizionamento dell'area Frascineto Timpone delle Fave_rev/D. Posizionamento dell'area
10 GNA_AQUILEIAcomellimoro_2019_rev GNA_AQUILEIAcomellimoro_2019_rev/GNA_topografia_AQUILEIAcomellimoro_2019/D.Posizionamento_AQU19COM GNA_AQUILEIAcomellimoro_2019_rev/GNA_topografia_AQUILEIAcomellimoro_2019/E.Planimetria generale_AQU19COM
11 GNA_Poggio Pimperiale_Poggibonsi GNA_Poggio Pimperiale_Poggibonsi/5591449/GNA_topografia_PoggioImperiale/POSIZIONAMENTO GNA_Poggio Pimperiale_Poggibonsi/5591449/GNA_topografia_PoggioImperiale/PLANIMETRIE SAGGI/SHAPE A22
12 Jesolo (Ve) - Loc. San Mauro e Torre del Caligo Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/GNA_topografia_Jesolo/GIS_shp Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/GNA_topografia_Jesolo/GIS_shp
13 Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa) Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)/IVa_D_E_F_GNA_topografia_Via Nomentum-Eretum Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)/IVa_D_E_F_GNA_topografia_Via Nomentum-Eretum
14 Quarto d'Altino -Loc. Fornace Quarto d'Altino -Loc. Fornace/Cupitò/GNA_Altino_posizionamento_shp Quarto d'Altino -Loc. Fornace/Cupitò/GNA_Altino_posizionamento_shp
15 Tolfa (RM)_Bufalareccia_documentazione IVa 2019 Tolfa (RM)_Bufalareccia_documentazione IVa 2019/IVa_D_GNA_posizionamento dei limiti in formato vectoriale_Bufalareccia 2019 Tolfa (RM)_Bufalareccia_documentazione IVa 2019/IVa_E_GNA_pianta di fine scavo multipolygon_Bufalareccia 2019
16 UNIME_ LAINO_REV UNIME_ LAINO_REV/D. Limiti saggi/laino 2019 limiti saggi UNIME_ LAINO_REV/D. Limiti saggi/laino 2019 limiti saggi
17 UNIME_TORTORA_rev UNIME_TORTORA_rev/tortora 2019 limiti saggi UNIME_TORTORA_rev/tortora 2019 pianta fine scavo
18 UsiniTomestighes UsiniTomestighes/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/D_GNA_Posizionamento_limiti_aree_indagate UsiniTomestighes/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/E_GNA_Piante_fine_scavo_Tomestighes/Area A_est

@ -0,0 +1,18 @@
"Acquacadda_Nuxis_2019_def","Acquacadda_Nuxis_2019_def/D_posizionamento saggi_NUXIS 2019","Acquacadda_Nuxis_2019_def/E_piante fine scavo vettoriali_NUXIS 2019"
"Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)","Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)/GNA_SAN BASILIO_2019/GNA_topografia_San Basilio/POSIZIONAMENTO SAGGI E AREE DELLE INDAGINI","Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)/GNA_SAN BASILIO_2019/GNA_topografia_San Basilio/PLANIMETRIE SAGGI AREE DELLE INDAGINI"
"Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)","Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)/S.Basilio-UniVe_GNA/D.GNA_Posizionamento_San Basilio","Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)/S.Basilio-UniVe_GNA/E-F.GNA_Pianta fine scavo_San Basilio/GNA_Pianta di fine scavo_San Basilio"
"C_F_GNA_Oscurusciuto_2020","C_F_GNA_Oscurusciuto_2020/D-E-F_GNA_topografia_Oscurusciuto/Posizionamento_limiti_saggi_indagati_Oscurusciuto_vettoriale","C_F_GNA_Oscurusciuto_2020/D-E-F_GNA_topografia_Oscurusciuto/Pianta_fine_scavo_Oscurusciuto_2019_vettoriale"
"Cerchiara-Damale_rev","Cerchiara-Damale_rev/D. Posizionamento saggio","Cerchiara-Damale_rev/D. Posizionamento saggio/E. Pianta fine scavo_vettoriale"
"Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)","Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)/IVa_E_Tav.1_Shape Posizionamento area scavo","Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)/IVa_E_Tav.1_Shape Posizionamento area scavo"
"Cervia Vecchia_rev","Cervia Vecchia_rev/D_GNA_topografia_Cervia","Cervia Vecchia_rev/D_GNA_topografia_Cervia"
"Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019","Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019/Civitavecchia (RM)_Ficoncella_documentazione fine scavo 2019_IVa/IVa_D_E_F_topografia_Aquae_Tauri/Posizionamento saggi 2019","Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019/Civitavecchia (RM)_Ficoncella_documentazione fine scavo 2019_IVa/IVa_D_E_F_topografia_Aquae_Tauri/Pianta di fine scavo 2019"
"Frascineto Timpone delle Fave_rev","Frascineto Timpone delle Fave_rev/D. Posizionamento dell'area","Frascineto Timpone delle Fave_rev/D. Posizionamento dell'area"
"GNA_AQUILEIAcomellimoro_2019_rev","GNA_AQUILEIAcomellimoro_2019_rev/GNA_topografia_AQUILEIAcomellimoro_2019/D.Posizionamento_AQU19COM","GNA_AQUILEIAcomellimoro_2019_rev/GNA_topografia_AQUILEIAcomellimoro_2019/E.Planimetria generale_AQU19COM"
"GNA_Poggio Pimperiale_Poggibonsi","GNA_Poggio Pimperiale_Poggibonsi/5591449/GNA_topografia_PoggioImperiale/POSIZIONAMENTO","GNA_Poggio Pimperiale_Poggibonsi/5591449/GNA_topografia_PoggioImperiale/PLANIMETRIE SAGGI/SHAPE A22"
"Jesolo (Ve) - Loc. San Mauro e Torre del Caligo","Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/GNA_topografia_Jesolo/GIS_shp","Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/GNA_topografia_Jesolo/GIS_shp"
"Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)","Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)/IVa_D_E_F_GNA_topografia_Via Nomentum-Eretum","Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)/IVa_D_E_F_GNA_topografia_Via Nomentum-Eretum"
"Quarto d'Altino -Loc. Fornace","Quarto d'Altino -Loc. Fornace/Cupitò/GNA_Altino_posizionamento_shp","Quarto d'Altino -Loc. Fornace/Cupitò/GNA_Altino_posizionamento_shp"
"Tolfa (RM)_Bufalareccia_documentazione IVa 2019","Tolfa (RM)_Bufalareccia_documentazione IVa 2019/IVa_D_GNA_posizionamento dei limiti in formato vectoriale_Bufalareccia 2019","Tolfa (RM)_Bufalareccia_documentazione IVa 2019/IVa_E_GNA_pianta di fine scavo multipolygon_Bufalareccia 2019"
"UNIME_ LAINO_REV","UNIME_ LAINO_REV/D. Limiti saggi/laino 2019 limiti saggi","UNIME_ LAINO_REV/D. Limiti saggi/laino 2019 limiti saggi"
"UNIME_TORTORA_rev","UNIME_TORTORA_rev/tortora 2019 limiti saggi","UNIME_TORTORA_rev/tortora 2019 pianta fine scavo"
"UsiniTomestighes","UsiniTomestighes/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/D_GNA_Posizionamento_limiti_aree_indagate","UsiniTomestighes/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/E_GNA_Piante_fine_scavo_Tomestighes/Area A_est"
1 Acquacadda_Nuxis_2019_def Acquacadda_Nuxis_2019_def/D_posizionamento saggi_NUXIS 2019 Acquacadda_Nuxis_2019_def/E_piante fine scavo vettoriali_NUXIS 2019
2 Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova) Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)/GNA_SAN BASILIO_2019/GNA_topografia_San Basilio/POSIZIONAMENTO SAGGI E AREE DELLE INDAGINI Ariano nel Polisine (Ro) - Loc. San Basilio ( Unvi. di Padova)/GNA_SAN BASILIO_2019/GNA_topografia_San Basilio/PLANIMETRIE SAGGI AREE DELLE INDAGINI
3 Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia) Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)/S.Basilio-UniVe_GNA/D.GNA_Posizionamento_San Basilio Ariano Polesine (Ro) - Loc. San Basilio (Uni. di Venezia)/S.Basilio-UniVe_GNA/E-F.GNA_Pianta fine scavo_San Basilio/GNA_Pianta di fine scavo_San Basilio
4 C_F_GNA_Oscurusciuto_2020 C_F_GNA_Oscurusciuto_2020/D-E-F_GNA_topografia_Oscurusciuto/Posizionamento_limiti_saggi_indagati_Oscurusciuto_vettoriale C_F_GNA_Oscurusciuto_2020/D-E-F_GNA_topografia_Oscurusciuto/Pianta_fine_scavo_Oscurusciuto_2019_vettoriale
5 Cerchiara-Damale_rev Cerchiara-Damale_rev/D. Posizionamento saggio Cerchiara-Damale_rev/D. Posizionamento saggio/E. Pianta fine scavo_vettoriale
6 Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa) Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)/IVa_E_Tav.1_Shape Posizionamento area scavo Cerveteri (RM)_loc. Monte Abatone_documentazione fine scavo 2019 (paragr. IVa)/IVa_E_Tav.1_Shape Posizionamento area scavo
7 Cervia Vecchia_rev Cervia Vecchia_rev/D_GNA_topografia_Cervia Cervia Vecchia_rev/D_GNA_topografia_Cervia
8 Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019 Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019/Civitavecchia (RM)_Ficoncella_documentazione fine scavo 2019_IVa/IVa_D_E_F_topografia_Aquae_Tauri/Posizionamento saggi 2019 Civitavecchia (RM)_loc. Ficoncella_Aquae Tauri_docum. IVa_2019/Civitavecchia (RM)_Ficoncella_documentazione fine scavo 2019_IVa/IVa_D_E_F_topografia_Aquae_Tauri/Pianta di fine scavo 2019
9 Frascineto Timpone delle Fave_rev Frascineto Timpone delle Fave_rev/D. Posizionamento dell'area Frascineto Timpone delle Fave_rev/D. Posizionamento dell'area
10 GNA_AQUILEIAcomellimoro_2019_rev GNA_AQUILEIAcomellimoro_2019_rev/GNA_topografia_AQUILEIAcomellimoro_2019/D.Posizionamento_AQU19COM GNA_AQUILEIAcomellimoro_2019_rev/GNA_topografia_AQUILEIAcomellimoro_2019/E.Planimetria generale_AQU19COM
11 GNA_Poggio Pimperiale_Poggibonsi GNA_Poggio Pimperiale_Poggibonsi/5591449/GNA_topografia_PoggioImperiale/POSIZIONAMENTO GNA_Poggio Pimperiale_Poggibonsi/5591449/GNA_topografia_PoggioImperiale/PLANIMETRIE SAGGI/SHAPE A22
12 Jesolo (Ve) - Loc. San Mauro e Torre del Caligo Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/GNA_topografia_Jesolo/GIS_shp Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/GNA_topografia_Jesolo/GIS_shp
13 Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa) Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)/IVa_D_E_F_GNA_topografia_Via Nomentum-Eretum Monterotondo (RM)_loc. Tor Mancina_documentazione fine scavo 2019 (paragr. IVa)/IVa_D_E_F_GNA_topografia_Via Nomentum-Eretum
14 Quarto d'Altino -Loc. Fornace Quarto d'Altino -Loc. Fornace/Cupitò/GNA_Altino_posizionamento_shp Quarto d'Altino -Loc. Fornace/Cupitò/GNA_Altino_posizionamento_shp
15 Tolfa (RM)_Bufalareccia_documentazione IVa 2019 Tolfa (RM)_Bufalareccia_documentazione IVa 2019/IVa_D_GNA_posizionamento dei limiti in formato vectoriale_Bufalareccia 2019 Tolfa (RM)_Bufalareccia_documentazione IVa 2019/IVa_E_GNA_pianta di fine scavo multipolygon_Bufalareccia 2019
16 UNIME_ LAINO_REV UNIME_ LAINO_REV/D. Limiti saggi/laino 2019 limiti saggi UNIME_ LAINO_REV/D. Limiti saggi/laino 2019 limiti saggi
17 UNIME_TORTORA_rev UNIME_TORTORA_rev/tortora 2019 limiti saggi UNIME_TORTORA_rev/tortora 2019 pianta fine scavo
18 UsiniTomestighes UsiniTomestighes/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/D_GNA_Posizionamento_limiti_aree_indagate UsiniTomestighes/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/E_GNA_Piante_fine_scavo_Tomestighes/Area A_est

@ -0,0 +1,4 @@
"GNA_Incoronata_2019_Rennes","/GNA_Incoronata_2019_Rennes/GNA_topografia_Incoronata/D","/GNA_Incoronata_2019_Rennes/GNA_topografia_Incoronata/E/SHP"
"MONTE MANNU_2019","/MONTE MANNU_2019/GNA_topografia_Monte_Mannu/D_Limiti dei saggi","/MONTE MANNU_2019/GNA_topografia_Monte_Mannu/E_Pianta di fine scavo"
"Santa Rosa Poviglio_2019","/Santa Rosa Poviglio_2019/GNA_Topografia_Poviglio/Posizionamento","/Santa Rosa Poviglio_2019/GNA_Topografia_Poviglio/Planimetrie"
"Usini Tomestighes_integrata","/Usini Tomestighes_integrata/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/GNA_Tomestighes_2019/D_GNA_Posizionamento_limiti_aree_indagate","/Usini Tomestighes_integrata/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/GNA_Tomestighes_2019/E_GNA_Piante_fine_scavo_Tomestighes/Area A est"
1 GNA_Incoronata_2019_Rennes /GNA_Incoronata_2019_Rennes/GNA_topografia_Incoronata/D /GNA_Incoronata_2019_Rennes/GNA_topografia_Incoronata/E/SHP
2 MONTE MANNU_2019 /MONTE MANNU_2019/GNA_topografia_Monte_Mannu/D_Limiti dei saggi /MONTE MANNU_2019/GNA_topografia_Monte_Mannu/E_Pianta di fine scavo
3 Santa Rosa Poviglio_2019 /Santa Rosa Poviglio_2019/GNA_Topografia_Poviglio/Posizionamento /Santa Rosa Poviglio_2019/GNA_Topografia_Poviglio/Planimetrie
4 Usini Tomestighes_integrata /Usini Tomestighes_integrata/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/GNA_Tomestighes_2019/D_GNA_Posizionamento_limiti_aree_indagate /Usini Tomestighes_integrata/GNA_TOMESTIGHES_2019/GNA_Topografia_Tomestighes/GNA_Tomestighes_2019/E_GNA_Piante_fine_scavo_Tomestighes/Area A est

@ -0,0 +1,7 @@
"Farnese (VT)_Sorgenti della Nova_documentazione fine scavo 2019","Farnese (VT)_Sorgenti della Nova_documentazione fine scavo 2019/Gis Sorgenti della Nova","Farnese (VT)_Sorgenti della Nova_documentazione fine scavo 2019/Gis Sorgenti della Nova/Piante di fase"
"GNA_Aquileia_ExPasqualis_ok","GNA_Aquileia_ExPasqualis_ok/GNA_topografia_Aquileia ex Pasqualis_2019","GNA_Aquileia_ExPasqualis_ok/GNA_topografia_Aquileia ex Pasqualis_2019"
"Jesolo (Ve) - Loc. San Mauro e Torre del Caligo","Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/topografia_modificata","Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/topografia_modificata"
"Montalto di Castro (VT)_Vulci_Indagini non invasive_Doc. paragr._Va","Montalto di Castro (VT)_Vulci_Indagini non invasive_Doc. paragr._Va/CONSEGNA_WGS84","Montalto di Castro (VT)_Vulci_Indagini non invasive_Doc. paragr._Va/CONSEGNA_WGS84"
"Montecompatri_Tenuta_Castiglione_doc_IVa_2019","Montecompatri_Tenuta_Castiglione_doc_IVa_2019/GNA_topografia_Gabii_Louvre/POSIZIONAMENTO","Montecompatri_Tenuta_Castiglione_doc_IVa_2019/GNA_topografia_Gabii_Louvre/PIANTA FINE SCAVO"
"SAN_CASCIANO_BAGNI","SAN_CASCIANO_BAGNI/POSIZIONAMENTO_EPSG_4326","SAN_CASCIANO_BAGNI"
"Tarquinia_Civita_GNA_2019","Tarquinia_Civita_GNA_2019/Va_D__Topografia_Tarquinia/Posizionamento","Tarquinia_Civita_GNA_2019/Va_D__Topografia_Tarquinia/Posizionamento"
1 Farnese (VT)_Sorgenti della Nova_documentazione fine scavo 2019 Farnese (VT)_Sorgenti della Nova_documentazione fine scavo 2019/Gis Sorgenti della Nova Farnese (VT)_Sorgenti della Nova_documentazione fine scavo 2019/Gis Sorgenti della Nova/Piante di fase
2 GNA_Aquileia_ExPasqualis_ok GNA_Aquileia_ExPasqualis_ok/GNA_topografia_Aquileia ex Pasqualis_2019 GNA_Aquileia_ExPasqualis_ok/GNA_topografia_Aquileia ex Pasqualis_2019
3 Jesolo (Ve) - Loc. San Mauro e Torre del Caligo Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/topografia_modificata Jesolo (Ve) - Loc. San Mauro e Torre del Caligo/topografia_modificata
4 Montalto di Castro (VT)_Vulci_Indagini non invasive_Doc. paragr._Va Montalto di Castro (VT)_Vulci_Indagini non invasive_Doc. paragr._Va/CONSEGNA_WGS84 Montalto di Castro (VT)_Vulci_Indagini non invasive_Doc. paragr._Va/CONSEGNA_WGS84
5 Montecompatri_Tenuta_Castiglione_doc_IVa_2019 Montecompatri_Tenuta_Castiglione_doc_IVa_2019/GNA_topografia_Gabii_Louvre/POSIZIONAMENTO Montecompatri_Tenuta_Castiglione_doc_IVa_2019/GNA_topografia_Gabii_Louvre/PIANTA FINE SCAVO
6 SAN_CASCIANO_BAGNI SAN_CASCIANO_BAGNI/POSIZIONAMENTO_EPSG_4326 SAN_CASCIANO_BAGNI
7 Tarquinia_Civita_GNA_2019 Tarquinia_Civita_GNA_2019/Va_D__Topografia_Tarquinia/Posizionamento Tarquinia_Civita_GNA_2019/Va_D__Topografia_Tarquinia/Posizionamento

@ -0,0 +1,10 @@
{
"paging" : {
"offset" : 0,
"limit" : 1
},
"ordering" : {
"direction" : "ASCENDING",
"fields" : ["creationTime","nome"]
}
}

@ -0,0 +1,18 @@
{
"paging" : {
"offset" : 0,
"limit" : 1
},
"ordering" : {
"direction" : "DESCENDING",
"fields" : ["creationTime","nome"]
},
"filter" : {
"creationUser" : {$eq : "fabio.sinibaldi"}
},
"projection" : {
"nome" : 1
}
}

@ -0,0 +1,11 @@
{
"paging" : {
"offset" : 0,
"limit" : 1
},
"ordering" : {
"direction" : "DESCENDING",
"fields" : ["creationTime","nome"]
}
}

@ -0,0 +1,10 @@
{
"ordering" : {
"direction" : "DESCENDING",
"fields" : ["nome"]
},
"filter" : {"report.status" : {"$eq" : "WARNING"}},
"projection" : {"report.warningMessages" : 1}
}