blob: 0079897b6991e26adfa1df675f3230e127e0c536 [file] [log] [blame]
/*
* Copyright (c) 2006, 2007 Borland Software Corporation.
* 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:
* Richard Gronback (Borland) - initial API and implementation
*/
package org.eclipse.gmf.examples.mindmap.rcp.view.factories;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.gmf.examples.mindmap.MindmapPackage;
import org.eclipse.gmf.examples.mindmap.rcp.expressions.MindmapAbstractExpression;
import org.eclipse.gmf.examples.mindmap.rcp.expressions.MindmapOCLFactory;
import org.eclipse.gmf.examples.mindmap.rcp.part.MindmapDiagramEditorPlugin;
/**
* @generated
*/
public class DomainElementInitializer {
/**
* @generated
*/
public static interface IElementInitializer {
/**
* @generated
*/
public void initializeElement(EObject instance);
}
/**
* @generated
*/
private static IElementInitializer NULL_INITIALIZER = new IElementInitializer() {
public void initializeElement(EObject instance) {
}
};
/**
* @generated
*/
public static IElementInitializer Topic_2001 = NULL_INITIALIZER;
/**
* @generated
*/
public static IElementInitializer Resource_2002 = NULL_INITIALIZER;
/**
* @generated
*/
public static IElementInitializer Thread_3001 = NULL_INITIALIZER;
/**
* @generated
*/
public static IElementInitializer ThreadItem_3002 = NULL_INITIALIZER;
/**
* @generated
*/
public static final IElementInitializer Relationship_4002 = new ObjectInitializer(
MindmapPackage.eINSTANCE.getRelationship()) {
protected void init() {
add(createExpressionFeatureInitializer(
MindmapPackage.eINSTANCE.getRelationship_Type(),
MindmapOCLFactory
.getExpression(
"RelationshipType::EXTENDS", MindmapPackage.eINSTANCE.getRelationship())));//$NON-NLS-1$
add(createExpressionFeatureInitializer(MindmapPackage.eINSTANCE
.getRelationship_Label(), MindmapOCLFactory.getExpression(
"\'extends\'", MindmapPackage.eINSTANCE.getRelationship())));//$NON-NLS-1$
}
}; // Relationship_4002 ObjectInitializer
/**
* @generated
*/
public static final IElementInitializer Relationship_4003 = new ObjectInitializer(
MindmapPackage.eINSTANCE.getRelationship()) {
protected void init() {
add(createExpressionFeatureInitializer(
MindmapPackage.eINSTANCE.getRelationship_Type(),
MindmapOCLFactory
.getExpression(
"RelationshipType::INCLUDES", MindmapPackage.eINSTANCE.getRelationship())));//$NON-NLS-1$
add(createExpressionFeatureInitializer(MindmapPackage.eINSTANCE
.getRelationship_Label(), MindmapOCLFactory.getExpression(
"\'includes\'", MindmapPackage.eINSTANCE.getRelationship())));//$NON-NLS-1$
}
}; // Relationship_4003 ObjectInitializer
/**
* @generated
*/
public static final IElementInitializer Relationship_4004 = new ObjectInitializer(
MindmapPackage.eINSTANCE.getRelationship()) {
protected void init() {
add(createExpressionFeatureInitializer(
MindmapPackage.eINSTANCE.getRelationship_Type(),
MindmapOCLFactory
.getExpression(
"RelationshipType::DEPENDENCY", MindmapPackage.eINSTANCE.getRelationship())));//$NON-NLS-1$
add(createExpressionFeatureInitializer(MindmapPackage.eINSTANCE
.getRelationship_Label(), MindmapOCLFactory.getExpression(
"\'depends\'", MindmapPackage.eINSTANCE.getRelationship())));//$NON-NLS-1$
}
}; // Relationship_4004 ObjectInitializer
/**
* @generated
*/
public static abstract class ObjectInitializer implements
IElementInitializer {
/**
* @generated
*/
final EClass element;
/**
* @generated
*/
private List featureInitializers = new ArrayList();
/**
* @generated
*/
ObjectInitializer(EClass element) {
this.element = element;
init();
}
/**
* @generated
*/
protected abstract void init();
/**
* @generated
*/
protected final FeatureInitializer add(FeatureInitializer initializer) {
featureInitializers.add(initializer);
return initializer;
}
/**
* @generated
*/
public void initializeElement(EObject instance) {
for (Iterator it = featureInitializers.iterator(); it.hasNext();) {
FeatureInitializer nextExpr = (FeatureInitializer) it.next();
try {
nextExpr.init(instance);
} catch (RuntimeException e) {
MindmapDiagramEditorPlugin.getInstance().logError(
"Feature initialization failed", e); //$NON-NLS-1$
}
}
}
} // end of ObjectInitializer
/**
* @generated
*/
interface FeatureInitializer {
/**
* @generated
*/
public void init(EObject contextInstance);
}
/**
* @generated
*/
static FeatureInitializer createNewElementFeatureInitializer(
EStructuralFeature initFeature,
ObjectInitializer[] newObjectInitializers) {
return new NewElementFeatureInitializer(initFeature,
newObjectInitializers);
}
/**
* @generated
*/
private static class NewElementFeatureInitializer implements
FeatureInitializer {
/**
* @generated
*/
private final EStructuralFeature myFeature;
/**
* @generated
*/
private final ObjectInitializer[] myInitializers;
/**
* @generated
*/
public NewElementFeatureInitializer(EStructuralFeature initFeature,
ObjectInitializer[] newObjectInitializers) {
myFeature = initFeature;
myInitializers = newObjectInitializers;
}
/**
* @generated
*/
public void init(EObject contextInstance) {
for (int i = 0; i < myInitializers.length; i++) {
EObject newInstance = myInitializers[i].element.getEPackage()
.getEFactoryInstance()
.create(myInitializers[i].element);
if (myFeature.isMany()) {
((Collection) contextInstance.eGet(myFeature))
.add(newInstance);
} else {
contextInstance.eSet(myFeature, newInstance);
}
myInitializers[i].initializeElement(newInstance);
}
}
}
/**
* @generated
*/
static FeatureInitializer createExpressionFeatureInitializer(
EStructuralFeature initFeature,
MindmapAbstractExpression valueExpression) {
return new ExpressionFeatureInitializer(initFeature, valueExpression);
}
/**
* @generated
*/
private static class ExpressionFeatureInitializer implements
FeatureInitializer {
/**
* @generated
*/
private final EStructuralFeature myFeature;
/**
* @generated
*/
private final MindmapAbstractExpression myExpression;
/**
* @generated
*/
public ExpressionFeatureInitializer(EStructuralFeature initFeature,
MindmapAbstractExpression valueExpression) {
myFeature = initFeature;
myExpression = valueExpression;
}
/**
* @generated
*/
public void init(EObject contextInstance) {
myExpression.assignTo(myFeature, contextInstance);
}
}
/**
* @generated
*/
public static class LinkConstraints {
/**
* @generated
*/
private static final String OPPOSITE_END_VAR = "oppositeEnd"; //$NON-NLS-1$
/**
* @generated
*/
private static final MindmapAbstractExpression TopicSubtopics_4001_SourceExpression;
/**
* @generated
*/
static {
Map env = new HashMap(3);
env.put(OPPOSITE_END_VAR, MindmapPackage.eINSTANCE.getTopic());
TopicSubtopics_4001_SourceExpression = MindmapOCLFactory
.getExpression(
"self <> oppositeEnd", MindmapPackage.eINSTANCE.getTopic(), env); //$NON-NLS-1$
}
/**
* @generated
*/
public static boolean canExistTopicSubtopics_4001(EObject source,
EObject target) {
if (!evaluate(TopicSubtopics_4001_SourceExpression, source, target,
false)) {
return false;
}
return true;
}
/**
* @generated
*/
public static boolean canExistRelationship_4002(EObject source,
EObject target) {
return true;
}
/**
* @generated
*/
public static boolean canExistRelationship_4003(EObject source,
EObject target) {
return true;
}
/**
* @generated
*/
public static boolean canExistRelationship_4004(EObject source,
EObject target) {
return true;
}
/**
* @generated
*/
private static boolean evaluate(MindmapAbstractExpression constraint,
Object sourceEnd, Object oppositeEnd, boolean clearEnv) {
if (sourceEnd == null) {
return true;
}
Map evalEnv = Collections.singletonMap(OPPOSITE_END_VAR,
oppositeEnd);
try {
Object val = constraint.evaluate(sourceEnd, evalEnv);
return (val instanceof Boolean) ? ((Boolean) val)
.booleanValue() : false;
} catch (Exception e) {
MindmapDiagramEditorPlugin.getInstance().logError(
"Link constraint evaluation error", e); //$NON-NLS-1$
return false;
}
}
}
}