| package org.jetbrains.jps.android.model.impl; |
| |
| import com.intellij.openapi.util.io.FileUtil; |
| import com.intellij.openapi.util.text.StringUtil; |
| import org.jetbrains.android.compiler.artifact.AndroidArtifactSigningMode; |
| import org.jetbrains.android.util.AndroidCommonUtils; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.jps.android.model.JpsAndroidApplicationArtifactProperties; |
| import org.jetbrains.jps.android.model.JpsAndroidSdkProperties; |
| import org.jetbrains.jps.android.model.JpsAndroidSdkType; |
| import org.jetbrains.jps.model.JpsElementChildRole; |
| import org.jetbrains.jps.model.JpsSimpleElement; |
| import org.jetbrains.jps.model.ex.JpsElementBase; |
| import org.jetbrains.jps.model.ex.JpsElementChildRoleBase; |
| import org.jetbrains.jps.model.library.sdk.JpsSdk; |
| import org.jetbrains.jps.model.module.JpsModule; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| public class JpsAndroidApplicationArtifactPropertiesImpl extends JpsElementBase<JpsAndroidApplicationArtifactPropertiesImpl> |
| implements JpsAndroidApplicationArtifactProperties { |
| |
| public static final JpsElementChildRole<JpsAndroidApplicationArtifactProperties> ROLE = |
| JpsElementChildRoleBase.create("android application artifact properties"); |
| |
| private final MyState myState = new MyState(); |
| |
| public JpsAndroidApplicationArtifactPropertiesImpl() { |
| } |
| |
| public JpsAndroidApplicationArtifactPropertiesImpl(@NotNull MyState state) { |
| myState.SIGNING_MODE = state.SIGNING_MODE; |
| myState.KEY_STORE_URL = state.KEY_STORE_URL; |
| myState.KEY_STORE_PASSWORD = state.KEY_STORE_PASSWORD; |
| myState.KEY_ALIAS = state.KEY_ALIAS; |
| myState.KEY_PASSWORD = state.KEY_PASSWORD; |
| myState.PROGUARD_CFG_FILES = state.PROGUARD_CFG_FILES; |
| myState.RUN_PROGUARD = state.RUN_PROGUARD; |
| } |
| |
| @NotNull |
| @Override |
| public JpsAndroidApplicationArtifactPropertiesImpl createCopy() { |
| return new JpsAndroidApplicationArtifactPropertiesImpl(myState); |
| } |
| |
| @Override |
| public void applyChanges(@NotNull JpsAndroidApplicationArtifactPropertiesImpl modified) { |
| setSigningMode(modified.getSigningMode()); |
| setKeyStoreUrl(modified.getKeyStoreUrl()); |
| setKeyStorePassword(modified.getKeyStorePassword()); |
| setKeyAlias(modified.getKeyAlias()); |
| setKeyPassword(modified.getKeyPassword()); |
| setRunProGuard(modified.isRunProGuard()); |
| setProGuardCfgFiles(modified.getProGuardCfgFiles()); |
| } |
| |
| @NotNull |
| public MyState getState() { |
| return myState; |
| } |
| |
| @Override |
| public AndroidArtifactSigningMode getSigningMode() { |
| return myState.SIGNING_MODE; |
| } |
| |
| @Override |
| public void setSigningMode(AndroidArtifactSigningMode mode) { |
| if (!myState.SIGNING_MODE.equals(mode)) { |
| myState.SIGNING_MODE = mode; |
| fireElementChanged(); |
| } |
| } |
| |
| @Override |
| public String getKeyStoreUrl() { |
| return myState.KEY_STORE_URL; |
| } |
| |
| @Override |
| public void setKeyStoreUrl(String url) { |
| if (!myState.KEY_STORE_URL.equals(url)) { |
| myState.KEY_STORE_URL = url; |
| fireElementChanged(); |
| } |
| } |
| |
| @Override |
| public String getKeyStorePassword() { |
| return myState.KEY_STORE_PASSWORD; |
| } |
| |
| @Override |
| public void setKeyStorePassword(String password) { |
| if (!myState.KEY_STORE_PASSWORD.equals(password)) { |
| myState.KEY_STORE_PASSWORD = password; |
| fireElementChanged(); |
| } |
| } |
| |
| @Override |
| public String getKeyAlias() { |
| return myState.KEY_ALIAS; |
| } |
| |
| @Override |
| public void setKeyAlias(String alias) { |
| if (!myState.KEY_ALIAS.equals(alias)) { |
| myState.KEY_ALIAS = alias; |
| fireElementChanged(); |
| } |
| } |
| |
| @Override |
| public String getKeyPassword() { |
| return myState.KEY_PASSWORD; |
| } |
| |
| @Override |
| public void setKeyPassword(String password) { |
| if (!myState.KEY_PASSWORD.equals(password)) { |
| myState.KEY_PASSWORD = password; |
| fireElementChanged(); |
| } |
| } |
| |
| @Override |
| public boolean isRunProGuard() { |
| return myState.RUN_PROGUARD; |
| } |
| |
| @Override |
| public void setRunProGuard(boolean value) { |
| if (myState.RUN_PROGUARD != value) { |
| myState.RUN_PROGUARD = value; |
| fireElementChanged(); |
| } |
| } |
| |
| @Override |
| public List<String> getProGuardCfgFiles() { |
| return myState.PROGUARD_CFG_FILES; |
| } |
| |
| @Override |
| public List<String> getProGuardCfgFiles(@NotNull JpsModule module) { |
| final List<String> urls = getProGuardCfgFiles(); |
| |
| if (urls == null || urls.size() == 0) { |
| return urls; |
| } |
| final JpsSdk<JpsSimpleElement<JpsAndroidSdkProperties>> sdk = module.getSdk(JpsAndroidSdkType.INSTANCE); |
| final String sdkHomePath = sdk != null ? FileUtil.toSystemIndependentName(sdk.getHomePath()) : null; |
| |
| if (sdkHomePath == null || sdkHomePath.length() == 0) { |
| return urls; |
| } |
| final List<String> result = new ArrayList<String>(urls.size()); |
| |
| for (String url : urls) { |
| result.add(StringUtil.replace(url, AndroidCommonUtils.SDK_HOME_MACRO, sdkHomePath)); |
| } |
| return result; |
| } |
| |
| @Override |
| public void setProGuardCfgFiles(List<String> urls) { |
| if (!myState.PROGUARD_CFG_FILES.equals(urls)) { |
| myState.PROGUARD_CFG_FILES = urls; |
| fireElementChanged(); |
| } |
| } |
| |
| public static class MyState { |
| public AndroidArtifactSigningMode SIGNING_MODE = AndroidArtifactSigningMode.RELEASE_UNSIGNED; |
| public String KEY_STORE_URL = ""; |
| public String KEY_STORE_PASSWORD = ""; |
| public String KEY_ALIAS = ""; |
| public String KEY_PASSWORD = ""; |
| public boolean RUN_PROGUARD; |
| public List<String> PROGUARD_CFG_FILES = new ArrayList<String>(); |
| } |
| } |