package com.ontology2.centipede.parser;
import java.io.File;
import java.util.List;
public class DirectoryExample implements HasOptions {
@Option(description="default directory")
public String dir;
@Option(description="left directory")
public String leftDir;
@Option(description="right directory")
public String rightDir;
@Option(description="output directory")
public String outputDir;
@Option(description="left",contextualConverter=DirectoryExample.LeftSubstitutor.class)
public List<String> left;
@Option(description="right",contextualConverter=DirectoryExample.RightSubstitutor.class)
public List<String> right;
@Option(description="output",contextualConverter=DirectoryExample.OutputSubstitutor.class)
public String output;
public abstract static class DirectorySubstitutor<T> implements ContextualConverter<String> {
public String convert(String value, HasOptions that) {
String defaultDir=getDefaultDir((T) that);
if(defaultDir.isEmpty())
return value;
File there=new File(defaultDir,value);
return there.getPath();
}
public abstract String getDefaultDir(T that);
}
public static class LeftSubstitutor extends DirectorySubstitutor<DirectoryExample> {
@Override
public String getDefaultDir(DirectoryExample that) {
return that.leftDir.isEmpty() ? that.dir : that.leftDir;
}
}
public static class RightSubstitutor extends DirectorySubstitutor<DirectoryExample> {
@Override
public String getDefaultDir(DirectoryExample that) {
return that.rightDir.isEmpty() ? that.dir : that.rightDir;
}
}
public static class OutputSubstitutor extends DirectorySubstitutor<DirectoryExample> {
@Override
public String getDefaultDir(DirectoryExample that) {
return that.outputDir.isEmpty() ? that.dir : that.outputDir;
}
}
}