From 4a7150ba1b75dfc63ef9899827761a046d93b7a1 Mon Sep 17 00:00:00 2001 From: "fabio.sinibaldi" Date: Mon, 17 Dec 2018 16:03:28 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/application/perform-service@174943 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 36 ++++++ .project | 29 +++++ .settings/org.eclipse.core.resources.prefs | 6 + .settings/org.eclipse.jdt.core.prefs | 5 + .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 61 +++++++++ .../perform/service/LocalConfiguration.java | 16 +++ .../PerformServiceLifecycleManager.java | 25 ++++ .../service/PerformServiceManager.java | 21 ++++ .../perform/service/ServiceConstants.java | 8 ++ .../service/engine/AnagraphicManager.java | 15 +++ .../service/engine/AnagraphicManagerImpl.java | 106 ++++++++++++++++ .../service/engine/DataBaseManager.java | 19 +++ .../service/engine/DataBaseManagerImpl.java | 119 ++++++++++++++++++ .../service/engine/model/BeanNotFound.java | 29 +++++ .../perform/service/engine/model/DBField.java | 59 +++++++++ .../engine/model/DBQueryDescriptor.java | 5 + .../perform/service/engine/model/DBType.java | 7 ++ .../model/DatabaseConnectionDescriptor.java | 14 +++ .../engine/model/ISQueryDescriptor.java | 17 +++ .../engine/model/InternalException.java | 29 +++++ .../engine/model/anagraphic/Batch.java | 20 +++ .../service/engine/model/anagraphic/Farm.java | 21 ++++ .../perform/service/engine/utils/ISUtils.java | 14 +++ .../service/engine/utils/ScopeUtils.java | 46 +++++++ .../perform/service/rest/Anagraphic.java | 20 +++ ...rs.handlers.application.ApplicationHandler | 1 + 27 files changed, 752 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/main/java/org/gcube/application/perform/service/LocalConfiguration.java create mode 100644 src/main/java/org/gcube/application/perform/service/PerformServiceLifecycleManager.java create mode 100644 src/main/java/org/gcube/application/perform/service/PerformServiceManager.java create mode 100644 src/main/java/org/gcube/application/perform/service/ServiceConstants.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/AnagraphicManager.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/AnagraphicManagerImpl.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/DataBaseManager.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/DataBaseManagerImpl.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/BeanNotFound.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/DBField.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/DBQueryDescriptor.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/DBType.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/DatabaseConnectionDescriptor.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/ISQueryDescriptor.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/InternalException.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/anagraphic/Batch.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/model/anagraphic/Farm.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/utils/ISUtils.java create mode 100644 src/main/java/org/gcube/application/perform/service/engine/utils/ScopeUtils.java create mode 100644 src/main/java/org/gcube/application/perform/service/rest/Anagraphic.java create mode 100644 src/main/resources/META-INF/services/org.gcube.smartgears.handlers.application.ApplicationHandler diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..fae1a2b --- /dev/null +++ b/.classpath @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..bac53d6 --- /dev/null +++ b/.project @@ -0,0 +1,29 @@ + + + perform-service + + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..29abf99 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..714351a --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..905b677 --- /dev/null +++ b/pom.xml @@ -0,0 +1,61 @@ + + 4.0.0 + + org.gcube.tools + maven-parent + LATEST + + org.gcube.application + perform-service + 1.0.0-SNAPSHOT + Perform Service + Service for Farm Perform Data Management + war + + + + + + org.gcube.distribution + maven-smartgears-bom + LATEST + pom + import + + + + + + + org.gcube.core + common-smartgears-app + + + org.gcube.core + common-smartgears + + + + org.apache.commons + commons-dbcp2 + 2.0.1 + + + + + javax.ws.rs + javax.ws.rs-api + 2.0 + + + + + org.projectlombok + lombok + 1.14.8 + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/application/perform/service/LocalConfiguration.java b/src/main/java/org/gcube/application/perform/service/LocalConfiguration.java new file mode 100644 index 0000000..b2b5dd5 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/LocalConfiguration.java @@ -0,0 +1,16 @@ +package org.gcube.application.perform.service; + +public class LocalConfiguration { + + public static final String POOL_MAX_IDLE="db.pools.max_idle"; + public static final String POOL_MAX_TOTAL="db.pools.max_total"; + public static final String POOL_MIN_IDLE="db.pools.min_total"; + + + + + public static final String getProperty(String propertyName) { + throw new RuntimeException("Need to implement this"); + } + +} diff --git a/src/main/java/org/gcube/application/perform/service/PerformServiceLifecycleManager.java b/src/main/java/org/gcube/application/perform/service/PerformServiceLifecycleManager.java new file mode 100644 index 0000000..9bf3739 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/PerformServiceLifecycleManager.java @@ -0,0 +1,25 @@ +package org.gcube.application.perform.service; + +import org.gcube.smartgears.handlers.application.ApplicationLifecycleEvent.Start; +import org.gcube.smartgears.handlers.application.ApplicationLifecycleEvent.Stop; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.gcube.smartgears.handlers.application.ApplicationLifecycleHandler; + +@XmlRootElement(name = "perform-lifecycle") +public class PerformServiceLifecycleManager extends ApplicationLifecycleHandler { + + + @Override + public void onStart(Start e) { + super.onStart(e); + + } + + @Override + public void onStop(Stop e) { + super.onStop(e); + } + +} diff --git a/src/main/java/org/gcube/application/perform/service/PerformServiceManager.java b/src/main/java/org/gcube/application/perform/service/PerformServiceManager.java new file mode 100644 index 0000000..6cc4c51 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/PerformServiceManager.java @@ -0,0 +1,21 @@ +package org.gcube.application.perform.service; + +import org.gcube.smartgears.ApplicationManager; + +public class PerformServiceManager implements ApplicationManager{ + + + @Override + public void onInit() { + // TODO Auto-generated method stub + + } + + + @Override + public void onShutdown() { + // TODO Auto-generated method stub + + } + +} diff --git a/src/main/java/org/gcube/application/perform/service/ServiceConstants.java b/src/main/java/org/gcube/application/perform/service/ServiceConstants.java new file mode 100644 index 0000000..1f2aef8 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/ServiceConstants.java @@ -0,0 +1,8 @@ +package org.gcube.application.perform.service; + +public interface ServiceConstants { + + + public static final String ANAGRAPHIC_INTERFACE="anagraphic"; + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/AnagraphicManager.java b/src/main/java/org/gcube/application/perform/service/engine/AnagraphicManager.java new file mode 100644 index 0000000..cbddcc1 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/AnagraphicManager.java @@ -0,0 +1,15 @@ +package org.gcube.application.perform.service.engine; + +import java.sql.SQLException; + +import org.gcube.application.perform.service.engine.model.BeanNotFound; +import org.gcube.application.perform.service.engine.model.DBQueryDescriptor; +import org.gcube.application.perform.service.engine.model.anagraphic.Batch; +import org.gcube.application.perform.service.engine.model.anagraphic.Farm; + +public interface AnagraphicManager { + + public Batch getBatch(DBQueryDescriptor desc) throws BeanNotFound, SQLException; + public Farm getFarm(DBQueryDescriptor desc)throws BeanNotFound, SQLException; + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/AnagraphicManagerImpl.java b/src/main/java/org/gcube/application/perform/service/engine/AnagraphicManagerImpl.java new file mode 100644 index 0000000..7683865 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/AnagraphicManagerImpl.java @@ -0,0 +1,106 @@ +package org.gcube.application.perform.service.engine; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.gcube.application.perform.service.engine.model.BeanNotFound; +import org.gcube.application.perform.service.engine.model.DBField; +import org.gcube.application.perform.service.engine.model.DBQueryDescriptor; +import org.gcube.application.perform.service.engine.model.ISQueryDescriptor; +import org.gcube.application.perform.service.engine.model.InternalException; +import org.gcube.application.perform.service.engine.model.anagraphic.Batch; +import org.gcube.application.perform.service.engine.model.anagraphic.Farm; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class AnagraphicManagerImpl implements AnagraphicManager { + + + private static final String INSERT_BATCH=""; + private static final String GET_BATCH=""; + private static final String INSERT_FARM=""; + private static final String GET_FARM=""; + + + private ISQueryDescriptor getISQueryDescriptor() { + throw new RuntimeException("Implment this"); + } + + + @Override + public Batch getBatch(DBQueryDescriptor desc) throws BeanNotFound,SQLException{ + DataBaseManager db=DataBaseManager.get(getISQueryDescriptor()); + + + Connection conn=db.getConnection(); + PreparedStatement psInsert=conn.prepareStatement(INSERT_BATCH); + // TODO set values + boolean inserted=psInsert.executeUpdate()==1; + if(inserted) + conn.commit(); + + PreparedStatement psGet=conn.prepareStatement(GET_BATCH); + // TODO set values + ResultSet rs=psGet.executeQuery(); + if(!rs.next()) + throw new BeanNotFound("Batch not found. Condition was "+desc); + + Batch toReturn=rowToBatch(rs); + if(inserted) + log.trace("Inserted Batch {} ",toReturn); + + return toReturn; + + } + + @Override + public Farm getFarm(DBQueryDescriptor desc) throws BeanNotFound,SQLException{ + DataBaseManager db=DataBaseManager.get(getISQueryDescriptor()); + + + Connection conn=db.getConnection(); + PreparedStatement psInsert=conn.prepareStatement(INSERT_FARM); + // TODO set values + boolean inserted=psInsert.executeUpdate()==1; + if(inserted) + conn.commit(); + + PreparedStatement psGet=conn.prepareStatement(GET_FARM); + // TODO set values + ResultSet rs=psGet.executeQuery(); + if(!rs.next()) + throw new BeanNotFound("Farm not found. Condition was "+desc); + + Farm toReturn=rowToFarm(rs); + if(inserted) + log.trace("Inserted Batch {} ",toReturn); + + return toReturn; + } + + + + private static Batch rowToBatch(ResultSet rs) throws SQLException { + Batch toReturn=new Batch(); + toReturn.setFarmId(rs.getLong(DBField.Batch.FARM_ID)); + toReturn.setId(rs.getLong(DBField.Batch.BATCH_ID)); + toReturn.setName(rs.getString(DBField.Batch.BATCH_NAME)); + toReturn.setType(rs.getString(DBField.Batch.BATCH_TYPE)); + return toReturn; + } + + + private static Farm rowToFarm(ResultSet rs) throws SQLException { + Farm toReturn=new Farm(); + toReturn.setAssociationId(rs.getLong(DBField.Farm.ASSOCIATION_ID)); + toReturn.setAssociationUUID(rs.getString(DBField.Farm.ASSOCIATION_UUID)); + toReturn.setCompanyId(rs.getLong(DBField.Farm.COMPANY_ID)); + toReturn.setCompanyUUID(rs.getString(DBField.Farm.COMPANY_UUID)); + toReturn.setId(rs.getLong(DBField.Farm.FARM_ID)); + toReturn.setUUID(rs.getString(DBField.Farm.UUID)); + return toReturn; + } +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/DataBaseManager.java b/src/main/java/org/gcube/application/perform/service/engine/DataBaseManager.java new file mode 100644 index 0000000..510353c --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/DataBaseManager.java @@ -0,0 +1,19 @@ +package org.gcube.application.perform.service.engine; + +import java.sql.Connection; +import java.sql.SQLException; + +import org.gcube.application.perform.service.engine.model.ISQueryDescriptor; + +public interface DataBaseManager { + + + public static DataBaseManager get(ISQueryDescriptor desc) { + return new DataBaseManagerImpl(desc); + } + + + public Connection getConnection() throws SQLException; + + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/DataBaseManagerImpl.java b/src/main/java/org/gcube/application/perform/service/engine/DataBaseManagerImpl.java new file mode 100644 index 0000000..d48d996 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/DataBaseManagerImpl.java @@ -0,0 +1,119 @@ +package org.gcube.application.perform.service.engine; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.concurrent.ConcurrentHashMap; + +import javax.sql.DataSource; + +import org.apache.commons.dbcp2.ConnectionFactory; +import org.apache.commons.dbcp2.DriverManagerConnectionFactory; +import org.apache.commons.dbcp2.PoolableConnection; +import org.apache.commons.dbcp2.PoolableConnectionFactory; +import org.apache.commons.dbcp2.PoolingDataSource; +import org.apache.commons.pool2.ObjectPool; +import org.apache.commons.pool2.impl.GenericObjectPool; +import org.apache.commons.pool2.impl.GenericObjectPoolConfig; +import org.gcube.application.perform.service.LocalConfiguration; +import org.gcube.application.perform.service.engine.model.DBType; +import org.gcube.application.perform.service.engine.model.DatabaseConnectionDescriptor; +import org.gcube.application.perform.service.engine.model.ISQueryDescriptor; +import org.gcube.application.perform.service.engine.utils.ISUtils; +import org.gcube.application.perform.service.engine.utils.ScopeUtils; + +import lombok.Synchronized; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class DataBaseManagerImpl implements DataBaseManager{ + + +// private static final ConcurrentHashMap instanceMap=new ConcurrentHashMap<>(); +// +// @Synchronized +// public static final DataBaseManagerImpl get(ISQueryDescriptor desc) { +// if(!instanceMap.containsKey(desc.getType())){ +// return instanceMap.put(desc.getType(), new DataBaseManagerImpl(desc)); +// } +// +// return instanceMap.get(desc.getType()); +// } + + + // ************************************** INSTANCE + + + // Endpoint -> datasource + private static ConcurrentHashMap datasources=new ConcurrentHashMap<>(); + + /** + * Manages db connection pools by scope + * + * + */ + + private ISQueryDescriptor queryDescriptor; + private DatabaseConnectionDescriptor dbDescriptor=null; + + public DataBaseManagerImpl(ISQueryDescriptor query) { + queryDescriptor=query; + } + + + private synchronized DatabaseConnectionDescriptor getDB() { + if(dbDescriptor==null) { + dbDescriptor=ISUtils.queryForDatabase(queryDescriptor); + } + return dbDescriptor; + } + + @Override + public Connection getConnection() throws SQLException { + DataSource ds=getDataSource(); + return ds.getConnection(); + } + + @Synchronized + private DataSource getDataSource() { + DatabaseConnectionDescriptor dbDescriptor=getDB(); + + if(!datasources.containsKey(dbDescriptor.getUrl())) { + + datasources.put(dbDescriptor.getUrl(), setupDataSource(dbDescriptor)); + } + return datasources.get(dbDescriptor.getUrl()); + } + + private static DataSource setupDataSource(DatabaseConnectionDescriptor db) { + + log.trace("Setting up data source for {} ",db); + + + GenericObjectPoolConfig poolConfig=new GenericObjectPoolConfig(); + poolConfig.setMaxIdle(Integer.parseInt(LocalConfiguration.getProperty(LocalConfiguration.POOL_MAX_IDLE))); + poolConfig.setMaxTotal(Integer.parseInt(LocalConfiguration.getProperty(LocalConfiguration.POOL_MAX_TOTAL))); + poolConfig.setMinIdle(Integer.parseInt(LocalConfiguration.getProperty(LocalConfiguration.POOL_MIN_IDLE))); + + + ConnectionFactory connectionFactory = + new DriverManagerConnectionFactory(db.getUrl(),db.getUsername(),db.getPassword()); + + + PoolableConnectionFactory poolableConnectionFactory = + new PoolableConnectionFactory(connectionFactory, null); + + + ObjectPool connectionPool = + new GenericObjectPool<>(poolableConnectionFactory); + + + poolableConnectionFactory.setPool(connectionPool); + + + PoolingDataSource dataSource = + new PoolingDataSource<>(connectionPool); + + return dataSource; + } + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/BeanNotFound.java b/src/main/java/org/gcube/application/perform/service/engine/model/BeanNotFound.java new file mode 100644 index 0000000..0c0a0e2 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/BeanNotFound.java @@ -0,0 +1,29 @@ +package org.gcube.application.perform.service.engine.model; + +public class BeanNotFound extends InternalException { + + public BeanNotFound() { + // TODO Auto-generated constructor stub + } + + public BeanNotFound(String message) { + super(message); + // TODO Auto-generated constructor stub + } + + public BeanNotFound(Throwable cause) { + super(cause); + // TODO Auto-generated constructor stub + } + + public BeanNotFound(String message, Throwable cause) { + super(message, cause); + // TODO Auto-generated constructor stub + } + + public BeanNotFound(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + // TODO Auto-generated constructor stub + } + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/DBField.java b/src/main/java/org/gcube/application/perform/service/engine/model/DBField.java new file mode 100644 index 0000000..4500133 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/DBField.java @@ -0,0 +1,59 @@ +package org.gcube.application.perform.service.engine.model; + +import java.sql.Types; +import java.util.HashMap; +import java.util.Map; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class DBField { + + public static class Batch{ + public static final Map fields=new HashMap<>(); + + public static final String BATCH_ID="id"; + public static final String UUID="uuid"; + public static final String FARM_ID="farmid"; + public static final String BATCH_TYPE="type"; + public static final String BATCH_NAME="name"; + + static { + fields.put(BATCH_ID, new DBField(Types.BIGINT,BATCH_ID)); + fields.put(UUID, new DBField(Types.NVARCHAR,UUID)); + fields.put(FARM_ID, new DBField(Types.BIGINT,FARM_ID)); + fields.put(BATCH_TYPE, new DBField(Types.NVARCHAR,BATCH_TYPE)); + fields.put(BATCH_NAME, new DBField(Types.NVARCHAR,BATCH_NAME)); + } + } + + public static class Farm{ + public static final Map fields=new HashMap<>(); + + public static final String FARM_ID="id"; + public static final String COMPANY_ID="companyid"; + public static final String ASSOCIATION_ID="associationid"; + public static final String UUID="uuid"; + public static final String COMPANY_UUID="companyuuid"; + public static final String ASSOCIATION_UUID="associationuuid"; + + static { + fields.put(FARM_ID, new DBField(Types.BIGINT,FARM_ID)); + fields.put(COMPANY_ID, new DBField(Types.BIGINT,COMPANY_ID)); + fields.put(ASSOCIATION_ID, new DBField(Types.BIGINT,ASSOCIATION_ID)); + fields.put(UUID, new DBField(Types.NVARCHAR,UUID)); + fields.put(COMPANY_UUID, new DBField(Types.NVARCHAR,COMPANY_UUID)); + fields.put(ASSOCIATION_UUID, new DBField(Types.NVARCHAR,ASSOCIATION_UUID)); + + } + } + + + + private int type; + private String fieldName; + + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/DBQueryDescriptor.java b/src/main/java/org/gcube/application/perform/service/engine/model/DBQueryDescriptor.java new file mode 100644 index 0000000..1b89483 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/DBQueryDescriptor.java @@ -0,0 +1,5 @@ +package org.gcube.application.perform.service.engine.model; + +public class DBQueryDescriptor { + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/DBType.java b/src/main/java/org/gcube/application/perform/service/engine/model/DBType.java new file mode 100644 index 0000000..f5c553d --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/DBType.java @@ -0,0 +1,7 @@ +package org.gcube.application.perform.service.engine.model; + +public enum DBType { + + Anagraphic,Performances + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/DatabaseConnectionDescriptor.java b/src/main/java/org/gcube/application/perform/service/engine/model/DatabaseConnectionDescriptor.java new file mode 100644 index 0000000..f5b3d11 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/DatabaseConnectionDescriptor.java @@ -0,0 +1,14 @@ +package org.gcube.application.perform.service.engine.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class DatabaseConnectionDescriptor { + + private String username; + private String url; + private String password; + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/ISQueryDescriptor.java b/src/main/java/org/gcube/application/perform/service/engine/model/ISQueryDescriptor.java new file mode 100644 index 0000000..3fd7e7a --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/ISQueryDescriptor.java @@ -0,0 +1,17 @@ +package org.gcube.application.perform.service.engine.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.ToString; + +@Getter +@AllArgsConstructor +@ToString +public class ISQueryDescriptor { + + private DBType type; + private String resourceName; + private String platformName; + private String category; + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/InternalException.java b/src/main/java/org/gcube/application/perform/service/engine/model/InternalException.java new file mode 100644 index 0000000..f746179 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/InternalException.java @@ -0,0 +1,29 @@ +package org.gcube.application.perform.service.engine.model; + +public class InternalException extends Exception { + + public InternalException() { + // TODO Auto-generated constructor stub + } + + public InternalException(String message) { + super(message); + // TODO Auto-generated constructor stub + } + + public InternalException(Throwable cause) { + super(cause); + // TODO Auto-generated constructor stub + } + + public InternalException(String message, Throwable cause) { + super(message, cause); + // TODO Auto-generated constructor stub + } + + public InternalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + // TODO Auto-generated constructor stub + } + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/anagraphic/Batch.java b/src/main/java/org/gcube/application/perform/service/engine/model/anagraphic/Batch.java new file mode 100644 index 0000000..009dd5a --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/anagraphic/Batch.java @@ -0,0 +1,20 @@ +package org.gcube.application.perform.service.engine.model.anagraphic; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class Batch { + + private Long id; + private String uuid; + private String name; + private String type; + private Long farmId; + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/model/anagraphic/Farm.java b/src/main/java/org/gcube/application/perform/service/engine/model/anagraphic/Farm.java new file mode 100644 index 0000000..56d0acd --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/model/anagraphic/Farm.java @@ -0,0 +1,21 @@ +package org.gcube.application.perform.service.engine.model.anagraphic; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class Farm { + + + private Long id; + private Long companyId; + private Long associationId; + private String UUID; + private String companyUUID; + private String associationUUID; +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/utils/ISUtils.java b/src/main/java/org/gcube/application/perform/service/engine/utils/ISUtils.java new file mode 100644 index 0000000..a7ab45b --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/utils/ISUtils.java @@ -0,0 +1,14 @@ +package org.gcube.application.perform.service.engine.utils; + +import org.gcube.application.perform.service.engine.model.DatabaseConnectionDescriptor; +import org.gcube.application.perform.service.engine.model.ISQueryDescriptor; + +public class ISUtils { + + + public static DatabaseConnectionDescriptor queryForDatabase(ISQueryDescriptor desc) { + throw new RuntimeException("Implment me, asshole!"); + } + + +} diff --git a/src/main/java/org/gcube/application/perform/service/engine/utils/ScopeUtils.java b/src/main/java/org/gcube/application/perform/service/engine/utils/ScopeUtils.java new file mode 100644 index 0000000..bcf5f89 --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/engine/utils/ScopeUtils.java @@ -0,0 +1,46 @@ +package org.gcube.application.perform.service.engine.utils; + +import static org.gcube.common.authorization.client.Constants.authorizationService; + +import org.gcube.common.authorization.library.AuthorizationEntry; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; + +import lombok.extern.slf4j.Slf4j; + + +@Slf4j +public class ScopeUtils { + + + public static String getCurrentScope(){ + // try{ + // String token=SecurityTokenProvider.instance.get(); + // log.debug("Token is : "+token); + // if(token==null) throw new Exception("Security Token is null"); + // AuthorizationEntry entry = authorizationService().get(token); + // return entry.getContext(); + // }catch(Exception e ){ + // log.debug("Unable to resolve token, checking scope provider..",e); + // return ScopeProvider.instance.get(); + // } + + String scope=ScopeProvider.instance.get(); + if(scope!=null) { + log.debug("Found scope provider {}, skipping token",scope); + return scope; + }else{ + try{ + log.debug("Scope provider not set, reverting to token"); + String token=SecurityTokenProvider.instance.get(); + log.debug("Token is : "+token); + if(token==null) throw new Exception("Security Token is null"); + AuthorizationEntry entry = authorizationService().get(token); + return entry.getContext(); + }catch(Exception e){ + throw new RuntimeException("Unable to evaluate scope ",e); + } + } + } + +} diff --git a/src/main/java/org/gcube/application/perform/service/rest/Anagraphic.java b/src/main/java/org/gcube/application/perform/service/rest/Anagraphic.java new file mode 100644 index 0000000..976c2ca --- /dev/null +++ b/src/main/java/org/gcube/application/perform/service/rest/Anagraphic.java @@ -0,0 +1,20 @@ +package org.gcube.application.perform.service.rest; + +import javax.ws.rs.Path; + +import org.gcube.application.perform.service.PerformServiceManager; +import org.gcube.smartgears.annotations.ManagedBy; +import org.gcube.application.perform.service.ServiceConstants; + + +@Path(ServiceConstants.ANAGRAPHIC_INTERFACE) + +@ManagedBy(PerformServiceManager.class) + +public class Anagraphic { + + + + + +} diff --git a/src/main/resources/META-INF/services/org.gcube.smartgears.handlers.application.ApplicationHandler b/src/main/resources/META-INF/services/org.gcube.smartgears.handlers.application.ApplicationHandler new file mode 100644 index 0000000..a13e0df --- /dev/null +++ b/src/main/resources/META-INF/services/org.gcube.smartgears.handlers.application.ApplicationHandler @@ -0,0 +1 @@ +org.gcube.application.perform.service.PerformServiceLifecycleManager \ No newline at end of file