use of org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipDisplayName in project records-management by Alfresco.
the class CustomRefsGet method getRelationshipData.
/**
* Creates relationship data for the ftl template
*
* @param relationships The relationships
* @return The relationship data
*/
private List<Map<String, String>> getRelationshipData(Set<Relationship> relationships) {
List<Map<String, String>> relationshipData = new ArrayList<Map<String, String>>();
for (Relationship relationship : relationships) {
String uniqueName = relationship.getUniqueName();
RelationshipDefinition relationshipDefinition = getRelationshipService().getRelationshipDefinition(uniqueName);
NodeRef source = relationship.getSource();
NodeRef target = relationship.getTarget();
if (relationshipDefinition != null && hasView(source) && hasView(target)) {
Map<String, String> data = new HashMap<String, String>();
RelationshipType type = relationshipDefinition.getType();
RelationshipDisplayName displayName = relationshipDefinition.getDisplayName();
if (RelationshipType.BIDIRECTIONAL.equals(type)) {
data.put(LABEL, displayName.getSourceText());
data.put(SOURCE_REF, source.toString());
data.put(TARGET_REF, target.toString());
} else if (RelationshipType.PARENTCHILD.equals(type)) {
data.put(SOURCE, displayName.getSourceText());
data.put(TARGET, displayName.getTargetText());
data.put(PARENT_REF, source.toString());
data.put(CHILD_REF, target.toString());
} else {
StringBuilder sb = new StringBuilder();
sb.append("Unsupported relationship type '").append(type).append("'.");
throw new WebScriptException(Status.STATUS_BAD_REQUEST, sb.toString());
}
data.put(REFERENCE_TYPE, type.toString().toLowerCase());
data.put(REF_ID, uniqueName);
relationshipData.add(data);
}
}
return relationshipData;
}
use of org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipDisplayName in project records-management by Alfresco.
the class RecordsManagementAdminServiceImpl method addCustomChildAssocDefinition.
/**
* @see org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService#addCustomChildAssocDefinition(java.lang.String, java.lang.String)
*
* note: currently RMC custom assocs only
*/
public QName addCustomChildAssocDefinition(String source, String target) {
mandatoryString("source", source);
mandatoryString("target", target);
RelationshipDisplayName displayName = new RelationshipDisplayName(source, target);
RelationshipDefinition relationshipDefinition = getRelationshipService().createRelationshipDefinition(displayName);
return QName.createQName(RM_CUSTOM_PREFIX, relationshipDefinition.getUniqueName(), getNamespaceService());
}
use of org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipDisplayName in project records-management by Alfresco.
the class CustomReferenceDefinitionPut method executeImpl.
/**
* @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest,
* org.springframework.extensions.webscripts.Status,
* org.springframework.extensions.webscripts.Cache)
*/
@Override
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache) {
String uniqueName = getRequestParameterValue(req, REF_ID);
JSONObject requestContent = getRequestContentAsJSONObject(req);
RelationshipDisplayName displayName = createDisplayName(requestContent);
getRelationshipService().updateRelationshipDefinition(uniqueName, displayName);
Map<String, Object> model = new HashMap<String, Object>();
String servicePath = req.getServicePath();
Map<String, Object> customReferenceData = createRelationshipDefinitionData(servicePath, uniqueName);
model.putAll(customReferenceData);
return model;
}
use of org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipDisplayName in project records-management by Alfresco.
the class RecordsManagementAdminServiceImpl method updateCustomChildAssocDefinition.
/**
* @see org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService#updateCustomChildAssocDefinition(org.alfresco.service.namespace.QName, java.lang.String, java.lang.String)
*
* note: currently RMC custom assocs only
*/
public QName updateCustomChildAssocDefinition(QName refQName, String newSource, String newTarget) {
mandatory("refQName", refQName);
mandatoryString("newSource", newSource);
mandatoryString("newTarget", newTarget);
RelationshipDisplayName displayName = new RelationshipDisplayName(newSource, newTarget);
String localName = refQName.getLocalName();
RelationshipDefinition relationshipDefinition = getRelationshipService().updateRelationshipDefinition(localName, displayName);
return QName.createQName(RM_CUSTOM_PREFIX, relationshipDefinition.getUniqueName(), getNamespaceService());
}
use of org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipDisplayName in project records-management by Alfresco.
the class RelationshipLabelsGet method getRelationshipsLabels.
/**
* Gets the list of available relationship labels
*
* @return The list of available relationship labels
*/
private List<RelationshipLabel> getRelationshipsLabels() {
List<RelationshipLabel> relationshipLabels = new ArrayList<RelationshipLabel>();
Set<RelationshipDefinition> relationshipDefinitions = getRelationshipService().getRelationshipDefinitions();
for (RelationshipDefinition relationshipDefinition : relationshipDefinitions) {
RelationshipType type = relationshipDefinition.getType();
String uniqueName = relationshipDefinition.getUniqueName();
RelationshipDisplayName displayName = relationshipDefinition.getDisplayName();
String sourceText = displayName.getSourceText();
String targetText = displayName.getTargetText();
if (RelationshipType.PARENTCHILD.equals(type)) {
relationshipLabels.add(new RelationshipLabel(sourceText, uniqueName + INVERT));
relationshipLabels.add(new RelationshipLabel(targetText, uniqueName));
} else if (RelationshipType.BIDIRECTIONAL.equals(type)) {
if (!sourceText.equals(targetText)) {
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "The source '" + sourceText + "' and target text '" + targetText + "' must be the same for a bidirectional relationship.");
}
relationshipLabels.add(new RelationshipLabel(sourceText, uniqueName));
} else {
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Unknown relationship type '" + type + "'.");
}
}
return sortRelationshipLabelsByName(relationshipLabels);
}
Aggregations