Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/pasteInNewTable/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLStringValueConverter.java')
-rw-r--r--sandbox/pasteInNewTable/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLStringValueConverter.java250
1 files changed, 0 insertions, 250 deletions
diff --git a/sandbox/pasteInNewTable/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLStringValueConverter.java b/sandbox/pasteInNewTable/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLStringValueConverter.java
deleted file mode 100644
index b5260edbc3e..00000000000
--- a/sandbox/pasteInNewTable/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLStringValueConverter.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2013 CEA LIST.
- *
- *
- * 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:
- * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
- *
- *****************************************************************************/
-package org.eclipse.papyrus.uml.tools.utils;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.papyrus.infra.emf.Activator;
-import org.eclipse.papyrus.infra.emf.utils.EMFStringValueConverter;
-import org.eclipse.papyrus.infra.emf.utils.MultiConvertedValueContainer;
-import org.eclipse.papyrus.infra.emf.utils.ConvertedValueContainer;
-import org.eclipse.papyrus.infra.emf.utils.StringValueConverterStatus;
-import org.eclipse.uml2.uml.DataType;
-import org.eclipse.uml2.uml.Enumeration;
-import org.eclipse.uml2.uml.EnumerationLiteral;
-import org.eclipse.uml2.uml.NamedElement;
-import org.eclipse.uml2.uml.Namespace;
-import org.eclipse.uml2.uml.PrimitiveType;
-import org.eclipse.uml2.uml.Property;
-import org.eclipse.uml2.uml.Type;
-import org.eclipse.uml2.uml.UMLPackage;
-
-/**
- * ULM String converter
- * @author vl222926
- *
- */
-public class UMLStringValueConverter extends EMFStringValueConverter {
-
- final protected Map<EClass, NameResolutionHelper> nameResolutionHelpers = new HashMap<EClass, NameResolutionHelper>();
-
- private static final String THE_ENUMERATION_LITERAL_X_CANT_BE_FOUND = "The enumeration literal {0} can't be found";
-
- private static final String SOME_STRING_CANT_BE_RESOLVED_TO_FIND_X = "Some String can't be resolved to find {0}";
-
- private static final String NO_X_REPRESENTED_BY_Y_HAVE_BEEN_FOUND = "No {0} represented by {1} have been found";
-
- /**
- *
- * Constructor.
- *
- * @param context
- * the context used to resolve the value
- * @param multiValueSeparator
- * the string used to seprate values
- */
- public UMLStringValueConverter(final Namespace context, final String multiValueSeparator) {
- super(context, multiValueSeparator);
- }
-
- /**
- *
- * @see org.eclipse.papyrus.infra.emf.utils.EMFStringValueConverter#dispose()
- *
- */
- @Override
- public void dispose() {
- super.dispose();
- nameResolutionHelpers.clear();
- }
-
- @Override
- protected int getFeatureUpperBound(Object feature) {
- if(feature instanceof Property) {
- return ((Property)feature).getUpper();
- }
- return super.getFeatureUpperBound(feature);
- }
-
- @Override
- protected EClassifier getFeatureType(Object feature) {
- final EClassifier featureType;
- if(feature instanceof Property) {
- final Type type = ((Property)feature).getType();
- if(type instanceof PrimitiveType) {
- final PrimitiveType pType = (PrimitiveType)type;
- final String name = pType.getName();
- if(PrimitivesTypesUtils.UML_BOOLEAN.equals(name)) {
- featureType = EcorePackage.eINSTANCE.getEBoolean();
- } else if(PrimitivesTypesUtils.UML_INTEGER.equals(name)) {
- featureType = EcorePackage.eINSTANCE.getEInt();
- } else if(PrimitivesTypesUtils.UML_REAL.equals(name)) {
- featureType = EcorePackage.eINSTANCE.getEDouble();
- } else if(PrimitivesTypesUtils.UML_STRING.equals(name)) {
- featureType = EcorePackage.eINSTANCE.getEString();
- } else if(PrimitivesTypesUtils.UML_UNLIMITED_NATURAL.equals(name)) {
- featureType = EcorePackage.eINSTANCE.getEInt();
- } else { //custom PrimitiveType
- featureType = EcorePackage.eINSTANCE.getEString();
- }
- } else if(type instanceof Enumeration) {
- featureType = UMLPackage.eINSTANCE.getEnumeration();
- } else if(type instanceof DataType) {//FIXME manage the data type
- featureType = EcorePackage.eINSTANCE.getEString();
- } else {
- featureType = type.eClass();
- }
- } else {
- featureType = super.getFeatureType(feature);
- }
- return featureType;
- }
-
-
- @Override
- public ConvertedValueContainer<?> deduceValueFromString(Object feature, String valueAsString) {
- final EClassifier featureType = getFeatureType(feature);
- if(feature instanceof Property) {
- return deduceValueFromString(feature, featureType, valueAsString);
- }
- return super.deduceValueFromString(feature, valueAsString);
- }
- /**
- *
- * @see org.eclipse.papyrus.infra.emf.utils.EMFStringValueConverter#deduceValueFromString(java.lang.Object, org.eclipse.emf.ecore.EClassifier,
- * java.lang.String)
- *
- * @param feature
- * @param featureType
- * @param valueAsString
- * @return
- */
- @Override
- protected ConvertedValueContainer<?> deduceValueFromString(Object feature, EClassifier featureType, String valueAsString) {
- if(featureType instanceof EClass && feature instanceof Property) {
- final int upperbound = getFeatureUpperBound(feature);
- boolean isMany = (upperbound > 1 || upperbound == -1);
- if(PrimitivesTypesUtils.ENUMERATION.equals(featureType.getName())) {
- return deduceEnumerationLiteralValue(isMany, valueAsString, (Enumeration)((Property)feature).getType());
- }
- }
- return super.deduceValueFromString(feature, featureType, valueAsString);
- }
-
-
- /**
- *
- * @see org.eclipse.papyrus.infra.emf.utils.EMFStringValueConverter#deduceEObjectValue(org.eclipse.emf.ecore.EObject, java.lang.Object,
- * org.eclipse.emf.ecore.EClass, boolean, java.lang.String)
- *
- * @param resolutionContext
- * @param feature
- * @param featureType
- * @param isMany
- * @param valueAsString
- * @return
- * @throws StringValueSolverException
- */
- @Override
- protected ConvertedValueContainer<?> deduceEObjectValue(EObject resolutionContext, Object feature, EClass eClass, boolean isMany, String valueAsString) {
- if(valueAsString!=null && !valueAsString.isEmpty() && resolutionContext instanceof Namespace) {
- IStatus iStatus = Status.OK_STATUS;
- final Collection<String> unresolvedValues = new ArrayList<String>();
- Namespace namespace = (Namespace)resolutionContext;
- ConvertedValueContainer<?> returnedValue = null;
- NameResolutionHelper helper = this.nameResolutionHelpers.get(eClass);
- if(helper == null) {
- helper = new NameResolutionHelper(namespace, eClass);
- this.nameResolutionHelpers.put(eClass, helper);
- }
- if(isMany) {
- final Collection<NamedElement> values = new HashSet<NamedElement>();
- for(final String str : valueAsString.split(this.multiValueSeparator)) {
- final List<NamedElement> elements = helper.getNamedElements(str);
- if(elements.size() == 1) {
- values.add(elements.get(0));
- } else {
- unresolvedValues.add(str);
- }
- if(!unresolvedValues.isEmpty()) {
- iStatus = new StringValueConverterStatus(IStatus.ERROR, Activator.PLUGIN_ID, NLS.bind(SOME_STRING_CANT_BE_RESOLVED_TO_FIND_X, eClass.getName()), unresolvedValues);
- }
- returnedValue = new MultiConvertedValueContainer<NamedElement>(values, iStatus);
- }
- } else {
- final List<NamedElement> elements = helper.getNamedElements(valueAsString);
- if(elements.size() == 1) {
- //it is OK
- returnedValue = new ConvertedValueContainer<NamedElement>(elements.get(0), iStatus);
- } else {
- unresolvedValues.add(valueAsString);
- iStatus = new StringValueConverterStatus(IStatus.ERROR, Activator.PLUGIN_ID, NLS.bind(NO_X_REPRESENTED_BY_Y_HAVE_BEEN_FOUND, eClass.getName(), valueAsString), unresolvedValues);
- returnedValue = new ConvertedValueContainer<Boolean>(null, iStatus);
- }
- }
- return returnedValue;
- }
- return super.deduceEObjectValue(resolutionContext, feature, eClass, isMany, valueAsString);
- }
-
- /**
- *
- * @param isMany
- * <code>true</code> if the feature isMany
- * @param valueAsString
- * the value to parse
- * @return
- * the result of the parsing
- */
- protected ConvertedValueContainer<?> deduceEnumerationLiteralValue(final boolean isMany, final String valueAsString, final Enumeration enumeration) {
- ConvertedValueContainer<?> returnedValue = null;
- IStatus iStatus = Status.OK_STATUS;
- final Collection<String> unresolvedValues = new ArrayList<String>();
- if(isMany) {
- final Collection<EnumerationLiteral> values = new ArrayList<EnumerationLiteral>();
- for(final String str : valueAsString.split(this.multiValueSeparator)) {
- final EnumerationLiteral lit = (EnumerationLiteral)enumeration.getMember(str);
- if(lit != null) {
- values.add(lit);
- } else {
- unresolvedValues.add(str);
- }
- }
- if(!unresolvedValues.isEmpty()) {
- iStatus = new StringValueConverterStatus(IStatus.ERROR, Activator.PLUGIN_ID, NLS.bind(SOME_STRING_ARE_NOT_VALID_TO_CREATE_X, PrimitivesTypesUtils.ENUMERATION_LITERAL), unresolvedValues);
- }
- returnedValue = new MultiConvertedValueContainer<EnumerationLiteral>(values, iStatus);
- } else {
- final EnumerationLiteral lit = (EnumerationLiteral)enumeration.getMember(valueAsString);
- if(lit == null) {
- unresolvedValues.add(valueAsString);
- iStatus = new StringValueConverterStatus(IStatus.ERROR, Activator.PLUGIN_ID, NLS.bind(THE_ENUMERATION_LITERAL_X_CANT_BE_FOUND, valueAsString, PrimitivesTypesUtils.ENUMERATION_LITERAL), unresolvedValues);
- }
- returnedValue = new ConvertedValueContainer<EnumerationLiteral>(lit, iStatus);
- }
- return returnedValue;
- }
-}

Back to the top