Configuration
This commit is contained in:
parent
6afc72b304
commit
b827ba2f13
|
@ -14,44 +14,24 @@ import java.time.temporal.TemporalAmount;
|
|||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@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
|
||||
private ConcurrentHashMap<String, TTLObject<T>> scopeMap=new ConcurrentHashMap<String,TTLObject<T>>();
|
||||
public AbstractScopedMap(@NonNull String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Setter
|
||||
private TemporalAmount TTL=null;
|
||||
|
||||
@NonNull
|
||||
private String name;
|
||||
@Synchronized
|
||||
@Override
|
||||
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();
|
||||
return get(ContextUtils.getCurrentScope());
|
||||
}
|
||||
|
||||
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 void init() {}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
|
@ -65,10 +45,4 @@ public abstract class AbstractScopedMap<T> implements Engine<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 org.gcube.application.cms.caches.Cache;
|
||||
import org.gcube.application.cms.caches.Engine;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
|
@ -24,13 +25,13 @@ public class ImplementationProvider {
|
|||
return (T) implementationsRegistry.get(clazz).getObject();
|
||||
}
|
||||
|
||||
|
||||
private ConcurrentHashMap<Class,Engine> implementationsRegistry=new ConcurrentHashMap<>();
|
||||
|
||||
public <T> void setEngine(Engine<T> engine, Class<T> clazz){
|
||||
implementationsRegistry.put(clazz,engine);
|
||||
}
|
||||
|
||||
|
||||
private ImplementationProvider(){
|
||||
//Defaults
|
||||
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.requests.EventExecutionRequest;
|
||||
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;
|
||||
|
||||
|
||||
|
|
|
@ -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.requests.IndexDocumentRequest;
|
||||
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;
|
||||
|
||||
@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.MaterializationRequest;
|
||||
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;
|
||||
|
||||
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.TriggeredEvents;
|
||||
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.utils.ContextUtils;
|
||||
import org.gcube.application.geoportal.common.utils.Files;
|
||||
|
|
|
@ -6,7 +6,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.bson.Document;
|
||||
import org.gcube.application.geoportal.client.utils.Serialization;
|
||||
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.RegisterFileSetRequest;
|
||||
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.WebTarget;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.io.IOException;
|
||||
import java.rmi.RemoteException;
|
||||
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.common.model.legacy.Concessione;
|
||||
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.rest.InterfaceConstants;
|
||||
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.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.rest.MongoConcessioni;
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@ public class ResponseCommons {
|
|||
String resString=resp.readEntity(String.class);
|
||||
if(resp.getStatus()<200||resp.getStatus()>=300)
|
||||
throw new RemoteException("RESP STATUS IS "+resp.getStatus()+". Message : "+resString);
|
||||
if(clazz.equals(String.class))
|
||||
return (R) resString;
|
||||
if(clazz!=null)
|
||||
return Serialization.read(resString, clazz);
|
||||
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.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.rest.Projects;
|
||||
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package org.gcube.application.geoportal.clients;
|
||||
|
||||
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.common.model.rest.QueryRequest;
|
||||
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.junit.Assume.assumeTrue;
|
||||
|
||||
public class UCDTests {
|
||||
public class UCDTests{
|
||||
|
||||
UseCaseDescriptorsI client =null;
|
||||
|
||||
@Before
|
||||
public void getClient(){
|
||||
|
||||
|
||||
public UseCaseDescriptorsI getClient(){
|
||||
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
||||
client =useCaseDescriptors().build();
|
||||
TokenSetter.set(GCubeTest.getContext());
|
||||
return useCaseDescriptors().build();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void query() throws Exception {
|
||||
UseCaseDescriptorsI client =getClient();
|
||||
QueryRequest request = new QueryRequest();
|
||||
// All
|
||||
AtomicLong counter = new AtomicLong(0l);
|
||||
|
@ -38,19 +42,26 @@ public class UCDTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void getById() throws Exception {
|
||||
UseCaseDescriptorsI client = useCaseDescriptors().build();
|
||||
public void getByIdAll() throws Exception {
|
||||
UseCaseDescriptorsI client =getClient();
|
||||
|
||||
QueryRequest request = new QueryRequest();
|
||||
// All
|
||||
|
||||
client.query(request).forEachRemaining(u -> {
|
||||
try {
|
||||
client.getById(u.getId());
|
||||
System.out.println("Obtained "+client.getById(u.getId()).getId());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace(System.err);
|
||||
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;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.bson.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.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.spatial.SpatialReference;
|
||||
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.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 java.util.Iterator;
|
||||
|
|
|
@ -2,7 +2,7 @@ package org.gcube.application.geoportal.common.rest;
|
|||
|
||||
import org.bson.Document;
|
||||
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.RegisterFileSetRequest;
|
||||
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
|
||||
|
|
|
@ -11,8 +11,8 @@ public class GCubeTest {
|
|||
}
|
||||
|
||||
|
||||
testContext = "/pred4s/preprod/preVRE";
|
||||
// testContext = "/gcube/devsec/devVRE";
|
||||
//testContext = "/pred4s/preprod/preVRE";
|
||||
testContext = "/gcube/devsec/devVRE";
|
||||
|
||||
|
||||
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 StorageHubProvider(), StorageHubClient.class);
|
||||
ImplementationProvider.get().setEngine(new UCDManager(),UCDManagerI.class);
|
||||
ImplementationProvider.get().setEngine(new ConfigurationCache(), ConfigurationCache.ConfigurationMap.class);
|
||||
|
||||
|
||||
JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.gcube.application.geoportal.service.engine;
|
|||
import lombok.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.legacy.WorkspaceContent;
|
||||
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 {
|
||||
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.StepExecutionRequest;
|
||||
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;
|
||||
|
||||
@Slf4j
|
||||
|
|
|
@ -5,7 +5,7 @@ import org.bson.Document;
|
|||
import org.gcube.application.cms.plugins.faults.EventException;
|
||||
import org.gcube.application.cms.plugins.faults.StepException;
|
||||
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.RegisterFileSetRequest;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.gcube.application.geoportal.service.engine.mongo;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.mongodb.client.MongoCollection;
|
||||
import com.mongodb.client.MongoDatabase;
|
||||
import com.vdurmont.semver4j.Semver;
|
||||
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.StepExecutionRequest;
|
||||
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.access.Access;
|
||||
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.RegisteredFileSet;
|
||||
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.HandlerDeclaration;
|
||||
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.RegisterFileSetRequest;
|
||||
import org.gcube.application.geoportal.common.model.rest.TempFile;
|
||||
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.cms.implementations.ImplementationProvider;
|
||||
import org.gcube.application.geoportal.service.engine.WorkspaceManager;
|
||||
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.ProfileMapCache;
|
||||
import org.gcube.application.geoportal.service.engine.providers.UCDManager;
|
||||
import org.gcube.application.geoportal.service.model.internal.faults.DeletionException;
|
||||
import org.gcube.application.cms.serialization.Serialization;
|
||||
import org.gcube.application.geoportal.service.model.internal.faults.RegistrationException;
|
||||
|
@ -54,6 +55,7 @@ import java.io.IOException;
|
|||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.security.InvalidParameterException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.function.Consumer;
|
||||
|
@ -392,7 +394,29 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
@Override
|
||||
public Configuration getConfiguration() throws ConfigurationException {
|
||||
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);
|
||||
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
|
||||
protected Mongo retrieveObject() throws ConfigurationException {
|
||||
protected Mongo retrieveObject(String context) throws ConfigurationException {
|
||||
MongoConnection conn=performQueryForMongoDB(ImplementationProvider.get().
|
||||
getEngineByManagedClass(ISInterface.class),
|
||||
ServiceConstants.SE_GNA_DB_CATEGORY,
|
||||
|
@ -40,11 +40,6 @@ public class MongoClientProvider extends AbstractScopedMap<Mongo> {
|
|||
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 {
|
||||
|
||||
|
|
|
@ -56,8 +56,7 @@ public class PluginManager extends AbstractScopedMap<PluginManager.PluginMap> im
|
|||
|
||||
|
||||
@Override
|
||||
protected PluginMap retrieveObject() throws ConfigurationException {
|
||||
String context=ContextUtils.getCurrentScope();
|
||||
protected PluginMap retrieveObject(String context) throws ConfigurationException {
|
||||
log.warn("PLUGIN INITIALIZTIONS IN CONTEXT {} ",context);
|
||||
// Init plugins
|
||||
implementations.forEach((id,p)->{
|
||||
|
|
|
@ -14,7 +14,7 @@ public class PostgisConnectionProvider extends AbstractScopedMap<PostgisDBManage
|
|||
}
|
||||
|
||||
@Override
|
||||
protected PostgisDBManager retrieveObject() throws ConfigurationException {
|
||||
protected PostgisDBManager retrieveObject(String context) throws ConfigurationException {
|
||||
try {
|
||||
return PostgisDBManager.get();
|
||||
} catch (SQLException throwables) {
|
||||
|
|
|
@ -36,7 +36,7 @@ public class ProfileMapCache extends AbstractScopedMap<ProfileMapCache.ProfileMa
|
|||
}
|
||||
|
||||
@Override
|
||||
protected ProfileMap retrieveObject() throws ConfigurationException {
|
||||
protected ProfileMap retrieveObject(String context) throws ConfigurationException {
|
||||
|
||||
|
||||
// Load from resources
|
||||
|
|
|
@ -17,7 +17,7 @@ public class StorageClientProvider extends AbstractScopedMap<StorageUtils> {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected StorageUtils retrieveObject() throws ConfigurationException {
|
||||
protected StorageUtils retrieveObject(String Context) throws ConfigurationException {
|
||||
try{
|
||||
return new StorageUtils();
|
||||
}catch(Throwable t){
|
||||
|
|
|
@ -94,7 +94,7 @@ public class UCDManager extends AbstractScopedMap<UCDManagerI> implements UCDMan
|
|||
|
||||
|
||||
@Override
|
||||
protected UCDManagerI retrieveObject() throws ConfigurationException {
|
||||
protected UCDManagerI retrieveObject(String context) throws ConfigurationException {
|
||||
forceUpdateCache();
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -4,10 +4,9 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.bson.Document;
|
||||
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.Configuration;
|
||||
import org.gcube.application.geoportal.common.model.configuration.Configuration;
|
||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||
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.cms.serialization.Serialization;
|
||||
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 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.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.rest.InterfaceConstants;
|
||||
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.common.model.rest.ConfigurationException;
|
||||
import org.gcube.application.cms.serialization.Serialization;
|
||||
import org.gcube.application.geoportal.service.engine.providers.ConfigurationCache;
|
||||
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
@ -22,7 +24,7 @@ public class ProfiledDocuments {
|
|||
private ProfiledMongoManager manager;
|
||||
|
||||
public ProfiledDocuments(@PathParam(InterfaceConstants.Parameters.UCID) String profileID) throws ConfigurationException {
|
||||
log.info("Accessing profiles "+profileID);
|
||||
log.info("Accessing profile "+profileID);
|
||||
manager=new GuardedMethod<ProfiledMongoManager>(){
|
||||
@Override
|
||||
protected ProfiledMongoManager run() throws Exception {
|
||||
|
@ -34,12 +36,12 @@ public class ProfiledDocuments {
|
|||
@GET
|
||||
@Path(InterfaceConstants.Methods.CONFIGURATION_PATH)
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public Configuration getConfiguration(){
|
||||
public Configuration getConfiguration(@PathParam(InterfaceConstants.Parameters.UCID) String profileID){
|
||||
return new GuardedMethod<Configuration>(){
|
||||
|
||||
@Override
|
||||
protected Configuration run() throws Exception, WebApplicationException {
|
||||
return manager.getConfiguration();
|
||||
return ImplementationProvider.get().getEngineByManagedClass(ConfigurationCache.ConfigurationMap.class).get(profileID);
|
||||
}
|
||||
}.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
|
||||
protected LocalDateTime retrieveObject() throws ConfigurationException {
|
||||
protected LocalDateTime retrieveObject(String context) throws ConfigurationException {
|
||||
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.geoportal.common.model.document.Project;
|
||||
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.RegisterFileSetRequest;
|
||||
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.. ");
|
||||
sdiCache = new AbstractScopedMap<SDIManagerWrapper>("SDI-CACHE") {
|
||||
@Override
|
||||
protected SDIManagerWrapper retrieveObject() throws ConfigurationException {
|
||||
protected SDIManagerWrapper retrieveObject(String context) throws ConfigurationException {
|
||||
try {
|
||||
return new SDIManagerWrapper();
|
||||
} catch (Exception e) {
|
||||
|
@ -45,11 +45,11 @@ public abstract class SDIAbstractPlugin extends AbstractPlugin implements Initia
|
|||
if(postgisCache==null) {
|
||||
postgisCache = new AbstractScopedMap<DatabaseConnection>("POSTGIS-CREDENTIALS") {
|
||||
@Override
|
||||
protected DatabaseConnection retrieveObject() throws ConfigurationException {
|
||||
protected DatabaseConnection retrieveObject(String context) throws ConfigurationException {
|
||||
try {
|
||||
DatabaseConnection db = ImplementationProvider.get().getEngineByManagedClass(ISInterface.class).
|
||||
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;
|
||||
} catch (Exception 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.geoportal.common.model.document.Project;
|
||||
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.geojson.Crs;
|
||||
import org.geojson.GeoJsonObject;
|
||||
|
|
|
@ -20,3 +20,7 @@
|
|||
"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;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.bson.Document;
|
||||
import org.gcube.application.cms.tests.TokenSetter;
|
||||
import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI;
|
||||
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
|
||||
*/
|
||||
public class Export {
|
||||
public class ExportMongoConcessioni {
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
@ -63,8 +64,9 @@ public class Export {
|
|||
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) {
|
||||
|
@ -78,77 +80,7 @@ public class Export {
|
|||
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 {
|
||||
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