X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2Fargparser%2FSubVals.java;h=196cd24522b7e5420b7e6bcc7f03399450225e82;hb=6dafac1b9bcc7265b0fb1641f7474a6c81b24119;hp=3c7ba7c746df7890690cbc02aecfdb566944dc79;hpb=58827f5ad6ff27d76c20c1aba96cd3b4a200a691;p=jalview.git diff --git a/src/jalview/bin/argparser/SubVals.java b/src/jalview/bin/argparser/SubVals.java index 3c7ba7c..196cd24 100644 --- a/src/jalview/bin/argparser/SubVals.java +++ b/src/jalview/bin/argparser/SubVals.java @@ -19,7 +19,7 @@ public class SubVals private int index = NOTSET; - private Map subVals = null; + private Map subValMap; private static char SEPARATOR = ';'; @@ -27,18 +27,24 @@ public class SubVals private String content = null; - public SubVals(SubVals sv, String c) + protected SubVals(SubVals sv, String c) { - if (sv != null) + if (sv == null) { - this.subVals = sv.getSubValsMap(); + this.subValMap = new HashMap<>(); + } + else + { + this.subValMap = sv == null ? new HashMap<>() : sv.getSubValMap(); this.index = sv.getIndex(); } this.content = c; } - public SubVals(String item) + protected SubVals(String item) { + if (subValMap == null) + subValMap = new HashMap<>(); this.parseVals(item); } @@ -56,8 +62,6 @@ public class SubVals for (String subvalString : subvalsString .split(Character.toString(SEPARATOR))) { - if (subVals == null) - subVals = new HashMap<>(); int equals = subvalString.indexOf(EQUALS); if (equals > -1) { @@ -73,7 +77,7 @@ public class SubVals } catch (NumberFormatException e) { // store this non-numeric key as a "true" value - subVals.put(subvalString, "true"); + this.put(subvalString, "true"); } } } @@ -91,25 +95,28 @@ public class SubVals protected void put(String key, String val) { - if (subVals == null) - subVals = new HashMap<>(); - subVals.put(key, val); + subValMap.put(key, val); } public boolean notSet() { // notSet is true if content present but nonsensical - return index == NOTSET && subVals == null; + return index == NOTSET && (subValMap == null || subValMap.size() == 0); + } + + public String getWithSubstitutions(ArgParser ap, String id, String key) + { + return ap.makeSubstitutions(subValMap.get(key), id); } public String get(String key) { - return subVals == null ? null : subVals.get(key); + return subValMap.get(key); } public boolean has(String key) { - return subVals == null ? false : subVals.containsKey(key); + return subValMap.containsKey(key); } public int getIndex() @@ -122,19 +129,19 @@ public class SubVals return content; } - protected Map getSubValsMap() + protected Map getSubValMap() { - return subVals; + return subValMap; } public String toString() { - if (subVals == null && getIndex() == NOTSET) + if (subValMap == null && getIndex() == NOTSET) return ""; StringBuilder sb = new StringBuilder(); List entries = new ArrayList<>(); - subVals.entrySet().stream().forEachOrdered( + subValMap.entrySet().stream().forEachOrdered( m -> entries.add(m.getValue().equals("true") ? m.getKey() : new StringBuilder().append(m.getKey()).append(EQUALS) .append(m.getValue()).toString()));