The final restructured version for automatic build using maven tycho
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / MachineRegistry.java
1 package net.mograsim.machine;
2
3 import java.util.Arrays;
4 import java.util.Collections;
5 import java.util.HashMap;
6 import java.util.Map;
7
8 import org.eclipse.core.runtime.CoreException;
9 import org.eclipse.core.runtime.IConfigurationElement;
10 import org.eclipse.core.runtime.IExtensionRegistry;
11 import org.eclipse.core.runtime.Platform;
12
13 public class MachineRegistry
14 {
15         private static final String MACHINE_EXT_ID = "net.mograsim.machine.machine_definition";
16
17         private static Map<String, MachineDefinition> installedMachines = new HashMap<>();
18
19         public static void reload()
20         {
21                 IExtensionRegistry registry = Platform.getExtensionRegistry();
22                 System.out.println(Arrays.toString(registry.getExtensionPoints("net.mograsim.machine")));
23                 IConfigurationElement[] config = registry.getConfigurationElementsFor(MACHINE_EXT_ID);
24                 try
25                 {
26                         for (IConfigurationElement e : config)
27                         {
28                                 System.out.println(e.getNamespaceIdentifier());
29                                 System.out.println(Arrays.toString(e.getAttributeNames()));
30                                 final Object o = e.createExecutableExtension("class");
31                                 final String id = e.getAttribute("unique_id");
32                                 if (o instanceof MachineDefinition)
33                                 {
34                                         System.out.println("Found " + id);
35                                         installedMachines.put(id, (MachineDefinition) o);
36                                 } else
37                                 {
38                                         System.err.println("Invalid machine definition: " + o + "(id=" + id + "");
39                                 }
40                         }
41                 }
42                 catch (CoreException ex)
43                 {
44                         System.out.println(ex.getMessage());
45                 }
46         }
47
48         public static Map<String, MachineDefinition> getinstalledMachines()
49         {
50                 return Collections.unmodifiableMap(installedMachines);
51         }
52 }