package org.easysoa.registry.systems;
import java.util.Map;
import org.apache.log4j.Logger;
import org.easysoa.registry.types.BusinessService;
import org.easysoa.registry.types.Component;
import org.easysoa.registry.types.InformationService;
import org.nuxeo.ecm.core.api.CoreSession;
import org.nuxeo.ecm.core.api.DocumentModel;
import org.nuxeo.ecm.core.api.IdRef;
/**
* XXX Test hierarchy for the upcoming specifications-related additions to the model.
*
* @author mkalam-alami
*
*/
public class ActorsClassifier implements IntelligentSystemTreeClassifier {
private static Logger logger = Logger.getLogger(ActorsClassifier.class);
@Override
public void initialize(Map<String, String> params) {
// No parameters
}
@Override
public String classify(CoreSession documentManager, DocumentModel model) throws Exception {
if (!"BusinessService".equals(model.getType())
&& !"InformationService".equals(model.getType())
&& !"Component".equals(model.getType())) {
return null;
}
try {
String actorMetadata = null;
if (BusinessService.DOCTYPE.equals(model.getType())) {
actorMetadata = BusinessService.XPATH_PROVIDER_ACTOR;
}
else if (InformationService.DOCTYPE.equals(model.getType())) {
actorMetadata = InformationService.XPATH_PROVIDER_ACTOR;
}
else {
actorMetadata = Component.XPATH_PROVIDER_ACTOR;
}
String id = (String) model.getPropertyValue(actorMetadata);
if (id == null || id.length() == 0) {
return null; // if not yet meta, don't try to classify
}
return documentManager.getDocument(new IdRef(id)).getTitle();
}
catch (Exception e) {
logger.warn("Failed to classify by actor: " + e.getMessage());
return null;
}
}
}