Edit FileSet features and utilities
This commit is contained in:
parent
220e8f0354
commit
27a326ea33
|
@ -193,7 +193,7 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
|
|||
|
||||
|
||||
@Override
|
||||
public Concessione registerFile(String id, AddSectionToConcessioneRequest request) throws Exception {
|
||||
public Concessione registerFileSet(String id, AddSectionToConcessioneRequest request) throws Exception {
|
||||
log.info("Registering {} in {}",request,id);
|
||||
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
|
||||
@Override
|
||||
|
@ -205,7 +205,24 @@ public class DefaultMongoConcessioni implements MongoConcessioni{
|
|||
}
|
||||
};
|
||||
Concessione toReturn = delegate.make(call);
|
||||
log.debug("Published {} ",toReturn);
|
||||
log.debug("Registered Fileset {} result is {} ",request,toReturn);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
};
|
||||
Concessione toReturn = delegate.make(call);
|
||||
log.debug("Cleaned path {} result {} ",path,toReturn);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.ArrayList;
|
|||
import javax.ws.rs.client.WebTarget;
|
||||
|
||||
import org.gcube.application.geoportal.client.DefaultMongoConcessioni;
|
||||
import org.gcube.application.geoportal.client.utils.FileSets;
|
||||
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.InputStreamDescriptor;
|
||||
|
@ -67,8 +68,8 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
|||
currentC=replace(currentC);
|
||||
|
||||
|
||||
currentC=super.registerFile(currentC.getMongo_id(),
|
||||
request(Paths.imgByIndex(currentC.getImmaginiRappresentative().size()-1),f));
|
||||
currentC=super.registerFileSet(currentC.getMongo_id(),
|
||||
FileSets.build(Paths.imgByIndex(currentC.getImmaginiRappresentative().size()-1),f).getTheRequest());
|
||||
return currentC;
|
||||
}
|
||||
|
||||
|
@ -80,8 +81,8 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
|||
currentC=replace(currentC);
|
||||
|
||||
|
||||
currentC=super.registerFile(currentC.getMongo_id(),
|
||||
request(Paths.piantaByIndex(currentC.getPianteFineScavo().size()-1),files));
|
||||
currentC=super.registerFileSet(currentC.getMongo_id(),
|
||||
FileSets.build(Paths.piantaByIndex(currentC.getPianteFineScavo().size()-1),files).getTheRequest());
|
||||
return currentC;
|
||||
}
|
||||
|
||||
|
@ -92,8 +93,8 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
|||
currentC=replace(currentC);
|
||||
|
||||
|
||||
currentC=super.registerFile(currentC.getMongo_id(),
|
||||
request(Paths.POSIZIONAMENTO,files));
|
||||
currentC=super.registerFileSet(currentC.getMongo_id(),
|
||||
FileSets.build(Paths.POSIZIONAMENTO,files).getTheRequest());
|
||||
return currentC;
|
||||
}
|
||||
|
||||
|
@ -104,8 +105,8 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
|||
currentC=replace(currentC);
|
||||
|
||||
|
||||
currentC=super.registerFile(currentC.getMongo_id(),
|
||||
request(Paths.RELAZIONE,f));
|
||||
currentC=super.registerFileSet(currentC.getMongo_id(),
|
||||
FileSets.build(Paths.RELAZIONE,f).getTheRequest());
|
||||
return currentC;
|
||||
}
|
||||
|
||||
|
@ -113,45 +114,22 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
|||
|
||||
@Override
|
||||
public Concessione addImmagineRappresentativa(UploadedImage toAdd, InputStreamDescriptor f) throws Exception {
|
||||
return addImmagineRappresentativa(toAdd,asTemp(f));
|
||||
return addImmagineRappresentativa(toAdd,FileSets.asTemp(storage,f));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Concessione addPiantaFineScavo(LayerConcessione toAdd, InputStreamDescriptor... files) throws Exception {
|
||||
return addPiantaFineScavo(toAdd, asTemp(files));
|
||||
return addPiantaFineScavo(toAdd, FileSets.asTemp(storage,files));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Concessione setPosizionamento(LayerConcessione toSet, InputStreamDescriptor... files) throws Exception {
|
||||
return setPosizionamento(toSet,asTemp(files));
|
||||
return setPosizionamento(toSet,FileSets.asTemp(storage,files));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Concessione setRelazioneScavo(RelazioneScavo toSet, InputStreamDescriptor f) throws Exception {
|
||||
return setRelazioneScavo(toSet,asTemp(f));
|
||||
return setRelazioneScavo(toSet,FileSets.asTemp(storage,f));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected static AddSectionToConcessioneRequest request(String path, TempFile...files) {
|
||||
AddSectionToConcessioneRequest req=new AddSectionToConcessioneRequest();
|
||||
req.setDestinationPath(path);
|
||||
req.setStreams(new ArrayList<TempFile>());
|
||||
for(TempFile f:files)
|
||||
req.getStreams().add(f);
|
||||
return req;
|
||||
}
|
||||
|
||||
protected TempFile asTemp(InputStreamDescriptor descriptor) throws RemoteBackendException, FileNotFoundException {
|
||||
return storage.putOntoStorage(descriptor.getStream(), descriptor.getFilename());
|
||||
}
|
||||
|
||||
protected TempFile[] asTemp(InputStreamDescriptor... descriptors) throws RemoteBackendException, FileNotFoundException {
|
||||
ArrayList<TempFile> toReturn=new ArrayList<TempFile>();
|
||||
for(InputStreamDescriptor desc:descriptors)
|
||||
toReturn.add(storage.putOntoStorage(desc.getStream(), desc.getFilename()));
|
||||
return toReturn.toArray(new TempFile[toReturn.size()]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
package org.gcube.application.geoportal.client.utils;
|
||||
|
||||
import org.gcube.application.geoportal.common.model.legacy.InputStreamDescriptor;
|
||||
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.contentmanagement.blobstorage.transport.backend.RemoteBackendException;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
public class FileSets {
|
||||
|
||||
public static class RequestBuilder {
|
||||
AddSectionToConcessioneRequest theRequest=new AddSectionToConcessioneRequest();
|
||||
|
||||
public RequestBuilder add(TempFile... f){
|
||||
if(theRequest.getStreams()==null)
|
||||
theRequest.setStreams(new ArrayList<TempFile>());
|
||||
for(TempFile temp: f )
|
||||
theRequest.getStreams().add(temp);
|
||||
return this;
|
||||
}
|
||||
|
||||
public RequestBuilder add(TempFile f){
|
||||
if(theRequest.getStreams()==null)
|
||||
theRequest.setStreams(new ArrayList<TempFile>());
|
||||
theRequest.getStreams().add(f);
|
||||
return this;
|
||||
}
|
||||
|
||||
public RequestBuilder setPath(String path){
|
||||
theRequest.setDestinationPath(path);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public AddSectionToConcessioneRequest getTheRequest(){return theRequest;}
|
||||
}
|
||||
|
||||
|
||||
public static RequestBuilder build(String path) {
|
||||
return new RequestBuilder().setPath(path);
|
||||
}
|
||||
|
||||
public static RequestBuilder build(String path, TempFile...files) {
|
||||
return new RequestBuilder().setPath(path).add(files);
|
||||
}
|
||||
|
||||
public static TempFile asTemp(StorageUtils storage,InputStreamDescriptor descriptor) throws RemoteBackendException, FileNotFoundException {
|
||||
return storage.putOntoStorage(descriptor.getStream(), descriptor.getFilename());
|
||||
}
|
||||
|
||||
public static TempFile[] asTemp(StorageUtils storage,InputStreamDescriptor... descriptors) throws RemoteBackendException, FileNotFoundException {
|
||||
ArrayList<TempFile> toReturn=new ArrayList<TempFile>();
|
||||
for(InputStreamDescriptor desc:descriptors)
|
||||
toReturn.add(storage.putOntoStorage(desc.getStream(), desc.getFilename()));
|
||||
return toReturn.toArray(new TempFile[toReturn.size()]);
|
||||
}
|
||||
}
|
|
@ -1,8 +1,7 @@
|
|||
package org.gcube.application.geoportal.clients;
|
||||
|
||||
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
|
@ -63,7 +62,7 @@ public class StatefulClientTests extends BasicVreTests{
|
|||
return manager.publish();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testRegisterNew() throws RemoteBackendException, FileNotFoundException, Exception {
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
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 static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
@ -12,6 +11,7 @@ import java.util.Collections;
|
|||
import java.util.Iterator;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI;
|
||||
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;
|
||||
|
@ -67,14 +67,19 @@ public class StatelessClientTests extends BasicVreTests{
|
|||
Collections.singletonList(new StorageUtils().putOntoStorage(
|
||||
new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")), "relazione.pdf")));
|
||||
|
||||
c= client.registerFile(c.getMongo_id(), request);
|
||||
c= client.registerFileSet(c.getMongo_id(), request);
|
||||
|
||||
assertNotNull(c.getRelazioneScavo().getActualContent());
|
||||
assertNotNull(c.getRelazioneScavo().getActualContent().get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void publish() throws Exception {
|
||||
public void testPublsh() throws Exception {
|
||||
publish(true);
|
||||
}
|
||||
|
||||
|
||||
public Concessione publish(Boolean verify) throws Exception {
|
||||
Concessione c= client.createNew(TestModel.prepareConcessione());
|
||||
|
||||
String mongoId=c.getMongo_id();
|
||||
|
@ -84,14 +89,14 @@ public class StatelessClientTests extends BasicVreTests{
|
|||
Collections.singletonList(new StorageUtils().putOntoStorage(
|
||||
new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")), "relazione.pdf")));
|
||||
|
||||
client.registerFile(mongoId, request);
|
||||
client.registerFileSet(mongoId, request);
|
||||
|
||||
request=
|
||||
new AddSectionToConcessioneRequest(Paths.imgByIndex(0),
|
||||
Collections.singletonList(new StorageUtils().putOntoStorage(
|
||||
new FileInputStream(Files.getFileFromResources("concessioni/immagine.png")), "immagine.png")));
|
||||
|
||||
client.registerFile(mongoId, request);
|
||||
client.registerFileSet(mongoId, request);
|
||||
|
||||
|
||||
request=
|
||||
|
@ -99,25 +104,28 @@ public class StatelessClientTests extends BasicVreTests{
|
|||
Collections.singletonList(new StorageUtils().putOntoStorage(
|
||||
new FileInputStream(Files.getFileFromResources("concessioni/pos.shp")), "pos.shp")));
|
||||
|
||||
client.registerFile(mongoId, request);
|
||||
client.registerFileSet(mongoId, request);
|
||||
|
||||
request=
|
||||
new AddSectionToConcessioneRequest(Paths.piantaByIndex(0),
|
||||
Collections.singletonList(new StorageUtils().putOntoStorage(
|
||||
new FileInputStream(Files.getFileFromResources("concessioni/pianta.shp")), "pianta.shp")));
|
||||
|
||||
client.registerFile(mongoId, request);
|
||||
client.registerFileSet(mongoId, request);
|
||||
|
||||
|
||||
c=client.publish(mongoId);
|
||||
|
||||
assertTrue(c.getReport().getStatus().equals(ValidationStatus.PASSED));
|
||||
|
||||
if(verify)
|
||||
assertTrue(c.getReport().getStatus().equals(ValidationStatus.PASSED));
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getConfiguration(){
|
||||
|
||||
public void getConfiguration() throws Exception {
|
||||
System.out.println(client.getCurrentConfiguration());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -128,7 +136,24 @@ public class StatelessClientTests extends BasicVreTests{
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCleanFileSet() throws Exception {
|
||||
|
||||
Concessione c=publish(false);
|
||||
client.unpublish(c.getMongo_id());
|
||||
|
||||
//Precheck to be sure
|
||||
assertFalse(c.getPosizionamentoScavo().getActualContent().isEmpty());
|
||||
assertFalse(c.getPianteFineScavo().get(0).getActualContent().isEmpty());
|
||||
|
||||
//Clear pos
|
||||
c=client.cleanFileSet(c.getMongo_id(),Paths.POSIZIONAMENTO);
|
||||
assertTrue(c.getPosizionamentoScavo().getActualContent().isEmpty());
|
||||
|
||||
//Clear pianta [0]
|
||||
c=client.cleanFileSet(c.getMongo_id(),Paths.piantaByIndex(0));
|
||||
assertTrue(c.getPianteFineScavo().get(0).getActualContent().isEmpty());
|
||||
}
|
||||
|
||||
|
||||
// UTILS
|
||||
|
|
|
@ -5,6 +5,7 @@ import org.gcube.application.geoportal.clients.TokenSetter;
|
|||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni;
|
||||
|
@ -24,7 +25,13 @@ public class ClearConcessioni {
|
|||
AtomicLong count=new AtomicLong(0);
|
||||
AtomicLong nullCount=new AtomicLong(0);
|
||||
AtomicLong errCount=new AtomicLong(0);
|
||||
manager.getList().forEachRemaining((Concessione c)->{
|
||||
|
||||
|
||||
Iterator<Concessione> it=null;
|
||||
// it=manager.getList();
|
||||
it=manager.search("{\"centroidLat\" : 0}");
|
||||
|
||||
it.forEachRemaining((Concessione c)->{
|
||||
try{
|
||||
String currentId=c.getMongo_id();
|
||||
if(currentId==null) {
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
package org.gcube.application.geoportal.usecases;
|
||||
|
||||
import org.gcube.application.geoportal.client.utils.FileSets;
|
||||
import org.gcube.application.geoportal.clients.TokenSetter;
|
||||
import org.gcube.application.geoportal.common.model.legacy.AssociatedContent;
|
||||
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.rest.AddSectionToConcessioneRequest;
|
||||
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
||||
import org.gcube.application.geoportal.common.utils.StorageUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni;
|
||||
|
||||
public class EditFileSet {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
// params
|
||||
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";
|
||||
|
||||
//Check params
|
||||
Boolean publish = Boolean.parseBoolean(publishOption);
|
||||
File sourceFolder=new File(folderPath);
|
||||
if(!sourceFolder.canRead()) throw new Exception("Cannot read from "+folderPath);
|
||||
|
||||
System.out.println("!!!!!!! SETTING CONTEXT "+context);
|
||||
TokenSetter.set(context);
|
||||
|
||||
|
||||
//Prepare Fileset
|
||||
System.out.println("Preparing request..");
|
||||
StorageUtils storage=new StorageUtils();
|
||||
AddSectionToConcessioneRequest request= prepareRequest(storage,toEditPath,sourceFolder);
|
||||
|
||||
MongoConcessioni client=mongoConcessioni().build();
|
||||
|
||||
// Unpublish
|
||||
System.out.println("Unpublishing "+toUpdateId);
|
||||
client.unpublish(toUpdateId);
|
||||
|
||||
// update Fileset
|
||||
System.out.println("Removing old fileset.. ");
|
||||
client.cleanFileSet(toUpdateId,toEditPath);
|
||||
|
||||
System.out.println("Sending new Fileset ..");
|
||||
Concessione result= client.registerFileSet(toUpdateId,request);
|
||||
|
||||
if(publish)
|
||||
result = client.publish(toUpdateId);
|
||||
|
||||
System.out.println("Done ");
|
||||
System.out.println("Result : "+result);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
Reference in New Issue