diff options
Diffstat (limited to 'src/main/java/org/onap/dcae/inventory/daos')
3 files changed, 53 insertions, 5 deletions
diff --git a/src/main/java/org/onap/dcae/inventory/daos/DCAEServiceTypesDAO.java b/src/main/java/org/onap/dcae/inventory/daos/DCAEServiceTypesDAO.java index aa242a4..770661c 100644 --- a/src/main/java/org/onap/dcae/inventory/daos/DCAEServiceTypesDAO.java +++ b/src/main/java/org/onap/dcae/inventory/daos/DCAEServiceTypesDAO.java @@ -42,6 +42,14 @@ public interface DCAEServiceTypesDAO extends InventoryDAO { @SqlQuery("select exists (select * from information_schema.tables where table_name = \'dcae_service_types\')") @Override Boolean checkIfTableExists(); + + @SqlQuery("select exists (select * from information_schema.columns where table_name = \'dcae_service_types\' and column_name=\'application\')") + @Override + Boolean checkIfApplicationColumnExists(); + + @SqlQuery("select exists (select * from information_schema.columns where table_name = \'dcae_service_types\' and column_name=\'component\')") + @Override + Boolean checkIfComponentColumnExists(); /** * Note that service_ids and service_locations are nullable fields. This might not be the right decision but because @@ -50,20 +58,28 @@ public interface DCAEServiceTypesDAO extends InventoryDAO { @SqlUpdate("create table dcae_service_types (type_id varchar not null, type_version integer not null, " + "type_name varchar not null, owner varchar not null, blueprint_template text not null, " + "vnf_types varchar[] not null, service_ids varchar[], service_locations varchar[], " + - "asdc_service_id varchar, asdc_resource_id varchar, " + + "asdc_service_id varchar, asdc_resource_id varchar, application varchar, component varchar, " + "created timestamp not null, deactivated timestamp, constraint pk_type_created primary key (type_id))") @Override void createTable(); + + @SqlUpdate("alter table dcae_service_types add column application varchar") + @Override + void updateTableToAddApplicationCol(); + + @SqlUpdate("alter table dcae_service_types add column component varchar") + @Override + void updateTableToAddComponentCol(); // REVIEW: asdcServiceId and asdcResourceId is implicitly part of the unique key and thus shouldn't be updated. - @SqlUpdate("insert into dcae_service_types(type_id, type_version, type_name, owner, blueprint_template, vnf_types, " + + @SqlUpdate("insert into dcae_service_types(type_id, type_version, type_name, owner, application, component, blueprint_template, vnf_types, " + "service_ids, service_locations, asdc_service_id, asdc_resource_id, created, deactivated) " + - "values (:typeId, :typeVersion, :typeName, :owner, :blueprintTemplate, :vnfTypes, :serviceIds, " + + "values (:typeId, :typeVersion, :typeName, :owner, :application, :component, :blueprintTemplate, :vnfTypes, :serviceIds, " + ":serviceLocations, :asdcServiceId, :asdcResourceId, :created, null)") void insert(@BindBean DCAEServiceTypeObject serviceObject); @SqlUpdate("update dcae_service_types set " + - "owner = :owner, blueprint_template = :blueprintTemplate, vnf_types = :vnfTypes, " + + "owner = :owner, application = :application, component = :component, blueprint_template = :blueprintTemplate, vnf_types = :vnfTypes, " + "service_ids = :serviceIds, service_locations = :serviceLocations, created = :created, " + "deactivated = null where type_id = :typeId") void update(@BindBean DCAEServiceTypeObject serviceObject); diff --git a/src/main/java/org/onap/dcae/inventory/daos/InventoryDAO.java b/src/main/java/org/onap/dcae/inventory/daos/InventoryDAO.java index a369cb1..e678b60 100644 --- a/src/main/java/org/onap/dcae/inventory/daos/InventoryDAO.java +++ b/src/main/java/org/onap/dcae/inventory/daos/InventoryDAO.java @@ -25,5 +25,9 @@ package org.onap.dcae.inventory.daos; */ public interface InventoryDAO { Boolean checkIfTableExists(); + Boolean checkIfApplicationColumnExists(); + Boolean checkIfComponentColumnExists(); void createTable(); + void updateTableToAddApplicationCol(); + void updateTableToAddComponentCol(); } diff --git a/src/main/java/org/onap/dcae/inventory/daos/InventoryDAOManager.java b/src/main/java/org/onap/dcae/inventory/daos/InventoryDAOManager.java index b809d2d..5bdecfe 100644 --- a/src/main/java/org/onap/dcae/inventory/daos/InventoryDAOManager.java +++ b/src/main/java/org/onap/dcae/inventory/daos/InventoryDAOManager.java @@ -101,6 +101,8 @@ public final class InventoryDAOManager { final DBI jdbi_local = factory.build(this.environment, this.configuration.getDataSourceFactory(), "dcae-database"); jdbi_local.registerArgumentFactory(new StringListArgument()); + boolean recreateDcaeServiceTypesView = false; + for (Class<? extends InventoryDAO> daoClass : DAO_CLASSES) { final InventoryDAO dao = jdbi_local.onDemand(daoClass); @@ -110,6 +112,23 @@ public final class InventoryDAOManager { dao.createTable(); debugLogger.info(String.format("Sql table created: %s", daoClass.getSimpleName())); } + // dcae_service_types DB table has been enhanced to include 2 new columns which need to be added if they don't already exist + if ( daoClass.getSimpleName().equals("DCAEServiceTypesDAO") ) { + if (dao.checkIfApplicationColumnExists()) { + debugLogger.info(String.format("ApplicationColumn exists: %s", daoClass.getSimpleName())); + } else { + dao.updateTableToAddApplicationCol(); + debugLogger.info(String.format("ApplicationColumn created: %s", daoClass.getSimpleName()+".updateTableToAddApplicationCol()" )); + recreateDcaeServiceTypesView = true; + } + if (dao.checkIfComponentColumnExists()) { + debugLogger.info(String.format("ComponentColumn exists: %s", daoClass.getSimpleName())); + } else { + dao.updateTableToAddComponentCol();; + debugLogger.info(String.format("ComponentColumn created: %s", daoClass.getSimpleName()+".updateTableToAddComponentCol()")); + recreateDcaeServiceTypesView = true; + } + } } // CREATE VIEWS @@ -119,7 +138,16 @@ public final class InventoryDAOManager { String checkQuery = String.format("select exists (select * from information_schema.tables where table_name = '%s')", viewName); - if (jdbiHandle.createQuery(checkQuery).map(BooleanMapper.FIRST).first()) { + boolean viewExists = jdbiHandle.createQuery(checkQuery).map(BooleanMapper.FIRST).first(); + + // if the view exists and the 2 new dcae_service_types DB table columns: application and component need to be added + // we need to re-create the view by deleting it first + if (viewExists && recreateDcaeServiceTypesView) { + debugLogger.info(String.format("Need to delete existing Sql view: %s", viewName)); + jdbiHandle.execute(String.format("drop view %s ", viewName)); + } + + if (viewExists) { debugLogger.info(String.format("Sql view exists: %s", viewName)); } else { StringBuilder sb = new StringBuilder(String.format("create view %s as ", viewName)); |