X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2Fargparser%2FArgValues.java;h=55e12116726a14371ebc37a5fa829fcc608368cc;hb=bc1a3842b31a35a7794f4afec4911ad421c7c3e4;hp=f25fc9ad0876497c21f86ce411fc64815087b70e;hpb=92c48abf7079358345432e020b72d025fc14f75d;p=jalview.git diff --git a/src/jalview/bin/argparser/ArgValues.java b/src/jalview/bin/argparser/ArgValues.java index f25fc9a..55e1211 100644 --- a/src/jalview/bin/argparser/ArgValues.java +++ b/src/jalview/bin/argparser/ArgValues.java @@ -1,3 +1,23 @@ +/* + * 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 java.util.ArrayList; @@ -24,6 +44,8 @@ public class ArgValues private boolean setByWildcard = false; + private String givenLinkedId = null; + private int boolIndex = -1; private List argsIndexes; @@ -32,16 +54,19 @@ public class ArgValues private Map idMap = new HashMap<>(); + private ArgValuesMap avm; + /* * Type type is only really used by --help-type */ private Type type = null; - protected ArgValues(Arg a) + protected ArgValues(Arg a, ArgValuesMap avm) { this.arg = a; this.argValueList = new ArrayList(); this.boolValue = arg.getDefaultBoolValue(); + this.avm = avm; } protected boolean setByWildcard() @@ -94,7 +119,7 @@ public class ArgValues } protected void setBoolean(Type t, boolean b, int i, - boolean beingSetByWildcard) + boolean beingSetByWildcard, String givenLinkedId) { this.setType(t); // don't overwrite a wildcard set boolean with a non-wildcard set boolean @@ -103,6 +128,7 @@ public class ArgValues this.boolValue = b; this.boolIndex = i; this.setSetByWildcard(beingSetByWildcard); + this.givenLinkedId = givenLinkedId; } protected boolean getBoolean() @@ -137,23 +163,25 @@ public class ArgValues } protected void addValue(Type type, String val, int argIndex, - boolean wildcard) + boolean wildcard, String givenLinkedId) { - addArgValue(new ArgValue(arg(), type, val, argIndex), wildcard); + addArgValue(new ArgValue(arg(), type, val, argIndex, wildcard, + givenLinkedId, avm.getLinkedId()), wildcard); } protected void addValue(SubVals sv, Type type, String content, - int argIndex, boolean wildcard) + int argIndex, boolean wildcard, String givenLinkedId) { - addArgValue(new ArgValue(arg(), sv, type, content, argIndex), wildcard); + addArgValue(new ArgValue(arg(), sv, type, content, argIndex, wildcard, + givenLinkedId, avm.getLinkedId()), wildcard); } protected void addArgValue(ArgValue av, boolean beingSetByWildcard) { // allow a non-wildcard value to overwrite a wildcard set single value - boolean overwrite = !arg.hasOption(Opt.MULTI) && setByWildcard + boolean overwrite = !arg.hasOption(Opt.MULTIVALUE) && setByWildcard && !beingSetByWildcard; - if ((!arg.hasOption(Opt.MULTI) && argValueList.size() > 0) + if ((!arg.hasOption(Opt.MULTIVALUE) && argValueList.size() > 0) && !overwrite) return; if (arg.hasOption(Opt.NODUPLICATEVALUES) @@ -182,7 +210,7 @@ public class ArgValues protected ArgValue getArgValue() { - if (arg.hasOption(Opt.MULTI)) + if (arg.hasOption(Opt.MULTIVALUE)) Console.warn("Requesting single value for multi value argument"); return argValueList.size() > 0 ? argValueList.get(0) : null; } @@ -218,4 +246,11 @@ public class ArgValues } return false; } + + public boolean setByWildcardLinkedId() + { + // looking for deliberately user set wildcard + return this.setByWildcard && this.givenLinkedId != null; + } + } \ No newline at end of file