package com.amazonaws.eclipse.opsworks.deploy.wizard.page;
import static com.amazonaws.eclipse.core.ui.wizards.WizardWidgetFactory.newFillingLabel;
import static com.amazonaws.eclipse.core.ui.wizards.WizardWidgetFactory.newGroup;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import com.amazonaws.eclipse.opsworks.deploy.wizard.model.S3ApplicationSource;
import com.amazonaws.services.opsworks.model.App;
import com.amazonaws.services.opsworks.model.EnvironmentVariable;
public class ExistingAppConfigurationReviewComposite extends Composite {
private final App app;
private final S3ApplicationSource parsedS3ApplicationSource;
ExistingAppConfigurationReviewComposite(Composite parent, App app) {
super(parent, SWT.NONE);
this.app = app;
parsedS3ApplicationSource = S3ApplicationSource.parse(app.getAppSource());
setLayout(new GridLayout(1, false));
createControls(this);
}
S3ApplicationSource getParsedS3ApplicationSource() {
return parsedS3ApplicationSource;
}
private void createControls(Composite parent) {
createBasicSettingSection(parent);
createApplicationSourceSection(parent);
createEnvironmentVariablesSection(parent);
createCustomDomainsSection(parent);
createSslSettingsSection(parent);
}
private void createBasicSettingSection(Composite parent) {
Group settingsGroup = newGroup(parent, "Settings");
settingsGroup.setLayout(new GridLayout(2, true));
newFillingLabel(settingsGroup, "Name").setFont(JFaceResources.getBannerFont());
newFillingLabel(settingsGroup, app.getName());
newFillingLabel(settingsGroup, "Short name").setFont(JFaceResources.getBannerFont());
newFillingLabel(settingsGroup, app.getShortname());
newFillingLabel(settingsGroup, "OpsWorks ID").setFont(JFaceResources.getBannerFont());
newFillingLabel(settingsGroup, app.getAppId());
newFillingLabel(settingsGroup, "Type").setFont(JFaceResources.getBannerFont());
newFillingLabel(settingsGroup, toCamelCase(app.getType()));
}
private void createApplicationSourceSection(Composite parent) {
Group applicationSourceGroup = newGroup(parent, "Application Source");
applicationSourceGroup.setLayout(new GridLayout(2, true));
S3ApplicationSource s3Source = S3ApplicationSource.parse(app.getAppSource());
if (s3Source == null) {
newFillingLabel(
applicationSourceGroup,
String.format("Unrecognized application source %s:[%s]",
app.getAppSource().getType(), app.getAppSource().getUrl()),
2);
return;
}
newFillingLabel(applicationSourceGroup, "S3 bucket").setFont(JFaceResources.getBannerFont());
newFillingLabel(applicationSourceGroup, s3Source.getBucketName());
if (s3Source.getRegion() != null) {
newFillingLabel(applicationSourceGroup, "Bucket region").setFont(JFaceResources.getBannerFont());
newFillingLabel(applicationSourceGroup, s3Source.getRegion().getName());
}
newFillingLabel(applicationSourceGroup, "Key").setFont(JFaceResources.getBannerFont());
newFillingLabel(applicationSourceGroup, s3Source.getKeyName());
}
private void createEnvironmentVariablesSection(Composite parent) {
Group envVarGroup = newGroup(parent, "Environment Variables");
envVarGroup.setLayout(new GridLayout(2, true));
if (app.getEnvironment() == null || app.getEnvironment().isEmpty()) {
newFillingLabel(envVarGroup, "None", 2);
}
for (EnvironmentVariable envVar : app.getEnvironment()) {
newFillingLabel(envVarGroup, envVar.getKey()).setFont(JFaceResources.getBannerFont());
newFillingLabel(envVarGroup, envVar.getValue());
}
}
private void createCustomDomainsSection(Composite parent) {
Group domainsGroup = newGroup(parent, "Custom Domains");
domainsGroup.setLayout(new GridLayout(1, true));
if (app.getDomains() == null || app.getDomains().isEmpty()) {
newFillingLabel(domainsGroup, "None");
}
for (String domain : app.getDomains()) {
newFillingLabel(domainsGroup, domain);
}
}
private void createSslSettingsSection(Composite parent) {
Group sslSettingsGroup = newGroup(parent, "SSL Settings");
sslSettingsGroup.setLayout(new GridLayout(2, true));
newFillingLabel(sslSettingsGroup, "SSL enabled").setFont(JFaceResources.getBannerFont());
newFillingLabel(sslSettingsGroup, app.getEnableSsl() ? "Yes" : "No");
if (app.getEnableSsl()) {
newFillingLabel(sslSettingsGroup, "SSL certificate").setFont(JFaceResources.getBannerFont());
newFillingLabel(sslSettingsGroup, app.getSslConfiguration().getCertificate());
newFillingLabel(sslSettingsGroup, "SSL certificate key").setFont(JFaceResources.getBannerFont());
newFillingLabel(sslSettingsGroup, app.getSslConfiguration().getPrivateKey());
newFillingLabel(sslSettingsGroup, "SSL certificates of CA").setFont(JFaceResources.getBannerFont());
newFillingLabel(sslSettingsGroup, app.getSslConfiguration().getChain());
}
}
private static String toCamelCase(String string) {
if (string.length() == 0) {
return "";
} else if (string.length() == 1) {
return string.substring(0, 0).toUpperCase();
} else {
return string.substring(0, 1).toUpperCase() + string.substring(1);
}
}
}