/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.bin.argparser;
import jalview.bin.argparser.Arg.Opt;
import jalview.bin.argparser.Arg.Type;
/**
* A helper class to keep an index of argument position with argument values
*/
public class ArgValue implements Comparable
{
private Arg arg;
private int argIndex;
private String value;
/*
* Type type is only really used by --help-type
*/
private Type type = null;
/*
* This id is set by a subVal id= to identify the product of this ArgValue
* later. Set but not currently used.
*/
private String id;
private SubVals subVals;
protected ArgValue(Arg a, SubVals sv, Type type, String content,
int argIndex)
{
this.arg = a;
this.value = content;
this.argIndex = argIndex;
this.subVals = sv == null ? new SubVals("") : sv;
this.setType(type);
}
protected ArgValue(Arg a, Type type, String value, int argIndex)
{
this.arg = a;
this.argIndex = argIndex;
this.subVals = new SubVals(value);
this.value = getSubVals().getContent();
this.setType(type);
}
protected void setType(Type t)
{
if (this.getArg().hasOption(Opt.HASTYPE))
this.type = t;
}
public Type getType()
{
return type;
}
public Arg getArg()
{
return arg;
}
public String getValue()
{
return value;
}
public int getArgIndex()
{
return argIndex;
}
protected void setId(String i)
{
id = i;
}
public String getId()
{
return id;
}
public SubVals getSubVals()
{
return subVals;
}
public String getSubVal(String key)
{
if (subVals == null || !subVals.has(key))
return null;
return subVals.get(key);
}
protected void putSubVal(String key, String val)
{
this.subVals.put(key, val);
}
@Override
public final int compareTo(ArgValue o)
{
return this.getArgIndex() - o.getArgIndex();
}
}