Used SerializableJojo to make standard component id mapping valid JSON
[Mograsim.git] / net.mograsim.logic.model / src / net / mograsim / logic / model / serializing / IndirectModelComponentCreator.java
index b658574..c149848 100644 (file)
@@ -12,13 +12,16 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonNull;
 import com.google.gson.JsonObject;
 
-import net.mograsim.logic.model.model.ViewModelModifiable;
+import net.mograsim.logic.model.model.LogicModelModifiable;
 import net.mograsim.logic.model.model.components.ModelComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.util.JsonHandler;
+import net.mograsim.logic.model.util.Version;
 
 public class IndirectModelComponentCreator
 {
+       public static final Version CURRENT_STD_ID_MAPPING_VERSION = Version.parseSemver("0.1.0");
+
        private static final Map<String, String> standardComponentIDs = new HashMap<>();
        private static final Map<String, String> standardComponentIDsUnmodifiable = Collections.unmodifiableMap(standardComponentIDs);
 
@@ -39,7 +42,7 @@ public class IndirectModelComponentCreator
                {
                        if (s == null)
                                throw new IOException("Resource not found");
-                       Map<String, String> tmp = JsonHandler.readJson(s, Map.class);
+                       Map<String, String> tmp = JsonHandler.readJson(s, StandardComponentIdMappingContainer.class).getMap();
                        // don't use putAll to apply sanity checks
                        tmp.forEach((st, id) ->
                        {
@@ -76,22 +79,22 @@ public class IndirectModelComponentCreator
                componentSuppliers.put(id, componentSupplier);
        }
 
-       public static ModelComponent createComponent(ViewModelModifiable model, String id)
+       public static ModelComponent createComponent(LogicModelModifiable model, String id)
        {
                return createComponent(model, id, (String) null);
        }
 
-       public static ModelComponent createComponent(ViewModelModifiable model, String id, String name)
+       public static ModelComponent createComponent(LogicModelModifiable model, String id, String name)
        {
                return createComponent(model, id, JsonNull.INSTANCE, name);
        }
 
-       public static ModelComponent createComponent(ViewModelModifiable model, String id, JsonElement params)
+       public static ModelComponent createComponent(LogicModelModifiable model, String id, JsonElement params)
        {
                return createComponent(model, id, params, null);
        }
 
-       public static ModelComponent createComponent(ViewModelModifiable model, String id, JsonElement params, String name)
+       public static ModelComponent createComponent(LogicModelModifiable model, String id, JsonElement params, String name)
        {
                if (id == null)
                        throw new NullPointerException("Component ID is null");
@@ -184,7 +187,8 @@ public class IndirectModelComponentCreator
                return id.matches("jsonfile:(.+)|(resloader:([^:]+):)?(jsonres|class):[^:]+");
        }
 
-       private static SubmodelComponent loadComponentFromJsonObject(ViewModelModifiable model, String id, String name, JsonObject jsonContents)
+       private static SubmodelComponent loadComponentFromJsonObject(LogicModelModifiable model, String id, String name,
+                       JsonObject jsonContents)
        {
                componentCache.putIfAbsent(id, jsonContents);
                SerializablePojo jsonContentsAsSerializablePojo = JsonHandler.parser.fromJson(jsonContents, SerializablePojo.class);
@@ -217,6 +221,6 @@ public class IndirectModelComponentCreator
 
        public static interface ComponentSupplier
        {
-               public ModelComponent create(ViewModelModifiable model, JsonElement params, String name);
+               public ModelComponent create(LogicModelModifiable model, JsonElement params, String name);
        }
 }
\ No newline at end of file