Repository: airavata Updated Branches: refs/heads/develop 0d9a61264 -> 5870ed4ff
http://git-wip-us.apache.org/repos/asf/airavata/blob/6242acac/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java index 98dc8c3..2fddfc6 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/impl/DataCatalogImpl.java @@ -23,6 +23,7 @@ package org.apache.airavata.registry.core.data.catalog.impl; import org.apache.airavata.model.data.resource.DataReplicaLocationModel; import org.apache.airavata.model.data.resource.DataResourceModel; +import org.apache.airavata.registry.core.data.catalog.model.DataReplicaLocation; import org.apache.airavata.registry.core.data.catalog.model.DataResource; import org.apache.airavata.registry.core.data.catalog.utils.DataCatalogJPAUtils; import org.apache.airavata.registry.core.data.catalog.utils.ThriftDataModelConversion; @@ -32,6 +33,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.persistence.EntityManager; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.UUID; public class DataCatalogImpl implements DataCatalog { @@ -42,10 +46,6 @@ public class DataCatalogImpl implements DataCatalog { public String publishResource(DataResourceModel resourceModel) throws DataCatalogException { String resourceId = UUID.randomUUID().toString(); resourceModel.setResourceId(resourceId); - for(DataReplicaLocationModel replicaLocationModel : resourceModel.getReplicaLocations()){ - replicaLocationModel.setReplicaId(UUID.randomUUID().toString()); - replicaLocationModel.setResourceId(resourceId); - } DataResource dataResource = ThriftDataModelConversion.getDataResource(resourceModel); EntityManager em = null; try { @@ -102,15 +102,8 @@ public class DataCatalogImpl implements DataCatalog { DataResource dataResource = em.find(DataResource.class, resourceModel.getResourceId()); if(dataResource == null) return false; - //FIXME - Every time we delete and create em.getTransaction().begin(); - em.remove(dataResource); - em.flush(); - resourceModel.getReplicaLocations().stream().forEach(rl->{ - rl.setReplicaId(UUID.randomUUID().toString()); - rl.setResourceId(resourceModel.getResourceId()); - }); - em.persist(ThriftDataModelConversion.getDataResource(resourceModel)); + em.merge(ThriftDataModelConversion.getUpdatedDataResource(resourceModel, dataResource)); em.getTransaction().commit(); em.close(); } catch (Exception e) { @@ -146,4 +139,127 @@ public class DataCatalogImpl implements DataCatalog { } } } + + @Override + public String publishReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException { + String replicaId = UUID.randomUUID().toString(); + dataReplicaLocationModel.setReplicaId(replicaId); + DataReplicaLocation replicaLocation = ThriftDataModelConversion.getDataReplicaLocation(dataReplicaLocationModel); + EntityManager em = null; + try { + em = DataCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + em.persist(replicaLocation); + em.getTransaction().commit(); + em.close(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new DataCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + return replicaId; + } + + @Override + public boolean removeReplicaLocation(String replicaId) throws DataCatalogException { + EntityManager em = null; + try { + em = DataCatalogJPAUtils.getEntityManager(); + DataReplicaLocation replicaLocation = em.find(DataReplicaLocation.class, replicaId); + if(replicaLocation == null) + return false; + em.getTransaction().begin(); + em.remove(replicaLocation); + em.getTransaction().commit(); + em.close(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new DataCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + return true; + } + + @Override + public boolean updateReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException { + EntityManager em = null; + try { + em = DataCatalogJPAUtils.getEntityManager(); + DataReplicaLocation dataReplicaLocation = em.find(DataReplicaLocation.class, dataReplicaLocationModel.getReplicaId()); + if(dataReplicaLocation == null) + return false; + em.getTransaction().begin(); + em.merge(ThriftDataModelConversion.getUpdatedDataReplicaLocation(dataReplicaLocationModel, dataReplicaLocation)); + em.getTransaction().commit(); + em.close(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new DataCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + return true; + } + + @Override + public DataReplicaLocationModel getReplicaLocation(String replicaId) throws DataCatalogException { + EntityManager em = null; + try { + em = DataCatalogJPAUtils.getEntityManager(); + DataReplicaLocation replicaLocation = em.find(DataReplicaLocation.class, replicaId); + return ThriftDataModelConversion.getDataReplicaLocationModel(replicaLocation); + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new DataCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + @Override + public List<DataReplicaLocationModel> getAllReplicaLocations(String resourceId) throws DataCatalogException { + EntityManager em = null; + try { + em = DataCatalogJPAUtils.getEntityManager(); + DataResource dataResource = em.find(DataResource.class, resourceId); + if(dataResource == null) + return null; + ArrayList<DataReplicaLocationModel> dataReplicaLocationModels = new ArrayList<>(); + dataResource.getDataReplicaLocations().stream().forEach(rl->dataReplicaLocationModels + .add(ThriftDataModelConversion.getDataReplicaLocationModel(rl))); + return dataReplicaLocationModels; + } catch (Exception e) { + logger.error(e.getMessage(), e); + throw new DataCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } + em.close(); + } + } + } } http://git-wip-us.apache.org/repos/asf/airavata/blob/6242acac/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java index 16db298..7add6b5 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/model/DataReplicaLocation.java @@ -30,6 +30,7 @@ import java.sql.Timestamp; @Table(name = "DATA_REPLICA_LOCATION") public class DataReplicaLocation { private final static Logger logger = LoggerFactory.getLogger(DataReplicaLocation.class); + private String replicaId; private String resourceId; private String replicaName; private String replicaDescription; @@ -39,6 +40,16 @@ public class DataReplicaLocation { private DataResource dataResource; + @Id + @Column(name = "REPLICA_ID") + public String getReplicaId() { + return replicaId; + } + + public void setReplicaId(String replicaId) { + this.replicaId = replicaId; + } + @Column(name = "RESOURCE_ID") public String getResourceId() { return resourceId; http://git-wip-us.apache.org/repos/asf/airavata/blob/6242acac/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java index 2ec041e..6be55c3 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/data/catalog/utils/ThriftDataModelConversion.java @@ -30,8 +30,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.Timestamp; -import java.util.List; -import java.util.stream.Collectors; public class ThriftDataModelConversion { @@ -46,8 +44,6 @@ public class ThriftDataModelConversion { dataResourceModel.setResourceSize(dataResource.getResourceSize()); dataResourceModel.setCreationTime(dataResource.getCreationTime().getTime()); dataResourceModel.setLastModifiedTime(dataResource.getLastModifiedTime().getTime()); - dataResource.getDataReplicaLocations().stream().forEach(rl->dataResourceModel - .addToReplicaLocations(getDataReplicaLocationModel(rl))); return dataResourceModel; } return null; @@ -56,23 +52,25 @@ public class ThriftDataModelConversion { public static DataResource getDataResource(DataResourceModel dataResourceModel){ if(dataResourceModel != null){ DataResource dataResource = new DataResource(); - dataResource.setResourceId(dataResourceModel.getResourceId()); - dataResource.setResourceName(dataResourceModel.getResourceName()); - dataResource.setResourceDescription(dataResourceModel.getResourceDescription()); - dataResource.setResourceSize(dataResourceModel.getResourceSize()); - dataResource.setCreationTime(new Timestamp(dataResourceModel.getCreationTime())); - dataResource.setLastModifiedTime(new Timestamp(dataResourceModel.getLastModifiedTime())); - List<DataReplicaLocation> replicaLocationList = dataResourceModel.getReplicaLocations() - .stream().map(ThriftDataModelConversion::getDataReplicaLocation).collect(Collectors.toList()); - dataResource.setDataReplicaLocations(replicaLocationList); - return dataResource; + return getUpdatedDataResource(dataResourceModel, dataResource); } return null; } + public static DataResource getUpdatedDataResource(DataResourceModel dataResourceModel, DataResource dataResource){ + dataResource.setResourceId(dataResourceModel.getResourceId()); + dataResource.setResourceName(dataResourceModel.getResourceName()); + dataResource.setResourceDescription(dataResourceModel.getResourceDescription()); + dataResource.setResourceSize(dataResourceModel.getResourceSize()); + dataResource.setCreationTime(new Timestamp(dataResourceModel.getCreationTime())); + dataResource.setLastModifiedTime(new Timestamp(dataResourceModel.getLastModifiedTime())); + return dataResource; + } + public static DataReplicaLocationModel getDataReplicaLocationModel(DataReplicaLocation replicaLocation){ if (replicaLocation != null) { DataReplicaLocationModel replicaLocationModel = new DataReplicaLocationModel(); + replicaLocationModel.setReplicaId(replicaLocation.getReplicaId()); replicaLocationModel.setResourceId(replicaLocation.getResourceId()); replicaLocationModel.setReplicaName(replicaLocation.getReplicaName()); replicaLocationModel.setReplicaDescription(replicaLocation.getReplicaDescription()); @@ -92,14 +90,20 @@ public class ThriftDataModelConversion { public static DataReplicaLocation getDataReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel){ if(dataReplicaLocationModel != null){ DataReplicaLocation dataReplicaLocation = new DataReplicaLocation(); - dataReplicaLocation.setResourceId(dataReplicaLocationModel.getResourceId()); - dataReplicaLocation.setReplicaName(dataReplicaLocationModel.getReplicaName()); - dataReplicaLocation.setReplicaDescription(dataReplicaLocationModel.getReplicaDescription()); - dataReplicaLocation.setDataLocations(StringUtils.join(dataReplicaLocationModel.getDataLocations(), ',')); - dataReplicaLocation.setCreationTime(new Timestamp(dataReplicaLocationModel.getCreationTime())); - dataReplicaLocation.setLastModifiedTime(new Timestamp(dataReplicaLocationModel.getLastModifiedTime())); - return dataReplicaLocation; + return getUpdatedDataReplicaLocation(dataReplicaLocationModel, dataReplicaLocation); } return null; } + + public static DataReplicaLocation getUpdatedDataReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel, + DataReplicaLocation dataReplicaLocation){ + dataReplicaLocation.setReplicaId(dataReplicaLocationModel.getReplicaId()); + dataReplicaLocation.setResourceId(dataReplicaLocationModel.getResourceId()); + dataReplicaLocation.setReplicaName(dataReplicaLocationModel.getReplicaName()); + dataReplicaLocation.setReplicaDescription(dataReplicaLocationModel.getReplicaDescription()); + dataReplicaLocation.setDataLocations(StringUtils.join(dataReplicaLocationModel.getDataLocations(), ',')); + dataReplicaLocation.setCreationTime(new Timestamp(dataReplicaLocationModel.getCreationTime())); + dataReplicaLocation.setLastModifiedTime(new Timestamp(dataReplicaLocationModel.getLastModifiedTime())); + return dataReplicaLocation; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/6242acac/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql b/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql index 3091447..ef4a777 100644 --- a/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql +++ b/modules/registry/registry-core/src/main/resources/datacatalog-derby.sql @@ -26,22 +26,23 @@ CREATE TABLE DATA_RESOURCE RESOURCE_DESCRIPTION VARCHAR (1024), RESOURCE_SIZE INTEGER , CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - LAST_MODIFIED_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (RESOURCE_ID) ); CREATE TABLE DATA_REPLICA_LOCATION ( - RESOURCE_ID VARCHAR (255), + REPLICA_ID VARCHAR (255), + RESOURCE_ID VARCHAR (255) NOT NULL, REPLICA_NAME VARCHAR (255), REPLICA_DESCRIPTION VARCHAR (1024), DATA_LOCATIONS VARCHAR (4096), CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - LAST_MODIFIED_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (REPLICA_ID), FOREIGN KEY (RESOURCE_ID) REFERENCES DATA_RESOURCE(RESOURCE_ID) ON DELETE CASCADE ); - CREATE TABLE CONFIGURATION ( CONFIG_KEY VARCHAR(255), http://git-wip-us.apache.org/repos/asf/airavata/blob/6242acac/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java index 1eb1a25..089e03e 100644 --- a/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java +++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/data/catalog/DataCatalogTest.java @@ -23,6 +23,7 @@ package org.apache.airavata.data.catalog; import org.apache.airavata.data.catalog.util.Initialize; import org.apache.airavata.model.data.resource.DataReplicaLocationModel; import org.apache.airavata.model.data.resource.DataResourceModel; +import org.apache.airavata.registry.core.data.catalog.model.DataReplicaLocation; import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory; import org.apache.airavata.registry.cpi.DataCatalog; import org.apache.airavata.registry.cpi.DataCatalogException; @@ -39,6 +40,7 @@ public class DataCatalogTest { private static Initialize initialize; private static DataCatalog datacatalog; private static DataResourceModel dataResourceModel; + private static DataReplicaLocationModel replicaLocationModel; @BeforeClass public static void setUp() { @@ -49,14 +51,12 @@ public class DataCatalogTest { datacatalog = RegistryFactory.getDataCatalog(); dataResourceModel = new DataResourceModel(); dataResourceModel.setResourceName("test-file.txt"); - List<DataReplicaLocationModel> replicaLocationModelList = new ArrayList<>(); - DataReplicaLocationModel dataReplicaLocationModel = new DataReplicaLocationModel(); - dataReplicaLocationModel.setReplicaName("1-st-replica"); + + replicaLocationModel = new DataReplicaLocationModel(); + replicaLocationModel.setReplicaName("1-st-replica"); ArrayList<String> dataLocations = new ArrayList<>(); dataLocations.add("scp://g75.iu.xsede.org:/var/www/portal/experimentData/test-file.txt"); - dataReplicaLocationModel.setDataLocations(dataLocations); - replicaLocationModelList.add(dataReplicaLocationModel); - dataResourceModel.setReplicaLocations(replicaLocationModelList); + replicaLocationModel.setDataLocations(dataLocations); } catch (DataCatalogException e) { logger.error(e.getMessage(), e); } @@ -75,6 +75,7 @@ public class DataCatalogTest { org.junit.Assert.assertNotNull(resourceId); } catch (DataCatalogException e) { e.printStackTrace(); + Assert.fail(); } } @@ -91,6 +92,7 @@ public class DataCatalogTest { Assert.assertFalse(result); } catch (DataCatalogException e) { e.printStackTrace(); + Assert.fail(); } } @@ -101,9 +103,9 @@ public class DataCatalogTest { Assert.assertNotNull(resourceId); DataResourceModel persistedCopy = datacatalog.getResource(resourceId); Assert.assertNotNull(persistedCopy); - Assert.assertTrue(persistedCopy.getReplicaLocations().size()==1); } catch (DataCatalogException e) { e.printStackTrace(); + Assert.fail(); } } @@ -114,20 +116,87 @@ public class DataCatalogTest { boolean result = datacatalog.updateResource(dataResourceModel); Assert.assertFalse(result); datacatalog.publishResource(dataResourceModel); - DataReplicaLocationModel dataReplicaLocationModel = new DataReplicaLocationModel(); - dataReplicaLocationModel.setReplicaName("2-nd-replica"); - ArrayList<String> dataLocations = new ArrayList<>(); - dataLocations.add("scp://g175.iu.xsede.org:/var/www/portal/experimentData/test-file.txt"); - dataResourceModel.getReplicaLocations().add(dataReplicaLocationModel); - datacatalog.updateResource(dataResourceModel); - dataResourceModel = datacatalog.getResource(dataResourceModel.getResourceId()); - Assert.assertTrue(dataResourceModel.getReplicaLocations().size()==2); - dataResourceModel.getReplicaLocations().remove(1); + dataResourceModel.setResourceName("updated-name"); datacatalog.updateResource(dataResourceModel); dataResourceModel = datacatalog.getResource(dataResourceModel.getResourceId()); - Assert.assertTrue(dataResourceModel.getReplicaLocations().size()==1); + Assert.assertTrue(dataResourceModel.getResourceName().equals("updated-name")); + } catch (DataCatalogException e) { + e.printStackTrace(); + Assert.fail(); + } + } + + @Test + public void testPublishReplicaLocation(){ + try { + String resourceId = datacatalog.publishResource(dataResourceModel); + replicaLocationModel.setResourceId(resourceId); + String replicaId = datacatalog.publishReplicaLocation(replicaLocationModel); + org.junit.Assert.assertNotNull(replicaId); + } catch (DataCatalogException e) { + e.printStackTrace(); + Assert.fail(); + } + } + + @Test + public void testRemoveReplicaLocation(){ + try { + String resourceId = datacatalog.publishResource(dataResourceModel); + replicaLocationModel.setResourceId(resourceId); + String replicaId = datacatalog.publishReplicaLocation(replicaLocationModel); + boolean result = datacatalog.removeReplicaLocation(replicaId); + Assert.assertTrue(result); + result = datacatalog.removeReplicaLocation(replicaLocationModel.getReplicaId()); + Assert.assertFalse(result); + } catch (DataCatalogException e) { + e.printStackTrace(); + Assert.fail(); + } + } + + @Test + public void testGetReplicaLocation(){ + try { + String resourceId = datacatalog.publishResource(dataResourceModel); + replicaLocationModel.setResourceId(resourceId); + String replicaId = datacatalog.publishReplicaLocation(replicaLocationModel); + DataReplicaLocationModel persistedCopy = datacatalog.getReplicaLocation(replicaId); + Assert.assertNotNull(persistedCopy); + } catch (DataCatalogException e) { + e.printStackTrace(); + Assert.fail(); + } + } + + @Test + public void testUpdateReplicaLocation(){ + try { + String resourceId = datacatalog.publishResource(dataResourceModel); + replicaLocationModel.setResourceId(resourceId); + String replicaId = datacatalog.publishReplicaLocation(replicaLocationModel); + DataReplicaLocationModel persistedCopy = datacatalog.getReplicaLocation(replicaId); + persistedCopy.setReplicaDescription("updated-description"); + datacatalog.updateReplicaLocation(persistedCopy); + persistedCopy = datacatalog.getReplicaLocation(replicaId); + Assert.assertTrue(persistedCopy.getReplicaDescription().equals("updated-description")); + } catch (DataCatalogException e) { + e.printStackTrace(); + Assert.fail(); + } + } + + @Test + public void testGetAllReplicaLocations(){ + try { + String resourceId = datacatalog.publishResource(dataResourceModel); + replicaLocationModel.setResourceId(resourceId); + String replicaId = datacatalog.publishReplicaLocation(replicaLocationModel); + List<DataReplicaLocationModel> replicaLocationModelList = datacatalog.getAllReplicaLocations(resourceId); + Assert.assertTrue(replicaLocationModelList.get(0).getReplicaId().equals(replicaId)); } catch (DataCatalogException e) { e.printStackTrace(); + Assert.fail(); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/6242acac/modules/registry/registry-core/src/test/resources/datacatalog-derby.sql ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/test/resources/datacatalog-derby.sql b/modules/registry/registry-core/src/test/resources/datacatalog-derby.sql index 3091447..ef4a777 100644 --- a/modules/registry/registry-core/src/test/resources/datacatalog-derby.sql +++ b/modules/registry/registry-core/src/test/resources/datacatalog-derby.sql @@ -26,22 +26,23 @@ CREATE TABLE DATA_RESOURCE RESOURCE_DESCRIPTION VARCHAR (1024), RESOURCE_SIZE INTEGER , CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - LAST_MODIFIED_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (RESOURCE_ID) ); CREATE TABLE DATA_REPLICA_LOCATION ( - RESOURCE_ID VARCHAR (255), + REPLICA_ID VARCHAR (255), + RESOURCE_ID VARCHAR (255) NOT NULL, REPLICA_NAME VARCHAR (255), REPLICA_DESCRIPTION VARCHAR (1024), DATA_LOCATIONS VARCHAR (4096), CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - LAST_MODIFIED_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (REPLICA_ID), FOREIGN KEY (RESOURCE_ID) REFERENCES DATA_RESOURCE(RESOURCE_ID) ON DELETE CASCADE ); - CREATE TABLE CONFIGURATION ( CONFIG_KEY VARCHAR(255), http://git-wip-us.apache.org/repos/asf/airavata/blob/6242acac/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java index c2d3756..bc468d6 100644 --- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java +++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/DataCatalog.java @@ -21,6 +21,8 @@ package org.apache.airavata.registry.cpi; import org.apache.airavata.model.data.resource.*; +import java.util.List; + public interface DataCatalog { String publishResource(DataResourceModel resource) throws DataCatalogException; @@ -30,4 +32,14 @@ public interface DataCatalog { boolean updateResource(DataResourceModel resource) throws DataCatalogException; DataResourceModel getResource(String resourceId) throws DataCatalogException; + + String publishReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException; + + boolean removeReplicaLocation(String replicaId) throws DataCatalogException; + + boolean updateReplicaLocation(DataReplicaLocationModel dataReplicaLocationModel) throws DataCatalogException; + + DataReplicaLocationModel getReplicaLocation(String replicaId) throws DataCatalogException; + + List<DataReplicaLocationModel> getAllReplicaLocations(String resourceId) throws DataCatalogException; } http://git-wip-us.apache.org/repos/asf/airavata/blob/6242acac/thrift-interface-descriptions/airavata-api/data_resource_models.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/airavata-api/data_resource_models.thrift b/thrift-interface-descriptions/airavata-api/data_resource_models.thrift index 0ead838..96b6757 100644 --- a/thrift-interface-descriptions/airavata-api/data_resource_models.thrift +++ b/thrift-interface-descriptions/airavata-api/data_resource_models.thrift @@ -29,8 +29,7 @@ struct DataResourceModel { 3: optional string resourceDescription, 4: optional i32 resourceSize, 5: optional i64 creationTime, - 6: optional i64 lastModifiedTime, - 7: list<DataReplicaLocationModel> replicaLocations + 6: optional i64 lastModifiedTime } struct DataReplicaLocationModel {
