Jelajahi Sumber

Added extension mapping to xpand / xtend generators

malknet42 11 tahun lalu
induk
melakukan
f016418c49

+ 16 - 0
plugins/org.yakindu.sct.generator.core/plugin.xml

@@ -44,6 +44,14 @@
        </FeatureLibrary>
     </SCTGenerator>
  </extension>
+    <extension
+         point="org.yakindu.sct.generator.core.extensions">
+      <ExtensionGeneratorMapping
+            fileExtension="sct"
+            generatorId="yakindu::xpand">
+      </ExtensionGeneratorMapping>
+   </extension>
+ 
  <extension
        point="org.yakindu.sct.generator.core.generator">
    <SCTGenerator
@@ -61,6 +69,14 @@
       </FeatureLibrary>
     </SCTGenerator>
  </extension>
+    <extension
+         point="org.yakindu.sct.generator.core.extensions">
+      <ExtensionGeneratorMapping
+            fileExtension="sct"
+            generatorId="yakindu::generic">
+      </ExtensionGeneratorMapping>
+   </extension>
+ 
   <extension
          id="org.yakindu.sct.builder.SCTBuilder"
          name="YAKINDU SCT Builder"

+ 25 - 8
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/extensions/FileExtensions.java

@@ -17,6 +17,8 @@ import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.Platform;
 
 import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
 
 /**
  * 
@@ -49,20 +51,35 @@ public class FileExtensions {
 	}
 
 	public static Iterable<FileExtensionDescriptor> getFileExtensions() {
-		IConfigurationElement[] configurationElements = Platform
-				.getExtensionRegistry().getConfigurationElementsFor(
-						EXTENSION_POINT_ID);
+		IConfigurationElement[] configurationElements = Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_ID);
 		if (generatorDescriptors == null) {
-			generatorDescriptors = transform(
-					newArrayList(configurationElements),
-					new CreateFileExtensions());
+			generatorDescriptors = transform(newArrayList(configurationElements), new CreateFileExtensions());
 		}
 		return generatorDescriptors;
 	}
 
+	public static String getFileExtension(final String generatorId) {
+		FileExtensionDescriptor descriptor = Iterables.find(getFileExtensions(), new Predicate<FileExtensionDescriptor>() {
+			public boolean apply(FileExtensionDescriptor input) {
+				return generatorId.equals(input.getGeneratorId());
+			}
+		});
+		return descriptor.getExtension();
+	}
+
+	public static String getGeneratorForFileExtension(String extension) {
+
+		IConfigurationElement[] configurationElements = Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_ID);
+
+		for (IConfigurationElement x : configurationElements) {
+			if (x.getAttribute(FILE_EXTENSION).equals(extension)) {
+				return x.getAttribute(GENERATOR_ID);
+			}
+		}
+		return null;
+	}
 
-	private static final class CreateFileExtensions implements
-			Function<IConfigurationElement, FileExtensionDescriptor> {
+	private static final class CreateFileExtensions implements Function<IConfigurationElement, FileExtensionDescriptor> {
 
 		public FileExtensionDescriptor apply(IConfigurationElement from) {
 			return new FileExtensionDescriptor(from);