📄 po.java
字号:
* @param index index
* @return true if changed
*/
public final boolean is_ValueChanged (int index)
{
if (index < 0 || index >= get_ColumnCount())
{
log.log(Level.SEVERE, "Index invalid - " + index);
return false;
}
if (m_newValues[index] == null)
return false;
return !m_newValues[index].equals(m_oldValues[index]);
} // is_ValueChanged
/**
* Is Value Changed
* @param columnName column name
* @return true if changed
*/
public final boolean is_ValueChanged (String columnName)
{
int index = get_ColumnIndex(columnName);
if (index < 0)
{
log.log(Level.SEVERE, "Column not found - " + columnName);
return false;
}
return is_ValueChanged (index);
} // is_ValueChanged
/**
* Return new - old.
* - New Value if Old Valus is null
* - New Value - Old Value if Number
* - otherwise null
* @param index index
* @return new - old or null if not appropiate or not changed
*/
public final Object get_ValueDifference (int index)
{
if (index < 0 || index >= get_ColumnCount())
{
log.log(Level.SEVERE, "Index invalid - " + index);
return null;
}
Object nValue = m_newValues[index];
// No new Value or NULL
if (nValue == null || nValue == Null.NULL)
return null;
//
Object oValue = m_oldValues[index];
if (oValue == null || oValue == Null.NULL)
return nValue;
if (nValue instanceof BigDecimal)
{
BigDecimal obd = (BigDecimal)oValue;
return ((BigDecimal)nValue).subtract(obd);
}
else if (nValue instanceof Integer)
{
int result = ((Integer)nValue).intValue();
result -= ((Integer)oValue).intValue();
return new Integer(result);
}
//
log.warning("Invalid type - New=" + nValue);
return null;
} // get_ValueDifference
/**
* Return new - old.
* - New Value if Old Valus is null
* - New Value - Old Value if Number
* - otherwise null
* @param columnName column name
* @return new - old or null if not appropiate or not changed
*/
public final Object get_ValueDifference (String columnName)
{
int index = get_ColumnIndex(columnName);
if (index < 0)
{
log.log(Level.SEVERE, "Column not found - " + columnName);
return null;
}
return get_ValueDifference (index);
} // get_ValueDifference
/**************************************************************************
* Set Value
* @param ColumnName column name
* @param value value
* @return true if value set
*/
protected final boolean set_Value (String ColumnName, Object value)
{
int index = get_ColumnIndex(ColumnName);
if (index < 0)
{
log.log(Level.SEVERE, "Column not found - " + ColumnName);
return false;
}
return set_Value (index, value);
} // setValue
/**
* Set Encrypted Value
* @param ColumnName column name
* @param value value
* @return true if value set
*/
protected final boolean set_ValueE (String ColumnName, Object value)
{
return set_Value (ColumnName, value);
} // setValueE
/**
* Set Value if updateable and correct class.
* (and to NULL if not mandatory)
* @param index index
* @param value value
* @return true if value set
*/
protected final boolean set_Value (int index, Object value)
{
if (index < 0 || index >= get_ColumnCount())
{
log.log(Level.SEVERE, "Index invalid - " + index);
return false;
}
String ColumnName = p_info.getColumnName(index);
String colInfo = " - " + ColumnName;
//
if (p_info.isVirtualColumn(index))
{
log.log(Level.SEVERE, "Virtual Column" + colInfo);
return false;
}
//
if (!p_info.isColumnUpdateable(index))
{
colInfo += " - NewValue=" + value + " - OldValue=" + get_Value(index);
log.log(Level.SEVERE, "Column not updateable" + colInfo);
return false;
}
//
if (value == null)
{
if (p_info.isColumnMandatory(index))
{
log.log(Level.SEVERE, "Cannot set mandatory column to null " + colInfo);
// Trace.printStack();
return false;
}
m_newValues[index] = Null.NULL; // correct
log.finer(ColumnName + " = null");
}
else
{
// matching class or generic object
if (value.getClass().equals(p_info.getColumnClass(index)) || p_info.getColumnClass(index) == Object.class)
m_newValues[index] = value; // correct
// Integer can be set as BigDecimal
else if (value.getClass() == BigDecimal.class && p_info.getColumnClass(index) == Integer.class)
m_newValues[index] = new Integer (((BigDecimal)value).intValue());
// Set Boolean
else if (p_info.getColumnClass(index) == Boolean.class && ("Y".equals(value) || "N".equals(value)) )
m_newValues[index] = new Boolean("Y".equals(value));
else
{
log.log(Level.SEVERE, ColumnName
+ " - Class invalid: " + value.getClass().toString()
+ ", Should be " + p_info.getColumnClass(index).toString() + ": " + value);
return false;
}
// Validate (Min/Max)
String error = p_info.validate(index, value);
if (error != null)
{
log.log(Level.SEVERE, ColumnName + "=" + value + " - " + error);
return false;
}
// Length for String
if (p_info.getColumnClass(index) == String.class)
{
String stringValue = value.toString();
int length = p_info.getFieldLength(index);
if (stringValue.length() > length && length > 0)
{
log.warning(ColumnName + " - Value too long - truncated to length=" + length);
m_newValues[index] = stringValue.substring(0,length-1);
}
}
log.finest(ColumnName + " = " + m_newValues[index]);
}
set_Keys (ColumnName, m_newValues[index]);
return true;
} // setValue
/**
* Set Value w/o check (update, r/o, ..).
* Used when Column is R/O
* Required for key and parent values
* @param ColumnName column name
* @param value value
* @return true if value set
*/
protected final boolean set_ValueNoCheck (String ColumnName, Object value)
{
int index = get_ColumnIndex(ColumnName);
if (index < 0)
{
log.log(Level.SEVERE, "Column not found - " + ColumnName);
return false;
}
if (value == null)
m_newValues[index] = Null.NULL; // write direct
else
{
// matching class or generic object
if (value.getClass().equals(p_info.getColumnClass(index)) || p_info.getColumnClass(index) == Object.class)
m_newValues[index] = value; // correct
// Integer can be set as BigDecimal
else if (value.getClass() == BigDecimal.class && p_info.getColumnClass(index) == Integer.class)
m_newValues[index] = new Integer (((BigDecimal)value).intValue());
// Set Boolean
else if (p_info.getColumnClass(index) == Boolean.class && ("Y".equals(value) || "N".equals(value)) )
m_newValues[index] = new Boolean("Y".equals(value));
else
{
log.warning (ColumnName
+ " - Class invalid: " + value.getClass().toString()
+ ", Should be " + p_info.getColumnClass(index).toString() + ": " + value);
m_newValues[index] = value; // correct
}
// Validate (Min/Max)
String error = p_info.validate(index, value);
if (error != null)
log.warning(ColumnName + "=" + value + " - " + error);
// length for String
if (p_info.getColumnClass(index) == String.class)
{
String stringValue = value.toString();
int length = p_info.getFieldLength(index);
if (stringValue.length() > length && length > 0)
{
log.warning(ColumnName + " - Value too long - truncated to length=" + length);
m_newValues[index] = stringValue.substring(0,length-1);
}
}
}
log.finest(ColumnName + " = " + m_newValues[index]
+ " (" + (m_newValues[index]==null ? "-" : m_newValues[index].getClass().getName()) + ")");
set_Keys (ColumnName, m_newValues[index]);
return true;
} // set_ValueNoCheck
/**
* Set Encrypted Value w/o check (update, r/o, ..).
* Used when Column is R/O
* Required for key and parent values
* @param ColumnName column name
* @param value value
* @return true if value set
*/
protected final boolean set_ValueNoCheckE (String ColumnName, Object value)
{
return set_ValueNoCheckE (ColumnName, value);
} // set_ValueNoCheckE
/**
* Set Value of Column
* @param AD_Column_ID column
* @param value value
*/
public final void set_ValueOfColumn (int AD_Column_ID, Object value)
{
int index = p_info.getColumnIndex(AD_Column_ID);
if (index < 0)
log.log(Level.SEVERE, "Not found - AD_Column_ID=" + AD_Column_ID);
set_Value (index, value);
} // setValueOfColumn
/**
* Set Custom Column
* @param columnName column
* @param value value
*/
public final void set_CustomColumn (String columnName, Object value)
{
if (m_custom == null)
m_custom = new HashMap<String,String>();
String valueString = "NULL";
if (value == null)
;
else if (value instanceof Number)
valueString = value.toString();
else if (value instanceof Boolean)
valueString = ((Boolean)value).booleanValue() ? "'Y'" : "'N'";
else if (value instanceof Timestamp)
valueString = DB.TO_DATE((Timestamp)value, false);
else // if (value instanceof String)
valueString = DB.TO_STRING(value.toString());
// Save it
log.log(Level.INFO, columnName + "=" + valueString);
m_custom.put(columnName, valueString);
} // set_CustomColumn
/**
* Set (numeric) Key Value
* @param ColumnName column name
* @param value value
*/
private void set_Keys (String ColumnName, Object value)
{
// Update if KeyColumn
for (int i = 0; i < m_IDs.length; i++)
{
if (ColumnName.equals (m_KeyColumns[i]))
{
m_IDs[i] = value;
}
} // for all key columns
} // setKeys
/**************************************************************************
* Get Column Count
* @return column count
*/
protected int get_ColumnCount()
{
return p_info.getColumnCount();
} // getColumnCount
/**
* Get Column Name
* @param index index
* @return ColumnName
*/
protected String get_ColumnName (int index)
{
return p_info.getColumnName (index);
} // getColumnName
/**
* Get Column Label
* @param index index
* @return Column Label
*/
protected String get_ColumnLabel (int index)
{
return p_info.getColumnLabel (index);
} // getColumnLabel
/**
* Get Column Description
* @param index index
* @return column description
*/
protected String get_ColumnDescription (int index)
{
return p_info.getColumnDescription (index);
} // getColumnDescription
/**
* Is Column Mandatory
* @param index index
* @return true if column mandatory
*/
protected boolean isColumnMandatory (int index)
{
return p_info.isColumnMandatory(index);
} // isColumnNandatory
/**
* Is Column Updateable
* @param index index
* @return true if column updateable
*/
protected boolean isColumnUpdateable (int index)
{
return p_info.isColumnUpdateable(index);
} // isColumnUpdateable
/**
* Set Column Updateable
* @param index index
* @param updateable column updateable
*/
protected void set_ColumnUpdateable (int index, boolean updateable)
{
p_info.setColumnUpdateable(index, updateable);
} // setColumnUpdateable
/**
* Set all columns updateable
* @param updateable updateable
*/
protected void setUpdateable (boolean updateable)
{
p_info.setUpdateable (updateable);
} // setUpdateable
/**
* Get Column DisplayType
* @param index index
*/
protected int get_ColumnDisplayType (int index)
{
return p_info.getColumnDisplayType(index);
} // getColumnDisplayType
/**
* Get Lookup
* @param index index
* @return Lookup or null
*/
protected Lookup get_ColumnLookup(int index)
{
return p_info.getColumnLookup(index);
} // getColumnLookup
/**
* Get Column Index
* @param columnName column name
* @return index of column with ColumnName or -1 if not found
*/
public final int get_ColumnIndex (String columnName)
{
return p_info.getColumnIndex(columnName);
} // getColumnIndex
/**
* Get Display Value of value
* @param columnName columnName
* @param currentValue current value
* @return String value with "./." as null
*/
protected String get_DisplayValue(String columnName, boolean currentValue)
{
Object value = currentValue ? get_Value(columnName) : get_ValueOld(columnName);
if (value == null)
return "./.";
String retValue = value.toString();
int index = get_ColumnIndex(columnName);
if (index < 0)
return retValue;
int dt = get_ColumnDisplayType(index);
if (DisplayType.isText(dt) || DisplayType.YesNo == dt)
return retValue;
// Lookup
Lookup lookup = get_ColumnLookup(index);
if (lookup != null)
return lookup.getDisplay(value);
// Other
return retValue;
} // get_DisplayValue
/**
* Copy old values of From to new values of To.
* Does not copy Keys
* @param from old, existing & unchanged PO
* @param to new, not saved PO
* @param AD_Client_ID client
* @param AD_Org_ID org
*/
protected static void copyValues (PO from, PO to, int AD_Client_ID, int AD_Org_ID)
{
copyValues (from, to);
to.setAD_Client_ID(AD_Client_ID);
to.setAD_Org_ID(AD_Org_ID);
} // copyValues
/**
* Copy old values of From to new values of To.
* Does not copy Keys and AD_Client_ID/AD_Org_ID
* @param from old, existing & unchanged PO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -