/*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.arquillian.container;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author Paul Bakker - paul.bakker.nl@gmail.com
*/
public class Container implements Comparable<Container> {
private static final Map<String,String> ABBREVIATIONS = new HashMap<String,String>();
static {
ABBREVIATIONS.put("jbossas-", "jboss-as-");
ABBREVIATIONS.put("wls-", "weblogic-server-");
ABBREVIATIONS.put("was-", "websphere-as-");
}
private String groupId;
private String artifactId;
private String name;
private ContainerType containerType;
private List<Dependency> dependencies;
private Dependency download;
private List<Configuration> configurations;
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getArtifactId() {
return artifactId;
}
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ContainerType getContainerType() {
return containerType;
}
public void setContainerType(ContainerType containerType) {
this.containerType = containerType;
}
public List<Dependency> getDependencies() {
return dependencies;
}
public void setDependencies(List<Dependency> dependencies) {
this.dependencies = dependencies;
}
public Dependency getDownload() {
return download;
}
public void setDownload(Dependency download) {
this.download = download;
}
public List<Configuration> getConfigurations() {
return configurations;
}
public void setConfigurations(List<Configuration> configurations) {
this.configurations = configurations;
}
public String getId() {
return getBaseId();
}
public String getDisplayName() {
return expandAbbr(getBaseId()).replaceAll("-", "_").toUpperCase();
}
public String getProfileId() {
return "arquillian-" + getBaseId();
}
private String getBaseId() {
String id = getArtifactId().replaceAll("arquillian-(?:container-)?", "");
// HACK fix names for JBoss AS containers since they don't follow the naming conventions
if ("org.jboss.as".equals(getGroupId()))
{
id = id.replace("jboss-as-", "jbossas-") + "-7";
}
return id;
}
public int compareTo(Container other) {
return getId().compareTo(other.getId());
}
@Override
public String toString() {
return getDisplayName();
}
public static String idForDisplayName(String displayName) {
return abbr(displayName.replaceAll("_", "-").toLowerCase());
}
public static String expandAbbr(String id) {
for (Map.Entry<String,String> abbr : ABBREVIATIONS.entrySet()) {
if (id.contains(abbr.getKey())) {
id = id.replace(abbr.getKey(), abbr.getValue());
}
}
return id;
}
public static String abbr(String id) {
for (Map.Entry<String,String> abbr : ABBREVIATIONS.entrySet()) {
if (id.contains(abbr.getValue())) {
id = id.replace(abbr.getValue(), abbr.getKey());
}
}
return id;
}
}