int column = event.getColumn();
if (column != TableModelEvent.ALL_COLUMNS && row == event.getLastRow()) {
// Get the value in the transformer's correspondence attribute.
TransformationRule transformer = (TransformationRule) getModel();
Pattern pattern = transformer.getPattern();
Replacement replacement = transformer.getReplacement();
String newValue = _getCellEditorValue((JPanel) _tableModel
.getValueAt(row, column));
String previousString = _cellEditor.getPreviousString();
if (previousString.equals(newValue)) {
return;
}
if (column == 1) {
String patternObjectName = newValue;
if (patternObjectName.length() > 0) {
NamedObj patternObject = pattern
.getEntity(patternObjectName);
if (patternObject == null) {
patternObject = pattern.getRelation(patternObjectName);
}
if (patternObject == null) {
String message = "Entity or relation with name \""
+ patternObjectName
+ "\" cannot be found in the pattern of the "
+ "transformation rule.";
_showTableError(message, row, column, previousString);
return;
}
}
String replacementObjectName = _getCellEditorValue((JPanel) _tableModel
.getValueAt(row, 2));
if (replacementObjectName.length() > 0) {
// Updated the pattern object.
NamedObj replacementObject = replacement
.getEntity(replacementObjectName);
if (replacementObject == null) {
replacementObject = replacement
.getRelation(replacementObjectName);
}
if (replacementObject == null) {
String message = "Entity or relation with name \""
+ replacementObjectName
+ "\" cannot be found in the replacement of the "
+ "transformation rule.";
_showTableError(message, row, column, previousString);
return;
}
PatternObjectAttribute attribute = GTTools
.getPatternObjectAttribute(replacementObject);
if (attribute == null) {
try {
attribute = new PatternObjectAttribute(
replacementObject, "patternObject");
} catch (KernelException e) {
throw new KernelRuntimeException(e, "Unable to "
+ "create patternObject attribute.");
}
}
if (!attribute.getExpression().equals(patternObjectName)) {
_setPatternObject(replacementObject, patternObjectName,
false);
}
}
} else if (column == 2) {
String replacementObjectName = newValue;
if (replacementObjectName.length() > 0) {
NamedObj replacementObject = replacement
.getEntity(replacementObjectName);
if (replacementObject == null) {
replacementObject = replacement
.getRelation(replacementObjectName);
}
if (replacementObject == null) {
String message = "Entity or relation with name \""
+ replacementObjectName
+ "\" cannot be found in the replacement of the "
+ "transformation rule.";
_showTableError(message, row, column, previousString);
return;
}
PatternObjectAttribute attribute = GTTools
.getPatternObjectAttribute(replacementObject);
if (attribute == null) {
String message = "Entity or relation with name \""
+ replacementObject
+ "\" in the replacement part of the "
+ "transformation rule does not have a "
+ "\"patternObject\" attribute.";
_showTableError(message, row, column, previousString);
return;
}
_cellEditor.setPreviousString(replacementObjectName);
String patternObjectName = _getCellEditorValue((JPanel) _tableModel
.getValueAt(row, 1));
if (previousString.length() > 0) {
NamedObj previousObject = replacement
.getEntity(previousString);
_setPatternObject(previousObject, "", false);
}
_setPatternObject(replacementObject, patternObjectName,
true);