1 package net.mograsim.logic.model.serializing;
3 import com.google.gson.JsonElement;
5 import net.mograsim.logic.model.model.LogicModelModifiable;
6 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
7 import net.mograsim.logic.model.model.wires.MovablePin;
8 import net.mograsim.logic.model.model.wires.Pin;
9 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
10 import net.mograsim.logic.model.snippets.Renderer;
12 public class DeserializedSubmodelComponent extends SubmodelComponent
15 * If a DeserializedSubmodelComponent is part of another SubmodelComponent, when it it serialized, it should not return its internal
16 * structure, but rather the component ID used to create it.
18 * @see SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
19 * SubmodelComponentSerializer.deserialize(...)
20 * @see SubmodelComponentSerializer#serialize(SubmodelComponent, java.util.function.Function) SubmodelComponentSerializer.serialize(...)
22 public final String idForSerializingOverride;
24 * See {@link #idForSerializingOverride}
26 public final Object paramsForSerializingOverride;
28 public DeserializedSubmodelComponent(LogicModelModifiable model, String name, String idForSerializingOverride,
29 Object paramsForSerializingOverride)
31 super(model, name, false);
32 this.idForSerializingOverride = idForSerializingOverride;
33 this.paramsForSerializingOverride = paramsForSerializingOverride;
38 * If this component has an {@link #idForSerializingOverride} set (e.g. non-null) (see
39 * {@link SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
40 * SubmodelComponentSerializer.deserialize(...)}), this ID is returned<br>
41 * If this case doesn't apply (this component has no {@link #idForSerializingOverride} set),
42 * {@link SubmodelComponent#getIDForSerializing(IdentifyParams)} is invoced.
45 public String getIDForSerializing(IdentifyParams idParams)
47 return idForSerializingOverride == null ? super.getIDForSerializing(idParams) : idForSerializingOverride;
51 * If this component has an {@link #idForSerializingOverride} set (e.g. non-null) (see
52 * {@link SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
53 * SubmodelComponentSerializer.deserialize(...)}), {@link #paramsForSerializingOverride} is returned<br>
54 * If this case doesn't apply (this component has no {@link #idForSerializingOverride} set),
55 * {@link SubmodelComponent#getParamsForSerializing(IdentifyParams)} is invoced.
58 public Object getParamsForSerializing(IdentifyParams idParams)
60 return idForSerializingOverride == null ? super.getParamsForSerializing(idParams) : paramsForSerializingOverride;
64 public void setSymbolRenderer(Renderer symbolRenderer)
66 super.setSymbolRenderer(symbolRenderer);
70 public void setOutlineRenderer(Renderer outlineRenderer)
72 super.setOutlineRenderer(outlineRenderer);
76 public void setHighLevelStateHandler(HighLevelStateHandler handler)
78 super.setHighLevelStateHandler(handler);
81 public LogicModelModifiable getSubmodelModifiable()
83 return submodelModifiable;
87 public void setSubmodelScale(double submodelScale)
89 super.setSubmodelScale(submodelScale);
93 public void setSize(double width, double height)
95 super.setSize(width, height);
99 public Pin addSubmodelInterface(MovablePin supermodelPin)
101 return super.addSubmodelInterface(supermodelPin);
105 public void removeSubmodelInterface(String name)
107 super.removeSubmodelInterface(name);