From: <th...@us...> - 2008-08-06 22:34:00
|
Revision: 7414 http://pcgen.svn.sourceforge.net/pcgen/?rev=7414&view=rev Author: thpr Date: 2008-08-06 22:34:06 +0000 (Wed, 06 Aug 2008) Log Message: ----------- updates for tests Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Movement.java Trunk/pcgen/code/src/java/plugin/lsttokens/AbilityLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/MoveLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/MovecloneLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/VFeatLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/domain/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/template/FeatToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Movement.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Movement.java 2008-08-06 22:33:26 UTC (rev 7413) +++ Trunk/pcgen/code/src/java/pcgen/core/Movement.java 2008-08-06 22:34:06 UTC (rev 7414) @@ -366,6 +366,22 @@ public void addTokenContents(StringBuilder txt) { + if (moveRatesFlag == 2) + { + txt.append(movementTypes[0]); + txt.append(','); + txt.append(movementTypes[1]); + txt.append(','); + if (movementMultOp[1].length() > 0) + { + txt.append(movementMultOp[1]).append(movementMult[1].intValue()); + } + else + { + txt.append(new DecimalFormat("###0").format(movements[1])); + } + return; + } for (int index = 0; index < movementTypes.length; ++index) { if (index > 0) @@ -385,7 +401,7 @@ } else { - txt.append(new DecimalFormat("###0.#").format(movements[index])); + txt.append(new DecimalFormat("###0").format(movements[index])); } } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/AbilityLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/AbilityLst.java 2008-08-06 22:33:26 UTC (rev 7413) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/AbilityLst.java 2008-08-06 22:34:06 UTC (rev 7414) @@ -229,8 +229,6 @@ return null; } - - TripleKeyMapToList<Ability.Nature, Category<Ability>, List<Prerequisite>, CDOMReference<Ability>> m = new TripleKeyMapToList<Ability.Nature, Category<Ability>, List<Prerequisite>, CDOMReference<Ability>>(); for (CDOMReference<Ability> ab : mtl.getKeySet()) { Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/MoveLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/MoveLst.java 2008-08-06 22:33:26 UTC (rev 7413) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/MoveLst.java 2008-08-06 22:34:06 UTC (rev 7414) @@ -34,7 +34,7 @@ return "MOVE"; } - private void validateMove(String value, String mod) + private boolean validateMove(String value, String mod) { try { @@ -43,6 +43,7 @@ Logging.addParseMessage(Logging.LST_ERROR, "Invalid movement (cannot be negative): " + mod + " in MOVE: " + value); + return false; } } catch (NumberFormatException nfe) @@ -50,7 +51,9 @@ Logging.addParseMessage(Logging.LST_ERROR, "Invalid movement (must be an integer >= 0): " + mod + " in MOVE: " + value); + return false; } + return true; } public boolean parse(LoadContext context, CDOMObject obj, String value) @@ -70,7 +73,10 @@ { cm = new Movement(1); String mod = moves.nextToken(); - validateMove(value, mod); + if (!validateMove(value, mod)) + { + return false; + } cm.assignMovement(0, "Walk", mod); } else @@ -82,7 +88,10 @@ { String type = moves.nextToken(); String mod = moves.nextToken(); - validateMove(value, mod); + if (!validateMove(value, mod)) + { + return false; + } cm.assignMovement(x++, type, mod); } if (moves.countTokens() != 0) @@ -90,6 +99,7 @@ Logging.addParseMessage(Logging.LST_ERROR, "Badly formed MOVE token " + "(extra value at end of list): " + value); + return false; } } cm.setMoveRatesFlag(0); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/MovecloneLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/MovecloneLst.java 2008-08-06 22:33:26 UTC (rev 7413) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/MovecloneLst.java 2008-08-06 22:34:06 UTC (rev 7414) @@ -90,6 +90,20 @@ return false; } } + else + { + try + { + Integer.parseInt(formulaString); + } + catch (NumberFormatException e) + { + Logging.addParseMessage(Logging.LST_ERROR, getTokenName() + + " was expecting a Formula as the final value, was : " + + formulaString); + return false; + } + } Movement cm = new Movement(2); cm.assignMovement(0, oldType, "0"); cm.assignMovement(1, newType, formulaString); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/VFeatLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/VFeatLst.java 2008-08-06 22:33:26 UTC (rev 7413) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/VFeatLst.java 2008-08-06 22:34:06 UTC (rev 7414) @@ -3,8 +3,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Set; import java.util.StringTokenizer; +import java.util.TreeSet; +import pcgen.base.util.HashMapToList; import pcgen.base.util.MapToList; import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.CDOMObject; @@ -60,7 +63,7 @@ AbilityCategory category = AbilityCategory.FEAT; Nature nature = Ability.Nature.VIRTUAL; - CDOMReference<AbilityList> list = Ability.ABILITYLIST; + CDOMReference<AbilityList> list = Ability.FEATLIST; while (true) { if (token.equals(Constants.LST_DOT_CLEAR)) @@ -72,7 +75,7 @@ return false; } context.getListContext().removeAllFromList(getTokenName(), obj, - Ability.FEATLIST); + list); } else { @@ -144,9 +147,10 @@ // Zero indicates no Token return null; } - Collection<CDOMReference<Ability>> added = changes.getAdded(); + MapToList<CDOMReference<Ability>, AssociatedPrereqObject> added = changes + .getAddedAssociations(); Collection<CDOMReference<Ability>> removedItems = changes.getRemoved(); - StringBuilder sb = new StringBuilder(); + List<String> returnList = new ArrayList<String>(); if (changes.includesGlobalClear()) { if (removedItems != null && !removedItems.isEmpty()) @@ -156,7 +160,7 @@ + ": global .CLEAR and local .CLEAR. performed"); return null; } - sb.append(Constants.LST_DOT_CLEAR); + returnList.add(Constants.LST_DOT_CLEAR); } else if (removedItems != null && !removedItems.isEmpty()) { @@ -166,17 +170,34 @@ } if (added != null && !added.isEmpty()) { - if (sb.length() != 0) + HashMapToList<List<Prerequisite>, CDOMReference<Ability>> m = new HashMapToList<List<Prerequisite>, CDOMReference<Ability>>(); + for (CDOMReference<Ability> ab : mtl.getKeySet()) { - sb.append(Constants.PIPE); + for (AssociatedPrereqObject assoc : mtl.getListFor(ab)) + { + m.addToListFor(assoc.getPrerequisiteList(), ab); + } } - sb.append(ReferenceUtilities.joinLstFormat(added, Constants.PIPE)); + + Set<String> returnSet = new TreeSet<String>(); + for (List<Prerequisite> prereqs : m.getKeySet()) + { + StringBuilder sb = new StringBuilder(); + sb.append(ReferenceUtilities.joinLstFormat(m.getListFor(prereqs), Constants.PIPE)); + if (prereqs != null && !prereqs.isEmpty()) + { + sb.append(Constants.PIPE); + sb.append(getPrerequisiteString(context, prereqs)); + } + returnSet.add(sb.toString()); + } + returnList.addAll(returnSet); } - if (sb.length() == 0) + if (returnList.isEmpty()) { return null; } - return new String[] { sb.toString() }; + return returnList.toArray(new String[returnList.size()]); } public Class<CDOMObject> getTokenClass() Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/domain/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/domain/FeatToken.java 2008-08-06 22:33:26 UTC (rev 7413) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/domain/FeatToken.java 2008-08-06 22:34:06 UTC (rev 7414) @@ -11,7 +11,6 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.AssociationKey; -import pcgen.cdom.reference.ReferenceUtilities; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.AbilityUtilities; @@ -79,7 +78,8 @@ AssociatedPrereqObject assoc = context.getListContext() .addToList(getTokenName(), obj, Ability.FEATLIST, ability); - assoc.setAssociation(AssociationKey.NATURE, Ability.Nature.AUTOMATIC); + assoc.setAssociation(AssociationKey.NATURE, + Ability.Nature.AUTOMATIC); if (token.indexOf('(') != -1) { List<String> choices = new ArrayList<String>(); @@ -104,7 +104,8 @@ // Zero indicates no Token return null; } - Collection<CDOMReference<Ability>> added = changes.getAdded(); + MapToList<CDOMReference<Ability>, AssociatedPrereqObject> added = changes + .getAddedAssociations(); Collection<CDOMReference<Ability>> removedItems = changes.getRemoved(); StringBuilder sb = new StringBuilder(); if (changes.includesGlobalClear()) @@ -126,11 +127,20 @@ } if (added != null && !added.isEmpty()) { - if (sb.length() != 0) + boolean needsPipe = sb.length() != 0; + for (CDOMReference<Ability> ref : added.getKeySet()) { - sb.append(Constants.PIPE); + String lstFormat = ref.getLSTformat(); + for (int i = 0; i < added.sizeOfListFor(ref); i++) + { + if (needsPipe) + { + sb.append(Constants.PIPE); + } + needsPipe = true; + sb.append(lstFormat); + } } - sb.append(ReferenceUtilities.joinLstFormat(added, Constants.PIPE)); } if (sb.length() == 0) { Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/FeatToken.java 2008-08-06 22:33:26 UTC (rev 7413) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/FeatToken.java 2008-08-06 22:34:06 UTC (rev 7414) @@ -11,7 +11,6 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.AssociationKey; -import pcgen.cdom.reference.ReferenceUtilities; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.AbilityUtilities; @@ -26,20 +25,25 @@ /** * Class deals with FEAT Token */ -public class FeatToken extends AbstractToken implements CDOMPrimaryToken<Race> { +public class FeatToken extends AbstractToken implements CDOMPrimaryToken<Race> +{ public static final Class<Ability> ABILITY_CLASS = Ability.class; @Override - public String getTokenName() { + public String getTokenName() + { return "FEAT"; } - public boolean parse(LoadContext context, Race pct, String value) { + public boolean parse(LoadContext context, Race pct, String value) + { return parseFeat(context, pct, value); } - public boolean parseFeat(LoadContext context, CDOMObject obj, String value) { - if (isEmpty(value) || hasIllegalSeparator('|', value)) { + public boolean parseFeat(LoadContext context, CDOMObject obj, String value) + { + if (isEmpty(value) || hasIllegalSeparator('|', value)) + { return false; } @@ -47,28 +51,36 @@ boolean first = true; - while (tok.hasMoreTokens()) { + while (tok.hasMoreTokens()) + { String token = tok.nextToken(); - if (Constants.LST_DOT_CLEAR.equals(token)) { - if (!first) { + if (Constants.LST_DOT_CLEAR.equals(token)) + { + if (!first) + { Logging.errorPrint(" Non-sensical " + getTokenName() + ": .CLEAR was not the first list item: " + value); return false; } context.getListContext().removeAllFromList(getTokenName(), obj, Ability.FEATLIST); - } else { + } + else + { CDOMReference<Ability> ability = TokenUtilities .getTypeOrPrimitive(context, ABILITY_CLASS, AbilityCategory.FEAT, token); - if (ability == null) { + if (ability == null) + { return false; } AssociatedPrereqObject assoc = context.getListContext() .addToList(getTokenName(), obj, Ability.FEATLIST, ability); - assoc.setAssociation(AssociationKey.NATURE, Ability.Nature.AUTOMATIC); - if (token.indexOf('(') != -1) { + assoc.setAssociation(AssociationKey.NATURE, + Ability.Nature.AUTOMATIC); + if (token.indexOf('(') != -1) + { List<String> choices = new ArrayList<String>(); AbilityUtilities.getUndecoratedName(token, choices); assoc.setAssociation(AssociationKey.ASSOC_CHOICES, choices); @@ -79,45 +91,65 @@ return true; } - public String[] unparse(LoadContext context, Race pct) { + public String[] unparse(LoadContext context, Race pct) + { AssociatedChanges<CDOMReference<Ability>> changes = context .getListContext().getChangesInList(getTokenName(), pct, Ability.FEATLIST); MapToList<CDOMReference<Ability>, AssociatedPrereqObject> mtl = changes .getAddedAssociations(); - if (mtl == null || mtl.isEmpty()) { + if (mtl == null || mtl.isEmpty()) + { // Zero indicates no Token return null; } - Collection<CDOMReference<Ability>> added = changes.getAdded(); + MapToList<CDOMReference<Ability>, AssociatedPrereqObject> added = changes + .getAddedAssociations(); Collection<CDOMReference<Ability>> removedItems = changes.getRemoved(); StringBuilder sb = new StringBuilder(); - if (changes.includesGlobalClear()) { - if (removedItems != null && !removedItems.isEmpty()) { + if (changes.includesGlobalClear()) + { + if (removedItems != null && !removedItems.isEmpty()) + { context.addWriteMessage("Non-sensical relationship in " + getTokenName() + ": global .CLEAR and local .CLEAR. performed"); return null; } sb.append(Constants.LST_DOT_CLEAR); - } else if (removedItems != null && !removedItems.isEmpty()) { + } + else if (removedItems != null && !removedItems.isEmpty()) + { context.addWriteMessage(getTokenName() + " does not support " + Constants.LST_DOT_CLEAR_DOT); return null; } - if (added != null && !added.isEmpty()) { - if (sb.length() != 0) { - sb.append(Constants.PIPE); + if (added != null && !added.isEmpty()) + { + boolean needsPipe = sb.length() != 0; + for (CDOMReference<Ability> ref : added.getKeySet()) + { + String lstFormat = ref.getLSTformat(); + for (int i = 0; i < added.sizeOfListFor(ref); i++) + { + if (needsPipe) + { + sb.append(Constants.PIPE); + } + needsPipe = true; + sb.append(lstFormat); + } } - sb.append(ReferenceUtilities.joinLstFormat(added, Constants.PIPE)); } - if (sb.length() == 0) { + if (sb.length() == 0) + { return null; } return new String[] { sb.toString() }; } - public Class<Race> getTokenClass() { + public Class<Race> getTokenClass() + { return Race.class; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/template/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/template/FeatToken.java 2008-08-06 22:33:26 UTC (rev 7413) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/template/FeatToken.java 2008-08-06 22:34:06 UTC (rev 7414) @@ -11,7 +11,6 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.AssociationKey; -import pcgen.cdom.reference.ReferenceUtilities; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.AbilityUtilities; @@ -79,7 +78,8 @@ AssociatedPrereqObject assoc = context.getListContext() .addToList(getTokenName(), obj, Ability.FEATLIST, ability); - assoc.setAssociation(AssociationKey.NATURE, Ability.Nature.AUTOMATIC); + assoc.setAssociation(AssociationKey.NATURE, + Ability.Nature.AUTOMATIC); if (token.indexOf('(') != -1) { List<String> choices = new ArrayList<String>(); @@ -104,7 +104,8 @@ // Zero indicates no Token return null; } - Collection<CDOMReference<Ability>> added = changes.getAdded(); + MapToList<CDOMReference<Ability>, AssociatedPrereqObject> added = changes + .getAddedAssociations(); Collection<CDOMReference<Ability>> removedItems = changes.getRemoved(); StringBuilder sb = new StringBuilder(); if (changes.includesGlobalClear()) @@ -126,11 +127,20 @@ } if (added != null && !added.isEmpty()) { - if (sb.length() != 0) + boolean needsPipe = sb.length() != 0; + for (CDOMReference<Ability> ref : added.getKeySet()) { - sb.append(Constants.PIPE); + String lstFormat = ref.getLSTformat(); + for (int i = 0; i < added.sizeOfListFor(ref); i++) + { + if (needsPipe) + { + sb.append(Constants.PIPE); + } + needsPipe = true; + sb.append(lstFormat); + } } - sb.append(ReferenceUtilities.joinLstFormat(added, Constants.PIPE)); } if (sb.length() == 0) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |