package com.vci.client.uif.engine.client.compare.comparer;
|
|
import java.util.List;
|
|
import com.vci.client.uif.engine.client.compare.attribute.Attdef;
|
import com.vci.client.uif.engine.client.compare.attribute.AttrType;
|
import com.vci.client.uif.engine.client.compare.attribute.Attributes;
|
import com.vci.client.uif.engine.client.compare.dialog.treenode.TreeNodeObject;
|
import com.vci.client.uif.engine.client.compare.enumeration.CompareState;
|
import com.vci.client.uif.engine.client.compare.tools.CompareTools;
|
|
/**
|
* 通用属性比较器
|
*
|
* 通过 Attributes 设置获得需要比较的属性
|
*
|
* @author VCI-STGK006
|
*
|
*/
|
public class DefaultTreeNodeObjectComparer implements TreeNodeObjectComparer {
|
|
@Override
|
public void compare(Attributes attributes, TreeNodeObject lTno, TreeNodeObject rTno) {
|
|
boolean result = true;
|
if(lTno.getCompareState() == CompareState.ISNULL
|
||rTno.getCompareState() == CompareState.ISNULL) {
|
return;
|
}
|
if(lTno.getMainObject() == null) {
|
lTno.setCompareState(CompareState.ISNULL);
|
result = false;
|
}
|
if(rTno.getMainObject() == null) {
|
rTno.setCompareState(CompareState.ISNULL);
|
result = false;
|
}
|
if(!result) {
|
return;
|
}
|
if(lTno.getRelationObject() == null) {
|
lTno.setCompareState(CompareState.ISNULL);
|
result = false;
|
}
|
if(rTno.getRelationObject() == null) {
|
rTno.setCompareState(CompareState.ISNULL);
|
result = false;
|
}
|
if(!result) {
|
return;
|
}
|
|
List<Attdef> attdefList = attributes.getDisplayAttributes();
|
for(Attdef ad : attdefList) {
|
String lValue = lTno.getAttribute(ad.getlNodeObjectAttr(),
|
ad.islIsRelationAttr() ? TreeNodeObject.RELATIONOBJECT : TreeNodeObject.MAINOBJECT);
|
String rValue = rTno.getAttribute(ad.getrNodeObjectAttr(),
|
ad.isrIsRelationAttr() ? TreeNodeObject.RELATIONOBJECT : TreeNodeObject.MAINOBJECT);
|
if(ad.getAttrType() == AttrType.Number) {
|
if(!CompareTools.validateNumber(lValue, rValue)) {
|
lTno.setCompareState(CompareState.DIFFERENT_INFO);
|
rTno.setCompareState(CompareState.DIFFERENT_INFO);
|
return;
|
}
|
} else {
|
if(!lValue.equals(rValue)) {
|
lTno.setCompareState(CompareState.DIFFERENT_INFO);
|
rTno.setCompareState(CompareState.DIFFERENT_INFO);
|
return;
|
}
|
}
|
}
|
}
|
}
|