FR [3090578] - GridTable wrong 'is value changed' determination
https://sourceforge.net/tracker/?func=detail&atid=879332&aid=3090578&group_id=176962 and Fr [3052371] - Grid error when switching from a string field https://sourceforge.net/tracker/?func=detail&aid=3052371&group_id=176962&atid=879332
This commit is contained in:
parent
6feca8ff98
commit
f4631da9a8
|
@ -1188,11 +1188,7 @@ public class GridTable extends AbstractTableModel
|
||||||
|
|
||||||
// Has anything changed?
|
// Has anything changed?
|
||||||
Object oldValue = getValueAt(row, col);
|
Object oldValue = getValueAt(row, col);
|
||||||
if (!force && (
|
if (!force && !isValueChanged(oldValue, value) )
|
||||||
(oldValue == null && value == null)
|
|
||||||
|| (oldValue != null && oldValue.equals(value))
|
|
||||||
|| (oldValue != null && value != null && oldValue.toString().equals(value.toString()))
|
|
||||||
))
|
|
||||||
{
|
{
|
||||||
log.finest("r=" + row + " c=" + col + " - New=" + value + "==Old=" + oldValue + " - Ignored");
|
log.finest("r=" + row + " c=" + col + " - New=" + value + "==Old=" + oldValue + " - Ignored");
|
||||||
return;
|
return;
|
||||||
|
@ -2076,10 +2072,7 @@ public class GridTable extends AbstractTableModel
|
||||||
; // ignore
|
; // ignore
|
||||||
|
|
||||||
// *** Data changed ***
|
// *** Data changed ***
|
||||||
else if (m_inserting
|
else if (m_inserting || isValueChanged(oldValue, value) )
|
||||||
|| (oldValue == null && value != null)
|
|
||||||
|| (oldValue != null && value == null)
|
|
||||||
|| !oldValue.equals (value)) // changed
|
|
||||||
{
|
{
|
||||||
// Check existence
|
// Check existence
|
||||||
int poIndex = po.get_ColumnIndex(columnName);
|
int poIndex = po.get_ColumnIndex(columnName);
|
||||||
|
@ -3668,5 +3661,53 @@ public class GridTable extends AbstractTableModel
|
||||||
currentLevel = Env.getContextAsInt(m_ctx, m_WindowNo, tabNo, GridTab.CTX_TabLevel);
|
currentLevel = Env.getContextAsInt(m_ctx, m_WindowNo, tabNo, GridTab.CTX_TabLevel);
|
||||||
}
|
}
|
||||||
return tabNo;
|
return tabNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isNotNullAndIsEmpty (Object value) {
|
||||||
|
if (value != null
|
||||||
|
&& (value instanceof String)
|
||||||
|
&& value.toString().equals("")
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isValueChanged(Object oldValue, Object value)
|
||||||
|
{
|
||||||
|
if ( isNotNullAndIsEmpty(oldValue) ) {
|
||||||
|
oldValue = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isNotNullAndIsEmpty(value) ) {
|
||||||
|
value = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean bChanged = (oldValue == null && value != null)
|
||||||
|
|| (oldValue != null && value == null);
|
||||||
|
|
||||||
|
if (!bChanged && oldValue != null)
|
||||||
|
{
|
||||||
|
if (oldValue.getClass().equals(value.getClass()))
|
||||||
|
{
|
||||||
|
if (oldValue instanceof Comparable<?>)
|
||||||
|
{
|
||||||
|
bChanged = (((Comparable<Object>)oldValue).compareTo(value) != 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bChanged = !oldValue.equals(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(value != null)
|
||||||
|
{
|
||||||
|
bChanged = !(oldValue.toString().equals(value.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bChanged;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue