blob: c243f75a7a951b795790b41c69667849c86ec4b4 [file] [log] [blame]
/*
* Copyright (c) 2005, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM - initial API and implementation
*
* $Id: GenerateProfileAction.java,v 1.3 2006/03/09 21:51:31 khussey Exp $
*/
package org.eclipse.uml2.examples.ui.uml.actions;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.uml2.common.util.UML2Util;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Enumeration;
import org.eclipse.uml2.uml.EnumerationLiteral;
import org.eclipse.uml2.uml.Extension;
import org.eclipse.uml2.uml.Generalization;
import org.eclipse.uml2.uml.Model;
import org.eclipse.uml2.uml.PrimitiveType;
import org.eclipse.uml2.uml.Profile;
import org.eclipse.uml2.uml.Property;
import org.eclipse.uml2.uml.Stereotype;
import org.eclipse.uml2.uml.Type;
import org.eclipse.uml2.uml.UMLPackage;
import org.eclipse.uml2.uml.VisibilityKind;
import org.eclipse.uml2.uml.editor.actions.UMLCommandAction;
import org.eclipse.uml2.uml.resource.UMLResource;
public abstract class GenerateProfileAction
extends UMLCommandAction {
protected PrimitiveType getImportedUMLPrimitiveType(
org.eclipse.uml2.uml.Package package_, String name) {
Model umlPrimitiveTypes = (Model) UML2Util.load(package_.eResource()
.getResourceSet(), URI
.createURI(UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI),
UMLPackage.Literals.MODEL);
PrimitiveType primitiveType = (PrimitiveType) umlPrimitiveTypes
.getOwnedType(name);
if (!package_.getImportedElements().contains(primitiveType)) {
package_.createElementImport(primitiveType,
VisibilityKind.PUBLIC_LITERAL);
}
return primitiveType;
}
protected org.eclipse.uml2.uml.Class getReferencedUMLMetaclass(
Profile profile, EClass eClass) {
Model umlMetamodel = (Model) UML2Util.load(profile.eResource()
.getResourceSet(), URI.createURI(UMLResource.UML_METAMODEL_URI),
UMLPackage.Literals.MODEL);
if (!profile.getReferencedMetamodels().contains(umlMetamodel)) {
profile.createMetamodelReference(umlMetamodel);
}
return (org.eclipse.uml2.uml.Class) umlMetamodel.getOwnedType(eClass
.getName());
}
protected Stereotype generateOwnedStereotype(Profile profile, String name,
boolean isAbstract) {
Stereotype stereotype = (Stereotype) profile.getPackagedElement(name,
false, UMLPackage.Literals.STEREOTYPE, true);
stereotype.setIsAbstract(isAbstract);
return stereotype;
}
protected Extension generateExtension(Stereotype stereotype,
org.eclipse.uml2.uml.Class metaclass, boolean required) {
Extension extension = metaclass.getExtension(metaclass.getName() + '_'
+ stereotype.getName());
if (extension == null) {
extension = stereotype.createExtension(metaclass, required);
}
extension.getStereotypeEnd().setLower(required
? 1
: 0);
return extension;
}
protected Generalization generateGeneralization(
Classifier specificClassifier, final Classifier generalClassifier) {
return specificClassifier.getGeneralization(generalClassifier, true);
}
protected Property generateOwnedAttribute(
org.eclipse.uml2.uml.Class class_, String name, Type type,
int lower, int upper) {
Property ownedAttribute = class_.getOwnedAttribute(name, type, false,
UMLPackage.Literals.PROPERTY, true);
ownedAttribute.setUpper(upper);
ownedAttribute.setLower(lower);
return ownedAttribute;
}
protected Enumeration generateOwnedEnumeration(
org.eclipse.uml2.uml.Package package_, final String name) {
return (Enumeration) package_.getPackagedElement(name, false,
UMLPackage.Literals.ENUMERATION, true);
}
protected EnumerationLiteral generateOwnedLiteral(Enumeration enumeration,
String name) {
return enumeration.getOwnedLiteral(name, false, true);
}
}