diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ResultsetColumnHeader.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ResultsetColumnHeader.java index f6b8be3ad..9409b5c06 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ResultsetColumnHeader.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ResultsetColumnHeader.java @@ -3,16 +3,23 @@ package org.mifosng.platform.api.data; import java.util.ArrayList; import java.util.List; +import org.mifosng.platform.exceptions.PlatformDataIntegrityException; + public class ResultsetColumnHeader { private String columnName; private String columnType; private Long columnLength; + private String columnDisplayTypeNew; + // TODO - remove columnDisplayType when Additional Fields functionality + // removed and rename columnDisplayTypeNew to columnDisplayType private String columnDisplayType; private boolean isColumnNullable; private boolean isColumnPrimaryKey; - private List columnValues = new ArrayList(); private List columnValuesNew = new ArrayList(); + // TODO - remove columnValues when Additional Fields functionality removed + // and rename columnValuesNew to columnValues + private List columnValues = new ArrayList(); public ResultsetColumnHeader() { @@ -82,4 +89,65 @@ public class ResultsetColumnHeader { this.isColumnPrimaryKey = isColumnPrimaryKey; } + public String getColumnDisplayTypeNew() { + return columnDisplayTypeNew; + } + + public void setColumnDisplayTypeNew() { + + if (this.getColumnValuesNew().size() > 0) { + + if (this.getColumnType().equalsIgnoreCase("int")) { + this.columnDisplayTypeNew = "CODELOOKUP"; + return; + } + if (this.getColumnType().equalsIgnoreCase("varchar")) { + this.columnDisplayTypeNew = "CODEVALUE"; + return; + } + + throw new PlatformDataIntegrityException( + "error.msg.invalid.lookup.type", "Invalid Lookup Type:" + + this.getColumnType() + " - Column Name: " + + this.getColumnName()); + } + + if (this.getColumnType().equalsIgnoreCase("varchar") || this.getColumnType().equalsIgnoreCase("char")) { + this.columnDisplayTypeNew = "STRING"; + return; + } + + if (this.getColumnType().equalsIgnoreCase("int") + || this.getColumnType().equalsIgnoreCase("bigint") + || this.getColumnType().equalsIgnoreCase("smallint") + || this.getColumnType().equalsIgnoreCase("mediumint") + || this.getColumnType().equalsIgnoreCase("tinyint")) { + this.columnDisplayTypeNew = "INTEGER"; + return; + } + + if (this.getColumnType().equalsIgnoreCase("date")) { + this.columnDisplayTypeNew = "DATE"; + return; + } + + if (this.getColumnType().equalsIgnoreCase("decimal")) { + this.columnDisplayTypeNew = "DECIMAL"; + return; + } + + if (this.getColumnType().equalsIgnoreCase("text") + || this.getColumnType().equalsIgnoreCase("mediumtext") + || this.getColumnType().equalsIgnoreCase("longtext") + || this.getColumnType().equalsIgnoreCase("tinytext")) { + this.columnDisplayTypeNew = "TEXT"; + return; + } + + throw new PlatformDataIntegrityException( + "error.msg.unsupported.column.type", "Unsupported Column Type:" + + this.getColumnType() + " - Column Name: " + + this.getColumnName()); + } + } 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 8e779df0e..d882f1440 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 @@ -465,8 +465,6 @@ public class ReadWriteNonCoreDataServiceImpl implements rsch.setColumnType(columnDefinitions.getString("DATA_TYPE")); - rsch.setColumnDisplayType(null); - /* look for codes */ if (rsch.getColumnType().equalsIgnoreCase("varchar")) addCodesValueIfNecessary(rsch, "_cv"); @@ -474,6 +472,8 @@ public class ReadWriteNonCoreDataServiceImpl implements if (rsch.getColumnType().equalsIgnoreCase("int")) addCodesValueIfNecessary(rsch, "_cd"); + rsch.setColumnDisplayTypeNew(); + columnHeaders.add(rsch); } ; @@ -539,15 +539,11 @@ public class ReadWriteNonCoreDataServiceImpl implements writer.append('\"' + columnHeaders.get(j).getColumnName() + '\"' + ": "); - currColType = columnHeaders.get(j).getColumnType(); + currColType = columnHeaders.get(j).getColumnDisplayTypeNew(); currVal = row.get(j); if (currVal != null) { if (currColType.equals("DECIMAL") - || currColType.equals("DOUBLE") - || currColType.equals("BIGINT") - || currColType.equals("SMALLINT") - || currColType.equals("TINYINT") - || currColType.equals("INT")) + || currColType.equals("INTEGER")) writer.append(currVal); else writer.append('\"' + currVal + '\"'); @@ -781,7 +777,7 @@ public class ReadWriteNonCoreDataServiceImpl implements // match code value or id List allowedValues = columnHeader .getColumnValuesNew(); - if (columnHeader.getColumnType().equalsIgnoreCase("varchar")) { + if (columnHeader.getColumnDisplayTypeNew().equals("CODEVALUE")) { for (ResultsetColumnValue allowedValue : allowedValues) { if (paramValue .equalsIgnoreCase(allowedValue.getValue())) @@ -799,7 +795,7 @@ public class ReadWriteNonCoreDataServiceImpl implements "Validation errors exist.", dataValidationErrors); } - if (columnHeader.getColumnType().equalsIgnoreCase("int")) { + if (columnHeader.getColumnDisplayTypeNew().equals("CODELOOKUP")) { for (ResultsetColumnValue allowedValue : allowedValues) { if (paramValue.equals(Integer.toString(allowedValue .getId()))) @@ -816,6 +812,7 @@ public class ReadWriteNonCoreDataServiceImpl implements "validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors); } + throw new PlatformDataIntegrityException( "error.msg.invalid.columnType.", "Code: " + columnHeader.getColumnName() @@ -824,22 +821,17 @@ public class ReadWriteNonCoreDataServiceImpl implements + " (neither varchar nor int)"); } - if (columnHeader.getColumnType().equalsIgnoreCase("date")) + if (columnHeader.getColumnDisplayTypeNew().equals("DATE")) paramValue = convertFrom(paramValue, columnHeader.getColumnName(), dateFormat, clientApplicationLocale).toString(); - if (columnHeader.getColumnType().equalsIgnoreCase("bigint") - || columnHeader.getColumnType() - .equalsIgnoreCase("smallint") - || columnHeader.getColumnType().equalsIgnoreCase("tinyint") - || columnHeader.getColumnType().equalsIgnoreCase("int")) + if (columnHeader.getColumnDisplayTypeNew().equals("INTEGER")) paramValue = convertToInteger(paramValue, columnHeader.getColumnName(), clientApplicationLocale) .toString(); - if (columnHeader.getColumnType().equalsIgnoreCase("decimal") - || columnHeader.getColumnType().equalsIgnoreCase("long")) + if (columnHeader.getColumnDisplayTypeNew().equals("DECIMAL")) paramValue = convertFrom(paramValue, columnHeader.getColumnName(), clientApplicationLocale) .toString();