From a13d725ec42c21a30746963b611c529eefe76057 Mon Sep 17 00:00:00 2001 From: John Woodlock Date: Sat, 1 Sep 2012 13:57:15 +1000 Subject: [PATCH] move additional fields functionality to look at m_code/m_code_value --- .../0001a-mifos-platform-base-ddl-schema.sql | 28 +++------------ .../patch-0006-populate-code-values.sql | 35 +++++++++++++++++++ .../platform/noncore/GenericDataService.java | 5 --- .../noncore/GenericDataServiceImpl.java | 5 ++- .../ReadWriteNonCoreDataServiceImpl.java | 16 ++++----- 5 files changed, 50 insertions(+), 39 deletions(-) create mode 100644 mifosng-db/patches/patch-0006-populate-code-values.sql diff --git a/mifosng-db/0001a-mifos-platform-base-ddl-schema.sql b/mifosng-db/0001a-mifos-platform-base-ddl-schema.sql index 59d0cf209..af8a02640 100644 --- a/mifosng-db/0001a-mifos-platform-base-ddl-schema.sql +++ b/mifosng-db/0001a-mifos-platform-base-ddl-schema.sql @@ -49,8 +49,6 @@ DROP TABLE IF EXISTS `r_enum_value`; -- additional data and report tables DROP TABLE IF EXISTS `stretchydata_dataset_fields`; DROP TABLE IF EXISTS `stretchydata_dataset`; -DROP TABLE IF EXISTS `stretchydata_allowed_value`; -DROP TABLE IF EXISTS `stretchydata_allowed_list`; DROP TABLE IF EXISTS `stretchydata_datasettype`; DROP TABLE IF EXISTS `stretchy_parameter`; DROP TABLE IF EXISTS `stretchy_report_parameter`; @@ -620,22 +618,6 @@ CREATE TABLE `stretchy_parameter` ( UNIQUE KEY `name_UNIQUE` (`parameter_name`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; -CREATE TABLE `stretchydata_allowed_list` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; - -CREATE TABLE `stretchydata_allowed_value` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) NOT NULL, - `allowed_list_id` int(11) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `stretchydata_allowed_value_fk1` (`allowed_list_id`,`name`), - CONSTRAINT `stretchydata_allowed_value_fk1` FOREIGN KEY (`allowed_list_id`) REFERENCES `stretchydata_allowed_list` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; - CREATE TABLE `stretchydata_dataset` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, @@ -652,13 +634,13 @@ CREATE TABLE `stretchydata_dataset_fields` ( `data_length` int(11) DEFAULT NULL, `display_type` varchar(45) DEFAULT NULL, `dataset_id` int(11) NOT NULL, - `allowed_list_id` int(11) DEFAULT NULL, + `code_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `stretchydata_dataset_fields_fk1` (`dataset_id`,`name`), - KEY `stretchydata_dataset_fields_fk2` (`allowed_list_id`), - CONSTRAINT `stretchydata_dataset_fields_fk1` FOREIGN KEY (`dataset_id`) REFERENCES `stretchydata_dataset` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, - CONSTRAINT `stretchydata_dataset_fields_fk2` FOREIGN KEY (`allowed_list_id`) REFERENCES `stretchydata_allowed_list` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + KEY `stretchydata_dataset_fields_fk2` (`code_id`), + CONSTRAINT `stretchydata_dataset_fields_fk2` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `stretchydata_dataset_fields_fk1` FOREIGN KEY (`dataset_id`) REFERENCES `stretchydata_dataset` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `stretchy_report` ( `report_id` int(11) NOT NULL AUTO_INCREMENT, diff --git a/mifosng-db/patches/patch-0006-populate-code-values.sql b/mifosng-db/patches/patch-0006-populate-code-values.sql new file mode 100644 index 000000000..473c4f538 --- /dev/null +++ b/mifosng-db/patches/patch-0006-populate-code-values.sql @@ -0,0 +1,35 @@ + +insert into m_code (code_name) +select name from stretchydata_allowed_list; + +insert into m_code_value (code_id, code_value, order_position) +select c.id, sv.name, sv.id +from stretchydata_allowed_value sv +join stretchydata_allowed_list sl on sv.allowed_list_id = sl.id +join m_code c on c.code_name = sl.name; + + +SET foreign_key_checks = 0; + +ALTER TABLE `stretchydata_dataset_fields` DROP FOREIGN KEY `stretchydata_dataset_fields_fk2` ; + +ALTER TABLE `stretchydata_dataset_fields` +CHANGE COLUMN `allowed_list_id` `code_id` INT(11) NULL DEFAULT NULL , + ADD CONSTRAINT `stretchydata_dataset_fields_fk2` + FOREIGN KEY (`code_id` ) + REFERENCES `m_code` (`id` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + +SET foreign_key_checks = 1; + + +update stretchydata_dataset_fields f +join stretchydata_allowed_list l on l.id = f.code_id +join m_code c on c.code_name = l.name +set code_id = c.id +where f.code_id is not null; + + +DROP TABLE `stretchydata_allowed_value`; +DROP TABLE `stretchydata_allowed_list`; \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/GenericDataService.java b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/GenericDataService.java index b8b208ea0..ccd1fdf7f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/GenericDataService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/GenericDataService.java @@ -1,8 +1,5 @@ package org.mifosng.platform.noncore; -import java.sql.Connection; -import java.sql.Statement; - import javax.sql.rowset.CachedRowSet; import org.mifosng.platform.api.data.GenericResultsetData; @@ -19,6 +16,4 @@ public interface GenericDataService { String wrapSQL(String sql); - void dbClose(Statement db_statement, Connection db_connection); - } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/GenericDataServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/GenericDataServiceImpl.java index 023f3dd69..8e75949bd 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/GenericDataServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/GenericDataServiceImpl.java @@ -65,7 +65,7 @@ public class GenericDataServiceImpl implements GenericDataService { logger.info("Elapsed Time: " + elapsed + " SQL: " + sql); return crs; } - + @Override public void updateSQL(String sql, String sqlErrorMsg) { @@ -157,8 +157,7 @@ public class GenericDataServiceImpl implements GenericDataService { return "select x.* from (" + sql + ") x"; } - @Override - public void dbClose(Statement db_statement, Connection db_connection) { + private void dbClose(Statement db_statement, Connection db_connection) { logger.debug("dbClose"); try { if (db_statement != null) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java index db1afeacd..ea7d5937f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java @@ -144,7 +144,7 @@ public class ReadWriteNonCoreDataServiceImpl implements } private CachedRowSet getAdditionalFieldsMetaData(String type, String set) { - String sql = "select f.`name`, f.data_type, f.data_length, f.display_type, f.allowed_list_id " + String sql = "select f.`name`, f.data_type, f.data_length, f.display_type, f.code_id " + " from stretchydata_datasettype t " + " join stretchydata_dataset d on d.datasettype_id = t.id " + " join stretchydata_dataset_fields f on f.dataset_id = d.id " @@ -174,7 +174,7 @@ public class ReadWriteNonCoreDataServiceImpl implements try { - Integer allowedListId; + Integer codeId; while (columnDefinitions.next()) { ResultsetColumnHeader rsch = new ResultsetColumnHeader(); rsch.setColumnName(columnDefinitions.getString("name")); @@ -186,16 +186,16 @@ public class ReadWriteNonCoreDataServiceImpl implements rsch.setColumnDisplayType(columnDefinitions .getString("display_type")); - allowedListId = columnDefinitions.getInt("allowed_list_id"); + codeId = columnDefinitions.getInt("code_id"); - if (allowedListId > 0) { - - String sql = "select v.`name` from stretchydata_allowed_value v where allowed_list_id = " - + allowedListId + " order by id"; + if (codeId > 0) { + String sql = "select code_value from m_code_value where code_id = " + + codeId + " order by order_position, id"; CachedRowSet rsValues = genericDataService .getCachedResultSet(sql, "SQL: " + sql); while (rsValues.next()) { - rsch.getColumnValues().add(rsValues.getString("name")); + rsch.getColumnValues().add( + rsValues.getString("code_value")); } } columnHeaders.add(rsch);