Publishing Concessioni - legacy
This commit is contained in:
parent
28499b6a2b
commit
6dc433b834
|
@ -21,6 +21,8 @@ public class GeoportalService extends ResourceConfig{
|
||||||
registerClasses(Projects.class);
|
registerClasses(Projects.class);
|
||||||
registerClasses(Sections.class);
|
registerClasses(Sections.class);
|
||||||
registerClasses(Profiles.class);
|
registerClasses(Profiles.class);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
package org.gcube.application.geoportal.service.engine;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.temporal.TemporalAmount;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.service.utils.ContextUtils;
|
||||||
|
|
||||||
|
import lombok.NonNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.Synchronized;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public abstract class AbstractScopedMap<T> implements Engine<T>{
|
||||||
|
|
||||||
|
// scope-> object
|
||||||
|
private ConcurrentHashMap<String,TTLObject<T>> scopeMap=new ConcurrentHashMap<String,TTLObject<T>>();
|
||||||
|
|
||||||
|
@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.putIfAbsent(currentScope, new TTLObject<T>(LocalDateTime.now(),retrieveObject()));
|
||||||
|
|
||||||
|
if(TTL!=null) {
|
||||||
|
if(!found.getCreationTime().plus(TTL).isBefore(LocalDateTime.now())) {
|
||||||
|
log.debug(name+" : elapsed TTL, disposing..");
|
||||||
|
dispose(found.getTheObject());
|
||||||
|
found=scopeMap.put(currentScope, new TTLObject<T>(LocalDateTime.now(),retrieveObject()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return found.getTheObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void shustdown() {
|
||||||
|
log.warn(name + ": shutting down");
|
||||||
|
scopeMap.forEach((String s,TTLObject<T> o)->{
|
||||||
|
dispose(o.getTheObject());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract T retrieveObject() throws ConfigurationException;
|
||||||
|
|
||||||
|
protected abstract void dispose(T toDispose);
|
||||||
|
}
|
|
@ -1,7 +1,11 @@
|
||||||
package org.gcube.application.geoportal.service.engine;
|
package org.gcube.application.geoportal.service.engine;
|
||||||
|
|
||||||
public interface Engine {
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
|
|
||||||
|
public interface Engine <T> {
|
||||||
|
|
||||||
public void init();
|
public void init();
|
||||||
public void shustdown();
|
public void shustdown();
|
||||||
|
|
||||||
|
public T getObject() throws ConfigurationException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
package org.gcube.application.geoportal.service.engine;
|
package org.gcube.application.geoportal.service.engine;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.managers.AbstractRecordManager;
|
import org.gcube.application.geoportal.managers.AbstractRecordManager;
|
||||||
import org.gcube.application.geoportal.service.engine.mongo.MongoClientProvider;
|
import org.gcube.application.geoportal.service.engine.cache.MongoClientProvider;
|
||||||
|
import org.gcube.application.geoportal.service.engine.cache.MongoConnectionProvider;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
@ -22,15 +23,26 @@ public class ImplementationProvider {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private MongoClientProvider mongoClientProvider=null;
|
private MongoConnectionProvider mongoConnectionProvider=new MongoConnectionProvider();
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private MongoClientProvider mongoClientProvider=new MongoClientProvider();
|
||||||
|
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private StorageClientProvider storageProvider=new StorageClientProvider();
|
||||||
|
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
// Stop JPA
|
// Stop JPA
|
||||||
AbstractRecordManager.shutdown();
|
AbstractRecordManager.shutdown();
|
||||||
|
mongoConnectionProvider.shustdown();
|
||||||
mongoClientProvider.shustdown();
|
mongoClientProvider.shustdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startup() {
|
public void startup() {
|
||||||
|
mongoConnectionProvider.init();
|
||||||
mongoClientProvider.init();
|
mongoClientProvider.init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
package org.gcube.application.geoportal.service.engine;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.common.model.profile.Profile;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
|
|
||||||
|
public class ProfileMapCache extends AbstractScopedMap<Map<String,Profile>> {
|
||||||
|
|
||||||
|
public ProfileMapCache(String name) {
|
||||||
|
super(name);
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispose(Map<String, Profile> toDispose) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Map<String, Profile> retrieveObject() throws ConfigurationException {
|
||||||
|
//TODO load from IS
|
||||||
|
// Profile fakeProfile=new Profile();
|
||||||
|
|
||||||
|
return Collections.singletonMap(null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package org.gcube.application.geoportal.service.engine;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.service.utils.ContextUtils;
|
||||||
|
import org.gcube.contentmanagement.blobstorage.service.IClient;
|
||||||
|
import org.gcube.contentmanagement.blobstorage.transport.backend.RemoteBackendException;
|
||||||
|
import org.gcube.contentmanager.storageclient.wrapper.AccessType;
|
||||||
|
import org.gcube.contentmanager.storageclient.wrapper.MemoryType;
|
||||||
|
import org.gcube.contentmanager.storageclient.wrapper.StorageClient;
|
||||||
|
|
||||||
|
public class StorageClientProvider implements Engine<IClient>{
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IClient getObject() throws ConfigurationException {
|
||||||
|
return new StorageClient(InterfaceConstants.SERVICE_CLASS, InterfaceConstants.SERVICE_NAME, ContextUtils.getCurrentCaller(), AccessType.SHARED, MemoryType.VOLATILE).getClient();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void shustdown() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//wrapping methods
|
||||||
|
|
||||||
|
public InputStream open(String id) throws MalformedURLException, RemoteBackendException, IOException, ConfigurationException {
|
||||||
|
return new URL(getObject().getHttpsUrl().RFileById(id)).openConnection().getInputStream();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package org.gcube.application.geoportal.service.engine;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@ToString
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class TTLObject<T> {
|
||||||
|
|
||||||
|
private LocalDateTime creationTime;
|
||||||
|
private T theObject;
|
||||||
|
|
||||||
|
}
|
9
src/main/java/org/gcube/application/geoportal/service/engine/cache/Cache.java
vendored
Normal file
9
src/main/java/org/gcube/application/geoportal/service/engine/cache/Cache.java
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
package org.gcube.application.geoportal.service.engine.cache;
|
||||||
|
|
||||||
|
public class Cache {
|
||||||
|
|
||||||
|
public Cache() {
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
43
src/main/java/org/gcube/application/geoportal/service/engine/cache/MongoClientProvider.java
vendored
Normal file
43
src/main/java/org/gcube/application/geoportal/service/engine/cache/MongoClientProvider.java
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
package org.gcube.application.geoportal.service.engine.cache;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.service.engine.AbstractScopedMap;
|
||||||
|
import org.gcube.application.geoportal.service.engine.ImplementationProvider;
|
||||||
|
import org.gcube.application.geoportal.service.model.internal.db.MongoConnection;
|
||||||
|
|
||||||
|
import com.mongodb.MongoClient;
|
||||||
|
import com.mongodb.MongoClientOptions;
|
||||||
|
import com.mongodb.MongoCredential;
|
||||||
|
import com.mongodb.ServerAddress;
|
||||||
|
|
||||||
|
public class MongoClientProvider extends AbstractScopedMap<MongoClient>{
|
||||||
|
|
||||||
|
public MongoClientProvider() {
|
||||||
|
super("MongoClient cache");
|
||||||
|
|
||||||
|
// setTTL(Duration.of(10,ChronoUnit.MINUTES));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected MongoClient retrieveObject() throws ConfigurationException {
|
||||||
|
MongoConnection conn=ImplementationProvider.get().getMongoConnectionProvider().getObject();
|
||||||
|
MongoCredential credential = MongoCredential.createCredential(conn.getUser(), conn.getDatabase(),
|
||||||
|
conn.getPassword().toCharArray());
|
||||||
|
|
||||||
|
MongoClientOptions options = MongoClientOptions.builder().sslEnabled(true).build();
|
||||||
|
|
||||||
|
return new MongoClient(new ServerAddress(conn.getHosts().get(0),conn.getPort()),
|
||||||
|
credential,
|
||||||
|
options);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispose(MongoClient toDispose) {
|
||||||
|
toDispose.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
}
|
||||||
|
}
|
33
src/main/java/org/gcube/application/geoportal/service/engine/cache/MongoConnectionProvider.java
vendored
Normal file
33
src/main/java/org/gcube/application/geoportal/service/engine/cache/MongoConnectionProvider.java
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
package org.gcube.application.geoportal.service.engine.cache;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.service.ServiceConstants;
|
||||||
|
import org.gcube.application.geoportal.service.engine.AbstractScopedMap;
|
||||||
|
import org.gcube.application.geoportal.service.model.internal.db.MongoConnection;
|
||||||
|
import org.gcube.application.geoportal.service.utils.ISUtils;
|
||||||
|
|
||||||
|
public class MongoConnectionProvider extends AbstractScopedMap<MongoConnection>{
|
||||||
|
|
||||||
|
public MongoConnectionProvider() {
|
||||||
|
super("MongoDBInfo Cache");
|
||||||
|
setTTL(Duration.of(2,ChronoUnit.MINUTES));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected MongoConnection retrieveObject() throws ConfigurationException {
|
||||||
|
return ISUtils.queryForMongoDB(ServiceConstants.MONGO_SE_PLATFORM, ServiceConstants.MONGO_SE_GNA_FLAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispose(MongoConnection toDispose) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,56 +0,0 @@
|
||||||
package org.gcube.application.geoportal.service.engine.mongo;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
|
||||||
import org.gcube.application.geoportal.service.ServiceConstants;
|
|
||||||
import org.gcube.application.geoportal.service.model.internal.db.MongoConnection;
|
|
||||||
import org.gcube.application.geoportal.service.utils.ISUtils;
|
|
||||||
|
|
||||||
import com.mongodb.MongoClient;
|
|
||||||
import com.mongodb.MongoClientOptions;
|
|
||||||
import com.mongodb.MongoCredential;
|
|
||||||
import com.mongodb.ServerAddress;
|
|
||||||
|
|
||||||
import lombok.Synchronized;
|
|
||||||
|
|
||||||
public class DefaultMongoProvider implements MongoClientProvider {
|
|
||||||
|
|
||||||
public DefaultMongoProvider() {
|
|
||||||
// TODO Auto-generated constructor stub
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void shustdown() {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static MongoClient instance=null;
|
|
||||||
@Override
|
|
||||||
@Synchronized
|
|
||||||
public MongoClient getClient() throws ConfigurationException{
|
|
||||||
if(instance==null) {
|
|
||||||
MongoConnection conn= ISUtils.queryForMongoDB(ServiceConstants.MONGO_SE_PLATFORM, ServiceConstants.MONGO_SE_GNA_FLAG);
|
|
||||||
|
|
||||||
|
|
||||||
MongoCredential credential = MongoCredential.createCredential(conn.getUser(), conn.getDatabase(),
|
|
||||||
conn.getPassword().toCharArray());
|
|
||||||
|
|
||||||
MongoClientOptions options = MongoClientOptions.builder().sslEnabled(true).build();
|
|
||||||
|
|
||||||
instance = new MongoClient(new ServerAddress(conn.getHosts().get(0),conn.getPort()),
|
|
||||||
credential,
|
|
||||||
options);
|
|
||||||
}
|
|
||||||
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
package org.gcube.application.geoportal.service.engine.mongo;
|
|
||||||
|
|
||||||
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
|
||||||
import org.gcube.application.geoportal.service.engine.Engine;
|
|
||||||
|
|
||||||
import com.mongodb.MongoClient;
|
|
||||||
|
|
||||||
public interface MongoClientProvider extends Engine{
|
|
||||||
|
|
||||||
|
|
||||||
public MongoClient getClient() throws ConfigurationException;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -15,8 +15,11 @@ public class MongoManager {
|
||||||
|
|
||||||
private MongoClient client=null;
|
private MongoClient client=null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public MongoManager() throws ConfigurationException {
|
public MongoManager() throws ConfigurationException {
|
||||||
client=ImplementationProvider.get().getMongoClientProvider().getClient();
|
client=ImplementationProvider.get().getMongoClientProvider().getObject();
|
||||||
|
|
||||||
// init profile
|
// init profile
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
package org.gcube.application.geoportal.service.model.internal.rest;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.model.content.AssociatedContent;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@XmlRootElement
|
||||||
|
@Data
|
||||||
|
public class AddSectionToConcessioneRequest {
|
||||||
|
|
||||||
|
public static enum Section{
|
||||||
|
RELAZIONE,UPLOADED_IMG,PIANTA,POSIZIONAMENTO,OTHER
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlRootElement
|
||||||
|
@Data
|
||||||
|
public static class SHUBFileDescriptor {
|
||||||
|
private String filename;
|
||||||
|
private String shubID;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Section section;
|
||||||
|
private String concessioneID;
|
||||||
|
private AssociatedContent toRegister;
|
||||||
|
private List<SHUBFileDescriptor> streams;
|
||||||
|
|
||||||
|
}
|
|
@ -14,11 +14,18 @@ import javax.ws.rs.core.MediaType;
|
||||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
import org.gcube.application.geoportal.managers.ConcessioneManager;
|
import org.gcube.application.geoportal.managers.ConcessioneManager;
|
||||||
import org.gcube.application.geoportal.managers.ManagerFactory;
|
import org.gcube.application.geoportal.managers.ManagerFactory;
|
||||||
|
import org.gcube.application.geoportal.model.InputStreamDescriptor;
|
||||||
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
||||||
|
import org.gcube.application.geoportal.model.concessioni.LayerConcessione;
|
||||||
|
import org.gcube.application.geoportal.model.concessioni.RelazioneScavo;
|
||||||
|
import org.gcube.application.geoportal.model.content.UploadedImage;
|
||||||
import org.gcube.application.geoportal.model.report.PublicationReport;
|
import org.gcube.application.geoportal.model.report.PublicationReport;
|
||||||
import org.gcube.application.geoportal.utils.Serialization;
|
import org.gcube.application.geoportal.service.engine.ImplementationProvider;
|
||||||
|
import org.gcube.application.geoportal.service.engine.StorageClientProvider;
|
||||||
|
import org.gcube.application.geoportal.service.model.internal.rest.AddSectionToConcessioneRequest;
|
||||||
|
import org.gcube.application.geoportal.service.model.internal.rest.AddSectionToConcessioneRequest.SHUBFileDescriptor;
|
||||||
|
import org.gcube.application.geoportal.service.utils.Serialization;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@ -26,13 +33,14 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class Concessioni {
|
public class Concessioni {
|
||||||
|
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
||||||
public String getById(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id) {
|
public String getById(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id) {
|
||||||
try {
|
try {
|
||||||
log.info("Loading Concessione by id {} ",id);
|
log.info("Loading Concessione by id {} ",id);
|
||||||
Concessione toReturn=(Concessione) ManagerFactory.getByRecordID(Long.parseLong(id)).getRecord();
|
Concessione toReturn=(Concessione) ConcessioneManager.getByID(Long.parseLong(id));
|
||||||
log.debug("Loaded object {} ",toReturn);
|
log.debug("Loaded object {} ",toReturn);
|
||||||
return toReturn.asJson();
|
return toReturn.asJson();
|
||||||
}catch(WebApplicationException e){
|
}catch(WebApplicationException e){
|
||||||
|
@ -47,12 +55,13 @@ public class Concessioni {
|
||||||
@PUT
|
@PUT
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
public String registerNew(Concessione toRegister) {
|
public String registerNew(String toRegister) {
|
||||||
try {
|
try {
|
||||||
log.info("Registering new Concessione "+toRegister);
|
log.info("Registering new Concessione "+toRegister);
|
||||||
ConcessioneManager manager=ManagerFactory.registerNew(toRegister);
|
Concessione conc=Serialization.read(toRegister, Concessione.class);
|
||||||
PublicationReport report=manager.commitSafely(false);
|
ConcessioneManager manager=ManagerFactory.registerNew(conc);
|
||||||
return report.prettyPrint();
|
manager.commitSafely(false);
|
||||||
|
return manager.getRecord().asJson();
|
||||||
}catch(WebApplicationException e){
|
}catch(WebApplicationException e){
|
||||||
log.warn("Unable to serve request",e);
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -66,10 +75,39 @@ public class Concessioni {
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
||||||
public String modify(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id) {
|
public String modify(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
||||||
|
AddSectionToConcessioneRequest request) {
|
||||||
try {
|
try {
|
||||||
log.info("Add Section");
|
log.info("Adding section to Concessione {} ",id);
|
||||||
throw new RuntimeException("Feature not yet available");
|
Concessione toReturn=(Concessione) ConcessioneManager.getByID(Long.parseLong(id));
|
||||||
|
ConcessioneManager manager=ManagerFactory.getByRecord(toReturn);
|
||||||
|
log.debug("Loaded object {} ",toReturn);
|
||||||
|
|
||||||
|
|
||||||
|
InputStreamDescriptor[] streams=new InputStreamDescriptor[request.getStreams().size()];
|
||||||
|
|
||||||
|
StorageClientProvider storage=ImplementationProvider.get().getStorageProvider();
|
||||||
|
|
||||||
|
for(int i=0;i<streams.length;i++) {
|
||||||
|
SHUBFileDescriptor sent=request.getStreams().get(i);
|
||||||
|
streams[i]=new InputStreamDescriptor(storage.open(sent.getShubID()), sent.getFilename());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
switch(request.getSection()) {
|
||||||
|
case PIANTA :manager.addPiantaFineScavo((LayerConcessione) request.getToRegister(),streams);
|
||||||
|
break;
|
||||||
|
case POSIZIONAMENTO : manager.setPosizionamento((LayerConcessione) request.getToRegister(),streams);
|
||||||
|
break;
|
||||||
|
case RELAZIONE : manager.setRelazioneScavo((RelazioneScavo)request.getToRegister(), streams[0]);
|
||||||
|
break;
|
||||||
|
case UPLOADED_IMG : manager.addImmagineRappresentativa((UploadedImage)request.getToRegister(), streams[0]);
|
||||||
|
break;
|
||||||
|
default : throw new Exception("Unrecognized section");
|
||||||
|
}
|
||||||
|
|
||||||
|
PublicationReport report=manager.commitSafely(false);
|
||||||
|
return report.prettyPrint();
|
||||||
}catch(WebApplicationException e){
|
}catch(WebApplicationException e){
|
||||||
log.warn("Unable to serve request",e);
|
log.warn("Unable to serve request",e);
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -79,6 +117,9 @@ public class Concessioni {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public String getList(){
|
public String getList(){
|
||||||
|
@ -99,5 +140,4 @@ public class Concessioni {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package org.gcube.application.geoportal.service.utils;
|
||||||
|
|
||||||
|
import static org.gcube.common.authorization.client.Constants.authorizationService;
|
||||||
|
|
||||||
|
import org.gcube.common.authorization.library.AuthorizationEntry;
|
||||||
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class ContextUtils {
|
||||||
|
|
||||||
|
public static String getCurrentScope(){
|
||||||
|
try{
|
||||||
|
String token=SecurityTokenProvider.instance.get();
|
||||||
|
log.debug("Token is : "+token);
|
||||||
|
if(token==null) throw new Exception("Security Token is null");
|
||||||
|
AuthorizationEntry entry = authorizationService().get(token);
|
||||||
|
return entry.getContext();
|
||||||
|
}catch(Exception e ){
|
||||||
|
log.debug("Unable to resolve token, checking scope provider..",e);
|
||||||
|
return ScopeProvider.instance.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCurrentCaller(){
|
||||||
|
try{
|
||||||
|
String token=SecurityTokenProvider.instance.get();
|
||||||
|
log.debug("Token is : "+token);
|
||||||
|
if(token==null) throw new Exception("Security Token is null");
|
||||||
|
AuthorizationEntry entry = authorizationService().get(token);
|
||||||
|
return entry.getClientInfo().getId();
|
||||||
|
}catch(Exception e ){
|
||||||
|
log.debug("Unable to resolve token, checking scope provider..",e);
|
||||||
|
return "Unidentified data-transfer user";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,5 +20,7 @@ public class Serialization {
|
||||||
public static <T> T read(String jsonString,Class<T> clazz) throws JsonProcessingException, IOException {
|
public static <T> T read(String jsonString,Class<T> clazz) throws JsonProcessingException, IOException {
|
||||||
return mapper.readerFor(clazz).readValue(jsonString);
|
return mapper.readerFor(clazz).readValue(jsonString);
|
||||||
}
|
}
|
||||||
|
public static String write(Object toWrite) throws JsonProcessingException {
|
||||||
|
return mapper.writeValueAsString(toWrite);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,17 +16,23 @@ import javax.persistence.spi.ClassTransformer;
|
||||||
import javax.persistence.spi.PersistenceUnitInfo;
|
import javax.persistence.spi.PersistenceUnitInfo;
|
||||||
import javax.persistence.spi.PersistenceUnitTransactionType;
|
import javax.persistence.spi.PersistenceUnitTransactionType;
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
|
import javax.ws.rs.client.Entity;
|
||||||
import javax.ws.rs.client.WebTarget;
|
import javax.ws.rs.client.WebTarget;
|
||||||
import javax.ws.rs.core.Application;
|
import javax.ws.rs.core.Application;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
import org.gcube.application.geoportal.managers.AbstractRecordManager;
|
import org.gcube.application.geoportal.managers.AbstractRecordManager;
|
||||||
import org.gcube.application.geoportal.managers.DefatulEMFProvider;
|
import org.gcube.application.geoportal.managers.DefatulEMFProvider;
|
||||||
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.service.GeoportalService;
|
import org.gcube.application.geoportal.service.GeoportalService;
|
||||||
import org.gcube.application.geoportal.utils.Serialization;
|
import org.gcube.application.geoportal.service.engine.ImplementationProvider;
|
||||||
|
import org.gcube.application.geoportal.service.engine.StorageClientProvider;
|
||||||
|
import org.gcube.application.geoportal.service.utils.Serialization;
|
||||||
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
|
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import org.gcube.contentmanagement.blobstorage.service.IClient;
|
||||||
import org.glassfish.jersey.test.JerseyTest;
|
import org.glassfish.jersey.test.JerseyTest;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -44,15 +50,25 @@ public class Concessioni extends JerseyTest {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void init() {
|
public static void init() {
|
||||||
|
String scope="/gcube/devNext/NextNext";
|
||||||
AbstractRecordManager.setDefaultProvider(new DefatulEMFProvider(){
|
AbstractRecordManager.setDefaultProvider(new DefatulEMFProvider(){
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityManagerFactory getFactory() {
|
public EntityManagerFactory getFactory() {
|
||||||
System.err.println("***********************SETTING DEBUG CONTEXT******************");
|
// System.err.println("***********************SETTING DEBUG CONTEXT******************");
|
||||||
TokenSetter.set("/gcube/devNext/NextNext");
|
TokenSetter.set(scope);
|
||||||
return super.getFactory();
|
return super.getFactory();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ImplementationProvider.get().setStorageProvider(new StorageClientProvider() {
|
||||||
|
@Override
|
||||||
|
public IClient getObject() throws ConfigurationException {
|
||||||
|
TokenSetter.set(scope);
|
||||||
|
return super.getObject();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,7 +83,7 @@ public class Concessioni extends JerseyTest {
|
||||||
System.out.println("Iterating through objects.. ");
|
System.out.println("Iterating through objects.. ");
|
||||||
for(Object o:coll) {
|
for(Object o:coll) {
|
||||||
System.out.println("Object class is "+o.getClass());
|
System.out.println("Object class is "+o.getClass());
|
||||||
Concessione c=Serialization.readObject(o.toString(), Concessione.class);
|
Concessione c=Serialization.read(o.toString(), Concessione.class);
|
||||||
System.out.println("Concessione is : "+c.asJson());
|
System.out.println("Concessione is : "+c.asJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,12 +91,30 @@ public class Concessioni extends JerseyTest {
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void createNew() {
|
public void createNew() throws IOException {
|
||||||
|
Concessione toCreate=TestModel.prepareEmptyConcessione();
|
||||||
WebTarget target=target(InterfaceConstants.Methods.CONCESSIONI);
|
WebTarget target=target(InterfaceConstants.Methods.CONCESSIONI);
|
||||||
// target.
|
Response resp=target.request(MediaType.APPLICATION_JSON).put(Entity.entity(toCreate.asJson(), MediaType.APPLICATION_JSON));
|
||||||
}
|
String resString=resp.readEntity(String.class);
|
||||||
|
System.out.println("Resp String is "+resString);
|
||||||
|
Concessione registered=Serialization.read(resString, Concessione.class);
|
||||||
|
System.out.println("Registered concessione at : "+registered);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void publishNew() throws IOException {
|
||||||
|
Concessione toCreate=TestModel.prepareEmptyConcessione();
|
||||||
|
WebTarget target=target(InterfaceConstants.Methods.CONCESSIONI);
|
||||||
|
Response resp=target.request(MediaType.APPLICATION_JSON).put(Entity.entity(toCreate.asJson(), MediaType.APPLICATION_JSON));
|
||||||
|
String resString=resp.readEntity(String.class);
|
||||||
|
System.out.println("Resp String is "+resString);
|
||||||
|
Concessione registered=Serialization.read(resString, Concessione.class);
|
||||||
|
System.out.println("Registered concessione at : "+registered);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static PersistenceUnitInfo archiverPersistenceUnitInfo() {
|
private static PersistenceUnitInfo archiverPersistenceUnitInfo() {
|
||||||
|
|
|
@ -3,12 +3,11 @@ package org.gcube.application.geoportal.service.legacy;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
|
||||||
import org.gcube.application.geoportal.common.model.profile.Profile;
|
import org.gcube.application.geoportal.common.model.profile.Profile;
|
||||||
import org.gcube.application.geoportal.common.utils.Files;
|
import org.gcube.application.geoportal.common.utils.Files;
|
||||||
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.service.engine.ImplementationProvider;
|
import org.gcube.application.geoportal.service.engine.ImplementationProvider;
|
||||||
import org.gcube.application.geoportal.service.engine.mongo.DefaultMongoProvider;
|
import org.gcube.application.geoportal.service.engine.cache.MongoClientProvider;
|
||||||
import org.gcube.application.geoportal.service.engine.mongo.MongoManager;
|
import org.gcube.application.geoportal.service.engine.mongo.MongoManager;
|
||||||
import org.gcube.application.geoportal.service.utils.Serialization;
|
import org.gcube.application.geoportal.service.utils.Serialization;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
|
@ -22,11 +21,11 @@ public class MongoTests {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static final void init() {
|
public static final void init() {
|
||||||
ImplementationProvider.get().setMongoClientProvider(new DefaultMongoProvider() {
|
ImplementationProvider.get().setMongoClientProvider(new MongoClientProvider() {
|
||||||
@Override
|
@Override
|
||||||
public MongoClient getClient() throws ConfigurationException {
|
public MongoClient getObject() throws ConfigurationException {
|
||||||
TokenSetter.set("/gcube/devNext/NextNext");
|
TokenSetter.set("/gcube/devNext/NextNext");
|
||||||
return super.getClient();
|
return super.getObject();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue