Use cases coverage

This commit is contained in:
Fabio Sinibaldi 2021-09-02 18:11:36 +02:00
parent 93b3b9a9c0
commit 220e8f0354
24 changed files with 576 additions and 31 deletions

View File

@ -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>

View File

@ -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;
}
}

View File

@ -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>());

View File

@ -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);
}
}

View File

@ -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()));
}
}

View File

@ -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 {

View File

@ -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();
}

View File

@ -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();
}
}

View File

@ -1,4 +1,4 @@
package org.gcube.application.geoportal.common.model;
package org.gcube.application.geoportal.clients;
import java.util.Properties;

View File

@ -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+""));
// }
}

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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);

View File

@ -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<>());}
}

View File

@ -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;
};
}

View File

@ -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()+"]");
}
}

View File

@ -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

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1,3 @@
{
"id" : {$gt : 0}
}

View File

@ -0,0 +1,4 @@
{
"centroidLat" : 0
}

View File

@ -0,0 +1,3 @@
{
"creationUser" : {$ne : "fabio.sinibaldi"}
}

View File

@ -0,0 +1,3 @@
{
"report.status": {$eq : "PASSED"}
}