package ee.edio.garmin.jps.model;
import ee.edio.garmin.MonkeyConstants;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.JpsElementFactory;
import org.jetbrains.jps.model.JpsSimpleElement;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.serialization.JpsModelSerializerExtension;
import org.jetbrains.jps.model.serialization.library.JpsSdkPropertiesSerializer;
import org.jetbrains.jps.model.serialization.module.JpsModulePropertiesSerializer;
import java.util.Collections;
import java.util.List;
public class JpsMonkeyModelSerializerExtension extends JpsModelSerializerExtension {
public static final String MODULE_TARGET_DEVICE_ID_ATTRIBUTE = "target-device";
@Override
public void loadRootModel(@NotNull JpsModule module, @NotNull Element rootModel) {
final JpsSimpleElement modulePropertiesElement = (JpsSimpleElement) module.getProperties();
final JpsMonkeyModuleProperties moduleProperties = (JpsMonkeyModuleProperties) modulePropertiesElement.getData();
moduleProperties.TARGET_DEVICE_ID = rootModel.getAttributeValue(MODULE_TARGET_DEVICE_ID_ATTRIBUTE);
}
/* @Override
public void loadModuleOptions(@NotNull JpsModule module, @NotNull Element rootElement) {
final JpsSimpleElement modulePropertiesElement = (JpsSimpleElement) module.getProperties();
final JpsMonkeyModuleProperties moduleProperties = (JpsMonkeyModuleProperties) modulePropertiesElement.getData();
moduleProperties.TARGET_DEVICE_ID = rootElement.getAttributeValue(MODULE_TARGET_DEVICE_ID_ATTRIBUTE);
}*/
@NotNull
@Override
public List<? extends JpsModulePropertiesSerializer<?>> getModulePropertiesSerializers() {
return Collections.singletonList(new JpsMonkeyModulePropertiesSerializer());
}
@NotNull
@Override
public List<? extends JpsSdkPropertiesSerializer<?>> getSdkPropertiesSerializers() {
return Collections.singletonList(new JpsMonkeySdkPropertiesSerializer());
}
private static class JpsMonkeySdkPropertiesSerializer extends JpsSdkPropertiesSerializer<JpsDummyElement> {
protected JpsMonkeySdkPropertiesSerializer() {
super(MonkeyConstants.SDK_TYPE_ID, JpsMonkeySdkType.INSTANCE);
}
@NotNull
@Override
public JpsDummyElement loadProperties(@Nullable Element propertiesElement) {
return JpsElementFactory.getInstance().createDummyElement();
}
@Override
public void saveProperties(@NotNull JpsDummyElement properties, @NotNull Element element) {
}
}
private static class JpsMonkeyModulePropertiesSerializer extends JpsModulePropertiesSerializer<JpsSimpleElement<JpsMonkeyModuleProperties>> {
private JpsMonkeyModulePropertiesSerializer() {
super(JpsMonkeyModuleType.INSTANCE, MonkeyConstants.MODULE_TYPE_ID, null);
}
@Override
public JpsSimpleElement<JpsMonkeyModuleProperties> loadProperties(@Nullable Element componentElement) {
return JpsElementFactory.getInstance().createSimpleElement(new JpsMonkeyModuleProperties());
}
@Override
public void saveProperties(@NotNull JpsSimpleElement<JpsMonkeyModuleProperties> element, @NotNull Element componentElement) {
}
}
}