You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2012/09/18 00:29:29 UTC
svn commit: r1386884 -
/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
Author: doebele
Date: Mon Sep 17 22:29:29 2012
New Revision: 1386884
URL: http://svn.apache.org/viewvc?rev=1386884&view=rev
Log:
EMPIREDB-157
JSF2 calculate text input maxlength from data type
Modified:
empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java?rev=1386884&r1=1386883&r2=1386884&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java Mon Sep 17 22:29:29 2012
@@ -38,6 +38,7 @@ import org.apache.empire.commons.Options
import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.Column;
import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBColumn;
import org.apache.empire.exceptions.InternalException;
import org.apache.empire.exceptions.UnexpectedReturnValueException;
import org.slf4j.Logger;
@@ -90,20 +91,7 @@ public class TextInputControl extends In
// language
input.setLang(ii.getLocale().getLanguage());
// maxlength
- int maxLength = 0;
- DataType type = ii.getColumn().getDataType();
- switch(type)
- {
- case CHAR:
- case TEXT:
- maxLength = ((int) Math.round(ii.getColumn().getSize()));
- break;
- case DECIMAL:
- maxLength = ((int) Math.round(ii.getColumn().getSize()))+1;
- break;
- default:
- maxLength = 0;
- }
+ int maxLength = getMaxInputLength(ii.getColumn());
if (maxLength>0)
input.setMaxlength(maxLength);
// add
@@ -355,6 +343,7 @@ public class TextInputControl extends In
}
}
}
+ */
// ------- Input Helpers -------
@@ -362,18 +351,34 @@ public class TextInputControl extends In
{
// cast to DBTableColumn
DataType type = col.getDataType();
+ if (type==DataType.CHAR ||
+ type==DataType.TEXT)
+ return (int)Math.round(col.getSize());
if (type==DataType.AUTOINC ||
type==DataType.INTEGER)
return 10;
- if (type==DataType.DOUBLE)
+ if (type==DataType.FLOAT)
return 18;
if (type==DataType.DECIMAL)
- {
+ { // check precision and scale
double size = col.getSize();
- int len = (int)size;
- size = (size - len)*10; // Ganzahlanteil
- if (((int)size)>0)
- len += ((int)size)+1; // Dezimaltrenner plus Nachkommastellen
+ int prec = (int)Math.round(size);
+ if (prec == 0)
+ return 0;
+ int len = prec;
+ // scale
+ int scale =((int)(size*10)-(prec*10));
+ if (scale>0)
+ len++; // Dezimaltrenner
+ // thousand separator ?
+ Object groupSep = col.getAttribute(InputControl.NUMBER_GROUPSEP_ATTRIBUTE);
+ if (groupSep!=null && ObjectUtils.getBoolean(groupSep))
+ len += (prec/3);
+ // sign?
+ Object minVal = col.getAttribute(DBColumn.DBCOLATTR_MINVALUE);
+ if (minVal==null || ObjectUtils.getInteger(minVal)<0)
+ len++; // Vorzeichen
+ // fertig
return len;
}
if (type==DataType.BOOL)
@@ -384,10 +389,10 @@ public class TextInputControl extends In
return 16;
if (type==DataType.CLOB)
return 0; // unlimited (use 0x7FFFFFFF instead?)
- // Default
- return (int)col.getSize();
+ // undefined!
+ log.info("No max-length available for data type {}.", type);
+ return 0;
}
- */
protected DataType getValueType(Object value, DataType desiredType)
{