From: <th...@us...> - 2007-08-23 00:57:06
|
Revision: 3860 http://pcgen.svn.sourceforge.net/pcgen/?rev=3860&view=rev Author: thpr Date: 2007-08-22 17:57:08 -0700 (Wed, 22 Aug 2007) Log Message: ----------- CDOM: Changes to simplify tokens on the assumption that changes will not be committed until the token returns true (This assumption is not implemented, but was discussed on -devel some time back) Modified Paths: -------------- branches/cdom/code/src/java/plugin/lsttokens/VFeatLst.java branches/cdom/code/src/java/plugin/lsttokens/auto/ArmorProfToken.java branches/cdom/code/src/java/plugin/lsttokens/auto/EquipToken.java branches/cdom/code/src/java/plugin/lsttokens/auto/ShieldProfToken.java branches/cdom/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java branches/cdom/code/src/java/plugin/lsttokens/deity/DeityweapToken.java branches/cdom/code/src/java/plugin/lsttokens/deity/DomainsToken.java branches/cdom/code/src/java/plugin/lsttokens/domain/FeatToken.java branches/cdom/code/src/java/plugin/lsttokens/equipmentmodifier/VisibleToken.java branches/cdom/code/src/java/plugin/lsttokens/pcclass/HitdieLst.java branches/cdom/code/src/java/plugin/lsttokens/pcclass/LangbonusToken.java branches/cdom/code/src/java/plugin/lsttokens/pcclass/SkilllistToken.java branches/cdom/code/src/java/plugin/lsttokens/pcclass/VfeatToken.java branches/cdom/code/src/java/plugin/lsttokens/pcclass/WeaponbonusToken.java branches/cdom/code/src/java/plugin/lsttokens/race/FaceToken.java branches/cdom/code/src/java/plugin/lsttokens/race/FeatToken.java branches/cdom/code/src/java/plugin/lsttokens/race/HitdieToken.java branches/cdom/code/src/java/plugin/lsttokens/race/LangbonusToken.java branches/cdom/code/src/java/plugin/lsttokens/race/MonccskillToken.java branches/cdom/code/src/java/plugin/lsttokens/race/MoncskillToken.java branches/cdom/code/src/java/plugin/lsttokens/race/MonsterclassToken.java branches/cdom/code/src/java/plugin/lsttokens/race/WeaponbonusToken.java branches/cdom/code/src/java/plugin/lsttokens/skill/ClassesToken.java branches/cdom/code/src/java/plugin/lsttokens/skill/VisibleToken.java branches/cdom/code/src/java/plugin/lsttokens/spell/ClassesToken.java branches/cdom/code/src/java/plugin/lsttokens/spell/CostToken.java branches/cdom/code/src/java/plugin/lsttokens/spell/DomainsToken.java branches/cdom/code/src/java/plugin/lsttokens/spell/ItemToken.java branches/cdom/code/src/java/plugin/lsttokens/subclass/ChoiceToken.java branches/cdom/code/src/java/plugin/lsttokens/template/AddLevelToken.java branches/cdom/code/src/java/plugin/lsttokens/template/BonusskillpointsToken.java branches/cdom/code/src/java/plugin/lsttokens/template/FaceToken.java branches/cdom/code/src/java/plugin/lsttokens/template/FavoredclassToken.java branches/cdom/code/src/java/plugin/lsttokens/template/FeatToken.java branches/cdom/code/src/java/plugin/lsttokens/template/HitdieToken.java branches/cdom/code/src/java/plugin/lsttokens/template/LangbonusToken.java branches/cdom/code/src/java/plugin/lsttokens/template/RegionToken.java branches/cdom/code/src/java/plugin/lsttokens/template/SubraceToken.java branches/cdom/code/src/java/plugin/lsttokens/template/SubregionToken.java Modified: branches/cdom/code/src/java/plugin/lsttokens/VFeatLst.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/VFeatLst.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/VFeatLst.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; @@ -12,7 +11,6 @@ import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.CDOMCategorizedSingleRef; import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.CategorizedCDOMReference; import pcgen.cdom.base.LSTWriteable; import pcgen.cdom.base.ReferenceUtilities; @@ -55,7 +53,7 @@ return false; } - final StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); + StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); String token = tok.nextToken(); @@ -66,20 +64,24 @@ return false; } - List<CDOMReference<Ability>> abilityList = - new ArrayList<CDOMReference<Ability>>(); + ArrayList<PCGraphGrantsEdge> edgeList = + new ArrayList<PCGraphGrantsEdge>(); while (true) { CDOMCategorizedSingleRef<Ability> ability = context.ref.getCDOMReference(ABILITY_CLASS, AbilityCategory.FEAT, token); - abilityList.add(ability); + PCGraphGrantsEdge edge = + context.getGraphContext().grant(getTokenName(), obj, + ability); + edge.setAssociation(AssociationKey.ABILITY_NATURE, + AbilityNature.VIRTUAL); + edgeList.add(edge); if (!tok.hasMoreTokens()) { // No prereqs, so we're done - finish(context, obj, abilityList, null); return true; } token = tok.nextToken(); @@ -89,7 +91,6 @@ } } - List<Prerequisite> prereqs = new ArrayList<Prerequisite>(); while (true) { Prerequisite prereq = getPrerequisite(token); @@ -99,7 +100,10 @@ + "PRExxx tags in " + getTokenName() + ":?)"); return false; } - prereqs.add(prereq); + for (PCGraphGrantsEdge edge : edgeList) + { + edge.addPreReq(prereq); + } if (!tok.hasMoreTokens()) { break; @@ -107,31 +111,9 @@ token = tok.nextToken(); } - finish(context, obj, abilityList, prereqs); - return true; } - private void finish(LoadContext context, CDOMObject obj, - List<CDOMReference<Ability>> abilityList, List<Prerequisite> prereqs) - { - for (CDOMReference<Ability> ability : abilityList) - { - PCGraphGrantsEdge edge = - context.getGraphContext().grant(getTokenName(), obj, - ability); - edge.setAssociation(AssociationKey.ABILITY_NATURE, - AbilityNature.VIRTUAL); - if (prereqs != null) - { - for (Prerequisite prereq : prereqs) - { - edge.addPrerequisite(prereq); - } - } - } - } - public String[] unparse(LoadContext context, CDOMObject cdo) { GraphChanges<Ability> changes = Modified: branches/cdom/code/src/java/plugin/lsttokens/auto/ArmorProfToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/auto/ArmorProfToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/auto/ArmorProfToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -18,7 +18,6 @@ package plugin.lsttokens.auto; import java.io.StringWriter; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -31,7 +30,6 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; -import pcgen.cdom.base.PrereqObject; import pcgen.cdom.base.ReferenceUtilities; import pcgen.cdom.factory.GrantFactory; import pcgen.cdom.graph.PCGraphGrantsEdge; @@ -115,7 +113,6 @@ boolean foundOther = false; StringTokenizer tok = new StringTokenizer(armorProfs, Constants.PIPE); - List<PrereqObject> refs = new ArrayList<PrereqObject>(); while (tok.hasMoreTokens()) { @@ -127,7 +124,13 @@ ChoiceSet.class, "Choice", ARMORPROF_CLASS); GrantFactory<ArmorProf> gf = new GrantFactory<ArmorProf>(assocref); - refs.add(gf); + PCGraphGrantsEdge edge = + context.getGraphContext() + .grant(getTokenName(), obj, gf); + if (prereq != null) + { + edge.addPreReq(prereq); + } } else { @@ -148,7 +151,13 @@ { return false; } - refs.add(ref); + PCGraphGrantsEdge edge = + context.getGraphContext().grant(getTokenName(), obj, + ref); + if (prereq != null) + { + edge.addPreReq(prereq); + } } } @@ -159,16 +168,6 @@ return false; } - for (PrereqObject ref : refs) - { - PCGraphGrantsEdge edge = - context.getGraphContext().grant(getTokenName(), obj, ref); - if (prereq != null) - { - edge.addPreReq(prereq); - } - } - return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/auto/EquipToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/auto/EquipToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/auto/EquipToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -18,9 +18,7 @@ package plugin.lsttokens.auto; import java.io.StringWriter; -import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.StringTokenizer; @@ -28,7 +26,6 @@ import pcgen.base.util.MapToList; import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.CDOMEdgeReference; -import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; import pcgen.cdom.base.PrereqObject; @@ -116,37 +113,30 @@ } StringTokenizer tok = new StringTokenizer(equipItems, Constants.PIPE); - List<PrereqObject> refs = new ArrayList<PrereqObject>(); while (tok.hasMoreTokens()) { String aProf = tok.nextToken(); + PrereqObject pro; if ("%LIST".equals(value)) { CDOMEdgeReference assocref = context.getGraphContext().getEdgeReference(obj, ChoiceSet.class, "Choice", EQUIPMENT_CLASS); - GrantFactory<Equipment> gf = - new GrantFactory<Equipment>(assocref); - refs.add(gf); + pro = new GrantFactory<Equipment>(assocref); } else { - CDOMReference<Equipment> ref = + pro = TokenUtilities.getTypeOrPrimitive(context, EQUIPMENT_CLASS, aProf); - if (ref == null) + if (pro == null) { return false; } - refs.add(ref); } - } - - for (PrereqObject ref : refs) - { PCGraphGrantsEdge edge = - context.getGraphContext().grant(getTokenName(), obj, ref); + context.getGraphContext().grant(getTokenName(), obj, pro); if (prereq != null) { edge.addPreReq(prereq); Modified: branches/cdom/code/src/java/plugin/lsttokens/auto/ShieldProfToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/auto/ShieldProfToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/auto/ShieldProfToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -18,7 +18,6 @@ package plugin.lsttokens.auto; import java.io.StringWriter; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -31,7 +30,6 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; -import pcgen.cdom.base.PrereqObject; import pcgen.cdom.base.ReferenceUtilities; import pcgen.cdom.factory.GrantFactory; import pcgen.cdom.graph.PCGraphGrantsEdge; @@ -112,7 +110,6 @@ boolean foundOther = false; StringTokenizer tok = new StringTokenizer(shieldProfs, Constants.PIPE); - List<PrereqObject> refs = new ArrayList<PrereqObject>(); while (tok.hasMoreTokens()) { @@ -124,7 +121,13 @@ ChoiceSet.class, "Choice", SHIELDPROF_CLASS); GrantFactory<ArmorProf> gf = new GrantFactory<ArmorProf>(assocref); - refs.add(gf); + PCGraphGrantsEdge edge = + context.getGraphContext() + .grant(getTokenName(), obj, gf); + if (prereq != null) + { + edge.addPreReq(prereq); + } } else { @@ -145,7 +148,13 @@ { return false; } - refs.add(ref); + PCGraphGrantsEdge edge = + context.getGraphContext().grant(getTokenName(), obj, + ref); + if (prereq != null) + { + edge.addPreReq(prereq); + } } } @@ -156,16 +165,6 @@ return false; } - for (PrereqObject ref : refs) - { - PCGraphGrantsEdge edge = - context.getGraphContext().grant(getTokenName(), obj, ref); - if (prereq != null) - { - edge.addPreReq(prereq); - } - } - return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -18,7 +18,6 @@ package plugin.lsttokens.auto; import java.io.StringWriter; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -31,7 +30,6 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; -import pcgen.cdom.base.PrereqObject; import pcgen.cdom.base.ReferenceUtilities; import pcgen.cdom.factory.GrantFactory; import pcgen.cdom.graph.PCGraphGrantsEdge; @@ -112,7 +110,6 @@ boolean foundOther = false; StringTokenizer tok = new StringTokenizer(weaponProfs, Constants.PIPE); - List<PrereqObject> refs = new ArrayList<PrereqObject>(); while (tok.hasMoreTokens()) { @@ -124,7 +121,13 @@ ChoiceSet.class, "Choice", WEAPONPROF_CLASS); GrantFactory<ArmorProf> gf = new GrantFactory<ArmorProf>(assocref); - refs.add(gf); + PCGraphGrantsEdge edge = + context.getGraphContext() + .grant(getTokenName(), obj, gf); + if (prereq != null) + { + edge.addPreReq(prereq); + } } else { @@ -145,7 +148,13 @@ { return false; } - refs.add(ref); + PCGraphGrantsEdge edge = + context.getGraphContext().grant(getTokenName(), obj, + ref); + if (prereq != null) + { + edge.addPreReq(prereq); + } } } @@ -156,16 +165,6 @@ return false; } - for (PrereqObject ref : refs) - { - PCGraphGrantsEdge edge = - context.getGraphContext().grant(getTokenName(), obj, ref); - if (prereq != null) - { - edge.addPreReq(prereq); - } - } - return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/deity/DeityweapToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/deity/DeityweapToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/deity/DeityweapToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -64,12 +64,11 @@ StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); while (tok.hasMoreTokens()) { - context.getObjectContext() - .addToList( - deity, - ListKey.DEITYWEAPON, + CDOMSimpleSingleRef<WeaponProf> ref = context.ref.getCDOMReference(WEAPONPROF_CLASS, tok - .nextToken())); + .nextToken()); + context.getObjectContext().addToList(deity, ListKey.DEITYWEAPON, + ref); } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/deity/DomainsToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/deity/DomainsToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/deity/DomainsToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -22,7 +22,6 @@ package plugin.lsttokens.deity; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Set; import java.util.StringTokenizer; @@ -31,7 +30,9 @@ import pcgen.base.util.HashMapToList; import pcgen.base.util.PropertyFactory; import pcgen.cdom.base.AssociatedPrereqObject; +import pcgen.cdom.base.CDOMGroupRef; import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.base.CDOMSimpleSingleRef; import pcgen.cdom.base.Constants; import pcgen.cdom.base.ReferenceUtilities; import pcgen.core.Deity; @@ -120,10 +121,11 @@ StringTokenizer pipeTok = new StringTokenizer(value, Constants.PIPE); StringTokenizer commaTok = new StringTokenizer(pipeTok.nextToken(), Constants.COMMA); - List<CDOMReference<Domain>> list = - new ArrayList<CDOMReference<Domain>>(); CDOMReference<DomainList> dl = context.ref.getCDOMReference(DomainList.class, "*Starting"); + ArrayList<AssociatedPrereqObject> proList = + new ArrayList<AssociatedPrereqObject>(); + boolean first = true; while (commaTok.hasMoreTokens()) { @@ -174,16 +176,21 @@ } else if (Constants.LST_ALL.equals(tokString)) { - list.add(context.ref.getCDOMAllReference(DOMAIN_CLASS)); + CDOMGroupRef<Domain> ref = + context.ref.getCDOMAllReference(DOMAIN_CLASS); + proList.add(context.getListContext().addToList(getTokenName(), + deity, dl, ref)); } else { - list.add(context.ref.getCDOMReference(DOMAIN_CLASS, tokString)); + CDOMSimpleSingleRef<Domain> ref = + context.ref.getCDOMReference(DOMAIN_CLASS, tokString); + proList.add(context.getListContext().addToList(getTokenName(), + deity, dl, ref)); } first = false; } - List<Prerequisite> prereqs = new ArrayList<Prerequisite>(); while (pipeTok.hasMoreTokens()) { String tokString = pipeTok.nextToken(); @@ -194,26 +201,15 @@ + "PRExxx tags in " + getTokenName() + ":?)"); return false; } - prereqs.add(prereq); + for (AssociatedPrereqObject ao : proList) + { + ao.addAllPrerequisites(prereq); + } } - finish(context, deity, list, prereqs); + return true; } - private void finish(LoadContext context, Deity deity, - List<CDOMReference<Domain>> list, Collection<Prerequisite> c) - { - CDOMReference<DomainList> dl = - context.ref.getCDOMReference(DomainList.class, "*Starting"); - for (CDOMReference<Domain> ref : list) - { - AssociatedPrereqObject ao = - context.getListContext().addToList(getTokenName(), deity, - dl, ref); - ao.addAllPrerequisites(c); - } - } - public String[] unparse(LoadContext context, Deity deity) { CDOMReference<DomainList> dl = Modified: branches/cdom/code/src/java/plugin/lsttokens/domain/FeatToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/domain/FeatToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/domain/FeatToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; @@ -33,7 +32,6 @@ import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.CDOMCategorizedSingleRef; import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.CategorizedCDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; @@ -82,7 +80,7 @@ return false; } - final StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); + StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); String token = tok.nextToken(); @@ -93,20 +91,24 @@ return false; } - List<CDOMReference<Ability>> abilityList = - new ArrayList<CDOMReference<Ability>>(); + ArrayList<PCGraphGrantsEdge> edgeList = + new ArrayList<PCGraphGrantsEdge>(); while (true) { CDOMCategorizedSingleRef<Ability> ability = context.ref.getCDOMReference(ABILITY_CLASS, AbilityCategory.FEAT, token); - abilityList.add(ability); + PCGraphGrantsEdge edge = + context.getGraphContext().grant(getTokenName(), obj, + ability); + edge.setAssociation(AssociationKey.ABILITY_NATURE, + AbilityNature.NORMAL); + edgeList.add(edge); if (!tok.hasMoreTokens()) { // No prereqs, so we're done - finish(context, obj, abilityList, null); return true; } token = tok.nextToken(); @@ -116,7 +118,6 @@ } } - List<Prerequisite> prereqs = new ArrayList<Prerequisite>(); while (true) { Prerequisite prereq = getPrerequisite(token); @@ -126,7 +127,10 @@ + "PRExxx tags in " + getTokenName() + ":?)"); return false; } - prereqs.add(prereq); + for (PCGraphGrantsEdge edge : edgeList) + { + edge.addPreReq(prereq); + } if (!tok.hasMoreTokens()) { break; @@ -134,31 +138,9 @@ token = tok.nextToken(); } - finish(context, obj, abilityList, prereqs); - return true; } - private void finish(LoadContext context, CDOMObject obj, - List<CDOMReference<Ability>> abilityList, List<Prerequisite> prereqs) - { - for (CDOMReference<Ability> ability : abilityList) - { - PCGraphGrantsEdge edge = - context.getGraphContext().grant(getTokenName(), obj, - ability); - edge.setAssociation(AssociationKey.ABILITY_NATURE, - AbilityNature.NORMAL); - if (prereqs != null) - { - for (Prerequisite prereq : prereqs) - { - edge.addPrerequisite(prereq); - } - } - } - } - public String[] unparse(LoadContext context, Domain domain) { GraphChanges<Ability> changes = Modified: branches/cdom/code/src/java/plugin/lsttokens/equipmentmodifier/VisibleToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/equipmentmodifier/VisibleToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/equipmentmodifier/VisibleToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -66,6 +66,7 @@ { context.getObjectContext().put(mod, ObjectKey.VISIBILITY, Visibility.valueOf(value)); + return true; } catch (IllegalArgumentException e) { @@ -73,7 +74,6 @@ + ": " + value); return false; } - return true; } public String[] unparse(LoadContext context, EquipmentModifier mod) Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/HitdieLst.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/pcclass/HitdieLst.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/HitdieLst.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -222,6 +222,7 @@ PCClassLevel pcl = cl.getClassLevel(level); HitDieCommandFactory cf = new HitDieCommandFactory(pcl, hdm); context.getObjectContext().put(pcl, ObjectKey.HITDIE, cf); + return true; } catch (NumberFormatException nfe) { @@ -230,7 +231,6 @@ Logging.errorPrint(" Must be an Integer"); return false; } - return true; } public String[] unparse(LoadContext context, PCClass pcc, int level) Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/LangbonusToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/pcclass/LangbonusToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/LangbonusToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -71,14 +71,9 @@ } StringTokenizer tok = new StringTokenizer(value, Constants.COMMA); - boolean removeAll = false; boolean foundAny = false; boolean foundOther = false; boolean firstToken = true; - List<CDOMReference<Language>> addList = - new ArrayList<CDOMReference<Language>>(); - List<CDOMReference<Language>> removeList = - new ArrayList<CDOMReference<Language>>(); CDOMReference<LanguageList> swl = context.ref.getCDOMReference(LANGUAGELIST_CLASS, "*Starting"); @@ -94,7 +89,8 @@ + ": When used, .CLEAR must be the first argument"); return false; } - removeAll = true; + context.getListContext().removeAllFromList(getTokenName(), pcc, + swl); } else if (tokText.startsWith(Constants.LST_DOT_CLEAR_DOT)) { @@ -117,7 +113,8 @@ + " had an invalid .CLEAR. reference: " + clearText); return false; } - removeList.add(lang); + context.getListContext().removeFromList(getTokenName(), pcc, + swl, lang); } else { @@ -149,7 +146,8 @@ + " had an invalid reference: " + tokText); return false; } - addList.add(lang); + context.getListContext().addToList(getTokenName(), pcc, swl, + lang); } firstToken = false; } @@ -159,27 +157,6 @@ + ": Contains ANY and a specific reference: " + value); return false; } - if (removeAll) - { - context.getListContext() - .removeAllFromList(getTokenName(), pcc, swl); - } - if (!removeList.isEmpty()) - { - for (CDOMReference<Language> lang : removeList) - { - context.getListContext().removeFromList(getTokenName(), pcc, - swl, lang); - } - } - if (!addList.isEmpty()) - { - for (CDOMReference<Language> lang : addList) - { - context.getListContext().addToList(getTokenName(), pcc, swl, - lang); - } - } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/SkilllistToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/pcclass/SkilllistToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/SkilllistToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -64,7 +64,7 @@ public boolean parse(PCClass pcclass, String value, int level) { - final StringTokenizer aTok = new StringTokenizer(value, "|"); + final StringTokenizer aTok = new StringTokenizer(value, Constants.PIPE); int skillCount = 0; if (value.indexOf('|') >= 0) Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/VfeatToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/pcclass/VfeatToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/VfeatToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; @@ -33,7 +32,6 @@ import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.CDOMCategorizedSingleRef; import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.CategorizedCDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; @@ -86,7 +84,7 @@ return false; } - final StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); + StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); String token = tok.nextToken(); @@ -97,20 +95,24 @@ return false; } - List<CDOMReference<Ability>> abilityList = - new ArrayList<CDOMReference<Ability>>(); + ArrayList<PCGraphGrantsEdge> edgeList = + new ArrayList<PCGraphGrantsEdge>(); while (true) { CDOMCategorizedSingleRef<Ability> ability = context.ref.getCDOMReference(ABILITY_CLASS, AbilityCategory.FEAT, token); - abilityList.add(ability); + PCGraphGrantsEdge edge = + context.getGraphContext().grant(getTokenName(), obj, + ability); + edge.setAssociation(AssociationKey.ABILITY_NATURE, + AbilityNature.VIRTUAL); + edgeList.add(edge); if (!tok.hasMoreTokens()) { // No prereqs, so we're done - finish(context, obj, abilityList, null); return true; } token = tok.nextToken(); @@ -120,7 +122,6 @@ } } - List<Prerequisite> prereqs = new ArrayList<Prerequisite>(); while (true) { Prerequisite prereq = getPrerequisite(token); @@ -130,7 +131,10 @@ + "PRExxx tags in " + getTokenName() + ":?)"); return false; } - prereqs.add(prereq); + for (PCGraphGrantsEdge edge : edgeList) + { + edge.addPreReq(prereq); + } if (!tok.hasMoreTokens()) { break; @@ -138,31 +142,9 @@ token = tok.nextToken(); } - finish(context, obj, abilityList, prereqs); - return true; } - private void finish(LoadContext context, CDOMObject obj, - List<CDOMReference<Ability>> abilityList, List<Prerequisite> prereqs) - { - for (CDOMReference<Ability> ability : abilityList) - { - PCGraphGrantsEdge edge = - context.getGraphContext().grant(getTokenName(), obj, - ability); - edge.setAssociation(AssociationKey.ABILITY_NATURE, - AbilityNature.VIRTUAL); - if (prereqs != null) - { - for (Prerequisite prereq : prereqs) - { - edge.addPrerequisite(prereq); - } - } - } - } - public String[] unparse(LoadContext context, PObject pct) { GraphChanges<Ability> changes = Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/WeaponbonusToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/pcclass/WeaponbonusToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/WeaponbonusToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -21,9 +21,7 @@ */ package plugin.lsttokens.pcclass; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.StringTokenizer; import pcgen.cdom.base.CDOMObject; @@ -83,11 +81,11 @@ return false; } + CDOMReference<WeaponProfList> swl = + context.ref.getCDOMReference(WEAPONPROFLIST_CLASS, "*Starting"); StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); boolean foundAny = false; boolean foundOther = false; - List<CDOMReference<WeaponProf>> list = - new ArrayList<CDOMReference<WeaponProf>>(); while (tok.hasMoreTokens()) { @@ -98,17 +96,16 @@ * sublists */ String tokText = tok.nextToken(); + CDOMReference<WeaponProf> ref; if (Constants.LST_ALL.equals(tokText)) { foundAny = true; - CDOMReference<WeaponProf> ref = - context.ref.getCDOMAllReference(WEAPONPROF_CLASS); - list.add(ref); + ref = context.ref.getCDOMAllReference(WEAPONPROF_CLASS); } else { foundOther = true; - CDOMReference<WeaponProf> ref = + ref = TokenUtilities.getTypeOrPrimitive(context, WEAPONPROF_CLASS, tokText); if (ref == null) @@ -117,8 +114,8 @@ + getTokenName()); return false; } - list.add(ref); } + context.getListContext().addToList(getTokenName(), obj, swl, ref); } if (foundAny && foundOther) { @@ -126,12 +123,6 @@ + ": Contains ANY and a specific reference: " + value); return false; } - CDOMReference<WeaponProfList> swl = - context.ref.getCDOMReference(WEAPONPROFLIST_CLASS, "*Starting"); - for (CDOMReference<WeaponProf> prof : list) - { - context.getListContext().addToList(getTokenName(), obj, swl, prof); - } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/race/FaceToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/race/FaceToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/race/FaceToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -118,18 +118,18 @@ + getTokenName() + ":<num>[,<num>]"); return false; } - BigDecimal width; - BigDecimal height; try { String widthString = value.substring(0, commaLoc).trim(); - width = new BigDecimal(widthString); + BigDecimal width = new BigDecimal(widthString); if (width.compareTo(BigDecimal.ZERO) < 0) { Logging.errorPrint("Cannot have negative width in " + getTokenName() + ": " + value); return false; } + context.getObjectContext().put(fObj, ObjectKey.FACE_WIDTH, + width); } catch (NumberFormatException nfe) { @@ -141,13 +141,15 @@ try { String heightString = value.substring(commaLoc + 1).trim(); - height = new BigDecimal(heightString); + BigDecimal height = new BigDecimal(heightString); if (height.compareTo(BigDecimal.ZERO) < 0) { Logging.errorPrint("Cannot have negative height in " + getTokenName() + ": " + value); return false; } + context.getObjectContext().put(fObj, ObjectKey.FACE_HEIGHT, + height); } catch (NumberFormatException ne) { @@ -155,31 +157,29 @@ + value); return false; } - context.getObjectContext().put(fObj, ObjectKey.FACE_WIDTH, width); - context.getObjectContext().put(fObj, ObjectKey.FACE_HEIGHT, height); } else { - BigDecimal width; try { String widthString = value; - width = new BigDecimal(widthString); + BigDecimal width = new BigDecimal(widthString); if (width.compareTo(BigDecimal.ZERO) < 0) { Logging.errorPrint("Cannot have negative width in " + getTokenName() + ": " + value); return false; } + context.getObjectContext().put(fObj, ObjectKey.FACE_WIDTH, + width); + context.getObjectContext().put(fObj, ObjectKey.FACE_HEIGHT, + BigDecimal.ZERO); } catch (NumberFormatException nfe) { Logging.errorPrint("Misunderstood Double in Tag: " + value); return false; } - context.getObjectContext().put(fObj, ObjectKey.FACE_WIDTH, width); - context.getObjectContext().put(fObj, ObjectKey.FACE_HEIGHT, - BigDecimal.ZERO); } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/race/FeatToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/race/FeatToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/race/FeatToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; @@ -33,7 +32,6 @@ import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.CDOMCategorizedSingleRef; import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.CategorizedCDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; @@ -82,7 +80,7 @@ return false; } - final StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); + StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); String token = tok.nextToken(); @@ -93,20 +91,24 @@ return false; } - List<CDOMReference<Ability>> abilityList = - new ArrayList<CDOMReference<Ability>>(); + ArrayList<PCGraphGrantsEdge> edgeList = + new ArrayList<PCGraphGrantsEdge>(); while (true) { CDOMCategorizedSingleRef<Ability> ability = context.ref.getCDOMReference(ABILITY_CLASS, AbilityCategory.FEAT, token); - abilityList.add(ability); + PCGraphGrantsEdge edge = + context.getGraphContext().grant(getTokenName(), obj, + ability); + edge.setAssociation(AssociationKey.ABILITY_NATURE, + AbilityNature.NORMAL); + edgeList.add(edge); if (!tok.hasMoreTokens()) { // No prereqs, so we're done - finish(context, obj, abilityList, null); return true; } token = tok.nextToken(); @@ -116,7 +118,6 @@ } } - List<Prerequisite> prereqs = new ArrayList<Prerequisite>(); while (true) { Prerequisite prereq = getPrerequisite(token); @@ -126,7 +127,10 @@ + "PRExxx tags in " + getTokenName() + ":?)"); return false; } - prereqs.add(prereq); + for (PCGraphGrantsEdge edge : edgeList) + { + edge.addPreReq(prereq); + } if (!tok.hasMoreTokens()) { break; @@ -134,31 +138,9 @@ token = tok.nextToken(); } - finish(context, obj, abilityList, prereqs); - return true; } - private void finish(LoadContext context, CDOMObject obj, - List<CDOMReference<Ability>> abilityList, List<Prerequisite> prereqs) - { - for (CDOMReference<Ability> ability : abilityList) - { - PCGraphGrantsEdge edge = - context.getGraphContext().grant(getTokenName(), obj, - ability); - edge.setAssociation(AssociationKey.ABILITY_NATURE, - AbilityNature.NORMAL); - if (prereqs != null) - { - for (Prerequisite prereq : prereqs) - { - edge.addPrerequisite(prereq); - } - } - } - } - public String[] unparse(LoadContext context, Race race) { GraphChanges<Ability> changes = Modified: branches/cdom/code/src/java/plugin/lsttokens/race/HitdieToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/race/HitdieToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/race/HitdieToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -276,6 +276,7 @@ HitDieCommandFactory cf = new HitDieCommandFactory(owner, hdm); context.getGraphContext().grant(getTokenName(), race, cf); + return true; } catch (NumberFormatException nfe) { @@ -284,7 +285,6 @@ Logging.errorPrint(" Must be an Integer"); return false; } - return true; } public String[] unparse(LoadContext context, Race race) Modified: branches/cdom/code/src/java/plugin/lsttokens/race/LangbonusToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/race/LangbonusToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/race/LangbonusToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -68,14 +68,9 @@ } StringTokenizer tok = new StringTokenizer(value, Constants.COMMA); - boolean removeAll = false; boolean foundAny = false; boolean foundOther = false; boolean firstToken = true; - List<CDOMReference<Language>> addList = - new ArrayList<CDOMReference<Language>>(); - List<CDOMReference<Language>> removeList = - new ArrayList<CDOMReference<Language>>(); CDOMReference<LanguageList> swl = context.ref.getCDOMReference(LANGUAGELIST_CLASS, "*Starting"); @@ -91,7 +86,8 @@ + ": When used, .CLEAR must be the first argument"); return false; } - removeAll = true; + context.getListContext().removeAllFromList(getTokenName(), + race, swl); } else if (tokText.startsWith(Constants.LST_DOT_CLEAR_DOT)) { @@ -114,7 +110,8 @@ + " had an invalid .CLEAR. reference: " + clearText); return false; } - removeList.add(lang); + context.getListContext().removeFromList(getTokenName(), race, + swl, lang); } else { @@ -146,7 +143,8 @@ + " had an invalid reference: " + tokText); return false; } - addList.add(lang); + context.getListContext().addToList(getTokenName(), race, swl, + lang); } firstToken = false; } @@ -156,27 +154,6 @@ + ": Contains ANY and a specific reference: " + value); return false; } - if (removeAll) - { - context.getListContext().removeAllFromList(getTokenName(), race, - swl); - } - if (!removeList.isEmpty()) - { - for (CDOMReference<Language> lang : removeList) - { - context.getListContext().removeFromList(getTokenName(), race, - swl, lang); - } - } - if (!addList.isEmpty()) - { - for (CDOMReference<Language> lang : addList) - { - context.getListContext().addToList(getTokenName(), race, swl, - lang); - } - } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/race/MonccskillToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/race/MonccskillToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/race/MonccskillToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -79,7 +79,6 @@ boolean foundOther = false; StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); - List<CDOMReference<Skill>> list = new ArrayList<CDOMReference<Skill>>(); while (tok.hasMoreTokens()) { @@ -148,7 +147,11 @@ + getTokenName()); return false; } - list.add(skill); + AssociatedPrereqObject apo = + context.getListContext().addToList(getTokenName(), + race, ref, skill); + apo.setAssociation(AssociationKey.SKILL_COST, + SkillCost.CROSS_CLASS); } firstToken = false; } @@ -158,15 +161,6 @@ + ": Contains ANY and a specific reference: " + value); return false; } - for (CDOMReference<Skill> skill : list) - { - AssociatedPrereqObject tpr = - context.getListContext().addToList(getTokenName(), race, - ref, skill); - tpr - .setAssociation(AssociationKey.SKILL_COST, - SkillCost.CROSS_CLASS); - } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/race/MoncskillToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/race/MoncskillToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/race/MoncskillToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -79,7 +79,6 @@ boolean foundOther = false; StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); - List<CDOMReference<Skill>> list = new ArrayList<CDOMReference<Skill>>(); while (tok.hasMoreTokens()) { @@ -148,7 +147,10 @@ + getTokenName()); return false; } - list.add(skill); + AssociatedPrereqObject apo = + context.getListContext().addToList(getTokenName(), + race, ref, skill); + apo.setAssociation(AssociationKey.SKILL_COST, SkillCost.CLASS); } firstToken = false; } @@ -158,13 +160,6 @@ + ": Contains ANY and a specific reference: " + value); return false; } - for (CDOMReference<Skill> skill : list) - { - AssociatedPrereqObject tpr = - context.getListContext().addToList(getTokenName(), race, - ref, skill); - tpr.setAssociation(AssociationKey.SKILL_COST, SkillCost.CLASS); - } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/race/MonsterclassToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/race/MonsterclassToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/race/MonsterclassToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -90,17 +90,19 @@ String classString = value.substring(0, colonLoc); CDOMSimpleSingleRef<PCClass> cl = context.ref.getCDOMReference(PCCLASS_CLASS, classString); - int lvls; try { String numLevels = value.substring(colonLoc + 1); - lvls = Integer.parseInt(numLevels); + int lvls = Integer.parseInt(numLevels); if (lvls <= 0) { Logging.errorPrint("Number of levels in " + getTokenName() + " must be greater than zero: " + value); return false; } + LevelCommandFactory cf = new LevelCommandFactory(cl, lvls); + context.getGraphContext().grant(getTokenName(), race, cf); + return true; } catch (NumberFormatException nfe) { @@ -108,9 +110,6 @@ + " must be an integer greater than zero: " + value); return false; } - LevelCommandFactory cf = new LevelCommandFactory(cl, lvls); - context.getGraphContext().grant(getTokenName(), race, cf); - return true; } public String[] unparse(LoadContext context, Race race) Modified: branches/cdom/code/src/java/plugin/lsttokens/race/WeaponbonusToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/race/WeaponbonusToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/race/WeaponbonusToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -21,9 +21,7 @@ */ package plugin.lsttokens.race; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.StringTokenizer; import pcgen.cdom.base.CDOMObject; @@ -82,32 +80,28 @@ return false; } + CDOMReference<WeaponProfList> swl = + context.ref.getCDOMReference(WEAPONPROFLIST_CLASS, "*Starting"); + StringTokenizer tok = new StringTokenizer(value, Constants.PIPE); boolean foundAny = false; boolean foundOther = false; - List<CDOMReference<WeaponProf>> list = - new ArrayList<CDOMReference<WeaponProf>>(); while (tok.hasMoreTokens()) { - /* - * Note this HAS to be done one-by-one, because the - * .clearChildNodeOfClass method above does NOT recognize the C/CC - * Skill object and therefore doesn't know how to search the - * sublists - */ String tokText = tok.nextToken(); + CDOMReference<WeaponProf> ref; if (Constants.LST_ALL.equals(tokText)) { foundAny = true; - CDOMReference<WeaponProf> ref = - context.ref.getCDOMAllReference(WEAPONPROF_CLASS); - list.add(ref); + ref = context.ref.getCDOMAllReference(WEAPONPROF_CLASS); + context.getListContext().addToList(getTokenName(), obj, swl, + ref); } else { foundOther = true; - CDOMReference<WeaponProf> ref = + ref = TokenUtilities.getTypeOrPrimitive(context, WEAPONPROF_CLASS, tokText); if (ref == null) @@ -116,8 +110,8 @@ + getTokenName()); return false; } - list.add(ref); } + context.getListContext().addToList(getTokenName(), obj, swl, ref); } if (foundAny && foundOther) { @@ -125,12 +119,6 @@ + ": Contains ANY and a specific reference: " + value); return false; } - CDOMReference<WeaponProfList> swl = - context.ref.getCDOMReference(WEAPONPROFLIST_CLASS, "*Starting"); - for (CDOMReference<WeaponProf> prof : list) - { - context.getListContext().addToList(getTokenName(), obj, swl, prof); - } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/skill/ClassesToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/skill/ClassesToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/skill/ClassesToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -79,9 +79,8 @@ } StringTokenizer pipeTok = new StringTokenizer(value, Constants.PIPE); - List<CDOMReference<ClassSkillList>> allowed = - new ArrayList<CDOMReference<ClassSkillList>>(); List<Prerequisite> prevented = new ArrayList<Prerequisite>(); + boolean added = false; while (pipeTok.hasMoreTokens()) { @@ -100,27 +99,21 @@ } else { - allowed.add(context.ref.getCDOMReference(SKILLLIST_CLASS, - className)); + addSkillAllowed(context, skill, context.ref.getCDOMReference( + SKILLLIST_CLASS, className)); + added = true; } } - if (!prevented.isEmpty() && !allowed.isEmpty()) + if (!prevented.isEmpty()) { - Logging.errorPrint("Non-sensical " + getTokenName() + ": " + value); - Logging.errorPrint(" Token contains both negated " - + "and non-negated class references"); - return false; - } - - if (!allowed.isEmpty()) - { - for (CDOMReference<ClassSkillList> ref : allowed) + if (added) { - addSkillAllowed(context, skill, ref); + Logging.errorPrint("Non-sensical " + getTokenName() + ": " + + value); + Logging.errorPrint(" Token contains both negated " + + "and non-negated class references"); + return false; } - } - if (!prevented.isEmpty()) - { CDOMReference<ClassSkillList> ref = context.ref.getCDOMAllReference(SKILLLIST_CLASS); AssociatedPrereqObject allEdge = @@ -156,8 +149,9 @@ for (CDOMReference<ClassSkillList> swl : context.getListContext() .getMasterLists(SKILLLIST_CLASS)) { - Changes<LSTWriteable> changes = context.getListContext().getChangesInMasterList( - getTokenName(), skill, swl); + Changes<LSTWriteable> changes = + context.getListContext().getChangesInMasterList( + getTokenName(), skill, swl); if (changes == null || changes.isEmpty()) { // Legal if no CLASSES was present in the Skill Modified: branches/cdom/code/src/java/plugin/lsttokens/skill/VisibleToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/skill/VisibleToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/skill/VisibleToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -196,6 +196,7 @@ try { vis = Visibility.valueOf(visString); + context.getObjectContext().put(skill, ObjectKey.VISIBILITY, vis); } catch (IllegalArgumentException iae) { @@ -213,7 +214,6 @@ } context.getObjectContext().put(skill, ObjectKey.READ_ONLY, Boolean.TRUE); } - context.getObjectContext().put(skill, ObjectKey.VISIBILITY, vis); return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/spell/ClassesToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/spell/ClassesToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/spell/ClassesToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -30,7 +30,6 @@ import java.util.TreeSet; import pcgen.base.util.DoubleKeyMapToList; -import pcgen.base.util.HashMapToList; import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; @@ -114,12 +113,6 @@ { return false; } - if (value.indexOf(",,") != -1) - { - Logging.errorPrint(getTokenName() - + " arguments uses double separator ,, : " + value); - return false; - } // Note: May contain PRExxx String classKey; @@ -154,8 +147,6 @@ boolean foundOther = false; StringTokenizer pipeTok = new StringTokenizer(classKey, Constants.PIPE); - HashMapToList<Integer, CDOMReference<ClassSpellList>> map = - new HashMapToList<Integer, CDOMReference<ClassSpellList>>(); while (pipeTok.hasMoreTokens()) { @@ -199,18 +190,10 @@ return false; } - if (nameList.charAt(0) == ',') + if (this.hasIllegalSeparator(',', nameList)) { - Logging.errorPrint(getTokenName() - + " classes may not start with , : " + value); return false; } - if (nameList.charAt(nameList.length() - 1) == ',') - { - Logging.errorPrint(getTokenName() - + " classes may not end with , : " + value); - return false; - } StringTokenizer commaTok = new StringTokenizer(nameList, Constants.COMMA); @@ -236,19 +219,6 @@ return false; } } - map.addToListFor(level, ref); - } - } - if (foundAny && foundOther) - { - Logging.errorPrint("Non-sensical " + getTokenName() - + ": Contains ANY and a specific reference: " + value); - return false; - } - for (Integer level : map.getKeySet()) - { - for (CDOMReference<ClassSpellList> ref : map.getListFor(level)) - { AssociatedPrereqObject edge = context.getListContext().addToMasterList( getTokenName(), spell, ref, spell); @@ -259,6 +229,12 @@ } } } + if (foundAny && foundOther) + { + Logging.errorPrint("Non-sensical " + getTokenName() + + ": Contains ANY and a specific reference: " + value); + return false; + } return true; } @@ -270,8 +246,9 @@ for (CDOMReference<ClassSpellList> swl : context.getListContext() .getMasterLists(SPELLLIST_CLASS)) { - Changes<LSTWriteable> changes = context.getListContext().getChangesInMasterList( - getTokenName(), spell, swl); + Changes<LSTWriteable> changes = + context.getListContext().getChangesInMasterList( + getTokenName(), spell, swl); if (changes == null || changes.isEmpty()) { // Legal if no CLASSES was present in the Spell Modified: branches/cdom/code/src/java/plugin/lsttokens/spell/CostToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/spell/CostToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/spell/CostToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -31,6 +31,7 @@ import pcgen.core.PCClass; import pcgen.core.spell.Spell; import pcgen.persistence.LoadContext; +import pcgen.persistence.lst.AbstractToken; import pcgen.persistence.lst.SpellLstToken; import pcgen.persistence.lst.utils.TokenUtilities; import pcgen.util.Logging; @@ -38,11 +39,12 @@ /** * Class deals with COST Token */ -public class CostToken implements SpellLstToken +public class CostToken extends AbstractToken implements SpellLstToken { private static final Class<PCClass> PCCLASS_CLASS = PCClass.class; + @Override public String getTokenName() { return "COST"; @@ -56,47 +58,15 @@ public boolean parse(LoadContext context, Spell spell, String value) { - if (value.length() == 0) + if (isEmpty(value) || hasIllegalSeparator('|', value)) { - Logging.errorPrint(getTokenName() - + " requires the default value to exist"); return false; } - if (value.charAt(0) == '|') - { - Logging.errorPrint(getTokenName() - + " requires default value; may not start with | : " + value); - return false; - } StringTokenizer pipeTok = new StringTokenizer(value, Constants.PIPE); DefaultMap<CDOMSimpleSingleRef<PCClass>, Integer> dm = new DefaultMap<CDOMSimpleSingleRef<PCClass>, Integer>(); String defaultCost = pipeTok.nextToken(); - - int startRest = value.indexOf(Constants.PIPE); - if (startRest != -1) - { - if (value.charAt(value.length() - 1) == '|') - { - Logging.errorPrint(getTokenName() - + " arguments may not end with | : " + value); - return false; - } - if (value.charAt(startRest + 1) == '|') - { - Logging.errorPrint(getTokenName() - + " arguments may not start with | : " + value); - return false; - } - if (value.indexOf("||") != -1) - { - Logging.errorPrint(getTokenName() - + " arguments uses double separator || : " + value); - return false; - } - } - try { Integer i = Integer.valueOf(defaultCost); Modified: branches/cdom/code/src/java/plugin/lsttokens/spell/DomainsToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/spell/DomainsToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/spell/DomainsToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -30,9 +30,7 @@ import java.util.TreeSet; import pcgen.base.util.DoubleKeyMapToList; -import pcgen.base.util.HashMapToList; import pcgen.cdom.base.AssociatedPrereqObject; -import pcgen.cdom.base.CDOMList; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; @@ -115,12 +113,6 @@ { return false; } - if (value.indexOf(",,") != -1) - { - Logging.errorPrint(getTokenName() - + " arguments uses double separator ,, : " + value); - return false; - } // Note: May contain PRExxx String domainKey; @@ -155,8 +147,6 @@ StringTokenizer pipeTok = new StringTokenizer(domainKey, Constants.PIPE); - HashMapToList<Integer, CDOMReference<DomainSpellList>> map = - new HashMapToList<Integer, CDOMReference<DomainSpellList>>(); while (pipeTok.hasMoreTokens()) { @@ -200,18 +190,10 @@ return false; } - if (nameList.charAt(0) == ',') + if (hasIllegalSeparator(',', nameList)) { - Logging.errorPrint(getTokenName() - + " classes may not start with , : " + value); return false; } - if (nameList.charAt(nameList.length() - 1) == ',') - { - Logging.errorPrint(getTokenName() - + " classes may not end with , : " + value); - return false; - } StringTokenizer commaTok = new StringTokenizer(nameList, Constants.COMMA); @@ -237,20 +219,6 @@ Logging.errorPrint(" error was in " + getTokenName()); return false; } - map.addToListFor(level, ref); - } - } - if (foundAny && foundOther) - { - Logging.errorPrint("Non-sensical " + getTokenName() - + ": Contains ANY and a specific reference: " + value); - return false; - } - for (Integer level : map.getKeySet()) - { - for (CDOMReference<? extends CDOMList<Spell>> ref : map - .getListFor(level)) - { AssociatedPrereqObject edge = context.getListContext().addToMasterList( getTokenName(), spell, ref, spell); @@ -261,6 +229,12 @@ } } } + if (foundAny && foundOther) + { + Logging.errorPrint("Non-sensical " + getTokenName() + + ": Contains ANY and a specific reference: " + value); + return false; + } return true; } Modified: branches/cdom/code/src/java/plugin/lsttokens/spell/ItemToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/spell/ItemToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/spell/ItemToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -83,9 +83,8 @@ + ": cannot be empty item in brackets []"); return false; } - Type t = Type.getConstant(substring); context.getObjectContext().addToList(spell, - ListKey.PROHIBITED_ITEM, t); + ListKey.PROHIBITED_ITEM, Type.getConstant(substring)); } else { @@ -96,8 +95,8 @@ + value); return false; } - Type t = Type.getConstant(tokString); - context.getObjectContext().addToList(spell, ListKey.ITEM, t); + context.getObjectContext().addToList(spell, ListKey.ITEM, + Type.getConstant(tokString)); } } return true; Modified: branches/cdom/code/src/java/plugin/lsttokens/subclass/ChoiceToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/subclass/ChoiceToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/subclass/ChoiceToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -49,6 +49,7 @@ getSpellProhib(ProhibitedSpellType.getReference(type), value.substring(pipeLoc + 1)); context.getObjectContext().put(sc, ObjectKey.SELETED_SPELLS, sp); + return true; } else { @@ -56,7 +57,6 @@ + type); return false; } - return true; } private <T> SpellProhibitor<T> getSpellProhib(ProhibitedSpellType<T> pst, Modified: branches/cdom/code/src/java/plugin/lsttokens/template/AddLevelToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/template/AddLevelToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/template/AddLevelToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -82,16 +82,18 @@ CDOMSimpleSingleRef<PCClass> cl = context.ref.getCDOMReference(PCClass.class, classString); String numLevels = value.substring(pipeLoc + 1); - int lvls; try { - lvls = Integer.parseInt(numLevels); + int lvls = Integer.parseInt(numLevels); if (lvls <= 0) { Logging.errorPrint("Number of Levels granted in " + getTokenName() + " must be greater than zero"); return false; } + LevelCommandFactory cf = new LevelCommandFactory(cl, lvls); + context.getGraphContext().grant(getTokenName(), template, cf); + return true; } catch (NumberFormatException nfe) { @@ -101,9 +103,6 @@ + " requires at format: Class|LevelCount"); return false; } - LevelCommandFactory cf = new LevelCommandFactory(cl, lvls); - context.getGraphContext().grant(getTokenName(), template, cf); - return true; } public String[] unparse(LoadContext context, PCTemplate pct) Modified: branches/cdom/code/src/java/plugin/lsttokens/template/BonusskillpointsToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/template/BonusskillpointsToken.java 2007-08-22 22:25:15 UTC (rev 3859) +++ branches/cdom/code/src/java/plugin/lsttokens/template/BonusskillpointsToken.java 2007-08-23 00:57:08 UTC (rev 3860) @@ -58,10 +58,18 @@ public boolean parse(LoadContext context, PCTemplate template, String value) { - int skillCount; try { - skillCount = Integer.parseInt(value); + int skillCount = Integer.parseInt(value); + if (skillCount <= 0) + { + Logging.errorPrint(getTokenName() + + " must be an integer greater than zero"); + return false; + } + ClassSkillPointFactory cf = new ClassSkillPointFactory(skillCount); + context.getGraphContext().grant(getTokenName(), template, cf); + return true; } catch (NumberFormatException nfe) { @@ -69,16 +77,6 @@ + value); return false; } - if (skillCount <= 0) - { -... [truncated message content] |