package org.eclipselabs.spray.generator.graphiti.templates; import com.google.inject.Inject; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.xbase.lib.StringExtensions; import org.eclipse.xtext.xtend2.lib.StringConcatenation; import org.eclipselabs.spray.generator.graphiti.templates.FileGenerator; import org.eclipselabs.spray.generator.graphiti.templates.JavaGenFile; import org.eclipselabs.spray.generator.graphiti.util.GeneratorUtil; import org.eclipselabs.spray.generator.graphiti.util.ImportUtil; import org.eclipselabs.spray.generator.graphiti.util.NamingExtensions; import org.eclipselabs.spray.mm.spray.MetaReference; import org.eclipselabs.spray.mm.spray.extensions.SprayExtensions; @SuppressWarnings("all") public class UpdateReferenceAsListFeature extends FileGenerator { @Inject private ImportUtil importUtil; @Inject private NamingExtensions naming; @Inject private SprayExtensions e1; private EClass target; public EClass setTarget(final EClass m) { EClass _target = this.target = m; return _target; } public StringConcatenation generateBaseFile(final EObject modelElement) { JavaGenFile _javaGenFile = this.getJavaGenFile(); String _baseClassName = _javaGenFile.getBaseClassName(); StringConcatenation _mainFile = this.mainFile(((MetaReference) modelElement), _baseClassName); return _mainFile; } public StringConcatenation generateExtensionFile(final EObject modelElement) { JavaGenFile _javaGenFile = this.getJavaGenFile(); String _className = _javaGenFile.getClassName(); StringConcatenation _mainExtensionPointFile = this.mainExtensionPointFile(((MetaReference) modelElement), _className); return _mainExtensionPointFile; } public StringConcatenation mainExtensionPointFile(final MetaReference metaReference, final String className) { StringConcatenation _builder = new StringConcatenation(); StringConcatenation _extensionHeader = this.extensionHeader(this); _builder.append(_extensionHeader, ""); _builder.newLineIfNotEmpty(); _builder.append("package "); String _feature_package = GeneratorUtil.feature_package(); _builder.append(_feature_package, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("import org.eclipse.graphiti.features.IFeatureProvider;"); _builder.newLine(); _builder.newLine(); _builder.append("public class "); _builder.append(className, ""); _builder.append(" extends "); _builder.append(className, ""); _builder.append("Base {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("public "); _builder.append(className, " "); _builder.append("(IFeatureProvider fp) {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("super(fp);"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append("}"); _builder.newLine(); return _builder; } public StringConcatenation mainFile(final MetaReference reference, final String className) { StringConcatenation _builder = new StringConcatenation(); String _feature_package = GeneratorUtil.feature_package(); this.importUtil.initImports(_feature_package); _builder.newLineIfNotEmpty(); StringConcatenation _header = this.header(this); _builder.append(_header, ""); _builder.newLineIfNotEmpty(); _builder.append("package "); String _feature_package_1 = GeneratorUtil.feature_package(); _builder.append(_feature_package_1, ""); _builder.append(";"); _builder.newLineIfNotEmpty(); StringConcatenation _mainFileBody = this.mainFileBody(reference, className); final StringConcatenation body = _mainFileBody; _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append("import org.eclipse.graphiti.features.IFeatureProvider;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.features.IReason;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.features.context.IUpdateContext;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.features.context.IContext;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.features.impl.AbstractUpdateFeature;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.features.impl.Reason;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.mm.algorithms.Text;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.mm.pictograms.PictogramElement;"); _builder.newLine(); _builder.append("import org.eclipse.graphiti.mm.pictograms.Shape;"); _builder.newLine(); _builder.newLine(); String _printImports = this.importUtil.printImports(); _builder.append(_printImports, ""); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(body, ""); _builder.newLineIfNotEmpty(); return _builder; } public StringConcatenation mainFileBody(final MetaReference reference, final String className) { StringConcatenation _builder = new StringConcatenation(); _builder.append("public class "); _builder.append(className, ""); _builder.append(" extends AbstractUpdateFeature {"); _builder.newLineIfNotEmpty(); _builder.newLine(); _builder.append(" "); _builder.append("public "); _builder.append(className, " "); _builder.append("(IFeatureProvider fp) {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("super(fp);"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.newLine(); _builder.append(" "); _builder.append("@Override"); _builder.newLine(); _builder.append(" "); _builder.append("public boolean canUpdate(IUpdateContext context) {"); _builder.newLine(); _builder.append(" "); _builder.append("// return true, if linked business object is a EClass"); _builder.newLine(); _builder.append(" "); _builder.append("Object bo = getBusinessObjectForPictogramElement(context.getPictogramElement());"); _builder.newLine(); _builder.append(" "); _builder.append("return (bo instanceof "); String _javaInterfaceName = this.naming.getJavaInterfaceName(this.target); String _shortName = this.shortName(_javaInterfaceName); _builder.append(_shortName, " "); _builder.append(");"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("@Override"); _builder.newLine(); _builder.append(" "); _builder.append("public IReason updateNeeded(IUpdateContext context) {"); _builder.newLine(); _builder.append(" "); _builder.append("// retrieve name from pictogram model"); _builder.newLine(); _builder.append(" "); _builder.append("String pictogramName = null;"); _builder.newLine(); _builder.append(" "); _builder.append("PictogramElement pictogramElement = context.getPictogramElement();"); _builder.newLine(); _builder.append(" "); _builder.append("if (pictogramElement instanceof Shape) {"); _builder.newLine(); _builder.append(" "); _builder.append("Shape cs = (Shape) pictogramElement;"); _builder.newLine(); _builder.append(" "); _builder.append("if (cs.getGraphicsAlgorithm() instanceof Text) {"); _builder.newLine(); _builder.append(" "); _builder.append("Text text = (Text) cs.getGraphicsAlgorithm();"); _builder.newLine(); _builder.append("// Graphiti.getPeService().getPropertyValue(shape, \"REFERENCE\");"); _builder.newLine(); _builder.append(" "); _builder.append("if( pictogramName == null ){"); _builder.newLine(); _builder.append(" "); _builder.append("pictogramName = text.getValue();"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.newLine(); _builder.append(" "); _builder.append("// retrieve name from business model"); _builder.newLine(); _builder.append(" "); _builder.append("String businessName = null;"); _builder.newLine(); _builder.append(" "); _builder.append("Object bo = getBusinessObjectForPictogramElement(pictogramElement);"); _builder.newLine(); _builder.append(" "); _builder.append("if (bo instanceof "); String _name = this.target.getName(); _builder.append(_name, " "); _builder.append(") {"); _builder.newLineIfNotEmpty(); _builder.append(" "); String _name_1 = this.target.getName(); _builder.append(_name_1, " "); _builder.append(" reference = ("); String _name_2 = this.target.getName(); _builder.append(_name_2, " "); _builder.append(") bo;"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("businessName = reference.get"); String _labelPropertyName = this.e1.getLabelPropertyName(reference); String _firstUpper = StringExtensions.toFirstUpper(_labelPropertyName); _builder.append(_firstUpper, " "); _builder.append("();"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.newLine(); _builder.append(" "); _builder.append("// update needed, if names are different"); _builder.newLine(); _builder.append(" "); _builder.append("boolean updateNameNeeded ="); _builder.newLine(); _builder.append(" "); _builder.append("((pictogramName == null && businessName != null) ||"); _builder.newLine(); _builder.append(" "); _builder.append("(pictogramName != null && !pictogramName.equals(businessName)));"); _builder.newLine(); _builder.append(" "); _builder.append("if (updateNameNeeded) {"); _builder.newLine(); _builder.append(" "); _builder.append("return Reason.createTrueReason(\"Property Name is out of date\");"); _builder.newLine(); _builder.append(" "); _builder.append("} else {"); _builder.newLine(); _builder.append(" "); _builder.append("return Reason.createFalseReason();"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("@Override"); _builder.newLine(); _builder.append(" "); _builder.append("public boolean update(IUpdateContext context) {"); _builder.newLine(); _builder.append(" "); _builder.append("// retrieve name from business model"); _builder.newLine(); _builder.append(" "); _builder.append("String businessName = null;"); _builder.newLine(); _builder.append(" "); _builder.append("PictogramElement pictogramElement = context.getPictogramElement();"); _builder.newLine(); _builder.append(" "); _builder.append("Object bo = getBusinessObjectForPictogramElement(pictogramElement);"); _builder.newLine(); _builder.append(" "); _builder.append("if (bo instanceof "); String _name_3 = this.target.getName(); _builder.append(_name_3, " "); _builder.append(") {"); _builder.newLineIfNotEmpty(); _builder.append(" "); String _name_4 = this.target.getName(); _builder.append(_name_4, " "); _builder.append(" eClass = ("); String _name_5 = this.target.getName(); _builder.append(_name_5, " "); _builder.append(") bo;"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("businessName = eClass.get"); String _labelPropertyName_1 = this.e1.getLabelPropertyName(reference); String _firstUpper_1 = StringExtensions.toFirstUpper(_labelPropertyName_1); _builder.append(_firstUpper_1, " "); _builder.append("();"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.newLine(); _builder.append(" "); _builder.append("// Set name in pictogram model"); _builder.newLine(); _builder.append(" "); _builder.append("if (pictogramElement instanceof Shape) {"); _builder.newLine(); _builder.append(" "); _builder.append("Shape cs = (Shape) pictogramElement;"); _builder.newLine(); _builder.append(" "); _builder.append("if (cs.getGraphicsAlgorithm() instanceof Text) {"); _builder.newLine(); _builder.append(" "); _builder.append("Text text = (Text) cs.getGraphicsAlgorithm();"); _builder.newLine(); _builder.append(" "); _builder.append("text.setValue(businessName);"); _builder.newLine(); _builder.append(" "); _builder.append("layoutPictogramElement(cs.getContainer().getContainer());"); _builder.newLine(); _builder.append(" "); _builder.append("return true;"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append(" "); _builder.append("return false;"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("@Override"); _builder.newLine(); _builder.append(" "); _builder.append("public boolean hasDoneChanges() {"); _builder.newLine(); _builder.append(" "); _builder.append("return false;"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append(" "); _builder.append("@Override"); _builder.newLine(); _builder.append(" "); _builder.append("public boolean canUndo(IContext context) {"); _builder.newLine(); _builder.append(" "); _builder.append("return false;"); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append("}"); _builder.newLine(); return _builder; } }