added support for key override.metamodel.uri in build.properties

The new build.properties key override.metamodel.uri can be used to
specify a different metamodel than the one used for parser generation
for injection & extraction.
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java
index 6647afb..c3a66e3 100644
--- a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java
@@ -173,11 +173,18 @@
 		ecoreFile = project.getFile("Metamodel/" + name + ".ecore");

 		metamodelCache = new ModelCache() {

 			private long timestamp;

+			private String metamodelOverrideURI = properties.getProperty("override.metamodel.uri");

 

 			protected Object loadModel(ModelFactory factory) {

 				try {

-					Object ret = factory.loadMetamodel(name, ecoreFile.getContents());

-					this.timestamp = ecoreFile.getModificationStamp();

+					Object location;

+					if(metamodelOverrideURI != null) {

+						location = URI.createURI(metamodelOverrideURI);

+					} else {

+						location = ecoreFile.getContents();

+						this.timestamp = ecoreFile.getModificationStamp();

+					}

+					Object ret = factory.loadMetamodel(name, location);

 					return ret;

 				} catch (CoreException e) {

 					throw new RuntimeException(e);

@@ -185,10 +192,16 @@
 			}			

 

 			protected boolean shouldReload() {

-				return ecoreFile.getModificationStamp() != timestamp;

+				String newMetamodelOverrideURI = getProperty("override.metamodel.uri");

+				if(metamodelOverrideURI != newMetamodelOverrideURI) {

+					metamodelOverrideURI = newMetamodelOverrideURI;

+					return true;

+				} else {

+					return ecoreFile.getModificationStamp() != timestamp;

+				}

 			}

 		};

-		

+

 		antlrFile = project.getFile("Syntax/" + name + "_ANTLR3.g");

 		jarFile = project.getFile("Syntax/" + name + "-parser.jar");