import com.google.gson.JsonElement;
-import net.mograsim.logic.model.model.ViewModelModifiable;
+import net.mograsim.logic.model.model.LogicModelModifiable;
import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
* If a DeserializedSubmodelComponent is part of another SubmodelComponent, when it it serialized, it should not return its internal
* structure, but rather the component ID used to create it.
*
- * @see SubmodelComponentSerializer#deserialize(ViewModelModifiable, SubmodelComponentParams, String, String, JsonElement)
+ * @see SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
* SubmodelComponentSerializer.deserialize(...)
* @see SubmodelComponentSerializer#serialize(SubmodelComponent, java.util.function.Function) SubmodelComponentSerializer.serialize(...)
*/
/**
* See {@link #idForSerializingOverride}
*/
- public final JsonElement paramsForSerializingOverride;
+ public final Object paramsForSerializingOverride;
- public DeserializedSubmodelComponent(ViewModelModifiable model, String name, String idForSerializingOverride,
- JsonElement paramsForSerializingOverride)
+ public DeserializedSubmodelComponent(LogicModelModifiable model, String name, String idForSerializingOverride,
+ Object paramsForSerializingOverride)
{
- super(model, name);
+ super(model, name, false);
this.idForSerializingOverride = idForSerializingOverride;
this.paramsForSerializingOverride = paramsForSerializingOverride;
+ init();
+ }
+
+ /**
+ * If this component has an {@link #idForSerializingOverride} set (e.g. non-null) (see
+ * {@link SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
+ * SubmodelComponentSerializer.deserialize(...)}), this ID is returned<br>
+ * If this case doesn't apply (this component has no {@link #idForSerializingOverride} set),
+ * {@link SubmodelComponent#getIDForSerializing(IdentifyParams)} is invoced.
+ */
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return idForSerializingOverride == null ? super.getIDForSerializing(idParams) : idForSerializingOverride;
+ }
+
+ /**
+ * If this component has an {@link #idForSerializingOverride} set (e.g. non-null) (see
+ * {@link SubmodelComponentSerializer#deserialize(LogicModelModifiable, SubmodelComponentParams, String, String, JsonElement)
+ * SubmodelComponentSerializer.deserialize(...)}), {@link #paramsForSerializingOverride} is returned<br>
+ * If this case doesn't apply (this component has no {@link #idForSerializingOverride} set),
+ * {@link SubmodelComponent#getParamsForSerializing(IdentifyParams)} is invoced.
+ */
+ @Override
+ public Object getParamsForSerializing(IdentifyParams idParams)
+ {
+ return idForSerializingOverride == null ? super.getParamsForSerializing(idParams) : paramsForSerializingOverride;
}
@Override
super.setHighLevelStateHandler(handler);
}
- public ViewModelModifiable getSubmodelModifiable()
+ public LogicModelModifiable getSubmodelModifiable()
{
return submodelModifiable;
}
{
super.removeSubmodelInterface(name);
}
-
- // TODO static initializer?
}
\ No newline at end of file