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.ResultSetMetaData;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.sql.Types;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -1030,7 +1031,8 @@ public class DataEngine
|
||||||
if (pdc.hasAlias())
|
if (pdc.hasAlias())
|
||||||
{
|
{
|
||||||
// DisplayColumn first
|
// DisplayColumn first
|
||||||
String display = rs.getString(counter++);
|
int displayIndex = counter++;
|
||||||
|
String display = rs.getString(displayIndex);
|
||||||
if (pdc.getColumnName().endsWith("_ID"))
|
if (pdc.getColumnName().endsWith("_ID"))
|
||||||
{
|
{
|
||||||
int id = rs.getInt(counter++);
|
int id = rs.getInt(counter++);
|
||||||
|
@ -1042,29 +1044,55 @@ public class DataEngine
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String id = rs.getString(counter++);
|
String id = rs.getString(counter++);
|
||||||
if (display != null && !rs.wasNull())
|
if (display != null && !rs.wasNull())
|
||||||
{
|
{
|
||||||
/** START DEVCOFFEE: script column **/
|
/** START DEVCOFFEE: script column **/
|
||||||
int displayType = pdc.getDisplayType();
|
int displayType = pdc.getDisplayType();
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
if (display.startsWith("@SCRIPT"))
|
if (display.startsWith("@SCRIPT"))
|
||||||
{
|
{
|
||||||
displayType = DisplayType.Number;
|
displayType = DisplayType.Number;
|
||||||
display = display.replace("@SCRIPT", "");
|
display = display.replace("@SCRIPT", "");
|
||||||
display = parseVariable(display, pdc, pd);
|
value = parseVariable(display, pdc, pd);
|
||||||
Interpreter bsh = new Interpreter ();
|
Interpreter bsh = new Interpreter ();
|
||||||
try {
|
try {
|
||||||
display = bsh.eval(display).toString();
|
value = bsh.eval(value.toString());
|
||||||
|
|
||||||
} catch (EvalError e) {
|
} catch (EvalError e) {
|
||||||
log.severe(e.getMessage());
|
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);
|
ValueNamePair pp = new ValueNamePair(id, display);
|
||||||
pde = new PrintDataElement(pdc.getAD_PrintFormatItem_ID(), pdc.getColumnName(), pp, displayType, pdc.getFormatPattern());
|
pde = new PrintDataElement(pdc.getAD_PrintFormatItem_ID(), pdc.getColumnName(), pp, displayType, pdc.getFormatPattern());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Display Value only
|
// Display Value only
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue