package net.jsunit.configuration;
import net.jsunit.utility.StringUtility;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public enum ServerType {
STANDARD(
"Standard",
false,
true,
false,
Arrays.asList(new ConfigurationProperty[]{
ConfigurationProperty.CLOSE_BROWSERS_AFTER_TEST_RUNS,
ConfigurationProperty.LOGS_DIRECTORY,
ConfigurationProperty.PORT,
ConfigurationProperty.RESOURCE_BASE,
ConfigurationProperty.TIMEOUT_SECONDS,
}),
Arrays.asList(new ConfigurationProperty[]{
ConfigurationProperty.BROWSER_FILE_NAMES,
ConfigurationProperty.DESCRIPTION,
ConfigurationProperty.URL,
})
),
STANDARD_TEMPORARY(
"Standard Temporary",
STANDARD.isFarm(),
false,
true,
STANDARD.getRequiredConfigurationProperties(),
STANDARD.getOptionalConfigurationProperties()
),
FARM(
"Farm",
true,
true,
false,
Arrays.asList(new ConfigurationProperty[]{
ConfigurationProperty.LOGS_DIRECTORY,
ConfigurationProperty.PORT,
ConfigurationProperty.REMOTE_MACHINE_URLS,
ConfigurationProperty.IGNORE_UNRESPONSIVE_REMOTE_MACHINES,
}),
Arrays.asList(new ConfigurationProperty []{
ConfigurationProperty.DESCRIPTION,
ConfigurationProperty.RESOURCE_BASE,
ConfigurationProperty.URL,
})
);
private List<ConfigurationProperty> requiredProperties;
private List<ConfigurationProperty> optionalProperties;
private String displayName;
private boolean isFarm;
private boolean performUpToDateCheck;
private boolean isTemporary;
private ServerType(
String displayName,
boolean isFarm,
boolean performVersionUpToDateCheck,
boolean isTemporary,
List<ConfigurationProperty> required,
List<ConfigurationProperty> optional) {
this.performUpToDateCheck = performVersionUpToDateCheck;
this.displayName = displayName;
this.isFarm = isFarm;
this.isTemporary = isTemporary;
this.requiredProperties = required;
this.optionalProperties = optional;
}
public List<ConfigurationProperty> getRequiredConfigurationProperties() {
return requiredProperties;
}
public List<ConfigurationProperty> getOptionalConfigurationProperties() {
return optionalProperties;
}
public List<ConfigurationProperty> getPropertiesInvalidFor(Configuration configuration) {
List<ConfigurationProperty> result = new ArrayList<ConfigurationProperty>();
for (ConfigurationProperty property : getRequiredAndOptionalConfigurationProperties()) {
try {
String valueString = property.getValueString(configuration);
if (isPropertyRequired(property) && StringUtility.isEmpty(valueString))
result.add(property);
} catch (ConfigurationException e) {
result.add(property);
}
}
return result;
}
private boolean isPropertyRequired(ConfigurationProperty property) {
return getRequiredConfigurationProperties().contains(property);
}
public List<ConfigurationProperty> getRequiredAndOptionalConfigurationProperties() {
List<ConfigurationProperty> result = new ArrayList<ConfigurationProperty>();
result.addAll(getRequiredConfigurationProperties());
result.addAll(getOptionalConfigurationProperties());
Collections.sort(result, ConfigurationProperty.comparator());
return result;
}
public boolean isFarm() {
return isFarm;
}
public String getDisplayName() {
return displayName;
}
public boolean shouldPerformUpToDateCheck() {
return performUpToDateCheck;
}
public boolean isTemporary() {
return isTemporary;
}
}