X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2Fargparser%2FArgValuesMap.java;h=4aa85701b95036e2f9d55ea303162d51e06161e8;hb=871535152992c147f2175c3006b6bec4615fead4;hp=158041ba0336de47bad2ad3301b84e0babc12c3d;hpb=79456f40b33e73e2fb5420a3287ae80854281ef6;p=jalview.git diff --git a/src/jalview/bin/argparser/ArgValuesMap.java b/src/jalview/bin/argparser/ArgValuesMap.java index 158041b..4aa8570 100644 --- a/src/jalview/bin/argparser/ArgValuesMap.java +++ b/src/jalview/bin/argparser/ArgValuesMap.java @@ -55,17 +55,6 @@ public class ArgValuesMap m.put(a, new ArgValues(a)); } - protected void addArgValue(Arg a, ArgValue av) - { - if (getMap() == null) - m = new HashMap(); - - if (!m.containsKey(a)) - m.put(a, new ArgValues(a)); - ArgValues avs = m.get(a); - avs.addArgValue(av); - } - public ArgValues getArgValues(Arg a) { return m == null ? null : m.get(a); @@ -131,6 +120,33 @@ public class ArgValuesMap return m.keySet(); } + public ArgValue getArgValueOfArgWithSubValKey(Arg a, String svKey) + { + return getArgValueOfArgWithSubValKey(a, svKey, false); + } + + public ArgValue getArgValueOfArgWithSubValKey(Arg a, String svKey, + boolean last) + { + ArgValues avs = this.getArgValues(a); + if (avs == null) + { + return null; + } + List compareAvs = avs.getArgValueList(); + for (int i = 0; i < compareAvs.size(); i++) + { + int index = last ? compareAvs.size() - 1 - i : i; + ArgValue av = compareAvs.get(index); + SubVals sv = av.getSubVals(); + if (sv.has(svKey) && !sv.get(svKey).equals("false")) + { + return av; + } + } + return null; + } + public ArgValue getClosestPreviousArgValueOfArg(ArgValue thisAv, Arg a) { ArgValue closestAv = null; @@ -172,6 +188,7 @@ public class ArgValuesMap return closestAv; } + // TODO this is incomplete and currently unused (fortunately) public ArgValue[] getArgValuesReferringTo(String key, String value, Arg a) { // this looks for the *next* arg that *might* be referring back to @@ -209,7 +226,16 @@ public class ArgValuesMap */ public String getBasename() { - return getDirOrBasename(false); + return getDirBasenameOrExtension(false, false, false); + } + + /* + * This method returns the basename of the first --append or --open value. + * Used primarily for substitutions in output filenames. + */ + public String getExtension() + { + return getDirBasenameOrExtension(false, true, false); } /* @@ -218,10 +244,11 @@ public class ArgValuesMap */ public String getDirname() { - return getDirOrBasename(true); + return getDirBasenameOrExtension(true, false, false); } - public String getDirOrBasename(boolean dirname) + public String getDirBasenameOrExtension(boolean dirname, + boolean extension, boolean absoluteDirname) { String filename = null; String appendVal = getValue(Arg.APPEND); @@ -234,7 +261,11 @@ public class ArgValuesMap return null; File file = new File(filename); - return dirname ? FileUtils.getDirname(file) + if (dirname) + { + return FileUtils.getDirname(file); + } + return extension ? FileUtils.getExtension(file) : FileUtils.getBasename(file); }