Use cases coverage
This commit is contained in:
parent
93b3b9a9c0
commit
220e8f0354
7
pom.xml
7
pom.xml
|
@ -96,6 +96,13 @@
|
|||
<version>4.11</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Storage HUB -->
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>storagehub-client-library</artifactId>
|
||||
<version>[1.0.0,2.0.0-SNAPSHOT)</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Client for legacy -->
|
||||
<!-- jackson java time -->
|
||||
<dependency>
|
||||
|
|
|
@ -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<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;
|
||||
}
|
||||
};
|
||||
delegate.make(call);
|
||||
log.debug("UnPublished {} ",id);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
};
|
||||
return delegate.make(call);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
};
|
||||
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> T check(Response resp, Class<T> clazz) throws Exception {
|
||||
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)
|
||||
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<T> Iterator<T> checkCollection(Response resp, Class<T> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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<TempFile>());
|
||||
|
|
|
@ -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 <T> Iterator<T> readCollection(String jsonString, Class<T> clazz) throws IOException {
|
||||
return mapper.readerFor(clazz).readValues(jsonString);
|
||||
}
|
||||
|
||||
public static <T> Iterator<T> readCollection(InputStream is, Class<T> clazz) throws IOException {
|
||||
return mapper.readerFor(clazz).readValues(is);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()));
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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 {
|
|
@ -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();
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package org.gcube.application.geoportal.common.model;
|
||||
package org.gcube.application.geoportal.clients;
|
||||
|
||||
import java.util.Properties;
|
||||
|
|
@ -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+""));
|
||||
// }
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -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<String> 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);
|
||||
|
|
|
@ -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<Concessione> 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<LayerConcessione> piante=c.getPianteFineScavo();
|
||||
c.setPianteFineScavo(new ArrayList<LayerConcessione>());
|
||||
|
||||
List<UploadedImage> imgs=c.getImmaginiRappresentative();
|
||||
c.setImmaginiRappresentative(new ArrayList<UploadedImage>());
|
||||
|
||||
List<OtherContent> other=c.getGenericContent();
|
||||
c.setGenericContent(new ArrayList<OtherContent>());
|
||||
|
||||
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<piante.size();i++) {
|
||||
LayerConcessione l=piante.get(i);
|
||||
removeContent(l);
|
||||
manager.addPiantaFineScavo(l,
|
||||
fromPath(dir.toPath().toAbsolutePath()+File.separator+"pianta_"+i, storage));
|
||||
}
|
||||
|
||||
//Immagini Rappresentative
|
||||
for(int i=0; i<imgs.size();i++) {
|
||||
UploadedImage img=imgs.get(i);
|
||||
removeContent(img);
|
||||
manager.addImmagineRappresentativa(img,
|
||||
fromPath(dir.toPath().toAbsolutePath()+File.separator+"imgs_"+i, storage)[0]);
|
||||
}
|
||||
|
||||
//Other content
|
||||
// for(int i=0; i<other.size();i++) {
|
||||
// OtherContent otherContent=other.get(i);
|
||||
// removeContent(otherContent);
|
||||
// manager.a(otherContent,
|
||||
// fromPath(dir.toPath().toAbsolutePath()+File.separator+"imgs_"+i));
|
||||
// }
|
||||
|
||||
|
||||
// publish
|
||||
return manager.publish();
|
||||
}
|
||||
|
||||
private static TempFile[] fromPath(String path, StorageUtils storage) throws FileNotFoundException {
|
||||
Path baseDir= Paths.get(path);
|
||||
ArrayList<TempFile> 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<>());}
|
||||
|
||||
}
|
|
@ -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<TIME-MILLIS>
|
||||
*/
|
||||
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<Concessione> 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<c.getImmaginiRappresentative().size();i++)
|
||||
loadFiles(c.getImmaginiRappresentative().get(i), new File(currentFolder,"imgs_"+i),sgClient);
|
||||
|
||||
// Piante
|
||||
for(int i=0;i<c.getPianteFineScavo().size();i++)
|
||||
loadFiles(c.getPianteFineScavo().get(i), new File(currentFolder,"pianta_"+i),sgClient);
|
||||
|
||||
found.add(c);
|
||||
|
||||
|
||||
PrintWriter w=new PrintWriter(new File(currentFolder,c.getId()+".json"));
|
||||
w.append(Serialization.write(c));
|
||||
w.flush();
|
||||
w.close();
|
||||
|
||||
} catch (IOException e) {
|
||||
log.error("Unable to load {}",c.getId(),e);
|
||||
} catch (StorageHubException e) {
|
||||
log.error("Unable to load {}",c.getId(),e);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
System.out.println("Imported "+found.size()+" elements into "+dir.getAbsolutePath());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// NB baseDIR/conc_id/pos | pianta_i | imgs_i | other_i /
|
||||
|
||||
private static int loadFiles(AssociatedContent c, File directory, StorageHubClient sgHub) throws IOException, StorageHubException {
|
||||
int count=0;
|
||||
if (c == null) {
|
||||
log.warn("Content is null for path {}",directory.getAbsolutePath());
|
||||
} else if (c.getActualContent() == null) {
|
||||
log.warn("Content {} is empty for path {}",c.getId(),directory.getAbsolutePath());
|
||||
}else {
|
||||
for (PersistedContent content : c.getActualContent()) {
|
||||
if (content instanceof WorkspaceContent) {
|
||||
FileContainer item = sgHub.open(((WorkspaceContent) content).getStorageID()).asFile();
|
||||
WorkspaceContent wc = (WorkspaceContent) content;
|
||||
File dest = new File(directory, item.get().getName());
|
||||
dest.getParentFile().mkdirs();
|
||||
dest.createNewFile();
|
||||
IOUtils.copy(item.getPublicLink().openStream(), new FileOutputStream(dest));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
log.info("Put {} files into {} ", count, directory.getAbsolutePath());
|
||||
}
|
||||
return count;
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package org.gcube.application.geoportal.usecases;
|
||||
|
||||
import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI;
|
||||
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.AtomicLong;
|
||||
|
||||
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni;
|
||||
|
||||
public class RepublishAll {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
TokenSetter.set("/gcube/devsec/devVRE");
|
||||
|
||||
ConcessioniManagerI manager=statefulMongoConcessioni().build();
|
||||
|
||||
|
||||
ArrayList<String> 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()+"]");
|
||||
|
||||
}
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"id" : {$gt : 0}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"centroidLat" : 0
|
||||
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"creationUser" : {$ne : "fabio.sinibaldi"}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"report.status": {$eq : "PASSED"}
|
||||
}
|
Reference in New Issue