1.0.4-SNAPSHOT #3
|
@ -2,6 +2,15 @@ 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.4-SNAPSHOT] - 2020-11-9
|
||||||
|
Profiles adoption
|
||||||
|
|
||||||
|
## [v1.0.3-SNAPSHOT] - 2020-11-4
|
||||||
|
|
||||||
|
Implemented list, list by type
|
||||||
|
Fixed : commit transaction when safelyCommit project
|
||||||
|
Fixed : exception encapsulation in DB initialization
|
||||||
|
|
||||||
## [v1.0.2] - 2020-11-4
|
## [v1.0.2] - 2020-11-4
|
||||||
|
|
||||||
PublicationReport
|
PublicationReport
|
||||||
|
|
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.2</version>
|
<version>1.0.4-SNAPSHOT</version>
|
||||||
<name>Geoportal Logic</name>
|
<name>Geoportal Logic</name>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package org.gcube.application.geoportal;
|
||||||
|
|
||||||
|
public class PortalClient {
|
||||||
|
|
||||||
|
}
|
|
@ -17,6 +17,7 @@ import org.apache.commons.csv.CSVRecord;
|
||||||
import org.gcube.application.geoportal.model.Configuration;
|
import org.gcube.application.geoportal.model.Configuration;
|
||||||
import org.gcube.application.geoportal.model.db.DBConstants;
|
import org.gcube.application.geoportal.model.db.DBConstants;
|
||||||
import org.gcube.application.geoportal.model.db.PostgisTable;
|
import org.gcube.application.geoportal.model.db.PostgisTable;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.model.fault.InvalidRecordException;
|
import org.gcube.application.geoportal.model.fault.InvalidRecordException;
|
||||||
import org.gcube.application.geoportal.storage.PostgisDBManager;
|
import org.gcube.application.geoportal.storage.PostgisDBManager;
|
||||||
import org.gcube.application.geoportal.storage.PostgisDBManagerI;
|
import org.gcube.application.geoportal.storage.PostgisDBManagerI;
|
||||||
|
@ -65,7 +66,7 @@ public class Uploader {
|
||||||
|
|
||||||
// Expectcs CSV nome,anno,regione,xcentroid,ycentroid,csv,shp,nome_csv,poligono,punti,linee
|
// Expectcs CSV nome,anno,regione,xcentroid,ycentroid,csv,shp,nome_csv,poligono,punti,linee
|
||||||
// I.E {nome=Acquacadda Nuxis, anno=2019, regione=Sardegna, xcentroid=8.751, ycentroid=39.179, csv=TRUE, shp=TRUE, nome_csv=AcquacaddaNuxis_poligoni, poligono=TRUE, punti=FALSE, linee=FALSE}
|
// I.E {nome=Acquacadda Nuxis, anno=2019, regione=Sardegna, xcentroid=8.751, ycentroid=39.179, csv=TRUE, shp=TRUE, nome_csv=AcquacaddaNuxis_poligoni, poligono=TRUE, punti=FALSE, linee=FALSE}
|
||||||
public void insertConcessioni(File CSVFile,Boolean centroidsOnly) throws FileNotFoundException, IOException, SQLException {
|
public void insertConcessioni(File CSVFile,Boolean centroidsOnly) throws FileNotFoundException, IOException, SQLException, ConfigurationException {
|
||||||
log.info("Connecting to postgresDB.. ");
|
log.info("Connecting to postgresDB.. ");
|
||||||
log.info("Parsing file "+CSVFile.getAbsolutePath());
|
log.info("Parsing file "+CSVFile.getAbsolutePath());
|
||||||
File exportedFolder=new File(CSVFile.getParent()+File.separator+"esportazioni");
|
File exportedFolder=new File(CSVFile.getParent()+File.separator+"esportazioni");
|
||||||
|
|
|
@ -1,32 +1,21 @@
|
||||||
package org.gcube.application.geoportal.managers;
|
package org.gcube.application.geoportal.managers;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.UncheckedIOException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Arrays;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
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.SharedCacheMode;
|
|
||||||
import javax.persistence.ValidationMode;
|
|
||||||
import javax.persistence.spi.ClassTransformer;
|
|
||||||
import javax.persistence.spi.PersistenceUnitInfo;
|
|
||||||
import javax.persistence.spi.PersistenceUnitTransactionType;
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
|
|
||||||
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.PostgisTable;
|
import org.gcube.application.geoportal.model.db.PostgisTable;
|
||||||
import org.gcube.application.geoportal.model.db.PostgisTable.Field;
|
import org.gcube.application.geoportal.model.db.PostgisTable.Field;
|
||||||
import org.gcube.application.geoportal.model.db.PostgisTable.FieldType;
|
import org.gcube.application.geoportal.model.db.PostgisTable.FieldType;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.model.fault.PersistenceException;
|
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;
|
||||||
|
@ -37,74 +26,26 @@ import org.gcube.application.geoportal.model.report.ValidationReport.ValidationS
|
||||||
import org.gcube.application.geoportal.storage.ContentHandler;
|
import org.gcube.application.geoportal.storage.ContentHandler;
|
||||||
import org.gcube.application.geoportal.storage.PostgisDBManager;
|
import org.gcube.application.geoportal.storage.PostgisDBManager;
|
||||||
import org.gcube.application.geoportal.storage.PostgisDBManagerI;
|
import org.gcube.application.geoportal.storage.PostgisDBManagerI;
|
||||||
import org.gcube.application.geoportal.utils.ISUtils;
|
|
||||||
import org.hibernate.cfg.AvailableSettings;
|
|
||||||
import org.hibernate.jpa.HibernatePersistenceProvider;
|
|
||||||
|
|
||||||
import jersey.repackaged.com.google.common.collect.ImmutableMap;
|
|
||||||
import lombok.Synchronized;
|
import lombok.Synchronized;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public abstract class AbstractRecordManager<T extends Record> {
|
public abstract class AbstractRecordManager<T extends Record> {
|
||||||
|
|
||||||
public static interface EMFProvider {
|
|
||||||
public EntityManagerFactory getFactory();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void setDefaultProvider(EMFProvider provider) {
|
public static void setDefaultProvider(EMFProvider provider) {
|
||||||
defaultProvider=provider;
|
defaultProvider=provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static EMFProvider defaultProvider=null;
|
private static EMFProvider defaultProvider=null;
|
||||||
private static EntityManagerFactory emf=null;
|
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
protected static EntityManagerFactory getEMF() {
|
protected static EntityManagerFactory getEMF() {
|
||||||
if(emf==null) {
|
return defaultProvider.getFactory();
|
||||||
try {
|
|
||||||
DatabaseConnection conn=ISUtils.queryForDB("postgresql", "internal-db");
|
|
||||||
log.debug("Found Internal Database : "+conn);
|
|
||||||
|
|
||||||
emf = new HibernatePersistenceProvider().createContainerEntityManagerFactory(
|
|
||||||
archiverPersistenceUnitInfo(),
|
|
||||||
ImmutableMap.<String, Object>builder()
|
|
||||||
.put(AvailableSettings.JPA_JDBC_DRIVER, "org.postgresql.Driver")
|
|
||||||
.put(AvailableSettings.JPA_JDBC_URL, conn.getUrl())
|
|
||||||
.put(AvailableSettings.DIALECT, org.hibernate.dialect.PostgreSQLDialect.class)
|
|
||||||
.put(AvailableSettings.HBM2DDL_AUTO, org.hibernate.tool.schema.Action.UPDATE)
|
|
||||||
.put(AvailableSettings.SHOW_SQL, true)
|
|
||||||
.put(AvailableSettings.QUERY_STARTUP_CHECKING, false)
|
|
||||||
.put(AvailableSettings.GENERATE_STATISTICS, false)
|
|
||||||
.put(AvailableSettings.USE_REFLECTION_OPTIMIZER, false)
|
|
||||||
.put(AvailableSettings.USE_SECOND_LEVEL_CACHE, false)
|
|
||||||
.put(AvailableSettings.USE_QUERY_CACHE, false)
|
|
||||||
.put(AvailableSettings.USE_STRUCTURED_CACHE, false)
|
|
||||||
.put(AvailableSettings.STATEMENT_BATCH_SIZE, 20)
|
|
||||||
.put(AvailableSettings.JPA_JDBC_USER, conn.getUser())
|
|
||||||
.put(AvailableSettings.JPA_JDBC_PASSWORD, conn.getPwd())
|
|
||||||
.build());
|
|
||||||
|
|
||||||
}catch(Throwable 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return emf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
public static void shutdown() {
|
public static void shutdown() {
|
||||||
if(emf!=null) {
|
defaultProvider.shutdown();
|
||||||
if(emf.isOpen()) emf.close();
|
|
||||||
emf=null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Record getByID(long id) {
|
public static Record getByID(long id) {
|
||||||
|
@ -124,7 +65,45 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Collection<Record> getList(){
|
||||||
|
EntityManager em=getEMF().createEntityManager();
|
||||||
|
try {
|
||||||
|
log.debug("Getting entire list");
|
||||||
|
EntityTransaction tr=em.getTransaction();
|
||||||
|
tr.begin();
|
||||||
|
List<Record> toReturn=em.createQuery("select r from Record r ",
|
||||||
|
Record.class).getResultList();
|
||||||
|
log.debug("Loaded size "+toReturn.size());
|
||||||
|
tr.commit();
|
||||||
|
return toReturn;
|
||||||
|
}finally {
|
||||||
|
if(em.isJoinedToTransaction())
|
||||||
|
em.flush();
|
||||||
|
em.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <E extends Record> Collection<E> getListByClass(Class<E> clazz){
|
||||||
|
EntityManager em=getEMF().createEntityManager();
|
||||||
|
try {
|
||||||
|
log.debug("Getting entire list");
|
||||||
|
EntityTransaction tr=em.getTransaction();
|
||||||
|
tr.begin();
|
||||||
|
|
||||||
|
String simpleClassName=clazz.getName().substring(clazz.getName().lastIndexOf(".")+1);
|
||||||
|
|
||||||
|
List<E> toReturn=em.createQuery("select r from "+simpleClassName+" r",
|
||||||
|
clazz).getResultList();
|
||||||
|
log.debug("Loaded size "+toReturn.size());
|
||||||
|
tr.commit();
|
||||||
|
return toReturn;
|
||||||
|
}finally {
|
||||||
|
if(em.isJoinedToTransaction())
|
||||||
|
em.flush();
|
||||||
|
em.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
// protected T storeInfo()
|
// protected T storeInfo()
|
||||||
// {
|
// {
|
||||||
// log.debug("Storing Record "+theRecord);
|
// log.debug("Storing Record "+theRecord);
|
||||||
|
@ -227,12 +206,15 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
registerCentroid();
|
registerCentroid();
|
||||||
toReturn.addMessage(ValidationStatus.PASSED, "Inserito centroide per record "+theRecord.getId());
|
toReturn.addMessage(ValidationStatus.PASSED, "Inserito centroide per record "+theRecord.getId());
|
||||||
}
|
}
|
||||||
|
transaction.commit();
|
||||||
|
|
||||||
} catch (PersistenceException e) {
|
} catch (PersistenceException e) {
|
||||||
toReturn.addChild(e.getReport());
|
toReturn.addChild(e.getReport());
|
||||||
} catch (PublishException e) {
|
} catch (PublishException e) {
|
||||||
toReturn.addMessage(ValidationStatus.WARNING, "Centroide non registrato");
|
toReturn.addMessage(ValidationStatus.WARNING, "Centroide non registrato");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
log.info("Report is "+toReturn.prettyPrint());
|
log.info("Report is "+toReturn.prettyPrint());
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
|
@ -250,9 +232,11 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
}
|
}
|
||||||
entityManager.flush();
|
entityManager.flush();
|
||||||
entityManager.close();
|
entityManager.close();
|
||||||
|
|
||||||
|
shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerCentroid() throws PublishException {
|
private void registerCentroid() throws PublishException{
|
||||||
|
|
||||||
try {
|
try {
|
||||||
log.debug("Evaluating Centroid");
|
log.debug("Evaluating Centroid");
|
||||||
|
@ -282,6 +266,9 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
}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);
|
||||||
|
} catch (ConfigurationException e) {
|
||||||
|
log.warn("Unable to contact centroids db "+getRecord().getRecordType(),e);
|
||||||
|
throw new PublishException("Unable to publish centroid.",e, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -295,116 +282,4 @@ public abstract class AbstractRecordManager<T extends Record> {
|
||||||
|
|
||||||
//*********** PERSISTENCE
|
//*********** PERSISTENCE
|
||||||
|
|
||||||
private static PersistenceUnitInfo archiverPersistenceUnitInfo() {
|
|
||||||
|
|
||||||
final List<String> MANAGED_CLASSES=Arrays.asList(new String[] {
|
|
||||||
"org.gcube.application.geoportal.model.Record",
|
|
||||||
"org.gcube.application.geoportal.model.concessioni.Concessione",
|
|
||||||
"org.gcube.application.geoportal.model.concessioni.LayerConcessione",
|
|
||||||
"org.gcube.application.geoportal.model.concessioni.RelazioneScavo",
|
|
||||||
|
|
||||||
"org.gcube.application.geoportal.model.content.AssociatedContent",
|
|
||||||
"org.gcube.application.geoportal.model.content.GeoServerContent",
|
|
||||||
"org.gcube.application.geoportal.model.content.OtherContent",
|
|
||||||
"org.gcube.application.geoportal.model.content.PersistedContent",
|
|
||||||
"org.gcube.application.geoportal.model.content.UploadedImage",
|
|
||||||
"org.gcube.application.geoportal.model.content.WorkspaceContent",
|
|
||||||
|
|
||||||
"org.gcube.application.geoportal.model.gis.ShapeFileLayerDescriptor",
|
|
||||||
"org.gcube.application.geoportal.model.gis.SDILayerDescriptor"});
|
|
||||||
|
|
||||||
|
|
||||||
return new PersistenceUnitInfo() {
|
|
||||||
@Override
|
|
||||||
public String getPersistenceUnitName() {
|
|
||||||
return "ApplicationPersistenceUnit";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPersistenceProviderClassName() {
|
|
||||||
return "org.hibernate.jpa.HibernatePersistenceProvider";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PersistenceUnitTransactionType getTransactionType() {
|
|
||||||
return PersistenceUnitTransactionType.RESOURCE_LOCAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DataSource getJtaDataSource() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DataSource getNonJtaDataSource() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> getMappingFileNames() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<URL> getJarFileUrls() {
|
|
||||||
try {
|
|
||||||
return Collections.list(this.getClass()
|
|
||||||
.getClassLoader()
|
|
||||||
.getResources(""));
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new UncheckedIOException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public URL getPersistenceUnitRootUrl() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> getManagedClassNames() {
|
|
||||||
return MANAGED_CLASSES;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean excludeUnlistedClasses() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SharedCacheMode getSharedCacheMode() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ValidationMode getValidationMode() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Properties getProperties() {
|
|
||||||
return new Properties();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPersistenceXMLSchemaVersion() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ClassLoader getClassLoader() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addTransformer(ClassTransformer transformer) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ClassLoader getNewTempClassLoader() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,190 @@
|
||||||
|
package org.gcube.application.geoportal.managers;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.UncheckedIOException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import javax.persistence.EntityManagerFactory;
|
||||||
|
import javax.persistence.SharedCacheMode;
|
||||||
|
import javax.persistence.ValidationMode;
|
||||||
|
import javax.persistence.spi.ClassTransformer;
|
||||||
|
import javax.persistence.spi.PersistenceUnitInfo;
|
||||||
|
import javax.persistence.spi.PersistenceUnitTransactionType;
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.model.db.DatabaseConnection;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.utils.ISUtils;
|
||||||
|
import org.hibernate.cfg.AvailableSettings;
|
||||||
|
import org.hibernate.jpa.HibernatePersistenceProvider;
|
||||||
|
|
||||||
|
import jersey.repackaged.com.google.common.collect.ImmutableMap;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class DefatulEMFProvider implements EMFProvider {
|
||||||
|
|
||||||
|
private static EntityManagerFactory emf=null;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityManagerFactory getFactory() {
|
||||||
|
if(emf==null) {
|
||||||
|
try {
|
||||||
|
DatabaseConnection conn=ISUtils.queryForDB("postgresql", "internal-db");
|
||||||
|
log.debug("Found Internal Database : "+conn);
|
||||||
|
|
||||||
|
emf = new HibernatePersistenceProvider().createContainerEntityManagerFactory(
|
||||||
|
archiverPersistenceUnitInfo(),
|
||||||
|
ImmutableMap.<String, Object>builder()
|
||||||
|
.put(AvailableSettings.JPA_JDBC_DRIVER, "org.postgresql.Driver")
|
||||||
|
.put(AvailableSettings.JPA_JDBC_URL, conn.getUrl())
|
||||||
|
.put(AvailableSettings.DIALECT, org.hibernate.dialect.PostgreSQLDialect.class)
|
||||||
|
.put(AvailableSettings.HBM2DDL_AUTO, org.hibernate.tool.schema.Action.UPDATE)
|
||||||
|
.put(AvailableSettings.SHOW_SQL, true)
|
||||||
|
.put(AvailableSettings.QUERY_STARTUP_CHECKING, false)
|
||||||
|
.put(AvailableSettings.GENERATE_STATISTICS, false)
|
||||||
|
.put(AvailableSettings.USE_REFLECTION_OPTIMIZER, false)
|
||||||
|
.put(AvailableSettings.USE_SECOND_LEVEL_CACHE, false)
|
||||||
|
.put(AvailableSettings.USE_QUERY_CACHE, false)
|
||||||
|
.put(AvailableSettings.USE_STRUCTURED_CACHE, false)
|
||||||
|
.put(AvailableSettings.STATEMENT_BATCH_SIZE, 20)
|
||||||
|
.put(AvailableSettings.JPA_JDBC_USER, conn.getUser())
|
||||||
|
.put(AvailableSettings.JPA_JDBC_PASSWORD, conn.getPwd())
|
||||||
|
.build());
|
||||||
|
|
||||||
|
}catch(ConfigurationException e) {
|
||||||
|
throw new RuntimeException("Unable to init EMF",e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return emf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static PersistenceUnitInfo archiverPersistenceUnitInfo() {
|
||||||
|
|
||||||
|
final List<String> MANAGED_CLASSES=Arrays.asList(new String[] {
|
||||||
|
"org.gcube.application.geoportal.model.Record",
|
||||||
|
"org.gcube.application.geoportal.model.concessioni.Concessione",
|
||||||
|
"org.gcube.application.geoportal.model.concessioni.LayerConcessione",
|
||||||
|
"org.gcube.application.geoportal.model.concessioni.RelazioneScavo",
|
||||||
|
|
||||||
|
"org.gcube.application.geoportal.model.content.AssociatedContent",
|
||||||
|
"org.gcube.application.geoportal.model.content.GeoServerContent",
|
||||||
|
"org.gcube.application.geoportal.model.content.OtherContent",
|
||||||
|
"org.gcube.application.geoportal.model.content.PersistedContent",
|
||||||
|
"org.gcube.application.geoportal.model.content.UploadedImage",
|
||||||
|
"org.gcube.application.geoportal.model.content.WorkspaceContent",
|
||||||
|
|
||||||
|
"org.gcube.application.geoportal.model.gis.ShapeFileLayerDescriptor",
|
||||||
|
"org.gcube.application.geoportal.model.gis.SDILayerDescriptor"});
|
||||||
|
|
||||||
|
|
||||||
|
return new PersistenceUnitInfo() {
|
||||||
|
@Override
|
||||||
|
public String getPersistenceUnitName() {
|
||||||
|
return "ApplicationPersistenceUnit";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPersistenceProviderClassName() {
|
||||||
|
return "org.hibernate.jpa.HibernatePersistenceProvider";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PersistenceUnitTransactionType getTransactionType() {
|
||||||
|
return PersistenceUnitTransactionType.RESOURCE_LOCAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSource getJtaDataSource() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSource getNonJtaDataSource() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getMappingFileNames() {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<URL> getJarFileUrls() {
|
||||||
|
try {
|
||||||
|
return Collections.list(this.getClass()
|
||||||
|
.getClassLoader()
|
||||||
|
.getResources(""));
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new UncheckedIOException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public URL getPersistenceUnitRootUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getManagedClassNames() {
|
||||||
|
return MANAGED_CLASSES;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean excludeUnlistedClasses() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SharedCacheMode getSharedCacheMode() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ValidationMode getValidationMode() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Properties getProperties() {
|
||||||
|
return new Properties();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPersistenceXMLSchemaVersion() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ClassLoader getClassLoader() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addTransformer(ClassTransformer transformer) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ClassLoader getNewTempClassLoader() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void shutdown() {
|
||||||
|
if(emf!=null) {
|
||||||
|
if(emf.isOpen()) emf.close();
|
||||||
|
emf=null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package org.gcube.application.geoportal.managers;
|
||||||
|
|
||||||
|
import javax.persistence.EntityManagerFactory;
|
||||||
|
|
||||||
|
public interface EMFProvider {
|
||||||
|
public EntityManagerFactory getFactory();
|
||||||
|
public void shutdown();
|
||||||
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
package org.gcube.application.geoportal.managers;
|
package org.gcube.application.geoportal.managers;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
|
@ -21,4 +23,12 @@ public class ManagerFactory {
|
||||||
public static <T extends Record,E extends AbstractRecordManager<T>> E registerNew(T toRegister) {
|
public static <T extends Record,E extends AbstractRecordManager<T>> E registerNew(T toRegister) {
|
||||||
return getByRecord(toRegister);
|
return getByRecord(toRegister);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Collection<Record> getList(){
|
||||||
|
return AbstractRecordManager.getList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T extends Record> Collection<T> getList(Class<T> clazz){
|
||||||
|
return AbstractRecordManager.getListByClass(clazz);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.gcube.application.geoportal.model.db;
|
package org.gcube.application.geoportal.model.db;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.utils.ISUtils;
|
import org.gcube.application.geoportal.utils.ISUtils;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
@ -19,7 +20,7 @@ public class DatabaseConnection {
|
||||||
Concessioni,Mosi,Mopr
|
Concessioni,Mosi,Mopr
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DatabaseConnection get(TYPE type) {
|
public static DatabaseConnection get(TYPE type) throws ConfigurationException {
|
||||||
return ISUtils.queryForDB("postgis", type.toString());
|
return ISUtils.queryForDB("postgis", type.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package org.gcube.application.geoportal.model.fault;
|
||||||
|
|
||||||
|
public class ConfigurationException extends Exception {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -3810929853461018566L;
|
||||||
|
|
||||||
|
public ConfigurationException() {
|
||||||
|
super();
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationException(String message, Throwable cause, boolean enableSuppression,
|
||||||
|
boolean writableStackTrace) {
|
||||||
|
super(message, cause, enableSuppression, writableStackTrace);
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationException(String message) {
|
||||||
|
super(message);
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurationException(Throwable cause) {
|
||||||
|
super(cause);
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package org.gcube.application.geoportal.model.vre;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.utils.ISUtils;
|
||||||
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
|
import org.gcube.data.transfer.library.utils.ScopeUtils;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class SudoOperator {
|
||||||
|
|
||||||
|
private String token;
|
||||||
|
private String backupToken;
|
||||||
|
private String caller;
|
||||||
|
|
||||||
|
public SudoOperator() throws ConfigurationException {
|
||||||
|
this.token=ISUtils.getToken();
|
||||||
|
this.backupToken=SecurityTokenProvider.instance.get();
|
||||||
|
this.caller=ScopeUtils.getCurrentCaller();
|
||||||
|
log.warn("Created SUDO operator by "+caller);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sudo() {
|
||||||
|
SecurityTokenProvider.instance.set(token);
|
||||||
|
log.warn("Starting SUDO operation by "+ScopeUtils.getCurrentCaller());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reset() {
|
||||||
|
SecurityTokenProvider.instance.set(backupToken);
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ import org.gcube.application.geoportal.model.db.DatabaseConnection;
|
||||||
import org.gcube.application.geoportal.model.db.DatabaseConnection.TYPE;
|
import org.gcube.application.geoportal.model.db.DatabaseConnection.TYPE;
|
||||||
import org.gcube.application.geoportal.model.db.PostgisTable;
|
import org.gcube.application.geoportal.model.db.PostgisTable;
|
||||||
import org.gcube.application.geoportal.model.db.PostgisTable.Field;
|
import org.gcube.application.geoportal.model.db.PostgisTable.Field;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.model.fault.DataParsingException;
|
import org.gcube.application.geoportal.model.fault.DataParsingException;
|
||||||
import org.gcube.application.geoportal.model.gis.BBOX;
|
import org.gcube.application.geoportal.model.gis.BBOX;
|
||||||
import org.gcube.application.geoportal.utils.DBUtils;
|
import org.gcube.application.geoportal.utils.DBUtils;
|
||||||
|
@ -22,7 +23,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
public class PostgisDBManager implements PostgisDBManagerI {
|
public class PostgisDBManager implements PostgisDBManagerI {
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
public static PostgisDBManager get() throws SQLException {
|
public static PostgisDBManager get() throws SQLException, ConfigurationException {
|
||||||
if(config==null) {
|
if(config==null) {
|
||||||
log.debug("Looking for Default Configuration.. ");
|
log.debug("Looking for Default Configuration.. ");
|
||||||
DatabaseConnection defaultConfiguration=DatabaseConnection.get(TYPE.Concessioni);
|
DatabaseConnection defaultConfiguration=DatabaseConnection.get(TYPE.Concessioni);
|
||||||
|
@ -31,7 +32,7 @@ public class PostgisDBManager implements PostgisDBManagerI {
|
||||||
}
|
}
|
||||||
return new PostgisDBManager();
|
return new PostgisDBManager();
|
||||||
}
|
}
|
||||||
public static PostgisDBManagerI get(boolean autocommit) throws SQLException {
|
public static PostgisDBManagerI get(boolean autocommit) throws SQLException, ConfigurationException {
|
||||||
PostgisDBManager toReturn=get();
|
PostgisDBManager toReturn=get();
|
||||||
toReturn.conn.setAutoCommit(autocommit);
|
toReturn.conn.setAutoCommit(autocommit);
|
||||||
return toReturn;
|
return toReturn;
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class WorkspaceManager {
|
||||||
return sgClient;
|
return sgClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
private FolderContainer getApplicationBaseFolder() throws StorageHubException {
|
public FolderContainer getApplicationBaseFolder() throws StorageHubException {
|
||||||
if(appBase==null) {
|
if(appBase==null) {
|
||||||
StorageHubClient client=getSGClient();
|
StorageHubClient client=getSGClient();
|
||||||
FolderContainer vre=client.openVREFolder();
|
FolderContainer vre=client.openVREFolder();
|
||||||
|
|
|
@ -3,7 +3,10 @@ package org.gcube.application.geoportal.utils;
|
||||||
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
|
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
|
||||||
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
|
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.model.db.DatabaseConnection;
|
import org.gcube.application.geoportal.model.db.DatabaseConnection;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.common.encryption.encrypter.StringEncrypter;
|
import org.gcube.common.encryption.encrypter.StringEncrypter;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||||||
|
@ -12,7 +15,7 @@ import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
|
||||||
|
|
||||||
public class ISUtils {
|
public class ISUtils {
|
||||||
|
|
||||||
public static DatabaseConnection queryForDB(String platform,String flag) {
|
public static DatabaseConnection queryForDB(String platform,String flag) throws ConfigurationException {
|
||||||
|
|
||||||
SimpleQuery query = queryFor(ServiceEndpoint.class);
|
SimpleQuery query = queryFor(ServiceEndpoint.class);
|
||||||
|
|
||||||
|
@ -22,14 +25,41 @@ public class ISUtils {
|
||||||
.setResult("$resource/Profile/AccessPoint");
|
.setResult("$resource/Profile/AccessPoint");
|
||||||
|
|
||||||
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
|
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
|
||||||
|
List<AccessPoint> found=client.submit(query);
|
||||||
AccessPoint point=client.submit(query).get(0);
|
if(found.size()>1) {
|
||||||
|
throw new ConfigurationException("Multiple SE found ["+found.size()+"] for platform : "+platform+" flag : "+flag);
|
||||||
|
}else if (found.isEmpty()){
|
||||||
|
throw new ConfigurationException("No SE found for platform : "+platform+" flag : "+flag);
|
||||||
|
}
|
||||||
|
AccessPoint point=found.get(0);
|
||||||
|
|
||||||
|
|
||||||
return new DatabaseConnection(point.username(),decryptString(point.password()),point.address());
|
return new DatabaseConnection(point.username(),decryptString(point.password()),point.address());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getToken() throws ConfigurationException {
|
||||||
|
SimpleQuery query = queryFor(ServiceEndpoint.class);
|
||||||
|
|
||||||
|
query.addCondition("$resource/Profile/Category/text() eq 'Application'")
|
||||||
|
.addCondition("$resource/Profile/Name/text() eq 'GNA-APP'")
|
||||||
|
.setResult("$resource/Profile/AccessPoint");
|
||||||
|
|
||||||
|
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
|
||||||
|
|
||||||
|
List<AccessPoint> found= client.submit(query);
|
||||||
|
if(found.size()>1) {
|
||||||
|
throw new ConfigurationException("Multiple Token SE found ["+found.size()+"] for Category : Application name : GNA-APP");
|
||||||
|
}else if (found.isEmpty()){
|
||||||
|
throw new ConfigurationException("No Token SE found ["+found.size()+"] for Category : Application name : GNA-APP");
|
||||||
|
}
|
||||||
|
|
||||||
|
AccessPoint point=found.get(0);
|
||||||
|
return decryptString(point.password());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static String decryptString(String toDecrypt){
|
public static String decryptString(String toDecrypt){
|
||||||
try{
|
try{
|
||||||
return StringEncrypter.getEncrypter().decrypt(toDecrypt);
|
return StringEncrypter.getEncrypter().decrypt(toDecrypt);
|
||||||
|
|
|
@ -4,16 +4,24 @@ package org.gcube.application.geoportal;
|
||||||
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.concessioni.Concessione;
|
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.model.fault.PersistenceException;
|
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.ValidationException;
|
import org.gcube.application.geoportal.model.fault.ValidationException;
|
||||||
|
import org.gcube.application.geoportal.storage.WorkspaceManager;
|
||||||
import org.gcube.application.geoportal.utils.ISUtils;
|
import org.gcube.application.geoportal.utils.ISUtils;
|
||||||
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
|
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
||||||
|
import org.gcube.data.transfer.library.utils.ScopeUtils;
|
||||||
|
|
||||||
public class CheckContextConfiguration {
|
public class CheckContextConfiguration {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) throws ConfigurationException, StorageHubException {
|
||||||
// TokenSetter.set("/gcube/devNext/NextNext");
|
TokenSetter.set("/gcube/devNext/NextNext");
|
||||||
TokenSetter.set("/pred4s/preprod/preVRE");
|
// TokenSetter.set("/pred4s/preprod/preVRE");
|
||||||
|
|
||||||
|
// TokenSetter.set("/d4science.research-infrastructures.eu/D4OS/GeoNA-Prototype");
|
||||||
|
|
||||||
// System.out.println("Checking for internal .. ");
|
// System.out.println("Checking for internal .. ");
|
||||||
// ConcessioneManager manager=ManagerFactory.getByRecord(new Concessione());
|
// ConcessioneManager manager=ManagerFactory.getByRecord(new Concessione());
|
||||||
// try {
|
// try {
|
||||||
|
@ -24,11 +32,37 @@ public class CheckContextConfiguration {
|
||||||
// }finally {
|
// }finally {
|
||||||
// manager.shutdown();
|
// manager.shutdown();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// Checking token validity
|
||||||
|
// only from 1.0.3
|
||||||
|
// System.out.println("Checking for token ");
|
||||||
|
// String token = ISUtils.getToken();
|
||||||
|
// System.out.println("Token Found ");
|
||||||
|
//
|
||||||
|
// String toRestore= (SecurityTokenProvider.instance.get());
|
||||||
|
// System.out.println("Current Identity : "+ScopeUtils.getCurrentCaller());
|
||||||
|
// SecurityTokenProvider.instance.set(token);
|
||||||
|
// System.out.println("Current Identity : "+ScopeUtils.getCurrentCaller());
|
||||||
|
//
|
||||||
|
// SecurityTokenProvider.instance.set(toRestore);
|
||||||
|
// System.out.println("Current Identity : "+ScopeUtils.getCurrentCaller());
|
||||||
|
//
|
||||||
|
//
|
||||||
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("Checking for postgis .. ");
|
||||||
System.out.println(ISUtils.queryForDB("postgis", "Concessioni"));
|
System.out.println(ISUtils.queryForDB("postgis", "Concessioni"));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("Base folder path : "+new WorkspaceManager(null).getApplicationBaseFolder().get().getPath());
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("Inspecting internal DB ");
|
||||||
|
System.out.println("Found "+ManagerFactory.getList().size()+" records");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// INIT APP
|
// INIT APP
|
||||||
// INTERNAL DB // ******* IS ******** SE platform : "postgresql" AP."GNA_DB"="internal-db"
|
// INTERNAL DB // ******* IS ******** SE platform : "postgresql" AP."GNA_DB"="internal-db"
|
||||||
// WORKSPACE ROOT FOLDER
|
// WORKSPACE ROOT FOLDER
|
||||||
|
|
|
@ -7,6 +7,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.model.db.DBInteractionException;
|
import org.gcube.application.geoportal.model.db.DBInteractionException;
|
||||||
import org.gcube.application.geoportal.model.db.DatabaseConnection;
|
import org.gcube.application.geoportal.model.db.DatabaseConnection;
|
||||||
|
import org.gcube.application.geoportal.model.fault.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.model.fault.DataParsingException;
|
import org.gcube.application.geoportal.model.fault.DataParsingException;
|
||||||
import org.gcube.application.geoportal.model.fault.GeoPackageInteractionException;
|
import org.gcube.application.geoportal.model.fault.GeoPackageInteractionException;
|
||||||
import org.gcube.application.geoportal.storage.PostgisDBManager;
|
import org.gcube.application.geoportal.storage.PostgisDBManager;
|
||||||
|
@ -30,7 +31,7 @@ public class UploadGpkgTable {
|
||||||
+ "--TABLENAME";
|
+ "--TABLENAME";
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) throws SQLException, IOException, GeoPackageInteractionException, DBInteractionException, DataParsingException {
|
public static void main(String[] args) throws SQLException, IOException, GeoPackageInteractionException, DBInteractionException, DataParsingException, ConfigurationException {
|
||||||
|
|
||||||
if(args.length<1) {
|
if(args.length<1) {
|
||||||
System.out.println(USAGE);
|
System.out.println(USAGE);
|
||||||
|
|
|
@ -4,9 +4,11 @@ import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.managers.AbstractRecordManager;
|
||||||
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.InputStreamDescriptor;
|
||||||
|
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.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;
|
||||||
|
@ -24,18 +26,37 @@ public class UseCases {
|
||||||
TokenSetter.set("/gcube/devNext/NextNext");
|
TokenSetter.set("/gcube/devNext/NextNext");
|
||||||
// TokenSetter.set("/pred4s/preprod/preVRE");
|
// TokenSetter.set("/pred4s/preprod/preVRE");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// System.out.println("Try to create..");
|
//CREATE NEW
|
||||||
// Concessione conc=registerNewConcessione();
|
int numConcessioni=1;
|
||||||
|
System.out.println("Try to create.. "+numConcessioni);
|
||||||
|
for(int i=0;i<numConcessioni;i++)
|
||||||
|
registerNewConcessione();
|
||||||
|
|
||||||
|
// long id=conc.getId();
|
||||||
|
|
||||||
|
//READ BY ID
|
||||||
|
// long id=48;
|
||||||
|
// System.out.println("Tryint to read by id "+id);
|
||||||
|
// readConcessione(id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//GET LIST
|
||||||
|
System.out.println(getList());
|
||||||
|
|
||||||
|
//GET LIST BY TYPE
|
||||||
|
System.out.println(getConcessioneList());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// long id=conc.getId();
|
|
||||||
|
|
||||||
long id=48;
|
|
||||||
System.out.println("Tryint to read by id "+id);
|
|
||||||
readConcessione(id);
|
|
||||||
}catch(Throwable t) {
|
}catch(Throwable t) {
|
||||||
System.err.println("ALERT "+t.getMessage());
|
System.err.println("ALERT "+t.getMessage());
|
||||||
throw t;
|
throw t;
|
||||||
|
}finally {
|
||||||
|
AbstractRecordManager.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,7 +65,6 @@ public class UseCases {
|
||||||
|
|
||||||
public static Concessione registerNewConcessione() throws FileNotFoundException, IOException{
|
public static Concessione registerNewConcessione() throws FileNotFoundException, IOException{
|
||||||
ConcessioneManager manager=null;
|
ConcessioneManager manager=null;
|
||||||
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
|
||||||
Concessione conc=TestModel.prepareEmptyConcessione();
|
Concessione conc=TestModel.prepareEmptyConcessione();
|
||||||
|
|
||||||
|
@ -120,20 +140,31 @@ public class UseCases {
|
||||||
return registered;
|
return registered;
|
||||||
//--- FINALLY --/
|
//--- FINALLY --/
|
||||||
|
|
||||||
}finally{
|
|
||||||
manager.shutdown();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void readConcessione(long id) {
|
public static void readConcessione(long id) {
|
||||||
|
|
||||||
ConcessioneManager manager=ManagerFactory.getByRecordID(id);
|
ConcessioneManager manager=ManagerFactory.getByRecordID(id);
|
||||||
try{
|
|
||||||
System.out.println(manager.getRecord());
|
System.out.println(manager.getRecord());
|
||||||
}finally {
|
|
||||||
manager.shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String getList(){
|
||||||
|
StringBuilder builder=new StringBuilder();
|
||||||
|
for(Record r : ManagerFactory.getList()) {
|
||||||
|
builder.append("Record ["+r.getId()+"\t\""+r.getNome()+"\t"+r.getRecordType()+"]");
|
||||||
|
}
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String getConcessioneList(){
|
||||||
|
StringBuilder builder=new StringBuilder();
|
||||||
|
for(Concessione r : ManagerFactory.getList(Concessione.class)) {
|
||||||
|
builder.append("Concessione ["+r.getId()+"\t\""+r.getNome()+"\"\t"+r.getRecordType()+"\t : "+r.validate().getStatus()+"]");
|
||||||
|
}
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package org.gcube.application.geoportal;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportal.utils.Workspace;
|
||||||
|
import org.gcube.common.storagehub.client.dsl.FileContainer;
|
||||||
|
import org.gcube.common.storagehub.client.dsl.ItemContainer;
|
||||||
|
import org.gcube.common.storagehub.client.dsl.ListResolver;
|
||||||
|
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
||||||
|
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
||||||
|
import org.gcube.common.storagehub.model.items.Item;
|
||||||
|
|
||||||
|
public class WSTests {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws StorageHubException {
|
||||||
|
TokenSetter.set("/gcube/devNext/NextNext");
|
||||||
|
|
||||||
|
StorageHubClient client=Workspace.getClient();
|
||||||
|
String id="9e397c1f-0b52-4b59-b247-e5ef301978ed";
|
||||||
|
|
||||||
|
ItemContainer item=client.open(id).asItem();
|
||||||
|
System.out.println(item.get().getPath());
|
||||||
|
// switch(item.getType()) {
|
||||||
|
// case FILE :
|
||||||
|
// FileContainer file=(FileContainer) item;
|
||||||
|
// file.getAnchestors();
|
||||||
|
// }
|
||||||
|
System.out.println(path(item));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String path(ItemContainer item) throws StorageHubException {
|
||||||
|
StringBuilder builder=new StringBuilder();
|
||||||
|
ListResolver resolver=item.getAnchestors();
|
||||||
|
for(Item i:resolver.getItems()) {
|
||||||
|
builder.append(i.getName()+" ID : "+i.getId()+"\n");
|
||||||
|
}
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -7,8 +7,8 @@ import javax.persistence.Persistence;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.TestModel;
|
import org.gcube.application.geoportal.TestModel;
|
||||||
import org.gcube.application.geoportal.managers.AbstractRecordManager;
|
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.ConcessioneManager;
|
||||||
|
import org.gcube.application.geoportal.managers.EMFProvider;
|
||||||
import org.gcube.application.geoportal.managers.ManagerFactory;
|
import org.gcube.application.geoportal.managers.ManagerFactory;
|
||||||
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
||||||
import org.gcube.application.geoportal.model.db.DBConstants;
|
import org.gcube.application.geoportal.model.db.DBConstants;
|
||||||
|
@ -47,6 +47,11 @@ public class Records {
|
||||||
throw new RuntimeException("Unable to init local databse",t1);
|
throw new RuntimeException("Unable to init local databse",t1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void shutdown() {
|
||||||
|
|
||||||
|
}
|
||||||
}); }
|
}); }
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue