package org.arquillian.cube.docker.impl.client;
import org.arquillian.cube.docker.impl.client.config.DockerCompositions;
import org.arquillian.cube.spi.AutoStartParser;
import org.jboss.arquillian.core.api.Injector;
public class AutoStartParserFactory {
public static AutoStartParser create(String expression, DockerCompositions containersDefinition, Injector injector) {
if (isNone(expression)) {
return new NoneAutoStartParser();
} else {
if (isRegularExpressionBased(expression)) {
return new RegularExpressionAutoStartParser(expression, containersDefinition);
} else {
if (isCustomImplementation(expression)) {
return new CustomAutoStartParser(injector,
expression.substring(
expression.indexOf(CustomAutoStartParser.CUSTOM_PREFIX)
+ CustomAutoStartParser.CUSTOM_PREFIX.length()).trim()
);
} else {
if (isCommaSeparated(expression)) {
return new CommaSeparatedAutoStartParser(expression, containersDefinition);
} else {
return null;
}
}
}
}
}
private static boolean isCustomImplementation(String expression) {
return expression != null && expression.startsWith(CustomAutoStartParser.CUSTOM_PREFIX);
}
private static boolean isNone(String expression) {
return expression != null && "[none]".equals(expression.trim());
}
private static boolean isCommaSeparated(String expression) {
return expression != null;
}
private static boolean isRegularExpressionBased(String expression) {
return expression != null && expression.startsWith(RegularExpressionAutoStartParser.REGULAR_EXPRESSION_PREFIX);
}
}