package com.amazonaws.eclipse.opsworks.deploy.wizard.model; import java.util.Collections; import java.util.LinkedList; import java.util.List; import org.eclipse.core.resources.IProject; import com.amazonaws.eclipse.core.regions.Region; import com.amazonaws.services.opsworks.model.App; import com.amazonaws.services.opsworks.model.Stack; public class DeployProjectToOpsworksWizardDataModel { public static final String IS_CREATING_NEW_JAVA_APP = "isCreatingNewJavaApp"; public static final String NEW_JAVA_APP_NAME = "newJavaAppName"; public static final String ENABLE_SSL = "enableSsl"; public static final String DEPLOY_COMMENT = "deployComment"; public static final String CUSTOM_CHEF_JSON = "customChefJson"; private final IProject project; /* Page 1*/ private Region region; private Stack existingStack; private boolean isCreatingNewJavaApp; private App existingJavaApp; private String newJavaAppName; /* Page 2*/ private S3ApplicationSource s3ApplicationSource = new S3ApplicationSource(); private List<EnvironmentVariable> environmentVariables = new LinkedList<EnvironmentVariable>(); private List<String> customDomains = new LinkedList<String>(); private boolean enableSsl; private SslConfiguration sslConfiguration = new SslConfiguration(); /* Page 3*/ private String deployComment; private String customChefJson; /** * @param project * The Eclipse local project that is to be deployed. */ public DeployProjectToOpsworksWizardDataModel(IProject project) { this.project = project; } public IProject getProject() { return project; } public Region getRegion() { return region; } public void setRegion(Region region) { this.region = region; } public Stack getExistingStack() { return existingStack; } public void setExistingStack(Stack existingStack) { this.existingStack = existingStack; } public boolean getIsCreatingNewJavaApp() { return isCreatingNewJavaApp; } public void setIsCreatingNewJavaApp(boolean isCreatingNewJavaApp) { this.isCreatingNewJavaApp = isCreatingNewJavaApp; } public App getExistingJavaApp() { return existingJavaApp; } public void setExistingJavaApp(App existingJavaApp) { this.existingJavaApp = existingJavaApp; } public String getNewJavaAppName() { return newJavaAppName; } public void setNewJavaAppName(String newJavaAppName) { this.newJavaAppName = newJavaAppName; } public S3ApplicationSource getS3ApplicationSource() { return s3ApplicationSource; } public void setS3ApplicationSource(S3ApplicationSource s3ApplicationSource) { this.s3ApplicationSource = s3ApplicationSource; } public List<EnvironmentVariable> getEnvironmentVariables() { return Collections.unmodifiableList(environmentVariables); } public void addEnvironmentVariable(EnvironmentVariable var) { environmentVariables.add(var); } public void clearEnvironmentVariable() { environmentVariables.clear(); } public List<String> getCustomDomains() { return Collections.unmodifiableList(customDomains); } public void addCustomDomain(String domain) { customDomains.add(domain); } public void clearCustomDomains() { customDomains.clear(); } public boolean isEnableSsl() { return enableSsl; } public void setEnableSsl(boolean enableSsl) { this.enableSsl = enableSsl; } public SslConfiguration getSslConfiguration() { return sslConfiguration; } public void setSslConfiguration(SslConfiguration sslConfiguration) { this.sslConfiguration = sslConfiguration; } public String getDeployComment() { return deployComment; } public void setDeployComment(String deployComment) { this.deployComment = deployComment; } public String getCustomChefJson() { return customChefJson; } public void setCustomChefJson(String customChefJson) { this.customChefJson = customChefJson; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{") .append("eclipse-project=" + project.getName()) .append(", region=" + region) .append(", stack=" + existingStack.getName()) .append(", isCreatingNewJavaApp=" + isCreatingNewJavaApp) .append(", existingJavaApp=" + (existingJavaApp == null ? null : existingJavaApp.getName())) .append(", newJavaAppName=" + newJavaAppName) .append(", s3ApplicationSource=" + s3ApplicationSource) .append(", environmentVariables=" + environmentVariables) .append(", customDomains=" + customDomains) .append(", enableSsl=" + enableSsl) .append(", sslConfiguration=" + sslConfiguration) .append(", deployComment=" + deployComment) .append(", customChefJson=" + customChefJson) .append("}") ; return sb.toString(); } public static class EnvironmentVariable { public static final String KEY = "key"; public static final String VALUE = "value"; public static final String SECURE = "secure"; private String key; private String value; private boolean secure; public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public boolean isSecure() { return secure; } public void setSecure(boolean secure) { this.secure = secure; } public com.amazonaws.services.opsworks.model.EnvironmentVariable toSdkModel() { return new com.amazonaws.services.opsworks.model.EnvironmentVariable() .withKey(key) .withValue(value) .withSecure(secure); } @Override public String toString() { return String.format("{ key=%s, value=%s, secure=%s }", key, value, secure); } } public static class SslConfiguration { public static final String CERTIFICATE = "certificate"; public static final String CHAIN = "chain"; public static final String PRIVATE_KEY = "privateKey"; private String certificate; private String chain; private String privateKey; public String getCertificate() { return certificate; } public void setCertificate(String certificate) { this.certificate = certificate; } public String getChain() { return chain; } public void setChain(String chain) { this.chain = chain; } public String getPrivateKey() { return privateKey; } public void setPrivateKey(String privateKey) { this.privateKey = privateKey; } public com.amazonaws.services.opsworks.model.SslConfiguration toSdkModel() { return new com.amazonaws.services.opsworks.model.SslConfiguration() .withCertificate(certificate) .withChain(chain) .withPrivateKey(privateKey); } @Override public String toString() { return String.format("{ certificate=%s, chain=%s, privateKey=%s }", certificate, chain, privateKey); } } }