Configuration
This commit is contained in:
parent
6afc72b304
commit
b827ba2f13
|
@ -14,45 +14,25 @@ import java.time.temporal.TemporalAmount;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
/**
|
||||||
public abstract class AbstractScopedMap<T> implements Engine<T>{
|
* TTL Map Context -> T
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public abstract class AbstractScopedMap<T> extends TimedMap<String,T> implements Engine<T>{
|
||||||
|
|
||||||
// scope-> object
|
public AbstractScopedMap(@NonNull String name) {
|
||||||
private ConcurrentHashMap<String, TTLObject<T>> scopeMap=new ConcurrentHashMap<String,TTLObject<T>>();
|
super(name);
|
||||||
|
|
||||||
@Setter
|
|
||||||
private TemporalAmount TTL=null;
|
|
||||||
|
|
||||||
@NonNull
|
|
||||||
private String name;
|
|
||||||
@Synchronized
|
|
||||||
public T getObject() throws ConfigurationException {
|
|
||||||
String currentScope= ContextUtils.getCurrentScope();
|
|
||||||
log.debug(name+" : obtaining object for context "+currentScope);
|
|
||||||
|
|
||||||
TTLObject<T> found=scopeMap.get(currentScope);
|
|
||||||
|
|
||||||
if(found== null){
|
|
||||||
log.debug(name+" : init object for context "+currentScope);
|
|
||||||
TTLObject<T> toPut=new TTLObject<T>(LocalDateTime.now(),retrieveObject());
|
|
||||||
scopeMap.put(currentScope, toPut);
|
|
||||||
return toPut.getTheObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(TTL!=null) {
|
|
||||||
if(found.getCreationTime().plus(TTL).isBefore(LocalDateTime.now())) {
|
|
||||||
log.debug(name+" : elapsed TTL, disposing..");
|
|
||||||
dispose(found.getTheObject());
|
|
||||||
TTLObject<T> newer=new TTLObject<T>(LocalDateTime.now(),retrieveObject());
|
|
||||||
scopeMap.put(currentScope, newer);
|
|
||||||
found=scopeMap.get(currentScope);
|
|
||||||
}
|
|
||||||
}else {log.debug(name+" : TTL is null, never disposing..");}
|
|
||||||
log.debug(name+"Returning {} ",found);
|
|
||||||
return found.getTheObject();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T getObject() throws ConfigurationException {
|
||||||
|
return get(ContextUtils.getCurrentScope());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
log.warn(name + ": shutting down");
|
log.warn(name + ": shutting down");
|
||||||
|
@ -60,15 +40,9 @@ public abstract class AbstractScopedMap<T> implements Engine<T>{
|
||||||
try{if(o!=null&&o.getTheObject()!=null)
|
try{if(o!=null&&o.getTheObject()!=null)
|
||||||
dispose(o.getTheObject());
|
dispose(o.getTheObject());
|
||||||
}catch(Throwable t) {
|
}catch(Throwable t) {
|
||||||
log.warn(name +": unable to dispose ",t);
|
log.warn(name +": unable to dispose ",t);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract T retrieveObject() throws ConfigurationException;
|
|
||||||
|
|
||||||
protected void dispose(T toDispose){};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init() {}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
package org.gcube.application.cms.caches;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
|
||||||
|
public interface Cache<K,V>{
|
||||||
|
|
||||||
|
public V get(K key) throws ConfigurationException;
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package org.gcube.application.cms.caches;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NonNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.common.utils.ContextUtils;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.temporal.TemporalAmount;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public abstract class TimedMap <K,V> implements Cache<K,V> {
|
||||||
|
|
||||||
|
protected ConcurrentHashMap<K, TTLObject<V>> scopeMap=new ConcurrentHashMap<K,TTLObject<V>>();
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
@Getter
|
||||||
|
protected TemporalAmount TTL=null;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
protected String name;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public V get(K key) throws ConfigurationException {
|
||||||
|
log.trace(name+" : obtaining object by "+key);
|
||||||
|
|
||||||
|
TTLObject<V> found=scopeMap.get(key);
|
||||||
|
|
||||||
|
if(found== null){
|
||||||
|
log.debug(name+" : init object for key "+key);
|
||||||
|
TTLObject<V> toPut=new TTLObject<V>(LocalDateTime.now(),retrieveObject(key));
|
||||||
|
scopeMap.put(key, toPut);
|
||||||
|
return toPut.getTheObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(getTTL()!=null) {
|
||||||
|
if(found.getCreationTime().plus(getTTL()).isBefore(LocalDateTime.now())) {
|
||||||
|
log.debug(name+" : elapsed TTL, disposing..");
|
||||||
|
dispose(found.getTheObject());
|
||||||
|
TTLObject<V> newer=new TTLObject<V>(LocalDateTime.now(),retrieveObject(key));
|
||||||
|
scopeMap.put(key, newer);
|
||||||
|
found=scopeMap.get(key);
|
||||||
|
}
|
||||||
|
}else {log.debug(name+" : TTL is null, never disposing..");}
|
||||||
|
log.debug(name+"Returning {} ",found);
|
||||||
|
return found.getTheObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract V retrieveObject(K key) throws ConfigurationException;
|
||||||
|
protected void dispose(V toDispose){};
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package org.gcube.application.cms.implementations;
|
||||||
|
|
||||||
|
|
||||||
import lombok.Synchronized;
|
import lombok.Synchronized;
|
||||||
|
import org.gcube.application.cms.caches.Cache;
|
||||||
import org.gcube.application.cms.caches.Engine;
|
import org.gcube.application.cms.caches.Engine;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
|
||||||
|
@ -24,13 +25,13 @@ public class ImplementationProvider {
|
||||||
return (T) implementationsRegistry.get(clazz).getObject();
|
return (T) implementationsRegistry.get(clazz).getObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private ConcurrentHashMap<Class,Engine> implementationsRegistry=new ConcurrentHashMap<>();
|
private ConcurrentHashMap<Class,Engine> implementationsRegistry=new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public <T> void setEngine(Engine<T> engine, Class<T> clazz){
|
public <T> void setEngine(Engine<T> engine, Class<T> clazz){
|
||||||
implementationsRegistry.put(clazz,engine);
|
implementationsRegistry.put(clazz,engine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private ImplementationProvider(){
|
private ImplementationProvider(){
|
||||||
//Defaults
|
//Defaults
|
||||||
setEngine(new DefaultISProvider(),ISInterface.class);
|
setEngine(new DefaultISProvider(),ISInterface.class);
|
||||||
|
|
|
@ -7,7 +7,7 @@ import org.gcube.application.cms.plugins.reports.EventExecutionReport;
|
||||||
import org.gcube.application.cms.plugins.reports.StepExecutionReport;
|
import org.gcube.application.cms.plugins.reports.StepExecutionReport;
|
||||||
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@ import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||||
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
||||||
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.document.spatial.SpatialReference;
|
|
||||||
import org.gcube.application.geoportal.common.model.document.temporal.TemporalReference;
|
import org.gcube.application.geoportal.common.model.document.temporal.TemporalReference;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|
|
@ -12,7 +12,7 @@ import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.MaterializationRequest;
|
import org.gcube.application.cms.plugins.requests.MaterializationRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
|
||||||
public class DummyPlugin implements LifecycleManager, IndexerPluginInterface, MaterializationPlugin {
|
public class DummyPlugin implements LifecycleManager, IndexerPluginInterface, MaterializationPlugin {
|
||||||
|
|
|
@ -27,7 +27,7 @@ import org.gcube.application.geoportal.common.model.document.filesets.Registered
|
||||||
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
||||||
import org.gcube.application.geoportal.common.model.document.lifecycle.TriggeredEvents;
|
import org.gcube.application.geoportal.common.model.document.lifecycle.TriggeredEvents;
|
||||||
import org.gcube.application.geoportal.common.model.legacy.report.ConstraintCheck;
|
import org.gcube.application.geoportal.common.model.legacy.report.ConstraintCheck;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.common.utils.ContextUtils;
|
import org.gcube.application.geoportal.common.utils.ContextUtils;
|
||||||
import org.gcube.application.geoportal.common.utils.Files;
|
import org.gcube.application.geoportal.common.utils.Files;
|
||||||
|
|
|
@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.geoportal.client.utils.Serialization;
|
import org.gcube.application.geoportal.client.utils.Serialization;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
|
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
|
||||||
|
@ -18,7 +18,6 @@ import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||||
import javax.ws.rs.client.Entity;
|
import javax.ws.rs.client.Entity;
|
||||||
import javax.ws.rs.client.WebTarget;
|
import javax.ws.rs.client.WebTarget;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.rmi.RemoteException;
|
import java.rmi.RemoteException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
import org.gcube.application.geoportal.client.utils.Serialization;
|
import org.gcube.application.geoportal.client.utils.Serialization;
|
||||||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||||
import org.gcube.application.geoportal.common.model.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.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
||||||
|
|
|
@ -2,7 +2,7 @@ package org.gcube.application.geoportal.client;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||||
import org.gcube.application.geoportal.common.model.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.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@ public class ResponseCommons {
|
||||||
String resString=resp.readEntity(String.class);
|
String resString=resp.readEntity(String.class);
|
||||||
if(resp.getStatus()<200||resp.getStatus()>=300)
|
if(resp.getStatus()<200||resp.getStatus()>=300)
|
||||||
throw new RemoteException("RESP STATUS IS "+resp.getStatus()+". Message : "+resString);
|
throw new RemoteException("RESP STATUS IS "+resp.getStatus()+". Message : "+resString);
|
||||||
|
if(clazz.equals(String.class))
|
||||||
|
return (R) resString;
|
||||||
if(clazz!=null)
|
if(clazz!=null)
|
||||||
return Serialization.read(resString, clazz);
|
return Serialization.read(resString, clazz);
|
||||||
else return null;
|
else return null;
|
||||||
|
|
|
@ -2,7 +2,7 @@ package org.gcube.application.geoportal.clients;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.client.DefaultDocumentsClient;
|
import org.gcube.application.geoportal.client.DefaultDocumentsClient;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.rest.Projects;
|
import org.gcube.application.geoportal.common.rest.Projects;
|
||||||
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package org.gcube.application.geoportal.clients;
|
package org.gcube.application.geoportal.clients;
|
||||||
|
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
|
import org.gcube.application.cms.tests.TokenSetter;
|
||||||
|
import org.gcube.application.geoportal.client.UseCaseDescriptors;
|
||||||
import org.gcube.application.geoportal.client.utils.Queries;
|
import org.gcube.application.geoportal.client.utils.Queries;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI;
|
import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI;
|
||||||
|
@ -14,18 +16,20 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||||
import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.useCaseDescriptors;
|
import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.useCaseDescriptors;
|
||||||
import static org.junit.Assume.assumeTrue;
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
public class UCDTests {
|
public class UCDTests{
|
||||||
|
|
||||||
UseCaseDescriptorsI client =null;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void getClient(){
|
|
||||||
|
public UseCaseDescriptorsI getClient(){
|
||||||
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
||||||
client =useCaseDescriptors().build();
|
TokenSetter.set(GCubeTest.getContext());
|
||||||
|
return useCaseDescriptors().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void query() throws Exception {
|
public void query() throws Exception {
|
||||||
|
UseCaseDescriptorsI client =getClient();
|
||||||
QueryRequest request = new QueryRequest();
|
QueryRequest request = new QueryRequest();
|
||||||
// All
|
// All
|
||||||
AtomicLong counter = new AtomicLong(0l);
|
AtomicLong counter = new AtomicLong(0l);
|
||||||
|
@ -38,19 +42,26 @@ public class UCDTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getById() throws Exception {
|
public void getByIdAll() throws Exception {
|
||||||
UseCaseDescriptorsI client = useCaseDescriptors().build();
|
UseCaseDescriptorsI client =getClient();
|
||||||
|
|
||||||
QueryRequest request = new QueryRequest();
|
QueryRequest request = new QueryRequest();
|
||||||
// All
|
// All
|
||||||
|
|
||||||
client.query(request).forEachRemaining(u -> {
|
client.query(request).forEachRemaining(u -> {
|
||||||
try {
|
try {
|
||||||
client.getById(u.getId());
|
System.out.println("Obtained "+client.getById(u.getId()).getId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace(System.err);
|
e.printStackTrace(System.err);
|
||||||
Assert.fail("Unable to get "+u.getId());
|
Assert.fail("Unable to get "+u.getId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getById() throws Exception {
|
||||||
|
UseCaseDescriptorsI client =getClient();
|
||||||
|
|
||||||
|
System.out.println(client.getById("profiledConcessioni"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
package org.gcube.application.geoportal.common.model;
|
|
||||||
|
|
||||||
public class BasicJSONObject {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package org.gcube.application.geoportal.common.model.configuration;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import org.bson.Document;
|
||||||
|
|
||||||
|
public class Archive extends Document {
|
||||||
|
public static final String TYPE = "_type";
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public String getType() {
|
||||||
|
return super.getString(TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Archive() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public Archive(String type) {
|
||||||
|
this.put(TYPE, type);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package org.gcube.application.geoportal.common.model.configuration;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@XmlRootElement
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Configuration{
|
||||||
|
|
||||||
|
public static final String PROFILE_ID="profile_id";
|
||||||
|
public static final String CONTEXT = "context";
|
||||||
|
public static final String LAST_UPDATED_TIME = "last_updated_time";
|
||||||
|
|
||||||
|
public static final String INDEXES = "indexes";
|
||||||
|
public static final String ARCHIVES = "archives";
|
||||||
|
|
||||||
|
@JsonProperty(PROFILE_ID)
|
||||||
|
private String profileId;
|
||||||
|
@JsonProperty(CONTEXT)
|
||||||
|
private String context;
|
||||||
|
@JsonProperty(LAST_UPDATED_TIME)
|
||||||
|
private LocalDateTime lastUpdatedTime;
|
||||||
|
|
||||||
|
@JsonProperty(INDEXES)
|
||||||
|
private List<Index> indexes;
|
||||||
|
@JsonProperty(ARCHIVES)
|
||||||
|
private List<Archive> archives;
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,22 @@
|
||||||
package org.gcube.application.geoportal.common.model.configuration;
|
package org.gcube.application.geoportal.common.model.configuration;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
|
|
||||||
public class Index extends Document {
|
public class Index extends Document {
|
||||||
|
public static final String TYPE = "_type";
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public String getType() {
|
||||||
|
return super.getString(TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Index() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public Index(String type) {
|
||||||
|
this.put(TYPE, type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ import lombok.*;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.geoportal.common.model.document.accounting.PublicationInfo;
|
import org.gcube.application.geoportal.common.model.document.accounting.PublicationInfo;
|
||||||
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
||||||
import org.gcube.application.geoportal.common.model.document.spatial.SpatialReference;
|
|
||||||
import org.gcube.application.geoportal.common.model.document.temporal.TemporalReference;
|
import org.gcube.application.geoportal.common.model.document.temporal.TemporalReference;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
package org.gcube.application.geoportal.common.model.document.spatial;
|
|
||||||
|
|
||||||
import org.bson.Document;
|
|
||||||
|
|
||||||
public class SpatialReference extends Document {
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
package org.gcube.application.geoportal.common.model.rest;
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import org.bson.Document;
|
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XmlRootElement
|
|
||||||
@Data
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class Configuration{
|
|
||||||
|
|
||||||
public class Index extends Document {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Archive extends Document {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String PROFILE_ID="profile_id";
|
|
||||||
public static String CONTEXT = "context";
|
|
||||||
public static String LAST_UPDATED_TIME = "";
|
|
||||||
|
|
||||||
public static String INDEXES = "indexes";
|
|
||||||
public static String ARCHIVES = "archives";
|
|
||||||
|
|
||||||
|
|
||||||
private String profile_id;
|
|
||||||
private String context;
|
|
||||||
private LocalDateTime lastUpdatedTime;
|
|
||||||
|
|
||||||
private List<Index> indexes;
|
|
||||||
private List<Archive> archives;
|
|
||||||
|
|
||||||
}
|
|
|
@ -2,7 +2,7 @@ package org.gcube.application.geoportal.common.rest;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||||
import org.gcube.application.geoportal.common.model.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.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
|
@ -2,7 +2,7 @@ package org.gcube.application.geoportal.common.rest;
|
||||||
|
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
|
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
|
||||||
|
|
|
@ -11,8 +11,8 @@ public class GCubeTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
testContext = "/pred4s/preprod/preVRE";
|
//testContext = "/pred4s/preprod/preVRE";
|
||||||
// testContext = "/gcube/devsec/devVRE";
|
testContext = "/gcube/devsec/devVRE";
|
||||||
|
|
||||||
|
|
||||||
System.out.println("TEST CONTEXT = "+testContext);
|
System.out.println("TEST CONTEXT = "+testContext);
|
||||||
|
|
|
@ -44,6 +44,7 @@ public class GeoPortalService extends ResourceConfig{
|
||||||
ImplementationProvider.get().setEngine(new PluginManager(), PluginManager.PluginMap.class);
|
ImplementationProvider.get().setEngine(new PluginManager(), PluginManager.PluginMap.class);
|
||||||
ImplementationProvider.get().setEngine(new StorageHubProvider(), StorageHubClient.class);
|
ImplementationProvider.get().setEngine(new StorageHubProvider(), StorageHubClient.class);
|
||||||
ImplementationProvider.get().setEngine(new UCDManager(),UCDManagerI.class);
|
ImplementationProvider.get().setEngine(new UCDManager(),UCDManagerI.class);
|
||||||
|
ImplementationProvider.get().setEngine(new ConfigurationCache(), ConfigurationCache.ConfigurationMap.class);
|
||||||
|
|
||||||
|
|
||||||
JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
|
JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.gcube.application.geoportal.service.engine;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.gcube.application.cms.implementations.ImplementationProvider;
|
import org.gcube.application.cms.implementations.ImplementationProvider;
|
||||||
|
import org.gcube.application.geoportal.common.model.configuration.Archive;
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
||||||
import org.gcube.application.geoportal.common.model.legacy.WorkspaceContent;
|
import org.gcube.application.geoportal.common.model.legacy.WorkspaceContent;
|
||||||
import org.gcube.application.geoportal.common.utils.Files;
|
import org.gcube.application.geoportal.common.utils.Files;
|
||||||
|
@ -51,6 +52,11 @@ public class WorkspaceManager {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Archive getConfiguration(){
|
||||||
|
Archive toReturn = new Archive("W-STORAGE");
|
||||||
|
toReturn.put("folder_id",appBase.getId());
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
|
|
||||||
public WorkspaceManager() throws ConfigurationException, StorageHubException {
|
public WorkspaceManager() throws ConfigurationException, StorageHubException {
|
||||||
sgClient= ImplementationProvider.get().getEngineByManagedClass(StorageHubClient.class);
|
sgClient= ImplementationProvider.get().getEngineByManagedClass(StorageHubClient.class);
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
package org.gcube.application.geoportal.service.engine.cache;
|
|
||||||
|
|
||||||
public class Cache {
|
|
||||||
|
|
||||||
public Cache() {
|
|
||||||
// TODO Auto-generated constructor stub
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -14,7 +14,7 @@ import org.gcube.application.cms.plugins.reports.InitializationReport;
|
||||||
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
||||||
import org.gcube.application.cms.plugins.model.ComparableVersion;
|
import org.gcube.application.cms.plugins.model.ComparableVersion;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
|
@ -5,7 +5,7 @@ import org.bson.Document;
|
||||||
import org.gcube.application.cms.plugins.faults.EventException;
|
import org.gcube.application.cms.plugins.faults.EventException;
|
||||||
import org.gcube.application.cms.plugins.faults.StepException;
|
import org.gcube.application.cms.plugins.faults.StepException;
|
||||||
import org.gcube.application.geoportal.common.faults.StorageException;
|
import org.gcube.application.geoportal.common.faults.StorageException;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.gcube.application.geoportal.service.engine.mongo;
|
package org.gcube.application.geoportal.service.engine.mongo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.mongodb.client.MongoCollection;
|
||||||
import com.mongodb.client.MongoDatabase;
|
import com.mongodb.client.MongoDatabase;
|
||||||
import com.vdurmont.semver4j.Semver;
|
import com.vdurmont.semver4j.Semver;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
@ -17,6 +18,7 @@ import org.gcube.application.cms.plugins.reports.StepExecutionReport;
|
||||||
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.EventExecutionRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.StepExecutionRequest;
|
||||||
import org.gcube.application.geoportal.common.faults.StorageException;
|
import org.gcube.application.geoportal.common.faults.StorageException;
|
||||||
|
import org.gcube.application.geoportal.common.model.configuration.Archive;
|
||||||
import org.gcube.application.geoportal.common.model.document.*;
|
import org.gcube.application.geoportal.common.model.document.*;
|
||||||
import org.gcube.application.geoportal.common.model.document.access.Access;
|
import org.gcube.application.geoportal.common.model.document.access.Access;
|
||||||
import org.gcube.application.geoportal.common.model.document.access.AccessPolicy;
|
import org.gcube.application.geoportal.common.model.document.access.AccessPolicy;
|
||||||
|
@ -25,22 +27,21 @@ import org.gcube.application.geoportal.common.model.document.accounting.Publicat
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
|
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
|
||||||
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
||||||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.Field;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.Field;
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.TempFile;
|
import org.gcube.application.geoportal.common.model.rest.TempFile;
|
||||||
import org.gcube.application.geoportal.common.model.JSONPathWrapper;
|
import org.gcube.application.geoportal.common.model.JSONPathWrapper;
|
||||||
|
import org.gcube.application.geoportal.common.utils.ContextUtils;
|
||||||
import org.gcube.application.geoportal.common.utils.StorageUtils;
|
import org.gcube.application.geoportal.common.utils.StorageUtils;
|
||||||
import org.gcube.application.cms.implementations.ImplementationProvider;
|
import org.gcube.application.cms.implementations.ImplementationProvider;
|
||||||
import org.gcube.application.geoportal.service.engine.WorkspaceManager;
|
import org.gcube.application.geoportal.service.engine.WorkspaceManager;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.service.engine.providers.PluginManager;
|
import org.gcube.application.geoportal.service.engine.providers.PluginManager;
|
||||||
import org.gcube.application.geoportal.service.engine.providers.ProfileMapCache;
|
import org.gcube.application.geoportal.service.engine.providers.ProfileMapCache;
|
||||||
import org.gcube.application.geoportal.service.engine.providers.UCDManager;
|
|
||||||
import org.gcube.application.geoportal.service.model.internal.faults.DeletionException;
|
import org.gcube.application.geoportal.service.model.internal.faults.DeletionException;
|
||||||
import org.gcube.application.cms.serialization.Serialization;
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
import org.gcube.application.geoportal.service.model.internal.faults.RegistrationException;
|
import org.gcube.application.geoportal.service.model.internal.faults.RegistrationException;
|
||||||
|
@ -54,6 +55,7 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.security.InvalidParameterException;
|
import java.security.InvalidParameterException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
@ -392,7 +394,29 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
||||||
@Override
|
@Override
|
||||||
public Configuration getConfiguration() throws ConfigurationException {
|
public Configuration getConfiguration() throws ConfigurationException {
|
||||||
log.debug("Asking configuration for {} in {} ", useCaseDescriptor.getId(), UserUtils.getCurrent().getContext());
|
log.debug("Asking configuration for {} in {} ", useCaseDescriptor.getId(), UserUtils.getCurrent().getContext());
|
||||||
Configuration toReturn= getManager().getCurrentConfiguration();
|
Configuration toReturn= new Configuration();
|
||||||
|
List<Archive> archives = new ArrayList<>();
|
||||||
|
// Set Basic Info
|
||||||
|
toReturn.setArchives(archives);
|
||||||
|
toReturn.setProfileId(this.getUseCaseDescriptor().getId());
|
||||||
|
toReturn.setContext(ContextUtils.getCurrentScope());
|
||||||
|
toReturn.setLastUpdatedTime(LocalDateTime.now());
|
||||||
|
|
||||||
|
|
||||||
|
// Add Mongo Info
|
||||||
|
Archive mongoArchive = new Archive("DOCUMENT-STORE-COLLECTION");
|
||||||
|
MongoCollection coll=getDatabase().getCollection(getCollectionName());
|
||||||
|
mongoArchive.put("count",coll.count());
|
||||||
|
mongoArchive.put("collection_name",getCollectionName());
|
||||||
|
archives.add(mongoArchive);
|
||||||
|
|
||||||
|
// Set WS Info
|
||||||
|
try {
|
||||||
|
archives.add(new WorkspaceManager().getConfiguration());
|
||||||
|
}catch (StorageHubException e) {
|
||||||
|
throw new ConfigurationException("Unable to get WS Configuration",e);
|
||||||
|
}
|
||||||
|
|
||||||
log.debug("Returning current configuration {}",toReturn);
|
log.debug("Returning current configuration {}",toReturn);
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
package org.gcube.application.geoportal.service.engine.providers;
|
||||||
|
|
||||||
|
import jdk.nashorn.internal.runtime.regexp.joni.Config;
|
||||||
|
import lombok.NonNull;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.gcube.application.cms.caches.AbstractScopedMap;
|
||||||
|
import org.gcube.application.cms.caches.Cache;
|
||||||
|
import org.gcube.application.cms.caches.TimedMap;
|
||||||
|
import org.gcube.application.cms.implementations.ImplementationProvider;
|
||||||
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.service.engine.mongo.ProfiledMongoManager;
|
||||||
|
import org.gcube.application.geoportal.service.model.internal.faults.RegistrationException;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.time.temporal.TemporalAmount;
|
||||||
|
import java.time.temporal.TemporalUnit;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class ConfigurationCache extends AbstractScopedMap<ConfigurationCache.ConfigurationMap> {
|
||||||
|
|
||||||
|
public static class ConfigurationMap extends TimedMap<String, Configuration>{
|
||||||
|
public ConfigurationMap(@NonNull String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TemporalAmount getTTL(){
|
||||||
|
return Duration.of(2, ChronoUnit.MINUTES);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Configuration retrieveObject(String key) throws ConfigurationException {
|
||||||
|
return getForProfile(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ConfigurationCache() {
|
||||||
|
super("Configuration Cache");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ConfigurationMap retrieveObject(String key) throws ConfigurationException {
|
||||||
|
return new ConfigurationMap(key+"_configuration_cache") {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static Configuration getForProfile(String profileID) throws ConfigurationException{
|
||||||
|
log.info("Evaluating Configuration for profile {} ",profileID);
|
||||||
|
try{
|
||||||
|
return new ProfiledMongoManager(profileID).getConfiguration();
|
||||||
|
} catch (ConfigurationException e) {
|
||||||
|
log.error("Unable to get configuration for {} ",profileID,e);
|
||||||
|
throw e;
|
||||||
|
} catch (Throwable t){
|
||||||
|
log.error("Unable to get configuration for {} ",profileID,t);
|
||||||
|
throw new ConfigurationException("Unable to get configuration for "+profileID,t);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,7 +23,7 @@ public class MongoClientProvider extends AbstractScopedMap<Mongo> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Mongo retrieveObject() throws ConfigurationException {
|
protected Mongo retrieveObject(String context) throws ConfigurationException {
|
||||||
MongoConnection conn=performQueryForMongoDB(ImplementationProvider.get().
|
MongoConnection conn=performQueryForMongoDB(ImplementationProvider.get().
|
||||||
getEngineByManagedClass(ISInterface.class),
|
getEngineByManagedClass(ISInterface.class),
|
||||||
ServiceConstants.SE_GNA_DB_CATEGORY,
|
ServiceConstants.SE_GNA_DB_CATEGORY,
|
||||||
|
@ -40,11 +40,6 @@ public class MongoClientProvider extends AbstractScopedMap<Mongo> {
|
||||||
toDispose.close();
|
toDispose.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init() {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static MongoConnection performQueryForMongoDB(ISInterface is,String category, String platform,String flagName, String flagValue) throws ConfigurationException {
|
private static MongoConnection performQueryForMongoDB(ISInterface is,String category, String platform,String flagName, String flagValue) throws ConfigurationException {
|
||||||
|
|
||||||
|
|
|
@ -56,8 +56,7 @@ public class PluginManager extends AbstractScopedMap<PluginManager.PluginMap> im
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PluginMap retrieveObject() throws ConfigurationException {
|
protected PluginMap retrieveObject(String context) throws ConfigurationException {
|
||||||
String context=ContextUtils.getCurrentScope();
|
|
||||||
log.warn("PLUGIN INITIALIZTIONS IN CONTEXT {} ",context);
|
log.warn("PLUGIN INITIALIZTIONS IN CONTEXT {} ",context);
|
||||||
// Init plugins
|
// Init plugins
|
||||||
implementations.forEach((id,p)->{
|
implementations.forEach((id,p)->{
|
||||||
|
|
|
@ -14,7 +14,7 @@ public class PostgisConnectionProvider extends AbstractScopedMap<PostgisDBManage
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PostgisDBManager retrieveObject() throws ConfigurationException {
|
protected PostgisDBManager retrieveObject(String context) throws ConfigurationException {
|
||||||
try {
|
try {
|
||||||
return PostgisDBManager.get();
|
return PostgisDBManager.get();
|
||||||
} catch (SQLException throwables) {
|
} catch (SQLException throwables) {
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class ProfileMapCache extends AbstractScopedMap<ProfileMapCache.ProfileMa
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ProfileMap retrieveObject() throws ConfigurationException {
|
protected ProfileMap retrieveObject(String context) throws ConfigurationException {
|
||||||
|
|
||||||
|
|
||||||
// Load from resources
|
// Load from resources
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class StorageClientProvider extends AbstractScopedMap<StorageUtils> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected StorageUtils retrieveObject() throws ConfigurationException {
|
protected StorageUtils retrieveObject(String Context) throws ConfigurationException {
|
||||||
try{
|
try{
|
||||||
return new StorageUtils();
|
return new StorageUtils();
|
||||||
}catch(Throwable t){
|
}catch(Throwable t){
|
||||||
|
|
|
@ -94,7 +94,7 @@ public class UCDManager extends AbstractScopedMap<UCDManagerI> implements UCDMan
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected UCDManagerI retrieveObject() throws ConfigurationException {
|
protected UCDManagerI retrieveObject(String context) throws ConfigurationException {
|
||||||
forceUpdateCache();
|
forceUpdateCache();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||||
import org.gcube.application.geoportal.common.model.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.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
import org.gcube.application.geoportal.service.engine.mongo.ConcessioniMongoManager;
|
import org.gcube.application.geoportal.service.engine.mongo.ConcessioniMongoManager;
|
||||||
import org.gcube.application.geoportal.service.engine.postgis.PostgisIndex;
|
|
||||||
import org.gcube.application.geoportal.service.model.internal.faults.DeletionException;
|
import org.gcube.application.geoportal.service.model.internal.faults.DeletionException;
|
||||||
import org.gcube.application.cms.serialization.Serialization;
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
package org.gcube.application.geoportal.service.rest;
|
||||||
|
|
||||||
|
public class Plugins {
|
||||||
|
|
||||||
|
// get status (configuration + report)
|
||||||
|
|
||||||
|
// force reinitialization
|
||||||
|
|
||||||
|
}
|
|
@ -2,8 +2,9 @@ package org.gcube.application.geoportal.service.rest;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
|
import org.gcube.application.cms.implementations.ImplementationProvider;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||||
|
@ -11,6 +12,7 @@ import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
|
||||||
import org.gcube.application.geoportal.service.engine.mongo.ProfiledMongoManager;
|
import org.gcube.application.geoportal.service.engine.mongo.ProfiledMongoManager;
|
||||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
import org.gcube.application.cms.serialization.Serialization;
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
|
import org.gcube.application.geoportal.service.engine.providers.ConfigurationCache;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
|
@ -22,7 +24,7 @@ public class ProfiledDocuments {
|
||||||
private ProfiledMongoManager manager;
|
private ProfiledMongoManager manager;
|
||||||
|
|
||||||
public ProfiledDocuments(@PathParam(InterfaceConstants.Parameters.UCID) String profileID) throws ConfigurationException {
|
public ProfiledDocuments(@PathParam(InterfaceConstants.Parameters.UCID) String profileID) throws ConfigurationException {
|
||||||
log.info("Accessing profiles "+profileID);
|
log.info("Accessing profile "+profileID);
|
||||||
manager=new GuardedMethod<ProfiledMongoManager>(){
|
manager=new GuardedMethod<ProfiledMongoManager>(){
|
||||||
@Override
|
@Override
|
||||||
protected ProfiledMongoManager run() throws Exception {
|
protected ProfiledMongoManager run() throws Exception {
|
||||||
|
@ -34,12 +36,12 @@ public class ProfiledDocuments {
|
||||||
@GET
|
@GET
|
||||||
@Path(InterfaceConstants.Methods.CONFIGURATION_PATH)
|
@Path(InterfaceConstants.Methods.CONFIGURATION_PATH)
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public Configuration getConfiguration(){
|
public Configuration getConfiguration(@PathParam(InterfaceConstants.Parameters.UCID) String profileID){
|
||||||
return new GuardedMethod<Configuration>(){
|
return new GuardedMethod<Configuration>(){
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Configuration run() throws Exception, WebApplicationException {
|
protected Configuration run() throws Exception, WebApplicationException {
|
||||||
return manager.getConfiguration();
|
return ImplementationProvider.get().getEngineByManagedClass(ConfigurationCache.ConfigurationMap.class).get(profileID);
|
||||||
}
|
}
|
||||||
}.execute().getResult();
|
}.execute().getResult();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package org.gcube.application.geoportal.service;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
|
import org.gcube.application.cms.tests.TokenSetter;
|
||||||
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||||
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
|
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import javax.ws.rs.client.Entity;
|
||||||
|
import javax.ws.rs.client.WebTarget;
|
||||||
|
import javax.ws.rs.core.MediaType;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class UCDTests extends BasicServiceTestUnit{
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setContext(){
|
||||||
|
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
||||||
|
TokenSetter.set(GCubeTest.getContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected WebTarget baseTarget(){
|
||||||
|
return super.target(InterfaceConstants.Methods.UCD);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Iterator<UseCaseDescriptor> query(QueryRequest request) throws Exception {
|
||||||
|
String json = check(baseTarget().path(InterfaceConstants.Methods.QUERY_PATH).
|
||||||
|
request(MediaType.APPLICATION_JSON).post(Entity.entity(request,MediaType.APPLICATION_JSON)),
|
||||||
|
String.class);
|
||||||
|
try{
|
||||||
|
return Serialization.readCollection(json, UseCaseDescriptor.class);
|
||||||
|
}catch(Throwable t){
|
||||||
|
log.error("Unable to query UCD with {} ",request,t);
|
||||||
|
throw new Exception("Unable to parse collection. Check projection settings.",t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void queryAll() throws Exception {
|
||||||
|
QueryRequest request=new QueryRequest();
|
||||||
|
AtomicLong l = new AtomicLong();
|
||||||
|
query(request).forEachRemaining(u->l.incrementAndGet());
|
||||||
|
assumeTrue(l.get()>0);
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,7 +15,7 @@ public class DummyCache extends AbstractScopedMap<LocalDateTime> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected LocalDateTime retrieveObject() throws ConfigurationException {
|
protected LocalDateTime retrieveObject(String context) throws ConfigurationException {
|
||||||
return LocalDateTime.now();
|
return LocalDateTime.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import org.gcube.application.cms.tests.TokenSetter;
|
||||||
import org.gcube.application.cms.tests.model.concessioni.TestConcessioniModel;
|
import org.gcube.application.cms.tests.model.concessioni.TestConcessioniModel;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
|
||||||
import org.gcube.application.geoportal.common.model.rest.Configuration;
|
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||||
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||||
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
|
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
|
||||||
|
|
|
@ -32,7 +32,7 @@ public abstract class SDIAbstractPlugin extends AbstractPlugin implements Initia
|
||||||
log.info("Creating internal caches.. ");
|
log.info("Creating internal caches.. ");
|
||||||
sdiCache = new AbstractScopedMap<SDIManagerWrapper>("SDI-CACHE") {
|
sdiCache = new AbstractScopedMap<SDIManagerWrapper>("SDI-CACHE") {
|
||||||
@Override
|
@Override
|
||||||
protected SDIManagerWrapper retrieveObject() throws ConfigurationException {
|
protected SDIManagerWrapper retrieveObject(String context) throws ConfigurationException {
|
||||||
try {
|
try {
|
||||||
return new SDIManagerWrapper();
|
return new SDIManagerWrapper();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -45,11 +45,11 @@ public abstract class SDIAbstractPlugin extends AbstractPlugin implements Initia
|
||||||
if(postgisCache==null) {
|
if(postgisCache==null) {
|
||||||
postgisCache = new AbstractScopedMap<DatabaseConnection>("POSTGIS-CREDENTIALS") {
|
postgisCache = new AbstractScopedMap<DatabaseConnection>("POSTGIS-CREDENTIALS") {
|
||||||
@Override
|
@Override
|
||||||
protected DatabaseConnection retrieveObject() throws ConfigurationException {
|
protected DatabaseConnection retrieveObject(String context) throws ConfigurationException {
|
||||||
try {
|
try {
|
||||||
DatabaseConnection db = ImplementationProvider.get().getEngineByManagedClass(ISInterface.class).
|
DatabaseConnection db = ImplementationProvider.get().getEngineByManagedClass(ISInterface.class).
|
||||||
queryForDatabase("Database","postgis", "GNA_DB","Concessioni");
|
queryForDatabase("Database","postgis", "GNA_DB","Concessioni");
|
||||||
log.debug("Postgis Connection in {} is {} ", ContextUtils.getCurrentScope(),db);
|
log.debug("Postgis Connection in {} is {} ", context,db);
|
||||||
return db;
|
return db;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ConfigurationException(e);
|
throw new ConfigurationException(e);
|
||||||
|
|
|
@ -21,7 +21,6 @@ import org.gcube.application.geoportal.common.model.JSONPathWrapper;
|
||||||
import org.gcube.application.cms.plugins.model.ComparableVersion;
|
import org.gcube.application.cms.plugins.model.ComparableVersion;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.GCubeSDILayer;
|
import org.gcube.application.geoportal.common.model.document.filesets.GCubeSDILayer;
|
||||||
import org.gcube.application.geoportal.common.model.document.spatial.SpatialReference;
|
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||||
import org.geojson.Crs;
|
import org.geojson.Crs;
|
||||||
import org.geojson.GeoJsonObject;
|
import org.geojson.GeoJsonObject;
|
||||||
|
|
|
@ -19,4 +19,8 @@
|
||||||
"count" : 10000,
|
"count" : 10000,
|
||||||
"collection_name" : "...."}
|
"collection_name" : "...."}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TM k,v ABSM V
|
||||||
|
Vget(K) V get(String)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
package org.gcube.application.cms.usecases;
|
||||||
|
|
||||||
|
public class ExportConcessioniAsProfiledDocuments {
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package org.gcube.application.cms.usecases;
|
package org.gcube.application.cms.usecases;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.bson.Document;
|
||||||
import org.gcube.application.cms.tests.TokenSetter;
|
import org.gcube.application.cms.tests.TokenSetter;
|
||||||
import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI;
|
import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI;
|
||||||
import org.gcube.application.geoportal.client.utils.Serialization;
|
import org.gcube.application.geoportal.client.utils.Serialization;
|
||||||
|
@ -28,7 +29,7 @@ import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPl
|
||||||
/*
|
/*
|
||||||
Pushes concessioni JSON from folder to geoportal-service
|
Pushes concessioni JSON from folder to geoportal-service
|
||||||
*/
|
*/
|
||||||
public class Export {
|
public class ExportMongoConcessioni {
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -63,8 +64,9 @@ public class Export {
|
||||||
for (Concessione c : found) {
|
for (Concessione c : found) {
|
||||||
try {
|
try {
|
||||||
log.info("Using {} {}",c.getNome(),c.getMongo_id());
|
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))
|
if (!result.getReport().getStatus().equals(ValidationReport.ValidationStatus.PASSED))
|
||||||
warnCount.incrementAndGet();
|
warnCount.incrementAndGet();
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
|
@ -78,77 +80,7 @@ public class Export {
|
||||||
System.out.println("Done "+count.get()+" [warn : "+warnCount.get()+", err : "+errCount.get()+"]");
|
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);
|
|
||||||
|
|
||||||
c.setAbstractRelazione(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]);
|
|
||||||
|
|
||||||
//Abstract
|
|
||||||
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 {
|
private static TempFile[] fromPath(String path, StorageUtils storage) throws FileNotFoundException {
|
||||||
Path baseDir= Paths.get(path);
|
Path baseDir= Paths.get(path);
|
||||||
|
@ -161,6 +93,9 @@ public class Export {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void removeContent(AssociatedContent c){ c.setActualContent(new ArrayList<>());}
|
private static Document getCleanDocument(Concessione c){
|
||||||
|
Document toReturn = new Document();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue