blob: 5b19b1cd9b0e0e85f8e98e740758037c1d4903a9 [file] [log] [blame]
package org.eclipse.uml2.diagram.csd.parser.connector;
import java.util.Collections;
import java.util.List;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.uml2.diagram.common.parser.association.end.AssociationEndToString;
import org.eclipse.uml2.diagram.csd.part.CustomMessages;
import org.eclipse.uml2.diagram.parser.ApplyStrategy;
import org.eclipse.uml2.diagram.parser.BasicApplyStrategy;
import org.eclipse.uml2.diagram.parser.ExternalParserBase;
import org.eclipse.uml2.diagram.parser.ExternalParserException;
import org.eclipse.uml2.diagram.parser.SemanticParserAdapter;
import org.eclipse.uml2.diagram.parser.ExternalToString.WithReferences;
import org.eclipse.uml2.uml.Association;
import org.eclipse.uml2.uml.Connector;
import org.eclipse.uml2.uml.UMLPackage;
public class ConnectorParser extends SemanticParserAdapter {
private ConnectorParser(WithReferences viewAndEdit) {
super(EMPTY_PARSER_DELEGATE, EMPTY_APPLIER, viewAndEdit);
}
public static class ROLE_PARSER extends ConnectorParser {
public ROLE_PARSER(boolean sourceNotTarget) {
super(new AssociationEndToString.ROLE_VIEW(sourceNotTarget));
}
}
public static class MULTIPLICITY_PARSER extends ConnectorParser {
public MULTIPLICITY_PARSER(boolean sourceNotTarget) {
super(new AssociationEndToString.MULTIPLICITY_VIEW(sourceNotTarget));
}
}
public static class MODIFIERS_PARSER extends ConnectorParser {
public MODIFIERS_PARSER(boolean sourceNotTarget) {
super(new AssociationEndToString.MODIFIERS_VIEW(sourceNotTarget));
}
}
@Override
protected boolean isAffectingEvent(Object event) {
if (event instanceof Notification) {
Object feature = ((Notification) event).getFeature();
if ((feature instanceof EStructuralFeature) && UMLPackage.eINSTANCE.getConnector_Type().equals(feature)) {
return true;
}
}
return super.isAffectingEvent(event);
}
@Override
public List getSemanticElementsBeingParsed(EObject element) {
if (element instanceof Connector) {
Association a = ((Connector)element).getType();
if (a != null) {
return super.getSemanticElementsBeingParsed(a);
}
}
return Collections.EMPTY_LIST;
}
private static final ExternalParserBase EMPTY_PARSER_DELEGATE = new ExternalParserBase() {
@Override
public EClass getSubjectClass() {
return UMLPackage.eINSTANCE.getAssociation();
}
@Override
public void parse(EObject target, String text) throws ExternalParserException {
throw new ExternalParserException(CustomMessages.ConnectorParser_parsing_is_not_supported_exception);
}
};
private static final ApplyStrategy EMPTY_APPLIER = new BasicApplyStrategy();
}