IDEMPIERE-4871 Added Data Type for Script Column (#776)
* IDEMPIERE-4871 Added Data Type for Script Column * IDEMPIERE-4871 Script Column -Fix Script Evaluation Data Type
This commit is contained in:
parent
19cfc2d07d
commit
de2b29d129
|
@ -24,6 +24,7 @@ import java.sql.ResultSet;
|
|||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.sql.Types;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
@ -1030,7 +1031,8 @@ public class DataEngine
|
|||
if (pdc.hasAlias())
|
||||
{
|
||||
// DisplayColumn first
|
||||
String display = rs.getString(counter++);
|
||||
int displayIndex = counter++;
|
||||
String display = rs.getString(displayIndex);
|
||||
if (pdc.getColumnName().endsWith("_ID"))
|
||||
{
|
||||
int id = rs.getInt(counter++);
|
||||
|
@ -1042,26 +1044,52 @@ public class DataEngine
|
|||
}
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
|
||||
String id = rs.getString(counter++);
|
||||
if (display != null && !rs.wasNull())
|
||||
{
|
||||
/** START DEVCOFFEE: script column **/
|
||||
int displayType = pdc.getDisplayType();
|
||||
if (display.startsWith("@SCRIPT"))
|
||||
{
|
||||
displayType = DisplayType.Number;
|
||||
display = display.replace("@SCRIPT", "");
|
||||
display = parseVariable(display, pdc, pd);
|
||||
Interpreter bsh = new Interpreter ();
|
||||
try {
|
||||
display = bsh.eval(display).toString();
|
||||
} catch (EvalError e) {
|
||||
log.severe(e.getMessage());
|
||||
if(rs.getMetaData().getColumnName(displayIndex).contains("SCRIPTCOLUMN")) {
|
||||
Object value = rs.getObject(displayIndex);
|
||||
int columnType = rs.getMetaData().getColumnType(displayIndex);
|
||||
// String, Text
|
||||
if (columnType == Types.CHAR || columnType == Types.VARCHAR)
|
||||
{
|
||||
displayType = DisplayType.Text;
|
||||
}
|
||||
else if (columnType == Types.DATE || columnType == Types.TIME
|
||||
|| columnType == Types.TIMESTAMP)
|
||||
{
|
||||
displayType = DisplayType.DateTime;
|
||||
}
|
||||
// Number
|
||||
else if (columnType == Types.INTEGER || columnType == Types.SMALLINT
|
||||
|| columnType == Types.DECIMAL || columnType == Types.NUMERIC)
|
||||
{
|
||||
displayType = DisplayType.Number;
|
||||
}
|
||||
}
|
||||
|
||||
ValueNamePair pp = new ValueNamePair(id, display);
|
||||
pde = new PrintDataElement(pdc.getAD_PrintFormatItem_ID(), pdc.getColumnName(), pp, displayType, pdc.getFormatPattern());
|
||||
if (display.startsWith("@SCRIPT"))
|
||||
{
|
||||
displayType = DisplayType.Number;
|
||||
display = display.replace("@SCRIPT", "");
|
||||
value = parseVariable(display, pdc, pd);
|
||||
Interpreter bsh = new Interpreter ();
|
||||
try {
|
||||
value = bsh.eval(value.toString());
|
||||
|
||||
} catch (EvalError e) {
|
||||
log.severe(e.getMessage());
|
||||
}
|
||||
}
|
||||
pde = new PrintDataElement(pdc.getAD_PrintFormatItem_ID(), pdc.getColumnName(), (Serializable) value, displayType, pdc.getFormatPattern());
|
||||
} else {
|
||||
ValueNamePair pp = new ValueNamePair(id, display);
|
||||
pde = new PrintDataElement(pdc.getAD_PrintFormatItem_ID(), pdc.getColumnName(), pp, displayType, pdc.getFormatPattern());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue