package edu.stanford.bmir.protege.web.server.frame;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import edu.stanford.bmir.protege.web.client.dispatch.actions.UpdateClassFrameAction;
import edu.stanford.bmir.protege.web.client.ui.frame.LabelledFrame;
import edu.stanford.bmir.protege.web.shared.dispatch.Result;
import edu.stanford.bmir.protege.web.shared.dispatch.UpdateObjectResult;
import edu.stanford.bmir.protege.web.shared.event.ProjectEvent;
import edu.stanford.bmir.protege.web.shared.events.EventList;
import edu.stanford.bmir.protege.web.shared.frame.ClassFrame;
import edu.stanford.bmir.protege.web.shared.frame.PropertyValue;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.model.OWLObject;
import java.util.Set;
/**
* Author: Matthew Horridge<br>
* Stanford University<br>
* Bio-Medical Informatics Research Group<br>
* Date: 20/02/2013
*/
public class UpdateClassFrameActionHandler extends AbstractUpdateFrameHandler<UpdateClassFrameAction, ClassFrame, OWLClass> {
/**
* Gets the class of {@link edu.stanford.bmir.protege.web.shared.dispatch.Action} handled by this handler.
* @return The class of {@link edu.stanford.bmir.protege.web.shared.dispatch.Action}. Not {@code null}.
*/
@Override
public Class<UpdateClassFrameAction> getActionClass() {
return UpdateClassFrameAction.class;
}
@Override
protected Result createResponse(LabelledFrame<ClassFrame> to, EventList<ProjectEvent<?>> events) {
return new UpdateObjectResult(events);
}
@Override
protected FrameTranslator<ClassFrame, OWLClass> createTranslator() {
return new ClassFrameTranslator();
}
@Override
protected String getChangeDescription(LabelledFrame<ClassFrame> from, LabelledFrame<ClassFrame> to) {
return "Edited class";
}
private Multimap<OWLEntity, OWLObject> createMultimap(Set<PropertyValue> propertyValues) {
Multimap<OWLEntity, OWLObject> fromPropertyValues = HashMultimap.create();
for(PropertyValue propertyValue : propertyValues) {
OWLEntity property = propertyValue.getProperty();
OWLObject value = propertyValue.getValue();
fromPropertyValues.put(property, value);
}
return fromPropertyValues;
}
}