/**
* Copyright (c) 2002-2010 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
*/
package org.eclipse.emf.ecore.plugin;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.util.ResourceLocator;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.URIHandler;
import com.google.gwt.core.client.GWT;
/**
* A collection of platform-neutral static utilities
* as well as Eclipse support utilities.
*/
public class EcorePlugin extends EMFPlugin
{
/**
* The singleton instance of the plugin.
*/
public static final EcorePlugin INSTANCE = new EcorePlugin();
/**
* Creates the singleton instance.
*/
private EcorePlugin()
{
super(new ResourceLocator[] {});
}
@Override
public ResourceLocator getPluginResourceLocator()
{
return null;
}
protected static final EcorePluginProperties PROPERTIES;
static
{
// TODO I guess servers can't translate
//
PROPERTIES = (GWT.isClient() ? GWT.<EcorePluginProperties>create(EcorePluginProperties.class) : null);
}
@Override
public String getString(String key, boolean translate)
{
if ("_UI_EMFDiagnostic_marker".equals(key)) return PROPERTIES.emfDiagnosticMarker();
else if ("_UI_CircularContainment_diagnostic".equals(key)) return PROPERTIES.circularContainmentDiagnostic();
else if ("parser.parse.1".equals(key)) return PROPERTIES.parserParse1();
else if ("parser.parse.2".equals(key)) return PROPERTIES.parserParse2();
else if ("parser.next.1".equals(key)) return PROPERTIES.parserNext1();
else if ("parser.next.2".equals(key)) return PROPERTIES.parserNext2();
else if ("parser.next.3".equals(key)) return PROPERTIES.parserNext3();
else if ("parser.next.4".equals(key)) return PROPERTIES.parserNext4();
else if ("parser.factor.1".equals(key)) return PROPERTIES.parserFactor1();
else if ("parser.factor.2".equals(key)) return PROPERTIES.parserFactor2();
else if ("parser.factor.3".equals(key)) return PROPERTIES.parserFactor3();
else if ("parser.factor.4".equals(key)) return PROPERTIES.parserFactor4();
else if ("parser.factor.5".equals(key)) return PROPERTIES.parserFactor5();
else if ("parser.factor.6".equals(key)) return PROPERTIES.parserFactor6();
else if ("parser.atom.1".equals(key)) return PROPERTIES.parserAtom1();
else if ("parser.atom.2".equals(key)) return PROPERTIES.parserAtom2();
else if ("parser.atom.3".equals(key)) return PROPERTIES.parserAtom3();
else if ("parser.atom.4".equals(key)) return PROPERTIES.parserAtom4();
else if ("parser.atom.5".equals(key)) return PROPERTIES.parserAtom5();
else if ("parser.cc.1".equals(key)) return PROPERTIES.parserCc1();
else if ("parser.cc.2".equals(key)) return PROPERTIES.parserCc2();
else if ("parser.cc.3".equals(key)) return PROPERTIES.parserCc3();
else if ("parser.cc.4".equals(key)) return PROPERTIES.parserCc4();
else if ("parser.cc.5".equals(key)) return PROPERTIES.parserCc5();
else if ("parser.cc.6".equals(key)) return PROPERTIES.parserCc6();
else if ("parser.cc.7".equals(key)) return PROPERTIES.parserCc7();
else if ("parser.cc.8".equals(key)) return PROPERTIES.parserCc8();
else if ("parser.ope.1".equals(key)) return PROPERTIES.parserOpe1();
else if ("parser.ope.2".equals(key)) return PROPERTIES.parserOpe2();
else if ("parser.ope.3".equals(key)) return PROPERTIES.parserOpe3();
else if ("parser.descape.1".equals(key)) return PROPERTIES.parserDescape1();
else if ("parser.descape.2".equals(key)) return PROPERTIES.parserDescape2();
else if ("parser.descape.3".equals(key)) return PROPERTIES.parserDescape3();
else if ("parser.descape.4".equals(key)) return PROPERTIES.parserDescape4();
else if ("parser.descape.5".equals(key)) return PROPERTIES.parserDescape5();
else if ("parser.process.1".equals(key)) return PROPERTIES.parserProcess1();
else if ("parser.quantifier.1".equals(key)) return PROPERTIES.parserQuantifier1();
else if ("parser.quantifier.2".equals(key)) return PROPERTIES.parserQuantifier2();
else if ("parser.quantifier.3".equals(key)) return PROPERTIES.parserQuantifier3();
else if ("parser.quantifier.4".equals(key)) return PROPERTIES.parserQuantifier4();
else if ("parser.quantifier.5".equals(key)) return PROPERTIES.parserQuantifier5();
else if ("_UI_PackageRegistry_extensionpoint".equals(key)) return PROPERTIES.packageRegistryExtensionpoint();
else if ("_UI_DynamicPackageRegistry_extensionpoint".equals(key)) return PROPERTIES.dynamicPackageRegistryExtensionpoint();
else if ("_UI_FactoryRegistry_extensionpoint".equals(key)) return PROPERTIES.factoryRegistryExtensionpoint();
else if ("_UI_URIExtensionParserRegistry_extensionpoint".equals(key)) return PROPERTIES.uriExtensionParserRegistryExtensionpoint();
else if ("_UI_URIProtocolParserRegistry_extensionpoint".equals(key)) return PROPERTIES.uriProtocolParserRegistryExtensionpoint();
else if ("_UI_URIContentParserRegistry_extensionpoint".equals(key)) return PROPERTIES.uriContentParserRegistryExtensionpoint();
else if ("_UI_ContentHandlerRegistry_extensionpoint".equals(key)) return PROPERTIES.contentHandlerRegistryExtensionpoint();
else if ("_UI_URIMappingRegistry_extensionpoint".equals(key)) return PROPERTIES.uriMappingRegistryExtensionpoint();
else if ("_UI_PackageRegistryImplementation_extensionpoint".equals(key)) return PROPERTIES.packageRegistryImplementationExtensionpoint();
else if ("_UI_ValidationDelegateRegistry_extensionpoint".equals(key)) return PROPERTIES.validationDelegateRegistryExtensionpoint();
else if ("_UI_SettingDelegateRegistry_extensionpoint".equals(key)) return PROPERTIES.settingDelegateRegistryExtensionpoint();
else if ("_UI_InvocationDelegateRegistry_extensionpoint".equals(key)) return PROPERTIES.invocationDelegateRegistryExtensionpoint();
else if ("_UI_EClassInterfaceNotAbstract_diagnostic".equals(key)) return PROPERTIES.eClassInterfaceNotAbstractDiagnostic();
else if ("_UI_EClassNoCircularSuperTypes_diagnostic".equals(key)) return PROPERTIES.eClassNoCircularSuperTypesDiagnostic();
else if ("_UI_EClassNotWellFormedMapEntryNoInstanceClassName_diagnostic".equals(key)) return PROPERTIES.eClassNotWellFormedMapEntryNoInstanceClassNameDiagnostic();
else if ("_UI_EReferenceOppositeOfOppositeInconsistent_diagnostic".equals(key)) return PROPERTIES.eReferenceOppositeOfOppositeInconsistentDiagnostic();
else if ("_UI_EReferenceOppositeNotFeatureOfType_diagnostic".equals(key)) return PROPERTIES.eReferenceOppositeNotFeatureOfTypeDiagnostic();
else if ("_UI_EReferenceTransientOppositeNotTransient_diagnostic".equals(key)) return PROPERTIES.eReferenceTransientOppositeNotTransientDiagnostic();
else if ("_UI_EReferenceOppositeBothContainment_diagnostic".equals(key)) return PROPERTIES.eReferenceOppositeBothContainmentDiagnostic();
else if ("_UI_EReferenceConsistentUnique_diagnostic".equals(key)) return PROPERTIES.eReferenceConsistentUniqueDiagnostic();
else if ("_UI_ETypedElementNoType_diagnostic".equals(key)) return PROPERTIES.eTypedElementNoTypeDiagnostic();
else if ("_UI_EAttributeNoDataType_diagnostic".equals(key)) return PROPERTIES.eAttributeNoDataTypeDiagnostic();
else if ("_UI_EReferenceNoClass_diagnostic".equals(key)) return PROPERTIES.eReferenceNoClassDiagnostic();
else if ("_UI_EGenericTypeNoTypeParameterAndClassifier_diagnostic".equals(key)) return PROPERTIES.eGenericTypeNoTypeParameterAndClassifierDiagnostic();
else if ("_UI_EGenericTypeNoClass_diagnostic".equals(key)) return PROPERTIES.eGenericTypeNoClassDiagnostic();
else if ("_UI_EGenericTypeNoTypeParameterOrClassifier_diagnostic".equals(key)) return PROPERTIES.eGenericTypeNoTypeParameterOrClassifierDiagnostic();
else if ("_UI_EGenericTypeBoundsOnlyForTypeArgument_diagnostic".equals(key)) return PROPERTIES.eGenericTypeBoundsOnlyForTypeArgumentDiagnostic();
else if ("_UI_EGenericTypeNoUpperAndLowerBound_diagnostic".equals(key)) return PROPERTIES.eGenericTypeNoUpperAndLowerBoundDiagnostic();
else if ("_UI_EGenericTypeNoTypeParameterOrClassifierAndBound_diagnostic".equals(key)) return PROPERTIES.eGenericTypeNoTypeParameterOrClassifierAndBoundDiagnostic();
else if ("_UI_EGenericTypeNoArguments_diagnostic".equals(key)) return PROPERTIES.eGenericTypeNoArgumentsDiagnostic();
else if ("_UI_EGenericTypeOutOfScopeTypeParameter_diagnostic".equals(key)) return PROPERTIES.eGenericTypeOutOfScopeTypeParameterDiagnostic();
else return key;
}
@Override
public String getString(String key, Object [] substitutions, boolean translate)
{
if ("_UI_DiagnosticRoot_diagnostic".equals(key)) return PROPERTIES.diagnosticRootDiagnostic(substitutions[0]);
else if ("_UI_RequiredFeatureMustBeSet_diagnostic".equals(key)) return PROPERTIES.requiredFeatureMustBeSetDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_FeatureHasTooFewValues_diagnostic".equals(key)) return PROPERTIES.featureHasTooFewValuesDiagnostic(substitutions[0], substitutions[1], substitutions[2], substitutions[3]);
else if ("_UI_FeatureHasTooManyValues_diagnostic".equals(key)) return PROPERTIES.featureHasTooManyValuesDiagnostic(substitutions[0], substitutions[1], substitutions[2], substitutions[3]);
else if ("_UI_DocumentRootMustHaveOneElement_diagnostic".equals(key)) return PROPERTIES.documentRootMustHaveOneElementDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_UnresolvedProxy_diagnostic".equals(key)) return PROPERTIES.unresolvedProxyDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_DanglingReference_diagnostic".equals(key)) return PROPERTIES.danglingReferenceDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_UnpairedBidirectionalReference_diagnostic".equals(key)) return PROPERTIES.unpairedBidirectionalReferenceDiagnostic(substitutions[0], substitutions[1], substitutions[2], substitutions[3]);
else if ("_UI_BadDataValue_diagnostic".equals(key)) return PROPERTIES.badDataValueDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_MinInclusiveConstraint_diagnostic".equals(key)) return PROPERTIES.minInclusiveConstraintDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_MinExclusiveConstraint_diagnostic".equals(key)) return PROPERTIES.minExclusiveConstraintDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_MaxInclusiveConstraint_diagnostic".equals(key)) return PROPERTIES.maxInclusiveConstraintDiagnostic(substitutions[0], substitutions[2]);
else if ("_UI_MaxExclusiveConstraint_diagnostic".equals(key)) return PROPERTIES.maxExclusiveConstraintDiagnostic(substitutions[0], substitutions[2]);
else if ("_UI_MinLengthConstraint_diagnostic".equals(key)) return PROPERTIES.minLengthConstraintDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_MaxLengthConstraint_diagnostic".equals(key)) return PROPERTIES.maxLengthConstraintDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_EnumerationConstraint_diagnostic".equals(key)) return PROPERTIES.enumerationConstraintDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_PatternConstraint_diagnostic".equals(key)) return PROPERTIES.patternConstraintDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_TotalDigitsConstraint_diagnostic".equals(key)) return PROPERTIES.totalDigitsConstraintDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_FractionDigitsConstraint_diagnostic".equals(key)) return PROPERTIES.fractionDigitsConstraintDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_ListHead_composition".equals(key)) return PROPERTIES.listHeadComposition(substitutions[0]);
else if ("_UI_ListTail_composition".equals(key)) return PROPERTIES.listTailComposition(substitutions[0], substitutions[1]);
else if ("_UI_BadDataValueType_diagnostic".equals(key)) return PROPERTIES.badDataValueTypeDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_DuplicateID_diagnostic".equals(key)) return PROPERTIES.duplicateIDDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_DuplicateKey_diagnostic".equals(key)) return PROPERTIES.duplicateKeyDiagnostic(substitutions[0], substitutions[1], substitutions[2], substitutions[3]);
else if ("_UI_DuplicateMapEntry_diagnostic".equals(key)) return PROPERTIES.duplicateMapEntryDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_BadXMLGregorianCalendar_diagnostic".equals(key)) return PROPERTIES.badXMLGregorianCalendarDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_GenericInvariant_diagnostic".equals(key)) return PROPERTIES.genericInvariantDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_GenericConstraint_diagnostic".equals(key)) return PROPERTIES.genericConstraintDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EAnnotationSourceURINotWellFormed_diagnostic".equals(key)) return PROPERTIES.eAnnotationSourceURINotWellFormedDiagnostic(substitutions[0]);
else if ("_UI_EAttributeConsistentTransient_diagnostic".equals(key)) return PROPERTIES.eAttributeConsistentTransientDiagnostic(substitutions[0]);
else if ("_UI_ENamedElementNameNotWellFormed_diagnostic".equals(key)) return PROPERTIES.eNamedElementNameNotWellFormedDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameNotWellFormed_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameNotWellFormedDiagnostic(substitutions[0]);
else if ("_UI_EClassAtMostOneID_diagnostic".equals(key)) return PROPERTIES.eClassAtMostOneIDDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EClassUniqueEStructuralFeatureName_diagnostic".equals(key)) return PROPERTIES.eClassUniqueEStructuralFeatureNameDiagnostic(substitutions[0]);
else if ("_UI_EClassDissimilarEStructuralFeatureName_diagnostic".equals(key)) return PROPERTIES.eClassDissimilarEStructuralFeatureNameDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EClassUniqueEOperationSignatures_diagnostic".equals(key)) return PROPERTIES.eClassUniqueEOperationSignaturesDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EClassDisjointFeatureAndOperationSignatures_diagnostic".equals(key)) return PROPERTIES.eClassDisjointFeatureAndOperationSignaturesDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EClassNotWellFormedMapEntry_diagnostic".equals(key)) return PROPERTIES.eClassNotWellFormedMapEntryDiagnostic(substitutions[0]);
else if ("_UI_EEnumUniqueEnumeratorNames_diagnostic".equals(key)) return PROPERTIES.eEnumUniqueEnumeratorNamesDiagnostic(substitutions[0]);
else if ("_UI_EEnumDissimilarEnumeratorNames_diagnostic".equals(key)) return PROPERTIES.eEnumDissimilarEnumeratorNamesDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EEnumUniqueEnumeratorLiterals_diagnostic".equals(key)) return PROPERTIES.eEnumUniqueEnumeratorLiteralsDiagnostic(substitutions[0]);
else if ("_UI_UniqueTypeParameterNames_diagnostic".equals(key)) return PROPERTIES.uniqueTypeParameterNamesDiagnostic(substitutions[0]);
else if ("_UI_EOperationUniqueParameterNames_diagnostic".equals(key)) return PROPERTIES.eOperationUniqueParameterNamesDiagnostic(substitutions[0]);
else if ("_UI_EOperationNoRepeatingVoid_diagnostic".equals(key)) return PROPERTIES.eOperationNoRepeatingVoidDiagnostic(substitutions[0]);
else if ("_UI_EPackageNsURINotWellFormed_diagnostic".equals(key)) return PROPERTIES.ePackageNsURINotWellFormedDiagnostic(substitutions[0]);
else if ("_UI_EPackageNsPrefixNotWellFormed_diagnostic".equals(key)) return PROPERTIES.ePackageNsPrefixNotWellFormedDiagnostic(substitutions[0]);
else if ("_UI_EPackageUniqueSubpackageNames_diagnostic".equals(key)) return PROPERTIES.ePackageUniqueSubpackageNamesDiagnostic(substitutions[0]);
else if ("_UI_EPackageUniqueClassifierNames_diagnostic".equals(key)) return PROPERTIES.ePackageUniqueClassifierNamesDiagnostic(substitutions[0]);
else if ("_UI_EPackageUniqueNsURIs_diagnostic".equals(key)) return PROPERTIES.ePackageUniqueNsURIsDiagnostic(substitutions[0]);
else if ("_UI_EPackageDissimilarClassifierNames_diagnostic".equals(key)) return PROPERTIES.ePackageDissimilarClassifierNamesDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EReferenceSingleContainer_diagnostic".equals(key)) return PROPERTIES.eReferenceSingleContainerDiagnostic(substitutions[0]);
else if ("_UI_EReferenceConsistentKeys_diagnostic".equals(key)) return PROPERTIES.eReferenceConsistentKeysDiagnostic(substitutions[0]);
else if ("_UI_ETypedElementValidLowerBound_diagnostic".equals(key)) return PROPERTIES.eTypedElementValidLowerBoundDiagnostic(substitutions[0]);
else if ("_UI_ETypedElementValidUpperBound_diagnostic".equals(key)) return PROPERTIES.eTypedElementValidUpperBoundDiagnostic(substitutions[0]);
else if ("_UI_ETypedElementConsistentBounds_diagnostic".equals(key)) return PROPERTIES.eTypedElementConsistentBoundsDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EGenericTypeArgumentsNeeded_diagnostic".equals(key)) return PROPERTIES.eGenericTypeArgumentsNeededDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EGenericTypeArgumentInvalidSubstitution_diagnostic".equals(key)) return PROPERTIES.eGenericTypeArgumentInvalidSubstitutionDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EGenericTypeIncorrectArguments_diagnostic".equals(key)) return PROPERTIES.eGenericTypeIncorrectArgumentsDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_EGenericTypeInvalidPrimitiveType_diagnostic".equals(key)) return PROPERTIES.eGenericTypeInvalidPrimitiveTypeDiagnostic(substitutions[0]);
else if ("_UI_EClassNoDuplicateSuperTypes_diagnostic".equals(key)) return PROPERTIES.eClassNoDuplicateSuperTypesDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EClassConsistentSuperTypes_diagnostic".equals(key)) return PROPERTIES.eClassConsistentSuperTypesDiagnostic(substitutions[0]);
else if ("_UI_EStructuralFeatureValidDefaultValueLiteral_diagnostic".equals(key)) return PROPERTIES.eStructuralFeatureValidDefaultValueLiteralDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameAnalysisResult_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameAnalysisResultDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameBracketWithoutPrecedingIdentifier_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameBracketWithoutPrecedingIdentifierDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameNoClosingBracket_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameNoClosingBracketDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameNoClosingBracket2_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameNoClosingBracket2Diagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EClassifierInstanceTypeNameBracketExpected_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameBracketExpectedDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EClassifierInstanceTypeNameDotWithoutPrecedingIdentifier_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameDotWithoutPrecedingIdentifierDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameDotExpectedBeforeIdentifier_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameDotExpectedBeforeIdentifierDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameAngleBracketWithoutPrecedingIdentifier_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameAngleBracketWithoutPrecedingIdentifierDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameUnterminatedAngleBracket_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameUnterminatedAngleBracketDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameUnexpectedCharacter_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameUnexpectedCharacterDiagnostic(substitutions[0], substitutions[1]);
else if ("_UI_EClassifierInstanceTypeNameTooManyQuestionMarks_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameTooManyQuestionMarksDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameExpectingExtends_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameExpectingExtendsDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameExpectingSuper_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameExpectingSuperDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameExpectingExtendsOrSuper_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameExpectingExtendsOrSuperDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameTypeArgumentExpected_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameTypeArgumentExpectedDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameExpectingIdentifier_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameExpectingIdentifierDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameExpectedSpace_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameExpectedSpaceDiagnostic(substitutions[0]);
else if ("_UI_EClassifierInstanceTypeNameUnexpectedSpace_diagnostic".equals(key)) return PROPERTIES.eClassifierInstanceTypeNameUnexpectedSpaceDiagnostic(substitutions[0]);
else if ("_UI_InvariantDelegateException_diagnostic".equals(key)) return PROPERTIES.invariantDelegateExceptionDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_InvariantDelegateNotFound_diagnostic".equals(key)) return PROPERTIES.invariantDelegateNotFoundDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_ConstraintDelegateException_diagnostic".equals(key)) return PROPERTIES.constraintDelegateExceptionDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_ConstraintDelegateNotFound_diagnostic".equals(key)) return PROPERTIES.constraintDelegateNotFoundDiagnostic(substitutions[0], substitutions[1], substitutions[2]);
else if ("_UI_EReferenceConsistentContainer_diagnostic".equals(key)) return PROPERTIES.consistentContainerDiagnostic(substitutions[0]);
else return key;
}
/**
* Returns the platform resource map.
* <p>
* This map is from {@link String} to {@link URI}.
* This map is used to {@link #resolvePlatformResourcePath resolve} a platform resource path,
* and thereby supports relocatable projects in a manner that is transparently the same as an Eclipse workspace.
* </p>
* @return the platform resource map.
* @see #resolvePlatformResourcePath
*/
public static Map<String, URI> getPlatformResourceMap()
{
if (platformResourceMap == null)
{
platformResourceMap = new HashMap<String, URI>();
}
return platformResourceMap;
}
/**
* Resolves a platform resource path of the form <code>"/project/path"</code>
* against the platform resource map.
* <p>
* The first segment of the path, i.e., the <em>project name</em>,
* is used to get a URI from the {@link #getPlatformResourceMap() map}.
* If a URI results, the remaining segments are {@link URI#resolve(URI) resolved} against it
* and that is the result.
* Otherwise, the result is <code>null</code>.
* For example, given this mapping
*<pre>
* EcoreUtil.getPlatformResourceMap().put
* ("project", URI.createURI("file:///C:/location/"));
*</pre>
* the following transformation would result:
*<pre>
* /project/directory/file
* ->
* file:///C:/location/directory/file
*</pre>
* </p>
* @return the resolved URI or <code>null</code>.
*/
public static URI resolvePlatformResourcePath(String platformResourcePath)
{
if (platformResourceMap != null)
{
int index = platformResourcePath.indexOf("/", 1);
String rootContainerName = platformResourcePath.substring(1, index);
String relativeName = platformResourcePath.substring(index + 1);
URI rootContainerLocation = getPlatformResourceMap().get(rootContainerName);
if (rootContainerLocation != null)
{
return URI.createURI(relativeName).resolve(rootContainerLocation);
}
}
return null;
}
/**
* Handles recognized platform resource arguments and returns the stripped result.
* <p>
* Recognized arguments are of this form:
*<pre>
* -platformResource ( <project-name> <file-or-URI> )+
*</pre>
* E.g., This these arguments
*<pre>
* -platformResource project file:///C:/location/
*</pre>
* will produce this effect:
*<pre>
* EcoreUtil.getPlatformResourceMap().put
* ("project", URI.createURI("file:///C:/location/"));
*</pre>
* This mechanism supports relocatable projects outside of Eclipse.
* </p>
* @param arguments an array of "command line" options.
* @return the arguments stripped of those recognized as platform resource options.
*/
public static String [] handlePlatformResourceOptions(String [] arguments)
{
getPlatformResourceMap();
for (int i = 0; i < arguments.length; ++i)
{
if (arguments[i].equalsIgnoreCase("-platformResource"))
{
int start = i;
while (++i < arguments.length && !arguments[i].startsWith("-"))
{
String rootContainerName = arguments[i];
if (++i < arguments.length)
{
String rootContainerLocation = arguments[i];
// This let's us test whether the string exists as a file.
// If not, we try as a URI.
//
URI uri = URI.createURI(rootContainerLocation);
platformResourceMap.put(rootContainerName, uri);
}
}
String [] remainingArguments = new String [arguments.length - (i - start)];
System.arraycopy(arguments, 0, remainingArguments, 0, start);
System.arraycopy(arguments, i, remainingArguments, start, arguments.length - i);
return remainingArguments;
}
}
return arguments;
}
/**
* The platform resource map.
* @see #getPlatformResourceMap
*/
private static Map<String, URI> platformResourceMap;
/**
* @see {@link URIHandler#DEFAULT_HANDLERS}
*/
public static List<URIHandler> DEFAULT_URI_HANDLERS = new ArrayList<URIHandler>();
}