1.0.2 #2
|
@ -2,6 +2,13 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
||||||
|
|
||||||
# Changelog for org.gcube.application.geoportal-logic
|
# Changelog for org.gcube.application.geoportal-logic
|
||||||
|
|
||||||
|
## [v1.0.2] - 2020-11-4
|
||||||
|
|
||||||
|
PublicationReport
|
||||||
|
Fix style publication [File not found]
|
||||||
|
Fix getManagerByID
|
||||||
|
|
||||||
|
|
||||||
## [v1.0.1] - 2020-11-2
|
## [v1.0.1] - 2020-11-2
|
||||||
SDI publication exception are now non blocking
|
SDI publication exception are now non blocking
|
||||||
Automatic centroids layer creation
|
Automatic centroids layer creation
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -4,7 +4,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.gcube.application</groupId>
|
<groupId>org.gcube.application</groupId>
|
||||||
<artifactId>geoportal-logic</artifactId>
|
<artifactId>geoportal-logic</artifactId>
|
||||||
<version>1.0.1</version>
|
<version>1.0.2</version>
|
||||||
<name>Geoportal Logic</name>
|
<name>Geoportal Logic</name>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ import java.util.Properties;
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
import javax.persistence.EntityManagerFactory;
|
import javax.persistence.EntityManagerFactory;
|
||||||
import javax.persistence.EntityTransaction;
|
import javax.persistence.EntityTransaction;
|
||||||
import javax.persistence.Persistence;
|
|
||||||
import javax.persistence.SharedCacheMode;
|
import javax.persistence.SharedCacheMode;
|
||||||
import javax.persistence.ValidationMode;
|
import javax.persistence.ValidationMode;
|
||||||
import javax.persistence.spi.ClassTransformer;
|
import javax.persistence.spi.ClassTransformer;
|
||||||
|
@ -22,8 +21,6 @@ import javax.persistence.spi.PersistenceUnitInfo;
|
||||||
import javax.persistence.spi.PersistenceUnitTransactionType;
|
import javax.persistence.spi.PersistenceUnitTransactionType;
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
import org.apache.poi.ss.formula.functions.T;
|
|
||||||
import org.gcube.application.geoportal.managers.AbstractRecordManager.EMFProvider;
|
|
||||||
import org.gcube.application.geoportal.model.Record;
|
import org.gcube.application.geoportal.model.Record;
|
||||||
import org.gcube.application.geoportal.model.db.DBConstants;
|
import org.gcube.application.geoportal.model.db.DBConstants;
|
||||||
import org.gcube.application.geoportal.model.db.DatabaseConnection;
|
import org.gcube.application.geoportal.model.db.DatabaseConnection;
|
||||||
|
@ -34,6 +31,7 @@ import org.gcube.application.geoportal.model.fault.PersistenceException;
|
||||||
import org.gcube.application.geoportal.model.fault.PublishException;
|
import org.gcube.application.geoportal.model.fault.PublishException;
|
||||||
import org.gcube.application.geoportal.model.fault.SDIInteractionException;
|
import org.gcube.application.geoportal.model.fault.SDIInteractionException;
|
||||||
import org.gcube.application.geoportal.model.fault.ValidationException;
|
import org.gcube.application.geoportal.model.fault.ValidationException;
|
||||||
|
import org.gcube.application.geoportal.model.report.PublicationReport;
|
||||||
import org.gcube.application.geoportal.model.report.ValidationReport;
|
import org.gcube.application.geoportal.model.report.ValidationReport;
|
||||||
import org.gcube.application.geoportal.model.report.ValidationReport.ValidationStatus;
|
import org.gcube.application.geoportal.model.report.ValidationReport.ValidationStatus;
|
||||||
import org.gcube.application.geoportal.storage.ContentHandler;
|
import org.gcube.application.geoportal.storage.ContentHandler;
|
||||||
|
@ -101,29 +99,38 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
return emf;
|
return emf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
public static void shutdown() {
|
public static void shutdown() {
|
||||||
EntityManagerFactory emf=getEMF();
|
if(emf!=null) {
|
||||||
emf.close();
|
if(emf.isOpen()) emf.close();
|
||||||
|
emf=null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Record getByID(long id) {
|
public static Record getByID(long id) {
|
||||||
EntityManager em=getEMF().createEntityManager();
|
EntityManager em=getEMF().createEntityManager();
|
||||||
try {
|
try {
|
||||||
return em.find(Record.class, id);
|
log.debug("Looking for record by ID : "+id);
|
||||||
|
EntityTransaction tr=em.getTransaction();
|
||||||
|
tr.begin();
|
||||||
|
Record toReturn=em.find(Record.class, id);
|
||||||
|
log.debug("Loaded Record "+toReturn);
|
||||||
|
tr.commit();
|
||||||
|
return toReturn;
|
||||||
}finally {
|
}finally {
|
||||||
|
if(em.isJoinedToTransaction())
|
||||||
em.flush();
|
em.flush();
|
||||||
em.close();
|
em.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected T storeInfo()
|
// protected T storeInfo()
|
||||||
{
|
// {
|
||||||
log.debug("Storing Record "+theRecord);
|
// log.debug("Storing Record "+theRecord);
|
||||||
entityManager.persist(theRecord);
|
// entityManager.persist(theRecord);
|
||||||
return theRecord;
|
// return theRecord;
|
||||||
}
|
// }
|
||||||
|
|
||||||
//Transaction management
|
//Transaction management
|
||||||
|
|
||||||
|
@ -134,23 +141,30 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
|
|
||||||
private T theRecord;
|
private T theRecord;
|
||||||
|
|
||||||
private ContentHandler contentHandler;
|
private ContentHandler<T> contentHandler;
|
||||||
|
|
||||||
protected AbstractRecordManager(T theRecord){
|
protected AbstractRecordManager(T theRecord){
|
||||||
entityManager=getEMF().createEntityManager();
|
entityManager=getEMF().createEntityManager();
|
||||||
transaction=entityManager.getTransaction();
|
transaction=entityManager.getTransaction();
|
||||||
transaction.begin();
|
transaction.begin();
|
||||||
this.theRecord=theRecord;
|
this.theRecord=theRecord;
|
||||||
storeInfo();
|
// log.debug("Storing Record "+theRecord);
|
||||||
|
if(theRecord.getId()==0) {
|
||||||
|
log.debug("Passed record ID = 0. Assuming new ..");
|
||||||
|
entityManager.persist(theRecord);
|
||||||
|
}else {
|
||||||
|
log.debug("Passed record ID = "+theRecord.getId()+". Mergeing..");
|
||||||
|
entityManager.merge(theRecord);
|
||||||
|
}
|
||||||
|
|
||||||
this.contentHandler=new ContentHandler(theRecord);
|
this.contentHandler=new ContentHandler<T>(theRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected ContentHandler getContentHandler() {
|
protected ContentHandler<T> getContentHandler() {
|
||||||
return contentHandler;
|
return contentHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,6 +205,44 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public PublicationReport commitSafely(boolean publish) {
|
||||||
|
log.debug("Safely publishing "+theRecord);
|
||||||
|
PublicationReport toReturn=new PublicationReport("Publication Report");
|
||||||
|
toReturn.setTheRecord(getRecord());
|
||||||
|
|
||||||
|
|
||||||
|
ValidationReport validation=theRecord.validate();
|
||||||
|
validation.setObjectName("Validation report for "+validation.getObjectName());
|
||||||
|
if(validation.getStatus().equals(ValidationStatus.ERROR)) {
|
||||||
|
toReturn.addMessage(publish?ValidationStatus.ERROR:ValidationStatus.WARNING, "Record not valid.");
|
||||||
|
}
|
||||||
|
toReturn.addChild(validation);
|
||||||
|
|
||||||
|
log.debug("Record is valid, storing changed content [Publish is :"+publish+"]");
|
||||||
|
try {
|
||||||
|
toReturn.addChild(contentHandler.storeChanges(publish));
|
||||||
|
|
||||||
|
if(publish) {
|
||||||
|
log.debug("Registering centroid of "+theRecord);
|
||||||
|
registerCentroid();
|
||||||
|
toReturn.addMessage(ValidationStatus.PASSED, "Inserito centroide per record "+theRecord.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (PersistenceException e) {
|
||||||
|
toReturn.addChild(e.getReport());
|
||||||
|
} catch (PublishException e) {
|
||||||
|
toReturn.addMessage(ValidationStatus.WARNING, "Centroide non registrato");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
log.info("Report is "+toReturn.prettyPrint());
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.warn("Unable to pretty print report "+toReturn,e);
|
||||||
|
}
|
||||||
|
return toReturn;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void finalize() throws Throwable {
|
protected void finalize() throws Throwable {
|
||||||
if(transaction.isActive()) {
|
if(transaction.isActive()) {
|
||||||
|
@ -226,10 +278,10 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
|
|
||||||
}catch(SQLException e) {
|
}catch(SQLException e) {
|
||||||
log.warn("Unable to publish Centroid for record "+theRecord,e);
|
log.warn("Unable to publish Centroid for record "+theRecord,e);
|
||||||
// throw new PublishException("Unable to publish centroid.",e, null);
|
throw new PublishException("Unable to publish centroid.",e, null);
|
||||||
}catch(SDIInteractionException e) {
|
}catch(SDIInteractionException e) {
|
||||||
log.warn("Unable to publish Centroid Layer for record type "+getRecord().getRecordType(),e);
|
log.warn("Unable to publish Centroid Layer for record type "+getRecord().getRecordType(),e);
|
||||||
// throw new PublishException("Unable to publish centroid.",e, null);
|
throw new PublishException("Unable to publish centroid.",e, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,30 +1,38 @@
|
||||||
package org.gcube.application.geoportal.model.fault;
|
package org.gcube.application.geoportal.model.fault;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.model.report.PublicationReport;
|
||||||
|
|
||||||
|
|
||||||
public class PersistenceException extends Exception {
|
public class PersistenceException extends Exception {
|
||||||
|
|
||||||
public PersistenceException() {
|
/**
|
||||||
// TODO Auto-generated constructor stub
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -6607258789784961416L;
|
||||||
|
PublicationReport report;
|
||||||
|
|
||||||
|
public PersistenceException(PublicationReport report) {
|
||||||
|
super();
|
||||||
|
this.report = report;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PersistenceException(String message) {
|
public PersistenceException(String message, PublicationReport report) {
|
||||||
super(message);
|
super(message);
|
||||||
// TODO Auto-generated constructor stub
|
this.report = report;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PersistenceException(Throwable cause) {
|
public PersistenceException(String message, Throwable cause, PublicationReport report) {
|
||||||
super(cause);
|
|
||||||
// TODO Auto-generated constructor stub
|
|
||||||
}
|
|
||||||
|
|
||||||
public PersistenceException(String message, Throwable cause) {
|
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
// TODO Auto-generated constructor stub
|
this.report = report;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PersistenceException(String message, Throwable cause, boolean enableSuppression,
|
public PersistenceException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace,
|
||||||
boolean writableStackTrace) {
|
PublicationReport report) {
|
||||||
super(message, cause, enableSuppression, writableStackTrace);
|
super(message, cause, enableSuppression, writableStackTrace);
|
||||||
// TODO Auto-generated constructor stub
|
this.report = report;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PublicationReport getReport() {
|
||||||
|
return report;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,37 @@
|
||||||
package org.gcube.application.geoportal.model.report;
|
package org.gcube.application.geoportal.model.report;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.model.Record;
|
import org.gcube.application.geoportal.model.Record;
|
||||||
|
import org.gcube.application.geoportal.utils.Serialization;
|
||||||
|
|
||||||
import lombok.NonNull;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
import lombok.Getter;
|
||||||
public class PublicationReport<T extends Record> {
|
import lombok.Setter;
|
||||||
|
|
||||||
@NonNull
|
|
||||||
private T theRecord;
|
|
||||||
|
|
||||||
|
|
||||||
|
public class PublicationReport extends ValidationReport implements Serializable{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -1422004928222440165L;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private Record theRecord;
|
||||||
|
|
||||||
|
public PublicationReport(String objectName) {
|
||||||
|
super(objectName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String prettyPrint() throws JsonProcessingException {
|
||||||
|
Record app=theRecord;
|
||||||
|
theRecord=null;
|
||||||
|
String toReturn=Serialization.prettyPrint(this);
|
||||||
|
theRecord=app;
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,10 @@ import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.utils.Serialization;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@ -70,7 +74,9 @@ public class ValidationReport implements Serializable{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public String prettyPrint() throws JsonProcessingException {
|
||||||
|
return Serialization.prettyPrint(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,9 @@ import org.gcube.application.geoportal.model.content.WorkspaceContent;
|
||||||
import org.gcube.application.geoportal.model.fault.PersistenceException;
|
import org.gcube.application.geoportal.model.fault.PersistenceException;
|
||||||
import org.gcube.application.geoportal.model.fault.SDIInteractionException;
|
import org.gcube.application.geoportal.model.fault.SDIInteractionException;
|
||||||
import org.gcube.application.geoportal.model.gis.SDILayerDescriptor;
|
import org.gcube.application.geoportal.model.gis.SDILayerDescriptor;
|
||||||
|
import org.gcube.application.geoportal.model.report.PublicationReport;
|
||||||
import org.gcube.application.geoportal.model.report.ValidationReport;
|
import org.gcube.application.geoportal.model.report.ValidationReport;
|
||||||
|
import org.gcube.application.geoportal.model.report.ValidationReport.ValidationStatus;
|
||||||
import org.gcube.application.geoportal.utils.Files;
|
import org.gcube.application.geoportal.utils.Files;
|
||||||
import org.gcube.common.storagehub.client.dsl.FolderContainer;
|
import org.gcube.common.storagehub.client.dsl.FolderContainer;
|
||||||
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
||||||
|
@ -28,7 +30,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ContentHandler {
|
public class ContentHandler<T extends Record> {
|
||||||
|
|
||||||
private Map<AssociatedContent,ArrayList<TempFile>> uploadedResources=new HashMap<AssociatedContent, ArrayList<TempFile>>();
|
private Map<AssociatedContent,ArrayList<TempFile>> uploadedResources=new HashMap<AssociatedContent, ArrayList<TempFile>>();
|
||||||
|
|
||||||
|
@ -36,9 +38,9 @@ public class ContentHandler {
|
||||||
|
|
||||||
private ArrayList<TempFile> toDeleteTemps=new ArrayList<TempFile>();
|
private ArrayList<TempFile> toDeleteTemps=new ArrayList<TempFile>();
|
||||||
|
|
||||||
private Record record;
|
private T record;
|
||||||
|
|
||||||
public ContentHandler(Record record) {
|
public ContentHandler(T record) {
|
||||||
this.record=record;
|
this.record=record;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,12 +73,13 @@ public class ContentHandler {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void storeChanges(Boolean publish) throws PersistenceException {
|
public PublicationReport storeChanges(Boolean publish) throws PersistenceException {
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
try {
|
|
||||||
log.debug("Starting to persist "+uploadedResources.size()+" resources "+record.getNome());
|
log.debug("Starting to persist "+uploadedResources.size()+" resources "+record.getNome());
|
||||||
|
PublicationReport toReturn=new PublicationReport("Storage report");
|
||||||
|
try {
|
||||||
|
|
||||||
WorkspaceManager wsManager=new WorkspaceManager(record);
|
WorkspaceManager wsManager=new WorkspaceManager(record);
|
||||||
SDIManager sdiManager=null;
|
SDIManager sdiManager=null;
|
||||||
|
@ -116,7 +119,9 @@ public class ContentHandler {
|
||||||
persisted.add(geoserverPersisted);
|
persisted.add(geoserverPersisted);
|
||||||
}catch(SDIInteractionException e) {
|
}catch(SDIInteractionException e) {
|
||||||
log.warn("Unable to publish layers.",e);
|
log.warn("Unable to publish layers.",e);
|
||||||
|
toReturn.addMessage(ValidationStatus.WARNING, "Layer "+content.getTitolo()+" non pubblicato.");
|
||||||
}
|
}
|
||||||
|
toReturn.addMessage(ValidationStatus.PASSED, "Pubblicato layer "+content.getTitolo());
|
||||||
}
|
}
|
||||||
|
|
||||||
}else throw new Exception("Invalid SDI Content "+content);
|
}else throw new Exception("Invalid SDI Content "+content);
|
||||||
|
@ -129,20 +134,25 @@ public class ContentHandler {
|
||||||
|
|
||||||
log.debug("Actually Storing files to WS folder "+destination.getId());
|
log.debug("Actually Storing files to WS folder "+destination.getId());
|
||||||
|
|
||||||
|
|
||||||
for(TempFile theFile : entry.getValue()) {
|
for(TempFile theFile : entry.getValue()) {
|
||||||
WorkspaceContent wsContent=wsManager.storeToWS(theFile.getTheFile(), destination, theFile.getOriginalFileName(), description);
|
WorkspaceContent wsContent=wsManager.storeToWS(theFile.getTheFile(), destination, theFile.getOriginalFileName(), description);
|
||||||
wsContent.setAssociated(content);
|
wsContent.setAssociated(content);
|
||||||
persisted.add(wsContent);
|
persisted.add(wsContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toReturn.addMessage(ValidationStatus.PASSED, "Registrati "+entry.getValue().size()+" elementi in archivio per : "+content.getTitolo());
|
||||||
|
|
||||||
content.setActualContent(persisted);
|
content.setActualContent(persisted);
|
||||||
}
|
}
|
||||||
|
return toReturn;
|
||||||
}catch(StorageHubException e) {
|
}catch(StorageHubException e) {
|
||||||
|
toReturn.addMessage(ValidationStatus.ERROR, "Impossibile archiviare.");
|
||||||
log.error("Unexpected SGHUB Exception",e);
|
log.error("Unexpected SGHUB Exception",e);
|
||||||
throw new PersistenceException("Unexpected Exception",e);
|
throw new PersistenceException("Unexpected Exception",e,toReturn);
|
||||||
}catch(Throwable t) {
|
}catch(Throwable t) {
|
||||||
throw new PersistenceException("Unexpected Exception",t);
|
toReturn.addMessage(ValidationStatus.ERROR, "Errore inatteso.");
|
||||||
|
throw new PersistenceException("Unexpected Exception",t,toReturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,7 +198,7 @@ public class SDIManager {
|
||||||
//Checking store
|
//Checking store
|
||||||
createStoreFromPostgisDB(workspace, storeName);
|
createStoreFromPostgisDB(workspace, storeName);
|
||||||
//Checkig layer
|
//Checkig layer
|
||||||
publishLayer(Files.getFileFromResources("/styles/clustered_points.sld"),style);
|
publishLayer(Files.getFileFromResources("styles/clustered_points.sld"),style);
|
||||||
|
|
||||||
if(!gis.getCurrentGeoServer().getPublisher().publishDBLayer(workspace, storeName, fte, layerEncoder))
|
if(!gis.getCurrentGeoServer().getPublisher().publishDBLayer(workspace, storeName, fte, layerEncoder))
|
||||||
log.warn("Unable to create layer "+name+". Assuming already exisintg..");
|
log.warn("Unable to create layer "+name+". Assuming already exisintg..");
|
||||||
|
|
|
@ -6,6 +6,7 @@ import java.util.Collection;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.model.Record;
|
import org.gcube.application.geoportal.model.Record;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||||
import com.fasterxml.jackson.core.JsonParseException;
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||||
|
@ -29,8 +30,9 @@ static private ObjectMapper prettyMapper;
|
||||||
|
|
||||||
prettyMapper=new ObjectMapper();
|
prettyMapper=new ObjectMapper();
|
||||||
prettyMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
|
prettyMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
|
||||||
|
prettyMapper.setSerializationInclusion(Include.NON_NULL);
|
||||||
prettyMapper.configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false);
|
prettyMapper.configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false);
|
||||||
mapper.registerModule(new JavaTimeModule());
|
prettyMapper.registerModule(new JavaTimeModule());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,14 @@ import java.io.IOException;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.model.Record;
|
import org.gcube.application.geoportal.model.Record;
|
||||||
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
||||||
|
import org.gcube.application.geoportal.model.report.PublicationReport;
|
||||||
import org.gcube.application.geoportal.utils.Serialization;
|
import org.gcube.application.geoportal.utils.Serialization;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonParseException;
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||||
|
|
||||||
public class SerializationTests {
|
public class SerializationTests {
|
||||||
|
@ -21,6 +23,12 @@ public class SerializationTests {
|
||||||
concessione=TestModel.prepareConcessione();
|
concessione=TestModel.prepareConcessione();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void prettyPrint() throws JsonProcessingException {
|
||||||
|
PublicationReport rep=new PublicationReport("my report");
|
||||||
|
rep.setTheRecord(concessione);
|
||||||
|
System.out.println(rep.prettyPrint());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void serilalization() throws JsonParseException, JsonMappingException, IOException {
|
public void serilalization() throws JsonParseException, JsonMappingException, IOException {
|
||||||
|
|
|
@ -27,7 +27,8 @@ public class TestSDI {
|
||||||
|
|
||||||
SDIManager sdiManager=new SDIManager();
|
SDIManager sdiManager=new SDIManager();
|
||||||
|
|
||||||
sdiManager.createWorkspace(workspaceName);
|
// sdiManager.createWorkspace(workspaceName);
|
||||||
|
sdiManager.configureCentroidLayer("centroids_concessioni", "gna:test", "gna_test_postgis");
|
||||||
// sdiManager.publishShapeFile(workspaceName, file.getPublicLink());
|
// sdiManager.publishShapeFile(workspaceName, file.getPublicLink());
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.gcube.application.geoportal;
|
package org.gcube.application.geoportal;
|
||||||
|
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.managers.ConcessioneManager;
|
import org.gcube.application.geoportal.managers.ConcessioneManager;
|
||||||
|
@ -10,10 +11,7 @@ import org.gcube.application.geoportal.model.concessioni.Concessione;
|
||||||
import org.gcube.application.geoportal.model.concessioni.LayerConcessione;
|
import org.gcube.application.geoportal.model.concessioni.LayerConcessione;
|
||||||
import org.gcube.application.geoportal.model.concessioni.RelazioneScavo;
|
import org.gcube.application.geoportal.model.concessioni.RelazioneScavo;
|
||||||
import org.gcube.application.geoportal.model.content.UploadedImage;
|
import org.gcube.application.geoportal.model.content.UploadedImage;
|
||||||
import org.gcube.application.geoportal.model.content.WorkspaceContent;
|
import org.gcube.application.geoportal.model.report.PublicationReport;
|
||||||
import org.gcube.application.geoportal.model.fault.PersistenceException;
|
|
||||||
import org.gcube.application.geoportal.model.fault.PublishException;
|
|
||||||
import org.gcube.application.geoportal.model.fault.ValidationException;
|
|
||||||
import org.gcube.application.geoportal.model.report.ValidationReport;
|
import org.gcube.application.geoportal.model.report.ValidationReport;
|
||||||
import org.gcube.application.geoportal.model.report.ValidationReport.ValidationStatus;
|
import org.gcube.application.geoportal.model.report.ValidationReport.ValidationStatus;
|
||||||
import org.gcube.application.geoportal.utils.Files;
|
import org.gcube.application.geoportal.utils.Files;
|
||||||
|
@ -22,19 +20,29 @@ import org.junit.Assert;
|
||||||
|
|
||||||
public class UseCases {
|
public class UseCases {
|
||||||
|
|
||||||
public static void main(String[] args) throws PersistenceException, IOException, ValidationException, PublishException {
|
public static void main(String[] args) throws FileNotFoundException, IOException {
|
||||||
// TokenSetter.set("/gcube/devNext/NextNext");
|
TokenSetter.set("/gcube/devNext/NextNext");
|
||||||
TokenSetter.set("/pred4s/preprod/preVRE");
|
// TokenSetter.set("/pred4s/preprod/preVRE");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
registerNewConcessione();
|
// System.out.println("Try to create..");
|
||||||
}catch(ValidationException e) {
|
// Concessione conc=registerNewConcessione();
|
||||||
System.err.println("Errore di validazione ");
|
|
||||||
System.err.println(Serialization.prettyPrint(e.getReport()));
|
// long id=conc.getId();
|
||||||
}
|
|
||||||
|
long id=48;
|
||||||
|
System.out.println("Tryint to read by id "+id);
|
||||||
|
readConcessione(id);
|
||||||
|
}catch(Throwable t) {
|
||||||
|
System.err.println("ALERT "+t.getMessage());
|
||||||
|
throw t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void registerNewConcessione() throws PersistenceException, IOException, ValidationException, PublishException{
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Concessione registerNewConcessione() throws FileNotFoundException, IOException{
|
||||||
ConcessioneManager manager=null;
|
ConcessioneManager manager=null;
|
||||||
try {
|
try {
|
||||||
//Preparo l'istanza del modello con i vari campi compilati e senza gli allegati
|
//Preparo l'istanza del modello con i vari campi compilati e senza gli allegati
|
||||||
|
@ -85,7 +93,7 @@ public class UseCases {
|
||||||
Concessione prepared=manager.getRecord();
|
Concessione prepared=manager.getRecord();
|
||||||
System.out.println("Object before validation is "+prepared);
|
System.out.println("Object before validation is "+prepared);
|
||||||
ValidationReport report=manager.getRecord().validate();
|
ValidationReport report=manager.getRecord().validate();
|
||||||
System.out.println("Report is : "+Serialization.prettyPrint(report));
|
System.out.println("Report is : "+report.prettyPrint());
|
||||||
Assert.assertEquals(report.getStatus(),ValidationStatus.PASSED);
|
Assert.assertEquals(report.getStatus(),ValidationStatus.PASSED);
|
||||||
System.out.println("Object after validation is "+prepared);
|
System.out.println("Object after validation is "+prepared);
|
||||||
|
|
||||||
|
@ -94,17 +102,38 @@ public class UseCases {
|
||||||
*scrittura sul WS
|
*scrittura sul WS
|
||||||
*pubblicazione sull'SDI (boolean publish)
|
*pubblicazione sull'SDI (boolean publish)
|
||||||
*scrittura sul DB di applicazione sia dei meta che dei vari link */
|
*scrittura sul DB di applicazione sia dei meta che dei vari link */
|
||||||
Concessione registered=manager.commit(publish);
|
|
||||||
|
|
||||||
|
//Metodo con eccezioni
|
||||||
|
// Concessione registered=manager.commit(publish);
|
||||||
|
|
||||||
|
|
||||||
|
//Metodo con report
|
||||||
|
PublicationReport pubReport=manager.commitSafely(publish);
|
||||||
|
Concessione registered=(Concessione) pubReport.getTheRecord();
|
||||||
|
|
||||||
System.out.println("REGISTERED "+registered);
|
System.out.println("REGISTERED "+registered);
|
||||||
Assert.assertNotNull(((WorkspaceContent)registered.getRelazioneScavo().getActualContent().get(0)).getLink());
|
|
||||||
|
System.out.println("Report is "+pubReport.prettyPrint());
|
||||||
|
Assert.assertFalse(pubReport.getStatus().equals(ValidationStatus.ERROR));
|
||||||
|
|
||||||
|
|
||||||
|
return registered;
|
||||||
//--- FINALLY --/
|
//--- FINALLY --/
|
||||||
|
|
||||||
}finally{
|
}finally{
|
||||||
manager.shutdown();
|
manager.shutdown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void readConcessione(long id) {
|
||||||
|
|
||||||
|
ConcessioneManager manager=ManagerFactory.getByRecordID(id);
|
||||||
|
try{
|
||||||
|
System.out.println(manager.getRecord());
|
||||||
|
}finally {
|
||||||
|
manager.shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue