use of com.amalto.workbench.webservices.WSDigest in project tmdm-studio-se by Talend.
the class ConsistencyService method getCheckResultByStrategy.
private ConsistencyCheckResult getCheckResultByStrategy(int strategy, Map<IRepositoryViewObject, WSDigest> viewObjMap, Map<IRepositoryViewObject, Integer> viewObCmdOpjMap) {
List<IRepositoryViewObject> toDeployObjs = new LinkedList<IRepositoryViewObject>();
List<IRepositoryViewObject> toSkipObjs = new LinkedList<IRepositoryViewObject>();
for (IRepositoryViewObject viewObj : viewObjMap.keySet()) {
WSDigest dt = viewObjMap.get(viewObj);
if (dt == null) {
toDeployObjs.add(viewObj);
} else {
Item item = viewObj.getProperty().getItem();
String ld = getLocalDigestValue(item);
String rd = dt.getDigestValue();
String cd = getCurrentDigestValue(item);
CompareResultEnum result = getCompareResult(cd, ld, rd);
// update isDeleteOp
boolean isDeletedOp = false;
Integer cmdOp = viewObCmdOpjMap.get(viewObj);
if (cmdOp != null) {
isDeletedOp = cmdOp == ICommand.CMD_DELETE;
}
//
if (result == CompareResultEnum.SAME) {
if (strategy == CONFLICT_STRATEGY_DEFAULT || strategy == CONFLICT_STRATEGY_SKIP_DIFFERENCE) {
if (isDeletedOp) {
toDeployObjs.add(viewObj);
} else {
toSkipObjs.add(viewObj);
}
} else if (strategy == CONFLICT_STRATEGY_OVERWRITE) {
toDeployObjs.add(viewObj);
}
} else if (result == CompareResultEnum.CONFLICT || result == CompareResultEnum.MODIFIED_LOCALLY || result == CompareResultEnum.POTENTIAL_CONFLICT) {
if (strategy == CONFLICT_STRATEGY_SKIP_DIFFERENCE) {
toSkipObjs.add(viewObj);
} else if (strategy == CONFLICT_STRATEGY_DEFAULT || strategy == CONFLICT_STRATEGY_OVERWRITE) {
toDeployObjs.add(viewObj);
}
}
}
}
return new ConsistencyCheckResult(toDeployObjs, toSkipObjs);
}
use of com.amalto.workbench.webservices.WSDigest in project tmdm-studio-se by Talend.
the class ConsistencyService method updateDigestValue.
public void updateDigestValue(MDMServerDef serverDef, IRepositoryViewObject viewObj) throws XtentisException {
Item item = viewObj.getProperty().getItem();
if (item instanceof MDMServerObjectItem) {
TMDMService service = RepositoryWebServiceAdapter.getMDMService(serverDef);
updateLocalDigestValue(viewObj);
// key
String type = viewObj.getRepositoryObjectType().getKey();
String objectName = getObjectName(viewObj);
WSDigestKey key = new WSDigestKey(objectName, type);
// value
WSDigest value = new WSDigest(getLocalDigestValue(item), 0L, key);
WSLong timeValue = service.updateDigest(value);
//
if (timeValue != null) {
updateLocalTimestamp(item, timeValue.getValue());
}
if (!viewObj.getRepositoryObjectType().equals(IServerObjectRepositoryType.TYPE_MATCH_RULE_MAPINFO)) {
item = RepositoryResourceUtil.assertItem(item);
Property property = item.getProperty();
boolean eDeliver = property.eDeliver();
property.eSetDeliver(false);
RepositoryResourceUtil.saveItem(item);
property.eSetDeliver(eDeliver);
}
}
}
use of com.amalto.workbench.webservices.WSDigest in project tmdm-studio-se by Talend.
the class RepositoryViewObjectCheckedWidget method getConsistencyData.
private synchronized ConsistencyData getConsistencyData(MDMServerDef serverDef, IRepositoryViewObject viewObj) {
if (!isServerOk) {
return null;
}
ConsistencyData consistencyData = consistencyMap.get(viewObj);
if (consistencyData != null) {
return consistencyData;
}
try {
ConsistencyService consistencyService = ConsistencyService.getInstance();
consistencyData = new ConsistencyData();
ERepositoryObjectType viewType = viewObj.getRepositoryObjectType();
if (viewType == null) {
return null;
}
if (viewType == IServerObjectRepositoryType.TYPE_RESOURCE || viewType == IServerObjectRepositoryType.TYPE_JOB || viewType == IServerObjectRepositoryType.TYPE_WORKFLOW) {
consistencyData.setCompareResult(CompareResultEnum.NOT_SUPPORT);
} else {
List<IRepositoryViewObject> viewObjs = new ArrayList<IRepositoryViewObject>();
viewObjs.add(viewObj);
Map<IRepositoryViewObject, WSDigest> digestValueResult = consistencyService.queryServerDigestValue(serverDef, viewObjs);
WSDigest serverDigestTime = digestValueResult.get(viewObj);
consistencyData.setServerDigestTime(serverDigestTime);
consistencyService.updateCurrentDigestValue(viewObj);
Item item = viewObj.getProperty().getItem();
String ld = consistencyService.getLocalDigestValue(item);
String cd = consistencyService.getCurrentDigestValue(item);
long localTimestamp = consistencyService.getLocalTimestamp(item);
// key
String type = viewObj.getRepositoryObjectType().getKey();
String objectName = viewObj.getLabel();
WSDigestKey key = new WSDigestKey(objectName, type);
consistencyData.setLocalDigestTime(new WSDigest(ld, localTimestamp, key));
// init compare result;
CompareResultEnum result;
if (serverDigestTime == null || serverDigestTime.getDigestValue() == null) {
result = CompareResultEnum.NOT_EXIST_IN_SERVER;
} else {
String rd = serverDigestTime.getDigestValue();
result = consistencyService.getCompareResult(cd, ld, rd);
}
consistencyData.setCompareResult(result);
}
consistencyMap.put(viewObj, consistencyData);
} catch (WebServiceException e) {
log.error(e.getMessage(), e);
} catch (XtentisException e) {
log.error(e.getMessage(), e);
}
return consistencyData;
}
Aggregations