(LoadContext context, CDOMObject obj, String value)
| 54 | } |
| 55 | |
| 56 | @Override |
| 57 | protected ParseResult parseTokenWithSeparator(LoadContext context, CDOMObject obj, String value) |
| 58 | { |
| 59 | if (obj instanceof Ungranted) |
| 60 | { |
| 61 | return new ParseResult.Fail( |
| 62 | "Cannot use " + getTokenName() + " on an Ungranted object type: " + obj.getClass().getSimpleName()); |
| 63 | } |
| 64 | if (Constants.LST_DOT_CLEAR.equals(value)) |
| 65 | { |
| 66 | context.getObjectContext().removeList(obj, ListKey.DAMAGE_REDUCTION); |
| 67 | return ParseResult.SUCCESS; |
| 68 | } |
| 69 | |
| 70 | StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); |
| 71 | String drString = tok.nextToken(); |
| 72 | ParseResult pr = checkForIllegalSeparator('/', drString); |
| 73 | if (!pr.passed()) |
| 74 | { |
| 75 | return pr; |
| 76 | } |
| 77 | String[] values = drString.split("/"); |
| 78 | if (values.length != 2) |
| 79 | { |
| 80 | ComplexParseResult cpr = new ComplexParseResult(); |
| 81 | cpr.addErrorMessage(getTokenName() + " failed to build DamageReduction with value " + value); |
| 82 | cpr.addErrorMessage(" ...expected a String with one / as a separator"); |
| 83 | return cpr; |
| 84 | } |
| 85 | Formula formula = FormulaFactory.getFormulaFor(values[0]); |
| 86 | if (!formula.isValid()) |
| 87 | { |
| 88 | return new ParseResult.Fail("Formula in " + getTokenName() + " was not valid: " + formula.toString()); |
| 89 | } |
| 90 | DamageReduction dr = new DamageReduction(formula, values[1]); |
| 91 | |
| 92 | if (tok.hasMoreTokens()) |
| 93 | { |
| 94 | String currentToken = tok.nextToken(); |
| 95 | Prerequisite prereq = getPrerequisite(currentToken); |
| 96 | if (prereq == null) |
| 97 | { |
| 98 | return ParseResult.INTERNAL_ERROR; |
| 99 | } |
| 100 | dr.addPrerequisite(prereq); |
| 101 | } |
| 102 | context.getObjectContext().addToList(obj, ListKey.DAMAGE_REDUCTION, dr); |
| 103 | return ParseResult.SUCCESS; |
| 104 | } |
| 105 | |
| 106 | @Override |
| 107 | public String[] unparse(LoadContext context, CDOMObject obj) |
nothing calls this directly
no test coverage detected