blob: 7906789d79eef37752a46470a7bafb7af29be1f7 [file] [log] [blame]
package org.jetbrains.jps.android.model.impl;
import com.intellij.util.xmlb.XmlSerializer;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.android.model.AndroidApplicationArtifactType;
import org.jetbrains.jps.android.model.JpsAndroidApplicationArtifactProperties;
import org.jetbrains.jps.model.serialization.artifact.ArtifactPropertiesState;
import org.jetbrains.jps.model.serialization.artifact.JpsArtifactPropertiesSerializer;
import java.util.List;
/**
* @author Eugene.Kudelevsky
*/
public class JpsAndroidApplicationArtifactPropertiesSerializer
extends JpsArtifactPropertiesSerializer<JpsAndroidApplicationArtifactProperties> {
public JpsAndroidApplicationArtifactPropertiesSerializer() {
super("apk", AndroidApplicationArtifactType.INSTANCE);
}
@Override
@NotNull
public JpsAndroidApplicationArtifactProperties loadProperties(List<ArtifactPropertiesState> stateList) {
final JpsAndroidApplicationArtifactProperties properties = doLoadProperties(stateList);
return properties != null
? properties
: new JpsAndroidApplicationArtifactPropertiesImpl();
}
private static JpsAndroidApplicationArtifactProperties doLoadProperties(List<ArtifactPropertiesState> stateList) {
final ArtifactPropertiesState state = findAndroidApplicationProperties(stateList);
if (state == null) {
return null;
}
final Element options = state.getOptions();
if (options == null) {
return null;
}
return XmlSerializer.deserialize(options, JpsAndroidApplicationArtifactPropertiesImpl.class);
}
@Override
public void saveProperties(JpsAndroidApplicationArtifactProperties properties, List<ArtifactPropertiesState> stateList) {
final ArtifactPropertiesState state = findAndroidApplicationProperties(stateList);
if (state == null) {
return;
}
final Element element = XmlSerializer.serialize(properties);
if (element == null) {
return;
}
state.setOptions(element);
}
private static ArtifactPropertiesState findAndroidApplicationProperties(List<ArtifactPropertiesState> stateList) {
for (ArtifactPropertiesState state : stateList) {
if ("android-properties".equals(state.getId())) {
return state;
}
}
return null;
}
}