From ad39435e96fb6b2f016d718092803433930d3cfa Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Tue, 3 Nov 2020 15:49:30 +0100 Subject: [PATCH 1/8] Changed geoserver path for layer --- pom.xml | 2 +- .../application/geoportal/storage/SDIManager.java | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index c3b9173..798c042 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ org.gcube.distribution gcube-bom - 2.0.0 + 2.0.0-SNAPSHOT pom import diff --git a/src/main/java/org/gcube/application/geoportal/storage/SDIManager.java b/src/main/java/org/gcube/application/geoportal/storage/SDIManager.java index 886ed00..34f0881 100644 --- a/src/main/java/org/gcube/application/geoportal/storage/SDIManager.java +++ b/src/main/java/org/gcube/application/geoportal/storage/SDIManager.java @@ -69,8 +69,6 @@ public class SDIManager { try { String remoteFolder=null; String fileName=null; - long projectInternalID=currentElement.getRecord().getId(); - long layerInternalID=currentElement.getId(); log.debug("Transferring "+files.size()+" files to geoserver @ "+geoserverHostName); @@ -83,14 +81,15 @@ public class SDIManager { Destination destination=new Destination(f.getOriginalFileName()); destination.setCreateSubfolders(true); destination.setOnExistingFileName(DestinationClashPolicy.REWRITE); + destination.setOnExistingSubFolder(DestinationClashPolicy.ADD_SUFFIX); destination.setPersistenceId("geoserver"); - destination.setSubFolder("GNA/"+projectInternalID+"/"+layerInternalID); + destination.setSubFolder("GNA/"+currentElement.getRecord().getId()+"/"+currentElement.getLayerName()); TransferResult result=dtGeoServer.localFile(f.getTheFile(), destination); content.getFileNames().add(f.getOriginalFileName()); - remoteFolder=result.getRemotePath(); + remoteFolder=result.getRemotePath().substring(0,result.getRemotePath().lastIndexOf("/")); fileName=f.getOriginalFileName(); - content.setGeoserverPath(result.getRemotePath()); + content.setGeoserverPath(remoteFolder); } @@ -105,7 +104,7 @@ public class SDIManager { gis.getCurrentGeoServer().getPublisher().createWorkspace(workspace); log.debug("Publishing remote folder "+remoteFolder); - URL directoryPath=new URL("file:"+remoteFolder.substring(0,remoteFolder.lastIndexOf("/"))); + URL directoryPath=new URL("file:"+remoteFolder); String DEFAULT_CRS="EPSG:4326"; -- 2.17.1 From 972b1a3a1e4a7a832eebe17ebde0d814eaf7f2fe Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Tue, 3 Nov 2020 15:59:19 +0100 Subject: [PATCH 2/8] SDI Interaction Exception is now not rethrown --- .../geoportal/storage/ContentHandler.java | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/gcube/application/geoportal/storage/ContentHandler.java b/src/main/java/org/gcube/application/geoportal/storage/ContentHandler.java index a851df4..c907de5 100644 --- a/src/main/java/org/gcube/application/geoportal/storage/ContentHandler.java +++ b/src/main/java/org/gcube/application/geoportal/storage/ContentHandler.java @@ -17,6 +17,7 @@ import org.gcube.application.geoportal.model.content.PersistedContent; import org.gcube.application.geoportal.model.content.UploadedImage; import org.gcube.application.geoportal.model.content.WorkspaceContent; import org.gcube.application.geoportal.model.fault.PersistenceException; +import org.gcube.application.geoportal.model.fault.SDIInteractionException; import org.gcube.application.geoportal.model.gis.SDILayerDescriptor; import org.gcube.application.geoportal.model.report.ValidationReport; import org.gcube.application.geoportal.utils.Files; @@ -42,11 +43,6 @@ public class ContentHandler { } - - - - - /** * Register files as to be associated with content * @@ -86,8 +82,8 @@ public class ContentHandler { SDIManager sdiManager=null; if(publish) sdiManager=new SDIManager(); - - + + for(Entry> entry:uploadedResources.entrySet()) { AssociatedContent content=entry.getKey(); ArrayList persisted=new ArrayList(); @@ -95,7 +91,7 @@ public class ContentHandler { String description=null; String workspace=null; log.debug("Storing "+content); - + if(content instanceof RelazioneScavo) { destination= wsManager.getSubFolder("relazione"); description="Relazione di scavo : "+content.getTitolo(); @@ -108,27 +104,31 @@ public class ContentHandler { if(content instanceof LayerConcessione) { destination= wsManager.getSubFolder("layers/"+content.getTitolo()); description="Layer concessione : "+content.getTitolo(); - + if(publish) { - //if not present create workspace for current project - if(workspace==null) - workspace=sdiManager.createWorkspace("gna_conc_"+record.getId()); - - GeoServerContent geoserverPersisted=sdiManager.pushShapeLayerFileSet((SDILayerDescriptor)content, entry.getValue(),workspace); - geoserverPersisted.setAssociated(content); - persisted.add(geoserverPersisted); + try { + //if not present create workspace for current project + if(workspace==null) + workspace=sdiManager.createWorkspace("gna_conc_"+record.getId()); + + GeoServerContent geoserverPersisted=sdiManager.pushShapeLayerFileSet((SDILayerDescriptor)content, entry.getValue(),workspace); + geoserverPersisted.setAssociated(content); + persisted.add(geoserverPersisted); + }catch(SDIInteractionException e) { + log.warn("Unable to publish layers.",e); + } } - + }else throw new Exception("Invalid SDI Content "+content); - - + + }else if (content instanceof OtherContent ) { destination= wsManager.getSubFolder("other/"+content.getTitolo()); description= "Other content : "+content.getTitolo(); }else throw new Exception ("Invalid content "+content); - + log.debug("Actually Storing files to WS folder "+destination.getId()); - + for(TempFile theFile : entry.getValue()) { WorkspaceContent wsContent=wsManager.storeToWS(theFile.getTheFile(), destination, theFile.getOriginalFileName(), description); wsContent.setAssociated(content); -- 2.17.1 From 2c072076756860cf5c93753d253ff6374dca2110 Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Tue, 3 Nov 2020 16:48:21 +0100 Subject: [PATCH 3/8] Automatic centroids layer configuration --- pom.xml | 2 +- .../geoportal/LocalConfiguration.java | 56 ++++++++++++++ .../managers/AbstractRecordManager.java | 27 ++++--- .../managers/ConcessioneManager.java | 15 ++++ .../geoportal/storage/SDIManager.java | 73 ++++++++++++++++++- src/main/resources/config.properties | 9 +++ 6 files changed, 168 insertions(+), 14 deletions(-) create mode 100644 src/main/java/org/gcube/application/geoportal/LocalConfiguration.java create mode 100644 src/main/resources/config.properties diff --git a/pom.xml b/pom.xml index 798c042..920cac8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.gcube.application geoportal-logic - 1.0.0 + 1.0.0.1-SNAPSHOT Geoportal Logic diff --git a/src/main/java/org/gcube/application/geoportal/LocalConfiguration.java b/src/main/java/org/gcube/application/geoportal/LocalConfiguration.java new file mode 100644 index 0000000..4bec077 --- /dev/null +++ b/src/main/java/org/gcube/application/geoportal/LocalConfiguration.java @@ -0,0 +1,56 @@ +package org.gcube.application.geoportal; + +import java.net.URL; +import java.util.Properties; + + +import lombok.Synchronized; +import lombok.extern.slf4j.Slf4j; +@Slf4j +public class LocalConfiguration { + + + static LocalConfiguration instance=null; + + + @Synchronized + public static LocalConfiguration init(URL propertiesURL){ + if(instance==null) + instance=new LocalConfiguration(propertiesURL); + return instance; + } + + private Properties props=new Properties(); + + private LocalConfiguration(URL propertiesURL) { + try{ + log.debug("Loading {} ",propertiesURL); + props.load(propertiesURL.openStream()); + }catch(Exception e){ + throw new RuntimeException(e); + } + } + + public static String getProperty(String property){ + return instance.props.getProperty(property); + } + + public static String getProperty(String property,String defaultValue){ + return instance.props.getProperty(property, defaultValue); + } + + public static Long getTTL(String property) { + return Long.parseLong(getProperty(property)); + } + + public static boolean getFlag(String property) { + return Boolean.parseBoolean(property); + } + +// private static Object templateConfiguration=null; +// +// public static Object getTemplateConfigurationObject() {return templateConfiguration;} +// public static void setTemplateConfigurationObject(Object obj) {templateConfiguration=obj;} + +} + diff --git a/src/main/java/org/gcube/application/geoportal/managers/AbstractRecordManager.java b/src/main/java/org/gcube/application/geoportal/managers/AbstractRecordManager.java index 20d46c9..bf8e038 100644 --- a/src/main/java/org/gcube/application/geoportal/managers/AbstractRecordManager.java +++ b/src/main/java/org/gcube/application/geoportal/managers/AbstractRecordManager.java @@ -30,6 +30,7 @@ import org.gcube.application.geoportal.model.db.PostgisTable.Field; import org.gcube.application.geoportal.model.db.PostgisTable.FieldType; import org.gcube.application.geoportal.model.fault.PersistenceException; import org.gcube.application.geoportal.model.fault.PublishException; +import org.gcube.application.geoportal.model.fault.SDIInteractionException; import org.gcube.application.geoportal.model.fault.ValidationException; import org.gcube.application.geoportal.model.report.ValidationReport; import org.gcube.application.geoportal.model.report.ValidationReport.ValidationStatus; @@ -44,9 +45,8 @@ import jersey.repackaged.com.google.common.collect.ImmutableMap; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; @Slf4j -public abstract class AbstractRecordManager { - - +public abstract class AbstractRecordManager { + private static EntityManagerFactory emf=null; @Synchronized @@ -195,27 +195,34 @@ public abstract class AbstractRecordManager { log.debug("Contacting postgis DB .. "); PostgisDBManagerI db=PostgisDBManager.get(); - - - PostgisTable centroidsTable=DBConstants.Concessioni.CENTROIDS; + + PostgisTable centroidsTable=getCentroidsTable(); log.debug("Inserting / updated centroid Row {} ",centroidRow); PreparedStatement ps = db.prepareInsertStatement(centroidsTable, true, true); - log.debug("Deleting centroid if present. ID is "+theRecord.getId()); db.deleteByFieldValue(centroidsTable, new Field(DBConstants.Concessioni.PRODUCT_ID,FieldType.TEXT), theRecord.getId()+""); centroidsTable.fillCSVPreparedStatament(centroidRow, ps, false); ps.executeUpdate(); db.commit(); + + initCentroidLayer(); + + }catch(SQLException e) { - throw new PublishException("Unable to publish centroid.",e, null); + log.warn("Unable to publish Centroid for record "+theRecord,e); +// throw new PublishException("Unable to publish centroid.",e, null); + }catch(SDIInteractionException e) { + log.warn("Unable to publish Centroid Layer for record type "+getRecord().getRecordType(),e); +// throw new PublishException("Unable to publish centroid.",e, null); } - // + } - + protected abstract PostgisTable getCentroidsTable(); + protected abstract void initCentroidLayer() throws SDIInteractionException; protected abstract Map evaluateCentroid(); diff --git a/src/main/java/org/gcube/application/geoportal/managers/ConcessioneManager.java b/src/main/java/org/gcube/application/geoportal/managers/ConcessioneManager.java index 86e910a..9648492 100644 --- a/src/main/java/org/gcube/application/geoportal/managers/ConcessioneManager.java +++ b/src/main/java/org/gcube/application/geoportal/managers/ConcessioneManager.java @@ -10,7 +10,10 @@ 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.db.DBConstants; +import org.gcube.application.geoportal.model.db.PostgisTable; +import org.gcube.application.geoportal.model.fault.SDIInteractionException; import org.gcube.application.geoportal.storage.ContentHandler; +import org.gcube.application.geoportal.storage.SDIManager; import org.gcube.application.geoportal.utils.Serialization; import lombok.extern.slf4j.Slf4j; @@ -21,8 +24,20 @@ public class ConcessioneManager extends AbstractRecordManager { protected ConcessioneManager(Concessione theRecord) { super(theRecord); } +@Override +protected PostgisTable getCentroidsTable() { + return DBConstants.Concessioni.CENTROIDS; +} +@Override +protected void initCentroidLayer() throws SDIInteractionException { + log.debug("Checking for centroid layer configuration.. "); + SDIManager sdiManager=new SDIManager(); + + sdiManager.configureCentroidLayer("centroids_concessioni", "gna", "gna_postgis"); +} + public Concessione setRelazioneScavo(RelazioneScavo rel, InputStreamDescriptor theFile) throws IOException { ContentHandler handler=getContentHandler(); //Check if already stored content diff --git a/src/main/java/org/gcube/application/geoportal/storage/SDIManager.java b/src/main/java/org/gcube/application/geoportal/storage/SDIManager.java index 34f0881..4bc1acf 100644 --- a/src/main/java/org/gcube/application/geoportal/storage/SDIManager.java +++ b/src/main/java/org/gcube/application/geoportal/storage/SDIManager.java @@ -1,5 +1,6 @@ package org.gcube.application.geoportal.storage; +import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.List; @@ -7,6 +8,7 @@ import java.util.List; import org.gcube.application.geoportal.model.content.GeoServerContent; import org.gcube.application.geoportal.model.fault.SDIInteractionException; import org.gcube.application.geoportal.model.gis.SDILayerDescriptor; +import org.gcube.application.geoportal.utils.Files; import org.gcube.data.transfer.library.DataTransferClient; import org.gcube.data.transfer.library.TransferResult; import org.gcube.data.transfer.library.faults.DestinationNotSetException; @@ -22,12 +24,18 @@ import org.gcube.spatial.data.gis.is.AbstractGeoServerDescriptor; import it.geosolutions.geoserver.rest.GeoServerRESTPublisher; import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.UploadMethod; +import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder; +import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder; +import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder; import lombok.extern.slf4j.Slf4j; @Slf4j public class SDIManager { + static private String DEFAULT_CRS="EPSG:4326"; + + private GISInterface gis; private DataTransferClient dtGeoServer; private String geoserverHostName; @@ -106,7 +114,7 @@ public class SDIManager { URL directoryPath=new URL("file:"+remoteFolder); - String DEFAULT_CRS="EPSG:4326"; + //TODO Evaluate SRS @@ -140,6 +148,65 @@ public class SDIManager { } } - - + private String createStoreFromPostgisDB(String workspace,String storeName) throws SDIInteractionException { + //SET BY PROVISIONING + GSPostGISDatastoreEncoder encoder=new GSPostGISDatastoreEncoder(storeName); + encoder.setJndiReferenceName("java:comp/env/jdbc/postgres"); + encoder.setLooseBBox(true); + encoder.setDatabaseType("postgis"); + encoder.setEnabled(true); + encoder.setFetchSize(1000); + encoder.setValidateConnections(true); + try { + if(!gis.getCurrentGeoServer().getDataStoreManager().create(workspace, encoder)) + log.warn("Unable to create workspace "+storeName+". Assuming already exisintg.."); + return storeName; + } catch (IllegalArgumentException | MalformedURLException e) { + throw new SDIInteractionException("Unable to create store "+storeName,e); + } + + } + + private String publishLayer(File sldFile,String name) throws SDIInteractionException { + try { + if(!gis.getCurrentGeoServer().getPublisher().publishStyle(sldFile, name)) + log.warn("Unable to create style "+name+". Assuming already exisintg.."); + return name; + } catch (IllegalArgumentException | MalformedURLException e) { + throw new SDIInteractionException("Unable to create style "+name,e); + } + + } + + public String configureCentroidLayer(String name,String workspace,String storeName) throws SDIInteractionException { + + GSFeatureTypeEncoder fte=new GSFeatureTypeEncoder(); + fte.setAbstract("Centroid layer for "+name); + fte.setEnabled(true); + fte.setNativeCRS(DEFAULT_CRS); + fte.setTitle(name); + + String style="clustered_centroids"; + + GSLayerEncoder layerEncoder=new GSLayerEncoder(); + layerEncoder.setDefaultStyle(style); + layerEncoder.setEnabled(true); + layerEncoder.setQueryable(true); + try { + //Checking workspace + createWorkspace(workspace); + //Checking store + createStoreFromPostgisDB(workspace, storeName); + //Checkig layer + publishLayer(Files.getFileFromResources("/styles/clustered_points.sld"),style); + + if(!gis.getCurrentGeoServer().getPublisher().publishDBLayer(workspace, storeName, fte, layerEncoder)) + log.warn("Unable to create layer "+name+". Assuming already exisintg.."); + return name; + } catch (IllegalArgumentException | MalformedURLException e) { + throw new SDIInteractionException("Unable to create layer "+name,e); + } + + + } } diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties new file mode 100644 index 0000000..f203472 --- /dev/null +++ b/src/main/resources/config.properties @@ -0,0 +1,9 @@ +gs.centroid.workspace +gs.centroid.store + +#Concessioni + +concessioni.gs +concessioni.gs.centroid. + +#Workspace \ No newline at end of file -- 2.17.1 From 25d9dc5c091a25f717094f25ce5d61440a01bca4 Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Tue, 3 Nov 2020 17:38:51 +0100 Subject: [PATCH 4/8] Fixed changelog --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3384dd9..6fe33e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,11 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for org.gcube.application.geoportal-logic -## [1.0.0] - 2020-09-25 +## [v1.0.0.1] - 2020-11-2 +SDI publication exception non blocking +Automatic centroids creation + +## [v1.0.0] - 2020-09-25 First release -- 2.17.1 From 0d5986def9849d261bd387940524e11747f5d73d Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Tue, 3 Nov 2020 17:38:51 +0100 Subject: [PATCH 5/8] Added SNAPSHOT --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3384dd9..0c6c5e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,11 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for org.gcube.application.geoportal-logic -## [1.0.0] - 2020-09-25 +## [v1.0.0.1-SNAPSHOT] - 2020-11-2 +SDI publication exception non blocking +Automatic centroids creation + +## [v1.0.0] - 2020-09-25 First release -- 2.17.1 From 904039eb95b4232a8014bb57737838ab2f465a1b Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Wed, 4 Nov 2020 12:18:16 +0100 Subject: [PATCH 6/8] Caller can setup default EMF Provider for test purposes --- .../managers/AbstractRecordManager.java | 25 ++++++++++++++----- .../geoportal/CheckContextConfiguration.java | 22 ++++++++-------- .../application/geoportal/db/Records.java | 23 ++++++++++++++++- 3 files changed, 52 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/gcube/application/geoportal/managers/AbstractRecordManager.java b/src/main/java/org/gcube/application/geoportal/managers/AbstractRecordManager.java index bf8e038..a3e66a5 100644 --- a/src/main/java/org/gcube/application/geoportal/managers/AbstractRecordManager.java +++ b/src/main/java/org/gcube/application/geoportal/managers/AbstractRecordManager.java @@ -22,6 +22,8 @@ import javax.persistence.spi.PersistenceUnitInfo; import javax.persistence.spi.PersistenceUnitTransactionType; 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.db.DBConstants; import org.gcube.application.geoportal.model.db.DatabaseConnection; @@ -47,6 +49,18 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public abstract class AbstractRecordManager { + public static interface EMFProvider { + public EntityManagerFactory getFactory(); + } + + + + + public static void setDefaultProvider(EMFProvider provider) { + defaultProvider=provider; + } + + private static EMFProvider defaultProvider=null; private static EntityManagerFactory emf=null; @Synchronized @@ -76,12 +90,11 @@ public abstract class AbstractRecordManager { .build()); }catch(Throwable t) { - log.warn("Unable to contact DB from IS, trying local..",t); - try{ - emf=Persistence.createEntityManagerFactory(DBConstants.INTERNAL.DB_NAME); - }catch(Throwable t1) { - log.error("NO INTERNAL DATABASE FOUND ",t); - throw new RuntimeException("NO INTERNAL DATABASE",t); + if(defaultProvider==null) + throw new RuntimeException("NO INTERNAL DADATABASE. Please contact VRE Manager (Required SE [platform : postgresq, 'GNA-DB' flag : internal-db])"); + else { + log.warn("Found default provider. This should happen only in test phase."); + emf=defaultProvider.getFactory(); } } } diff --git a/src/test/java/org/gcube/application/geoportal/CheckContextConfiguration.java b/src/test/java/org/gcube/application/geoportal/CheckContextConfiguration.java index 3888ddb..f3b95f9 100644 --- a/src/test/java/org/gcube/application/geoportal/CheckContextConfiguration.java +++ b/src/test/java/org/gcube/application/geoportal/CheckContextConfiguration.java @@ -13,17 +13,17 @@ public class CheckContextConfiguration { public static void main(String[] args) { TokenSetter.set("/gcube/devNext/NextNext"); - System.out.println("Checking for internal .. "); - ConcessioneManager manager=ManagerFactory.getByRecord(new Concessione()); - try { - manager.commit(false); - } catch (ValidationException | PersistenceException | PublishException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - }finally { - manager.shutdown(); - } - +// System.out.println("Checking for internal .. "); +// ConcessioneManager manager=ManagerFactory.getByRecord(new Concessione()); +// try { +// manager.commit(false); +// } catch (ValidationException | PersistenceException | PublishException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// }finally { +// manager.shutdown(); +// } + System.out.println(ISUtils.queryForDB("postgresql", "internal_db")); System.out.println("Checking for postgis .. "); System.out.println(ISUtils.queryForDB("postgis", "Concessioni")); diff --git a/src/test/java/org/gcube/application/geoportal/db/Records.java b/src/test/java/org/gcube/application/geoportal/db/Records.java index 0c32047..5bd3712 100644 --- a/src/test/java/org/gcube/application/geoportal/db/Records.java +++ b/src/test/java/org/gcube/application/geoportal/db/Records.java @@ -2,11 +2,16 @@ package org.gcube.application.geoportal.db; import static org.junit.Assert.assertEquals; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + import org.gcube.application.geoportal.TestModel; import org.gcube.application.geoportal.managers.AbstractRecordManager; +import org.gcube.application.geoportal.managers.AbstractRecordManager.EMFProvider; import org.gcube.application.geoportal.managers.ConcessioneManager; import org.gcube.application.geoportal.managers.ManagerFactory; import org.gcube.application.geoportal.model.concessioni.Concessione; +import org.gcube.application.geoportal.model.db.DBConstants; import org.gcube.application.geoportal.model.fault.PersistenceException; import org.gcube.application.geoportal.model.fault.PublishException; import org.gcube.application.geoportal.model.fault.ValidationException; @@ -15,10 +20,14 @@ import org.gcube.application.geoportal.model.report.ValidationReport.ValidationS import org.gcube.application.geoportal.utils.Serialization; import org.junit.AfterClass; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; import com.fasterxml.jackson.core.JsonProcessingException; +import lombok.extern.slf4j.Slf4j; + +@Slf4j public class Records { @AfterClass @@ -26,7 +35,19 @@ public class Records { AbstractRecordManager.shutdown(); } - + @BeforeClass + public static void init() { + AbstractRecordManager.setDefaultProvider(new EMFProvider() { + + @Override + public EntityManagerFactory getFactory() { + try{ + return Persistence.createEntityManagerFactory(DBConstants.INTERNAL.DB_NAME); + }catch(Throwable t1) { + throw new RuntimeException("Unable to init local databse",t1); + } + } + }); } @Test public void Concessioni() throws PersistenceException, ValidationException, PublishException, JsonProcessingException { -- 2.17.1 From 9942c7f8cc67cef5275d8db23d048351734e97ea Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Wed, 4 Nov 2020 12:38:35 +0100 Subject: [PATCH 7/8] releasing patch --- CHANGELOG.md | 7 ++++--- pom.xml | 4 ++-- .../application/geoportal/CheckContextConfiguration.java | 5 +++-- .../java/org/gcube/application/geoportal/UseCases.java | 3 ++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c6c5e5..db946e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for org.gcube.application.geoportal-logic -## [v1.0.0.1-SNAPSHOT] - 2020-11-2 -SDI publication exception non blocking -Automatic centroids creation +## [v1.0.0.1] - 2020-11-2 +SDI publication exception are now non blocking +Automatic centroids layer creation +Default EntityManagerFactory to be set by caller ## [v1.0.0] - 2020-09-25 diff --git a/pom.xml b/pom.xml index 920cac8..8723a6d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.gcube.application geoportal-logic - 1.0.0.1-SNAPSHOT + 1.0.0.1 Geoportal Logic @@ -36,7 +36,7 @@ org.gcube.distribution gcube-bom - 2.0.0-SNAPSHOT + 2.0.0 pom import diff --git a/src/test/java/org/gcube/application/geoportal/CheckContextConfiguration.java b/src/test/java/org/gcube/application/geoportal/CheckContextConfiguration.java index f3b95f9..624dbf9 100644 --- a/src/test/java/org/gcube/application/geoportal/CheckContextConfiguration.java +++ b/src/test/java/org/gcube/application/geoportal/CheckContextConfiguration.java @@ -12,7 +12,8 @@ import org.gcube.application.geoportal.utils.ISUtils; public class CheckContextConfiguration { public static void main(String[] args) { - TokenSetter.set("/gcube/devNext/NextNext"); +// TokenSetter.set("/gcube/devNext/NextNext"); + TokenSetter.set("/pred4s/preprod/preVRE"); // System.out.println("Checking for internal .. "); // ConcessioneManager manager=ManagerFactory.getByRecord(new Concessione()); // try { @@ -23,7 +24,7 @@ public class CheckContextConfiguration { // }finally { // manager.shutdown(); // } - System.out.println(ISUtils.queryForDB("postgresql", "internal_db")); + System.out.println(ISUtils.queryForDB("postgresql", "internal-db")); System.out.println("Checking for postgis .. "); System.out.println(ISUtils.queryForDB("postgis", "Concessioni")); diff --git a/src/test/java/org/gcube/application/geoportal/UseCases.java b/src/test/java/org/gcube/application/geoportal/UseCases.java index e2dc953..07488f5 100644 --- a/src/test/java/org/gcube/application/geoportal/UseCases.java +++ b/src/test/java/org/gcube/application/geoportal/UseCases.java @@ -23,7 +23,8 @@ import org.junit.Assert; public class UseCases { public static void main(String[] args) throws PersistenceException, IOException, ValidationException, PublishException { - TokenSetter.set("/gcube/devNext/NextNext"); +// TokenSetter.set("/gcube/devNext/NextNext"); + TokenSetter.set("/pred4s/preprod/preVRE"); try{ registerNewConcessione(); }catch(ValidationException e) { -- 2.17.1 From c35206b8e7ea864403f849031a609c27c2dc8bc6 Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Wed, 4 Nov 2020 12:57:20 +0100 Subject: [PATCH 8/8] Fixing project setup --- CHANGELOG.md | 9 ++++++--- pom.xml | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1c5f9a..439fb29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,11 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for org.gcube.application.geoportal-logic +## [v1.0.0.1] - 2020-11-2 +SDI publication exception are now non blocking +Automatic centroids layer creation +Default EntityManagerFactory to be set by caller + ## [v1.0.0] - 2020-09-25 -First release - - +First release \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8723a6d..3361ac2 100644 --- a/pom.xml +++ b/pom.xml @@ -113,16 +113,16 @@ - + org.gcube.spatial.data gis-interface - [2.4.0-SNAPSHOT,3.0.0) + [2.4.0,3.0.0) org.gcube.spatial.data geonetwork - 3.4.3-SNAPSHOT + [3.4.3,4.0.0) -- 2.17.1