context.put("targetOperationList", targetOperationList);
context.put("contentPurposeList", contentPurposeList);
Locale locale = (Locale) context.get("locale");
Delegator delegator = dctx.getDelegator();
LocalDispatcher dispatcher = dctx.getDispatcher();
Map<String, Object> result = FastMap.newInstance();
// This section guesses how contentId should be used (From or To) if
// only a contentIdFrom o contentIdTo is passed in
String contentIdFrom = (String) context.get("contentIdFrom");
String contentIdTo = (String) context.get("contentIdTo");
String contentId = (String) context.get("contentId");
int contentIdCount = 0;
if (UtilValidate.isNotEmpty(contentIdFrom))
contentIdCount++;
if (UtilValidate.isNotEmpty(contentIdTo))
contentIdCount++;
if (UtilValidate.isNotEmpty(contentId))
contentIdCount++;
if (contentIdCount < 2) {
Debug.logError("Not 2 out of ContentId/To/From.", "ContentServices");
return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ContentCreateContentAssocMethodError", locale));
}
if (UtilValidate.isNotEmpty(contentIdFrom)) {
if (UtilValidate.isEmpty(contentIdTo))
contentIdTo = contentId;
}
if (UtilValidate.isNotEmpty(contentIdTo)) {
if (UtilValidate.isEmpty(contentIdFrom))
contentIdFrom = contentId;
}
/*
String deactivateExisting = (String) context.get("deactivateExisting");
if (deactivateExisting != null && deactivateExisting.equalsIgnoreCase("true")) {
Map andMap = FastMap.newInstance();
andMap.put("contentIdTo", contentIdTo);
andMap.put("contentAssocTypeId", context.get("contentAssocTypeId"));
String mapKey = (String) context.get("mapKey");
if (UtilValidate.isNotEmpty(mapKey)) {
andMap.put("mapKey", mapKey);
}
if (Debug.infoOn()) Debug.logInfo("DEACTIVATING CONTENTASSOC andMap: " + andMap, null);
List assocList = delegator.findByAnd("ContentAssoc", andMap);
Iterator iter = assocList.iterator();
while (iter.hasNext()) {
GenericValue val = (GenericValue) iter.next();
if (Debug.infoOn()) Debug.logInfo("DEACTIVATING CONTENTASSOC val: " + val, null);
val.set("thruDate", UtilDateTime.nowTimestamp());
val.store();
}
}
*/
GenericValue contentAssoc = delegator.makeValue("ContentAssoc", FastMap.newInstance());
contentAssoc.put("contentId", contentIdFrom);
contentAssoc.put("contentIdTo", contentIdTo);
contentAssoc.put("contentAssocTypeId", context.get("contentAssocTypeId"));
contentAssoc.put("contentAssocPredicateId", context.get("contentAssocPredicateIdFrom"));
contentAssoc.put("dataSourceId", context.get("dataSourceId"));
Timestamp fromDate = (Timestamp) context.get("fromDate");
if (fromDate == null) {
contentAssoc.put("fromDate", UtilDateTime.nowTimestamp());
} else {
contentAssoc.put("fromDate", fromDate);
}
Timestamp thruDate = (Timestamp) context.get("thruDate");
if (thruDate == null) {
contentAssoc.put("thruDate", null);
} else {
contentAssoc.put("thruDate", thruDate);
}
contentAssoc.put("sequenceNum", context.get("sequenceNum"));
contentAssoc.put("mapKey", context.get("mapKey"));
String upperCoordinateStr = (String) context.get("upperCoordinate");
if (UtilValidate.isEmpty(upperCoordinateStr)) {
contentAssoc.put("upperCoordinate", null);
} else {
contentAssoc.put("upperCoordinate", upperCoordinateStr);
}
String leftCoordinateStr = (String) context.get("leftCoordinate");
if (UtilValidate.isEmpty(leftCoordinateStr)) {
contentAssoc.put("leftCoordinate", null);
} else {
contentAssoc.put("leftCoordinate", leftCoordinateStr);
}
GenericValue userLogin = (GenericValue) context.get("userLogin");
String userLoginId = (String) userLogin.get("userLoginId");
String createdByUserLogin = userLoginId;
String lastModifiedByUserLogin = userLoginId;
Timestamp createdDate = UtilDateTime.nowTimestamp();
Timestamp lastModifiedDate = UtilDateTime.nowTimestamp();
contentAssoc.put("createdByUserLogin", createdByUserLogin);
contentAssoc.put("lastModifiedByUserLogin", lastModifiedByUserLogin);
contentAssoc.put("createdDate", createdDate);
contentAssoc.put("lastModifiedDate", lastModifiedDate);
Map<String, Object> serviceInMap = FastMap.newInstance();
String permissionStatus = null;
serviceInMap.put("userLogin", context.get("userLogin"));
serviceInMap.put("targetOperationList", targetOperationList);
serviceInMap.put("contentPurposeList", contentPurposeList);
serviceInMap.put("entityOperation", context.get("entityOperation"));
serviceInMap.put("contentAssocPredicateId", context.get("contentAssocPredicateId"));
serviceInMap.put("contentIdTo", contentIdTo);
serviceInMap.put("contentIdFrom", contentIdFrom);
serviceInMap.put("statusId", context.get("statusId"));
serviceInMap.put("privilegeEnumId", context.get("privilegeEnumId"));
serviceInMap.put("roleTypeList", context.get("roleTypeList"));
serviceInMap.put("displayFailCond", context.get("displayFailCond"));
Map<String, Object> permResults = null;
permResults = dispatcher.runSync("checkAssocPermission", serviceInMap);
permissionStatus = (String) permResults.get("permissionStatus");
if (permissionStatus != null && permissionStatus.equals("granted")) {
contentAssoc.create();
} else {