X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2Fargparser%2FArgValuesMap.java;h=4aa85701b95036e2f9d55ea303162d51e06161e8;hb=871535152992c147f2175c3006b6bec4615fead4;hp=340d65af8b5c0b583d7811072ac92b6b12fc18e7;hpb=ab54fa42cc7b67c41afde9411f183cac60743071;p=jalview.git diff --git a/src/jalview/bin/argparser/ArgValuesMap.java b/src/jalview/bin/argparser/ArgValuesMap.java index 340d65a..4aa8570 100644 --- a/src/jalview/bin/argparser/ArgValuesMap.java +++ b/src/jalview/bin/argparser/ArgValuesMap.java @@ -18,16 +18,25 @@ public class ArgValuesMap { protected Map m; - protected ArgValuesMap() + private String linkedId; + + protected ArgValuesMap(String linkedId) { + this.linkedId = linkedId; this.newMap(); } - protected ArgValuesMap(Map map) + protected ArgValuesMap(String linkedId, Map map) { + this.linkedId = linkedId; this.m = map; } + public String getLinkedId() + { + return linkedId; + } + private Map getMap() { return m; @@ -46,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); @@ -122,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; @@ -163,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 @@ -200,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); } /* @@ -209,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); @@ -225,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); }