From: <th...@us...> - 2008-12-30 23:39:19
|
Revision: 8735 http://pcgen.svn.sourceforge.net/pcgen/?rev=8735&view=rev Author: thpr Date: 2008-12-30 23:39:10 +0000 (Tue, 30 Dec 2008) Log Message: ----------- token fixes & updates for round robin behavior Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/base/TransitionChoice.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/ClassSkillChoiceActor.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/TransitionChoice.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/TransitionChoice.java 2008-12-30 22:31:28 UTC (rev 8734) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/TransitionChoice.java 2008-12-30 23:39:10 UTC (rev 8735) @@ -197,4 +197,9 @@ { return stackLimit == null ? 0 : stackLimit; } + + public ChoiceActor<T> getChoiceActor() + { + return choiceActor; + } } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java 2008-12-30 22:31:28 UTC (rev 8734) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java 2008-12-30 23:39:10 UTC (rev 8735) @@ -126,6 +126,10 @@ public String getLSTformat() { List<String> list = new ArrayList<String>(); + if (primitives != null) + { + list.add(primitives.getLSTformat()); + } if (pcset != null) { list.add(pcset.getLSTformat()); @@ -134,10 +138,6 @@ { list.addAll(spelltypes); } - if (primitives != null) - { - list.add(primitives.getLSTformat()); - } return StringUtil.join(list, Constants.COMMA); } @@ -222,7 +222,7 @@ @Override public int hashCode() { - return pcset.hashCode() * 29 + return (pcset == null ? 0 : pcset.hashCode() * 29) + (primitives == null ? 0 : primitives.hashCode()); } @@ -259,10 +259,7 @@ } if (primitives == null) { - if (other.primitives != null) - { - return false; - } + return other.primitives == null; } return primitives.equals(other.primitives); } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/ClassSkillChoiceActor.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/ClassSkillChoiceActor.java 2008-12-30 22:31:28 UTC (rev 8734) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/ClassSkillChoiceActor.java 2008-12-30 23:39:10 UTC (rev 8735) @@ -72,4 +72,9 @@ pc.addAssoc(pcc, AssociationListKey.CSKILL, pcSkill); } + public Integer getApplyRank() + { + return applyRank; + } + } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java 2008-12-30 22:31:28 UTC (rev 8734) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java 2008-12-30 23:39:10 UTC (rev 8735) @@ -157,7 +157,23 @@ return false; } String rankString = tokText.substring(9); - autoRank = Integer.decode(rankString); + try + { + autoRank = Integer.decode(rankString); + if (autoRank <= 0) + { + Logging.errorPrint("Expected AUTORANK= to be" + + " greater than zero, found: " + + autoRank); + return false; + } + } + catch (NumberFormatException e) + { + Logging.errorPrint("Expected AUTORANK= to have" + + " an integer value, found: " + rankString); + return false; + } } else { @@ -184,6 +200,12 @@ + ": Contains ANY and a specific reference: " + value); return false; } + if (refs.isEmpty()) + { + Logging.log(Logging.LST_ERROR, "Non-sensical " + getFullName() + + ": Contains no skill reference: " + value); + return false; + } ReferenceChoiceSet<Skill> rcs = new ReferenceChoiceSet<Skill>(refs); ChoiceSet<Skill> cs = new ChoiceSet<Skill>(getTokenName(), rcs); @@ -230,6 +252,13 @@ sb.append(fString).append(Constants.PIPE); } sb.append(cs.getLSTformat()); + ClassSkillChoiceActor actor = (ClassSkillChoiceActor) container + .getChoiceActor(); + Integer rank = actor.getApplyRank(); + if (rank != null) + { + sb.append(Constants.COMMA).append("AUTORANK=" + rank); + } addStrings.add(sb.toString()); } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java 2008-12-30 22:31:28 UTC (rev 8734) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java 2008-12-30 23:39:10 UTC (rev 8735) @@ -156,7 +156,23 @@ return false; } String rankString = tokText.substring(9); - autoRank = Integer.decode(rankString); + try + { + autoRank = Integer.decode(rankString); + if (autoRank <= 0) + { + Logging.errorPrint("Expected AUTORANK= to be" + + " greater than zero, found: " + + autoRank); + return false; + } + } + catch (NumberFormatException e) + { + Logging.errorPrint("Expected AUTORANK= to have" + + " an integer value, found: " + rankString); + return false; + } } else { @@ -183,6 +199,12 @@ + ": Contains ANY and a specific reference: " + value); return false; } + if (refs.isEmpty()) + { + Logging.log(Logging.LST_ERROR, "Non-sensical " + getFullName() + + ": Contains no skill reference: " + value); + return false; + } ReferenceChoiceSet<Skill> rcs = new ReferenceChoiceSet<Skill>(refs); ChoiceSet<Skill> cs = new ChoiceSet<Skill>(getTokenName(), rcs); @@ -226,6 +248,13 @@ sb.append(fString).append(Constants.PIPE); } sb.append(cs.getLSTformat()); + ClassSkillChoiceActor actor = (ClassSkillChoiceActor) container + .getChoiceActor(); + Integer rank = actor.getApplyRank(); + if (rank != null) + { + sb.append(Constants.COMMA).append("AUTORANK=" + rank); + } addStrings.add(sb.toString()); } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/FeatToken.java 2008-12-30 22:31:28 UTC (rev 8734) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/FeatToken.java 2008-12-30 23:39:10 UTC (rev 8735) @@ -202,6 +202,12 @@ + ": Contains ANY and a specific reference: " + value); return false; } + if (refs.isEmpty()) + { + Logging.log(Logging.LST_ERROR, "Non-sensical " + getFullName() + + ": Contains no ability reference: " + value); + return false; + } AbilityRefChoiceSet rcs = new AbilityRefChoiceSet(category, refs, nature, allowStack, dupChoices); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java 2008-12-30 22:31:28 UTC (rev 8734) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java 2008-12-30 23:39:10 UTC (rev 8735) @@ -71,30 +71,21 @@ public boolean parse(LoadContext context, CDOMObject obj, String value) { int pipeLoc = value.indexOf(Constants.PIPE); - int count; + Formula count; String items; if (pipeLoc == -1) { - count = 1; + count = Formula.ONE; items = value; } else { String countString = value.substring(0, pipeLoc); - try + count = FormulaFactory.getFormulaFor(countString); + if (count.isStatic() && count.resolve(null, "").doubleValue() <= 0) { - count = Integer.parseInt(countString); - if (count < 1) - { - Logging.log(Logging.LST_ERROR, "Count in " + getFullName() - + " must be > 0"); - return false; - } - } - catch (NumberFormatException nfe) - { - Logging.log(Logging.LST_ERROR, "Invalid Count in " + getFullName() + ": " - + countString); + Logging.log(Logging.LST_ERROR, "Count in " + getFullName() + + " must be > 0"); return false; } items = value.substring(pipeLoc + 1); @@ -167,7 +158,7 @@ : new ReferenceChoiceSet<PCClass>(prims); ChoiceSet<PCClass> cs = new SpellCasterChoiceSet(allRef, spelltypes, grcs, prcs); PersistentTransitionChoice<PCClass> tc = new PersistentTransitionChoice<PCClass>( - cs, FormulaFactory.getFormulaFor(count)); + cs, count); tc.setTitle("Spell Caster Class Choice"); context.getObjectContext().addToList(obj, ListKey.ADD, tc); tc.setChoiceActor(this); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java 2008-12-30 22:31:28 UTC (rev 8734) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java 2008-12-30 23:39:10 UTC (rev 8735) @@ -203,6 +203,12 @@ + ": Contains ANY and a specific reference: " + value); return false; } + if (refs.isEmpty()) + { + Logging.log(Logging.LST_ERROR, "Non-sensical " + getFullName() + + ": Contains no ability reference: " + value); + return false; + } AbilityRefChoiceSet rcs = new AbilityRefChoiceSet(category, refs, nature, allowStack, dupChoices); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-31 02:03:54
|
Revision: 8738 http://pcgen.svn.sourceforge.net/pcgen/?rev=8738&view=rev Author: thpr Date: 2008-12-31 02:03:44 +0000 (Wed, 31 Dec 2008) Log Message: ----------- cleanup & fixes Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java 2008-12-31 01:58:45 UTC (rev 8737) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java 2008-12-31 02:03:44 UTC (rev 8738) @@ -61,4 +61,18 @@ return returnSet; } + @Override + public boolean equals(Object obj) + { + return (obj instanceof ModifyChoiceDecorator) + && ((ModifyChoiceDecorator) obj).set.equals(set); + } + + @Override + public int hashCode() + { + return set.hashCode(); + } + + } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java 2008-12-31 01:58:45 UTC (rev 8737) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java 2008-12-31 02:03:44 UTC (rev 8738) @@ -22,6 +22,7 @@ import java.util.StringTokenizer; import pcgen.base.formula.Formula; +import pcgen.base.lang.StringUtil; import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.ChoiceActor; @@ -109,7 +110,8 @@ // Zero indicates no Token return null; } - return new String[] { mc.getChoices().getLSTformat() }; + return new String[] { StringUtil.replaceAll(mc.getChoices() + .getLSTformat(), ",", "|") }; } public Class<Ability> getTokenClass() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-31 03:55:28
|
Revision: 8743 http://pcgen.svn.sourceforge.net/pcgen/?rev=8743&view=rev Author: thpr Date: 2008-12-31 03:55:19 +0000 (Wed, 31 Dec 2008) Log Message: ----------- fixes and updates to allow AUTO token round-robin Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/base/ChooseResultActor.java Trunk/pcgen/code/src/java/pcgen/cdom/content/ConditionalChoiceActor.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractProfProvider.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/ArmorProfProvider.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/ShieldProfProvider.java Trunk/pcgen/code/src/java/plugin/lsttokens/CcskillLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/CskillLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/auto/ArmorProfToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/auto/EquipToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/auto/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/auto/ShieldProfToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/MoncskillToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/ChooseResultActor.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/ChooseResultActor.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/ChooseResultActor.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -19,6 +19,7 @@ package pcgen.cdom.base; import pcgen.core.PlayerCharacter; +import pcgen.persistence.PersistenceLayerException; public interface ChooseResultActor { @@ -27,4 +28,8 @@ void remove(PlayerCharacter pc, CDOMObject obj, String o); + String getSource(); + + String getLstFormat() throws PersistenceLayerException; + } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/content/ConditionalChoiceActor.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/content/ConditionalChoiceActor.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/pcgen/cdom/content/ConditionalChoiceActor.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -21,6 +21,8 @@ import pcgen.cdom.base.ChooseResultActor; import pcgen.cdom.base.ConcretePrereqObject; import pcgen.core.PlayerCharacter; +import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.lst.output.prereq.PrerequisiteWriter; public class ConditionalChoiceActor extends ConcretePrereqObject implements ChooseResultActor @@ -50,4 +52,40 @@ actor.remove(pc, obj, o); } + @Override + public boolean equals(Object obj) + { + if (obj instanceof ConditionalChoiceActor) + { + ConditionalChoiceActor other = (ConditionalChoiceActor) obj; + return actor.equals(other.actor) && equalsPrereqObject(other); + } + return false; + } + + @Override + public int hashCode() + { + return actor.hashCode(); + } + + public String getSource() + { + return actor.getSource(); + } + + public String getLstFormat() throws PersistenceLayerException + { + StringBuilder sb = new StringBuilder(); + sb.append(actor.getLstFormat()); + if (hasPrerequisites()) + { + sb.append('[').append( + new PrerequisiteWriter() + .getPrerequisiteString(getPrerequisiteList())) + .append(']'); + } + return sb.toString(); + } + } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractProfProvider.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/AbstractProfProvider.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -85,6 +85,8 @@ return false; } + protected abstract String getSubType(); + public String getLstFormat() { StringBuilder sb = new StringBuilder(); @@ -99,9 +101,91 @@ } if (!typeEmpty) { - sb.append(ReferenceUtilities.joinLstFormat(byEquipType, - Constants.PIPE).replaceAll("TYPE=ARMOR.", "ARMORTYPE=")); + boolean needPipe = false; + String subType = getSubType(); + String dot = Constants.DOT; + for (CDOMReference<Equipment> ref : byEquipType) + { + if (needPipe) + { + sb.append(Constants.PIPE); + } + needPipe = true; + String lstFormat = ref.getLSTformat(); + if (lstFormat.startsWith("TYPE=")) + { + sb.append(subType).append("TYPE="); + StringTokenizer st = new StringTokenizer(lstFormat + .substring(5), dot); + boolean needDot = false; + while (st.hasMoreTokens()) + { + String tok = st.nextToken(); + if (!tok.equals(subType)) + { + if (needDot) + { + sb.append(dot); + } + needDot = true; + sb.append(tok); + } + } + } + } } return sb.toString(); } + + @Override + public boolean equals(Object obj) + { + if (obj instanceof AbstractProfProvider) + { + AbstractProfProvider<T> other = (AbstractProfProvider<T>) obj; + if (!other.getSubType().equals(getSubType())) + { + return false; + } + if (direct == null) + { + if (other.direct != null) + { + return false; + } + } + else + { + if (!direct.equals(other.direct)) + { + return false; + } + } + if (byEquipType == null) + { + if (other.byEquipType != null) + { + return false; + } + } + else + { + if (!byEquipType.equals(other.byEquipType)) + { + return false; + } + } + return true; + } + return false; + } + + @Override + public int hashCode() + { + return (direct == null ? 0 : direct.hashCode() * 29) + + (byEquipType == null ? 0 : byEquipType.hashCode()); + } + + } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/ArmorProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/ArmorProfProvider.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/ArmorProfProvider.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -43,4 +43,10 @@ return providesProficiency(eq.getArmorProf()) || providesEquipmentType(eq.getType()); } + + @Override + protected String getSubType() + { + return "ARMOR"; + } } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/ShieldProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/ShieldProfProvider.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/ShieldProfProvider.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -43,4 +43,10 @@ return providesProficiency(eq.getShieldProf()) || providesEquipmentType(eq.getType()); } + + @Override + protected String getSubType() + { + return "SHIELD"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/CcskillLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/CcskillLst.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/CcskillLst.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -33,6 +33,7 @@ import pcgen.core.Globals; import pcgen.core.PlayerCharacter; import pcgen.core.Skill; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.TokenUtilities; @@ -207,9 +208,21 @@ Collection<ChooseResultActor> listAdded = listChanges.getAdded(); if (listAdded != null && !listAdded.isEmpty()) { - if (listAdded.contains(this)) + for (ChooseResultActor cra : listAdded) { - list.add("LIST"); + if (cra.getSource().equals(getTokenName())) + { + try + { + list.add(cra.getLstFormat()); + } + catch (PersistenceLayerException e) + { + context.addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + } } } if (list.isEmpty()) @@ -243,4 +256,14 @@ pc.removeAssoc(obj, AssociationListKey.CCSKILL, skill); } } + + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "LIST"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/CskillLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/CskillLst.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/CskillLst.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -33,6 +33,7 @@ import pcgen.core.Globals; import pcgen.core.PlayerCharacter; import pcgen.core.Skill; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.TokenUtilities; @@ -206,9 +207,21 @@ Collection<ChooseResultActor> listAdded = listChanges.getAdded(); if (listAdded != null && !listAdded.isEmpty()) { - if (listAdded.contains(this)) + for (ChooseResultActor cra : listAdded) { - list.add("LIST"); + if (cra.getSource().equals(getTokenName())) + { + try + { + list.add(cra.getLstFormat()); + } + catch (PersistenceLayerException e) + { + context.addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + } } } if (list.isEmpty()) @@ -242,4 +255,14 @@ pc.removeAssoc(obj, AssociationListKey.CSKILL, skill); } } + + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "LIST"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/auto/ArmorProfToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/auto/ArmorProfToken.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/auto/ArmorProfToken.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -71,6 +71,10 @@ public boolean parse(LoadContext context, CDOMObject obj, String value) { + if (isEmpty(value)) + { + return false; + } String weaponProfs; Prerequisite prereq = null; // Do not initialize, null is significant! @@ -181,20 +185,23 @@ Changes<ArmorProfProvider> changes = context.obj.getListChanges(obj, ListKey.AUTO_ARMORPROF); Collection<ArmorProfProvider> added = changes.getAdded(); - // TODO remove not supported? + Set<String> set = new TreeSet<String>(); if (added == null || added.isEmpty()) { return null; } - Set<String> set = new TreeSet<String>(); for (ArmorProfProvider spp : added) { StringBuilder sb = new StringBuilder(); sb.append(spp.getLstFormat()); + if (sb.length() == 0) + { + sb.append("%LIST"); + } if (spp.hasPrerequisites()) { sb.append('['); - sb.append(this.getPrerequisiteString(context, spp + sb.append(getPrerequisiteString(context, spp .getPrerequisiteList())); sb.append(']'); } @@ -229,4 +236,14 @@ new SimpleArmorProfProvider(wp)); } } + + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "%LIST"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/auto/EquipToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/auto/EquipToken.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/auto/EquipToken.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -70,6 +70,10 @@ public boolean parse(LoadContext context, CDOMObject obj, String value) { + if (isEmpty(value)) + { + return false; + } String equipItems; Prerequisite prereq = null; // Do not initialize, null is significant! @@ -175,9 +179,21 @@ Collection<ChooseResultActor> listAdded = listChanges.getAdded(); if (listAdded != null && !listAdded.isEmpty()) { - if (listAdded.contains(this)) + for (ChooseResultActor cra : listAdded) { - list.add("LIST"); + if (cra.getSource().equals(getTokenName())) + { + try + { + list.add(cra.getLstFormat()); + } + catch (PersistenceLayerException e) + { + context.addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + } } } for (List<Prerequisite> prereqs : m.getKeySet()) @@ -243,4 +259,13 @@ } } + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "%LIST"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/auto/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/auto/FeatToken.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/auto/FeatToken.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -191,7 +191,7 @@ { AssociatedChanges<CDOMReference<Ability>> changes = context .getListContext() - .getChangesInList(getTokenName(), obj, ref); + .getChangesInList(getFullName(), obj, ref); MapToList<CDOMReference<Ability>, AssociatedPrereqObject> mtl = changes .getAddedAssociations(); for (CDOMReference<Ability> ab : mtl.getKeySet()) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/auto/ShieldProfToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/auto/ShieldProfToken.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/auto/ShieldProfToken.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -71,6 +71,10 @@ public boolean parse(LoadContext context, CDOMObject obj, String value) { + if (isEmpty(value)) + { + return false; + } String shieldProf; Prerequisite prereq = null; // Do not initialize, null is significant! @@ -93,8 +97,8 @@ .length() - 1)); if (prereq == null) { - Logging.log(Logging.LST_ERROR, "Error generating Prerequisite " + prereq - + " in " + getFullName()); + Logging.log(Logging.LST_ERROR, "Error generating Prerequisite " + + prereq + " in " + getFullName()); return false; } } @@ -181,20 +185,23 @@ Changes<ShieldProfProvider> changes = context.obj.getListChanges(obj, ListKey.AUTO_SHIELDPROF); Collection<ShieldProfProvider> added = changes.getAdded(); - // TODO remove not supported? + Set<String> set = new TreeSet<String>(); if (added == null || added.isEmpty()) { return null; } - Set<String> set = new TreeSet<String>(); for (ShieldProfProvider spp : added) { StringBuilder sb = new StringBuilder(); sb.append(spp.getLstFormat()); + if (sb.length() == 0) + { + sb.append("%LIST"); + } if (spp.hasPrerequisites()) { sb.append('['); - sb.append(this.getPrerequisiteString(context, spp + sb.append(getPrerequisiteString(context, spp .getPrerequisiteList())); sb.append(']'); } @@ -229,4 +236,14 @@ new SimpleShieldProfProvider(wp)); } } + + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "%LIST"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -17,7 +17,6 @@ */ package plugin.lsttokens.auto; -import java.io.StringWriter; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -39,7 +38,6 @@ import pcgen.core.WeaponProf; import pcgen.core.prereq.Prerequisite; import pcgen.persistence.PersistenceLayerException; -import pcgen.persistence.lst.output.prereq.PrerequisiteWriter; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.TokenUtilities; @@ -71,6 +69,10 @@ public boolean parse(LoadContext context, CDOMObject obj, String value) { + if (isEmpty(value)) + { + return false; + } String weaponProfs; Prerequisite prereq = null; // Do not initialize, null is significant! @@ -170,14 +172,13 @@ public String[] unparse(LoadContext context, CDOMObject obj) { List<String> list = new ArrayList<String>(); - PrerequisiteWriter prereqWriter = new PrerequisiteWriter(); Changes<ChooseResultActor> listChanges = context.getObjectContext() .getListChanges(obj, ListKey.CHOOSE_ACTOR); - // TODO remove not supported? - Changes<QualifiedObject<CDOMReference<WeaponProf>>> changes = context.obj .getListChanges(obj, ListKey.WEAPONPROF); + QualifiedObject<Boolean> deityweap = context.obj.getObject(obj, + ObjectKey.HAS_DEITY_WEAPONPROF); Collection<QualifiedObject<CDOMReference<WeaponProf>>> added = changes .getAdded(); HashMapToList<List<Prerequisite>, CDOMReference<WeaponProf>> m = new HashMapToList<List<Prerequisite>, CDOMReference<WeaponProf>>(); @@ -191,11 +192,35 @@ Collection<ChooseResultActor> listAdded = listChanges.getAdded(); if (listAdded != null && !listAdded.isEmpty()) { - if (listAdded.contains(this)) + for (ChooseResultActor cra : listAdded) { - list.add("LIST"); + if (cra.getSource().equals(getTokenName())) + { + try + { + list.add(cra.getLstFormat()); + } + catch (PersistenceLayerException e) + { + context.addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + } } } + if (deityweap != null) + { + StringBuilder sb = new StringBuilder(); + sb.append("DEITYWEAPONS"); + if (deityweap.hasPrerequisites()) + { + sb.append('[').append( + context.getPrerequisiteString(deityweap + .getPrerequisiteList())).append(']'); + } + list.add(sb.toString()); + } for (List<Prerequisite> prereqs : m.getKeySet()) { String ab = ReferenceUtilities.joinLstFormat(m.getListFor(prereqs), @@ -210,18 +235,7 @@ + getFullName()); return null; } - Prerequisite p = prereqs.get(0); - StringWriter swriter = new StringWriter(); - try - { - prereqWriter.write(swriter, p); - } - catch (PersistenceLayerException e) - { - context.addWriteMessage("Error writing Prerequisite: " + e); - return null; - } - ab = ab + '[' + swriter.toString() + ']'; + ab = ab + '[' + context.getPrerequisiteString(prereqs) + ']'; } list.add(ab); } @@ -258,4 +272,14 @@ pc.removeAssoc(obj, AssociationListKey.WEAPONPROF, wp); } } + + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "%LIST"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -45,6 +45,7 @@ import pcgen.core.PlayerCharacter; import pcgen.core.Race; import pcgen.core.SubClass; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; @@ -242,9 +243,21 @@ Collection<ChooseResultActor> listAdded = listChanges.getAdded(); if (listAdded != null && !listAdded.isEmpty()) { - if (listAdded.contains(this)) + for (ChooseResultActor cra : listAdded) { - set.add("%LIST"); + if (cra.getSource().equals(getTokenName())) + { + try + { + set.add(cra.getLstFormat()); + } + catch (PersistenceLayerException e) + { + context.addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + } } } if (set.isEmpty()) @@ -292,4 +305,14 @@ } } + + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "%LIST"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/MoncskillToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/MoncskillToken.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/MoncskillToken.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -40,6 +40,7 @@ import pcgen.core.PlayerCharacter; import pcgen.core.Race; import pcgen.core.Skill; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.AssociatedChanges; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; @@ -252,9 +253,21 @@ Collection<ChooseResultActor> listAdded = listChanges.getAdded(); if (listAdded != null && !listAdded.isEmpty()) { - if (listAdded.contains(this)) + for (ChooseResultActor cra : listAdded) { - list.add("LIST"); + if (cra.getSource().equals(getTokenName())) + { + try + { + list.add(cra.getLstFormat()); + } + catch (PersistenceLayerException e) + { + context.addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + } } } if (list.isEmpty()) @@ -289,4 +302,14 @@ pc.removeAssoc(obj, AssociationListKey.MONCSKILL, skill); } } + + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "LIST"; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java 2008-12-31 02:18:10 UTC (rev 8742) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java 2008-12-31 03:55:19 UTC (rev 8743) @@ -38,6 +38,7 @@ import pcgen.core.PCTemplate; import pcgen.core.PlayerCharacter; import pcgen.core.SubClass; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; @@ -164,9 +165,21 @@ Collection<ChooseResultActor> listAdded = listChanges.getAdded(); if (listAdded != null && !listAdded.isEmpty()) { - if (listAdded.contains(this)) + for (ChooseResultActor cra : listAdded) { - set.add("%LIST"); + if (cra.getSource().equals(getTokenName())) + { + try + { + set.add(cra.getLstFormat()); + } + catch (PersistenceLayerException e) + { + context.addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + } } } if (set.isEmpty()) @@ -214,4 +227,14 @@ } } + + public String getSource() + { + return getTokenName(); + } + + public String getLstFormat() + { + return "%LIST"; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-31 18:49:00
|
Revision: 8756 http://pcgen.svn.sourceforge.net/pcgen/?rev=8756&view=rev Author: thpr Date: 2008-12-31 18:48:56 +0000 (Wed, 31 Dec 2008) Log Message: ----------- refactor to make what was Formula.ONE and Formula.ZERO into IntegerFormula thus can be compared with equals without converting toString() Also some token fixes Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/base/formula/Formula.java Trunk/pcgen/code/src/java/pcgen/cdom/base/FormulaFactory.java Trunk/pcgen/code/src/java/pcgen/cdom/content/SpellResistance.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/FormulaKey.java Trunk/pcgen/code/src/java/pcgen/core/bonus/BonusObj.java Trunk/pcgen/code/src/java/plugin/lsttokens/OutputnameLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/RegionLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/SpellsLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/SrLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/TempdescLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/AbilityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/EquipToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/LanguageToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/SkillToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/TemplateToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/ChooseLangautoToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/remove/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/template/ChooseLangautoToken.java Modified: Trunk/pcgen/code/src/java/pcgen/base/formula/Formula.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/base/formula/Formula.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/pcgen/base/formula/Formula.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -27,89 +27,10 @@ */ public interface Formula { - - /** - * An Integer for the constant ONE. This is done in order to minimize - * processing time in fetching this constant during formula resolution - */ - public static final Integer INT_ONE = Integer.valueOf(1); - - /** - * An Integer for the constant ZERO. This is done in order to minimize - * processing time in fetching this constant during formula resolution - */ - public static final Integer INT_ZERO = Integer.valueOf(0); - - /** - * A Formula for the integer constant ZERO. This is done in order to - * minimize memory usage in the many cases where a default Formula of ZERO - * is required. - */ - public final Formula ZERO = new Formula() - { - public Integer resolve(PlayerCharacter pc, String source) - { - return INT_ZERO; - } - - public Integer resolve(Equipment equipment, boolean primary, - PlayerCharacter apc, String string) - { - return INT_ZERO; - } - - public boolean isStatic() - { - return true; - } - - @Override - public String toString() - { - return "0"; - } - }; - - /** - * A Formula for the integer constant ONE. This is done in order to minimize - * memory usage in the many cases where a default Formula of ONE is - * required. - */ - public final Formula ONE = new Formula() - { - public Integer resolve(PlayerCharacter pc, String source) - { - return INT_ONE; - } - - public Integer resolve(Equipment equipment, boolean primary, - PlayerCharacter apc, String string) - { - return INT_ONE; - } - - public boolean isStatic() - { - return true; - } - - @Override - public String toString() - { - return "1"; - } - - }; - - /* - * The idea is to hide JEP behind this interface, so that Formula are type - * safe and other optimizations can be performed that may help speed up - * PCGen... long way off, but at least the type safety will help out. - */ - public Number resolve(PlayerCharacter pc, String source); public boolean isStatic(); - public Number resolve(Equipment equipment, boolean primary, PlayerCharacter apc, String string); + public Number resolve(Equipment equipment, boolean primary, + PlayerCharacter apc, String string); } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/FormulaFactory.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/FormulaFactory.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/FormulaFactory.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -28,6 +28,20 @@ public final class FormulaFactory { + /** + * A Formula for the integer constant ZERO. This is done in order to + * minimize memory usage in the many cases where a default Formula of ZERO + * is required. + */ + public final static Formula ZERO = new IntegerFormula(0); + + /** + * A Formula for the integer constant ONE. This is done in order to minimize + * memory usage in the many cases where a default Formula of ONE is + * required. + */ + public final static Formula ONE = new IntegerFormula(1); + private FormulaFactory() { // Can't instantiate Utility Class Modified: Trunk/pcgen/code/src/java/pcgen/cdom/content/SpellResistance.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/content/SpellResistance.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/pcgen/cdom/content/SpellResistance.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -19,11 +19,12 @@ import pcgen.base.formula.Formula; import pcgen.cdom.base.ConcretePrereqObject; +import pcgen.cdom.base.FormulaFactory; public class SpellResistance extends ConcretePrereqObject { - public static final SpellResistance NONE = new SpellResistance(Formula.ZERO); + public static final SpellResistance NONE = new SpellResistance(FormulaFactory.ZERO); private final Formula reduction; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/FormulaKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/FormulaKey.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/FormulaKey.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -23,6 +23,7 @@ import pcgen.base.enumeration.TypeSafeConstant; import pcgen.base.formula.Formula; import pcgen.base.util.CaseInsensitiveMap; +import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.formula.FixedSizeFormula; import pcgen.core.SettingsHandler; @@ -60,7 +61,7 @@ public static final FormulaKey CR = getConstant("CR"); - public static final FormulaKey SELECT = getConstant("SELECT", Formula.ONE); + public static final FormulaKey SELECT = getConstant("SELECT", FormulaFactory.ONE); public static final FormulaKey NUMCHOICES = getConstant("NUMCHOICES"); @@ -72,7 +73,7 @@ static { - SIZE = new FormulaKey("SIZE", Formula.ZERO) + SIZE = new FormulaKey("SIZE", FormulaFactory.ZERO) { @Override public Formula getDefault() @@ -151,7 +152,7 @@ FormulaKey o = typeMap.get(s); if (o == null) { - o = new FormulaKey(s, Formula.ZERO); + o = new FormulaKey(s, FormulaFactory.ZERO); typeMap.put(s, o); } return o; Modified: Trunk/pcgen/code/src/java/pcgen/core/bonus/BonusObj.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/bonus/BonusObj.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/pcgen/core/bonus/BonusObj.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -58,7 +58,7 @@ { private List<Object> bonusInfo = new ArrayList<Object>(); private Map<String, String> dependMap = new HashMap<String, String>(); - private Formula bonusFormula = Formula.ZERO; + private Formula bonusFormula = FormulaFactory.ZERO; private Object creatorObj; private Object targetObj; /** The name of the bonus e.g. STAT or COMBAT */ Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/OutputnameLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/OutputnameLst.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/OutputnameLst.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -20,37 +20,42 @@ import pcgen.cdom.base.CDOMObject; import pcgen.cdom.enumeration.StringKey; import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; /** * @author djones4 - * + * */ -public class OutputnameLst implements CDOMPrimaryToken<CDOMObject> +public class OutputnameLst extends AbstractToken implements + CDOMPrimaryToken<CDOMObject> { + @Override public String getTokenName() { return "OUTPUTNAME"; } - public boolean parse(LoadContext context, CDOMObject obj, String value) { + if (isEmpty(value)) + { + return false; + } context.getObjectContext().put(obj, StringKey.OUTPUT_NAME, value); return true; } public String[] unparse(LoadContext context, CDOMObject obj) { - String oname = - context.getObjectContext() - .getString(obj, StringKey.OUTPUT_NAME); + String oname = context.getObjectContext().getString(obj, + StringKey.OUTPUT_NAME); if (oname == null) { return null; } - return new String[]{oname}; + return new String[] { oname }; } public Class<CDOMObject> getTokenClass() Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/RegionLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/RegionLst.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/RegionLst.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -48,21 +48,24 @@ Formula count = FormulaFactory.getFormulaFor(item); if (count.isStatic()) { + if (!tok.hasMoreTokens()) + { + Logging.addParseMessage(Logging.LST_ERROR, getTokenName() + + " cannot have only a count: " + value); + return false; + } item = tok.nextToken(); if (count.resolve(null, "").intValue() <= 0) { Logging.addParseMessage(Logging.LST_ERROR, "Count in " - + getTokenName() + " must be > 0"); + + getTokenName() + " must be > 0: " + value); return false; } - if (!tok.hasMoreTokens()) - { - Logging.addParseMessage(Logging.LST_ERROR, getTokenName() - + " must have a | separating " - + "count from the list of possible values: " + value); - return false; - } } + else + { + count = FormulaFactory.ONE; + } List<Region> regions = new ArrayList<Region>(); while (true) { @@ -73,7 +76,7 @@ } item = tok.nextToken(); } - +System.err.println(regions); SimpleChoiceSet<Region> rcs = new SimpleChoiceSet<Region>(regions); ChoiceSet<Region> cs = new ChoiceSet<Region>(getTokenName(), rcs); TransitionChoice<Region> tc = new TransitionChoice<Region>(cs, count); @@ -94,8 +97,8 @@ return null; } StringBuilder sb = new StringBuilder(); - String count = tc.getCount().toString(); - if (!"1".equals(count)) + Formula count = tc.getCount(); + if (!FormulaFactory.ONE.equals(count)) { sb.append(count); sb.append(Constants.PIPE); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/SpellsLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/SpellsLst.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/SpellsLst.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -232,8 +232,17 @@ dkm.put(spell, AssociationKey.CASTER_LEVEL, casterLevel); dkm.put(spell, AssociationKey.TIMES_PER_UNIT, FormulaFactory .getFormulaFor(times)); - dkm.put(spell, AssociationKey.TIME_UNIT, SettingsHandler.getGame() - .getTimeUnit(timeunit)); + if (timeunit != null) + { + TimeUnit unit = SettingsHandler.getGame().getTimeUnit(timeunit); + if (unit == null) + { + Logging.errorPrint(getTokenName() + "found invalid Time Unit: " + + timeunit); + return false; + } + dkm.put(spell, AssociationKey.TIME_UNIT, unit); + } dkm.put(spell, AssociationKey.SPELLBOOK, spellBook); if (commaLoc != -1) { @@ -351,7 +360,7 @@ sb.append(am.get(AssociationKey.SPELLBOOK)); Formula times = AssociationKey.TIMES_PER_UNIT.cast(am .get(AssociationKey.TIMES_PER_UNIT)); - if (!Formula.ONE.equals(times)) + if (!FormulaFactory.ONE.equals(times)) { sb.append(Constants.PIPE).append("TIMES=").append(times); } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/SrLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/SrLst.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/SrLst.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -45,16 +45,11 @@ else { context.getObjectContext().put(obj, ObjectKey.SR, - getSpellResistance(value)); + new SpellResistance(FormulaFactory.getFormulaFor(value))); } return true; } - private SpellResistance getSpellResistance(String value) - { - return new SpellResistance(FormulaFactory.getFormulaFor(value)); - } - public String[] unparse(LoadContext context, CDOMObject obj) { SpellResistance sr = context.getObjectContext().getObject(obj, Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/TempdescLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/TempdescLst.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/TempdescLst.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -21,15 +21,18 @@ import pcgen.cdom.enumeration.StringKey; import pcgen.io.EntityEncoder; import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; /** * @author djones4 - * + * */ -public class TempdescLst implements CDOMPrimaryToken<CDOMObject> +public class TempdescLst extends AbstractToken implements + CDOMPrimaryToken<CDOMObject> { + @Override public String getTokenName() { return "TEMPDESC"; @@ -37,21 +40,24 @@ public boolean parse(LoadContext context, CDOMObject obj, String value) { + if (isEmpty(value)) + { + return false; + } context.getObjectContext().put(obj, StringKey.TEMP_DESCRIPTION, - EntityEncoder.decode(value)); + EntityEncoder.decode(value)); return true; } public String[] unparse(LoadContext context, CDOMObject obj) { - String descr = - context.getObjectContext().getString(obj, - StringKey.TEMP_DESCRIPTION); + String descr = context.getObjectContext().getString(obj, + StringKey.TEMP_DESCRIPTION); if (descr == null) { return null; } - return new String[]{EntityEncoder.encode(descr)}; + return new String[] { EntityEncoder.encode(descr) }; } public Class<CDOMObject> getTokenClass() Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyabilitychoiceToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -21,12 +21,12 @@ import java.util.List; import java.util.StringTokenizer; -import pcgen.base.formula.Formula; import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.ChoiceActor; import pcgen.cdom.base.ChoiceSet; import pcgen.cdom.base.Constants; +import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.choiceset.ModifyChoiceDecorator; import pcgen.cdom.choiceset.ReferenceChoiceSet; @@ -91,7 +91,7 @@ ModifyChoiceDecorator gfd = new ModifyChoiceDecorator(rcs); ChoiceSet<Ability> cs = new ChoiceSet<Ability>("MODIFYFEATCHOICE", gfd); TransitionChoice<Ability> tc = new TransitionChoice<Ability>(cs, - Formula.ONE); + FormulaFactory.ONE); tc.setTitle("Select a " + SettingsHandler.getGame().getSingularTabName(Tab.ABILITIES) + " to modify"); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/ModifyfeatchoiceToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -21,13 +21,13 @@ import java.util.List; import java.util.StringTokenizer; -import pcgen.base.formula.Formula; import pcgen.base.lang.StringUtil; import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.ChoiceActor; import pcgen.cdom.base.ChoiceSet; import pcgen.cdom.base.Constants; +import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.choiceset.ModifyChoiceDecorator; import pcgen.cdom.choiceset.ReferenceChoiceSet; @@ -90,7 +90,7 @@ ModifyChoiceDecorator gfd = new ModifyChoiceDecorator(rcs); ChoiceSet<Ability> cs = new ChoiceSet<Ability>(getTokenName(), gfd); TransitionChoice<Ability> tc = new TransitionChoice<Ability>(cs, - Formula.ONE); + FormulaFactory.ONE); tc.setTitle("Select a " + SettingsHandler.getGame().getSingularTabName(Tab.ABILITIES) + " to modify"); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/AbilityToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/AbilityToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/AbilityToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -132,7 +132,7 @@ } else if (tokenCount == 3) { - count = Formula.ONE; + count = FormulaFactory.ONE; } else { Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -78,7 +78,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -77,7 +77,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/EquipToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/EquipToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/EquipToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -78,7 +78,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/FeatToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/FeatToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -88,7 +88,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/LanguageToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/LanguageToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/LanguageToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -77,7 +77,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/SkillToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/SkillToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/SkillToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -74,7 +74,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/SpellCasterToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -75,7 +75,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/TemplateToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/TemplateToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/TemplateToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -76,7 +76,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/VFeatToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -89,7 +89,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/ChooseLangautoToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/ChooseLangautoToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/ChooseLangautoToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -27,6 +27,7 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.ChoiceSet; import pcgen.cdom.base.Constants; +import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.base.PersistentChoiceActor; import pcgen.cdom.base.PersistentTransitionChoice; import pcgen.cdom.base.TransitionChoice; @@ -112,7 +113,7 @@ new ReferenceChoiceSet<Language>(refs); ChoiceSet<Language> cs = new ChoiceSet<Language>(getTokenName(), rcs); PersistentTransitionChoice<Language> tc = - new PersistentTransitionChoice<Language>(cs, Formula.ONE); + new PersistentTransitionChoice<Language>(cs, FormulaFactory.ONE); context.getObjectContext().addToList(race, ListKey.ADD, tc); tc.setTitle("Pick a Language"); tc.setChoiceActor(this); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -24,7 +24,6 @@ import java.util.StringTokenizer; import java.util.TreeSet; -import pcgen.base.formula.Formula; import pcgen.base.lang.StringUtil; import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.CDOMReference; @@ -32,6 +31,7 @@ import pcgen.cdom.base.ChoiceSet; import pcgen.cdom.base.ChooseResultActor; import pcgen.cdom.base.Constants; +import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.base.PrimitiveChoiceSet; import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.choiceset.ClassReferenceChoiceSet; @@ -135,7 +135,7 @@ ChoiceSet<? extends PCClass> cs = new ChoiceSet<PCClass>( getTokenName(), rcs); TransitionChoice<PCClass> tc = new TransitionChoice<PCClass>(cs, - Formula.ONE); + FormulaFactory.ONE); context.getObjectContext().put(race, ObjectKey.FAVCLASS_CHOICE, tc); tc.setTitle("Select favored class"); tc.setRequired(true); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/remove/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/remove/FeatToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/remove/FeatToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -95,7 +95,7 @@ String items; if (pipeLoc == -1) { - count = Formula.ONE; + count = FormulaFactory.ONE; items = value; } else Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/template/ChooseLangautoToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/template/ChooseLangautoToken.java 2008-12-31 18:33:35 UTC (rev 8755) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/template/ChooseLangautoToken.java 2008-12-31 18:48:56 UTC (rev 8756) @@ -27,6 +27,7 @@ import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.ChoiceSet; import pcgen.cdom.base.Constants; +import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.base.PersistentChoiceActor; import pcgen.cdom.base.PersistentTransitionChoice; import pcgen.cdom.base.TransitionChoice; @@ -113,7 +114,7 @@ new ReferenceChoiceSet<Language>(refs); ChoiceSet<Language> cs = new ChoiceSet<Language>(getTokenName(), rcs); PersistentTransitionChoice<Language> tc = - new PersistentTransitionChoice<Language>(cs, Formula.ONE); + new PersistentTransitionChoice<Language>(cs, FormulaFactory.ONE); context.getObjectContext().addToList(template, ListKey.ADD, tc); tc.setTitle("Pick a Language"); tc.setChoiceActor(this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2010-06-26 00:10:04
|
Revision: 12281 http://pcgen.svn.sourceforge.net/pcgen/?rev=12281&view=rev Author: thpr Date: 2010-06-26 00:09:57 +0000 (Sat, 26 Jun 2010) Log Message: ----------- Fix: AUTO:EQUIP Adds '0' of item Issue#: CODE-82 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/facet/AutoEquipmentFacet.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/plugin/lsttokens/auto/EquipToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/AutoEquipmentFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/AutoEquipmentFacet.java 2010-06-25 23:58:52 UTC (rev 12280) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/AutoEquipmentFacet.java 2010-06-26 00:09:57 UTC (rev 12281) @@ -18,6 +18,7 @@ package pcgen.cdom.facet; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import pcgen.cdom.base.CDOMObject; @@ -79,7 +80,14 @@ List<Equipment> list = new ArrayList<Equipment>(); for (QualifiedObject<CDOMReference<Equipment>> qo : getQualifiedSet(id)) { - list.addAll(qo.getRawObject().getContainedObjects()); + Collection<Equipment> equipList = qo.getRawObject().getContainedObjects(); + for (Equipment e : equipList) + { + e = e.clone(); + e.setQty(1); + e.setAutomatic(true); + list.add(e); + } } return list; } Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2010-06-25 23:58:52 UTC (rev 12280) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2010-06-26 00:09:57 UTC (rev 12281) @@ -1539,6 +1539,15 @@ { Set<Equipment> set = userEquipmentFacet.getSet(id); final List<Equipment> aList = new ArrayList<Equipment>(set); + for (CDOMObject cdo : getCDOMObjectList()) + { + List<Equipment> equip = getAssocList(cdo, AssociationListKey.EQUIPMENT); + if (equip != null) + { + aList.addAll(equip); + } + } + aList.addAll(autoEquipFacet.getAutoEquipment(id)); return aList; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/auto/EquipToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/auto/EquipToken.java 2010-06-25 23:58:52 UTC (rev 12280) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/auto/EquipToken.java 2010-06-26 00:09:57 UTC (rev 12281) @@ -142,11 +142,6 @@ context.obj.addToList(obj, ListKey.EQUIPMENT, new QualifiedObject<CDOMReference<Equipment>>(ref, prereq)); - // apo.setAssociation(AssociationKey.EQUIPMENT_NATURE, - // EquipmentNature.AUTOMATIC); - // apo.setAssociation(AssociationKey.QUANTITY, INTEGER_ONE); - // TODO Need to account for output index?? - // newEq.setOutputIndex(aList.size()); } } @@ -244,6 +239,9 @@ .silentlyGetConstructedCDOMObject(EQUIPMENT_CLASS, o); if (e != null) { + e = e.clone(); + e.setQty(1); + e.setAutomatic(true); pc.addAssoc(obj, AssociationListKey.EQUIPMENT, e); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2010-11-21 03:23:35
|
Revision: 13938 http://pcgen.svn.sourceforge.net/pcgen/?rev=13938&view=rev Author: jdempsey Date: 2010-11-21 03:23:28 +0000 (Sun, 21 Nov 2010) Log Message: ----------- Fix bug: Output Sheet vs. UI - CHOOSE w/ STACK:YES is not displaying the Choices, instead show x2, x3, etc. Issue#: CODE-385 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/base/BasicChooseInformation.java Trunk/pcgen/code/src/java/pcgen/cdom/base/CategorizedChooseInformation.java Trunk/pcgen/code/src/java/pcgen/cdom/base/SpellLevelChooseInformation.java Trunk/pcgen/code/src/java/pcgen/cdom/base/UserChooseInformation.java Trunk/pcgen/code/src/java/pcgen/core/analysis/QualifiedName.java Trunk/pcgen/code/src/java/plugin/lsttokens/choose/NoChoiceToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/BasicChooseInformation.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/BasicChooseInformation.java 2010-11-21 03:18:04 UTC (rev 13937) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/BasicChooseInformation.java 2010-11-21 03:23:28 UTC (rev 13938) @@ -282,6 +282,6 @@ public CharSequence getDisplay(PlayerCharacter pc, CDOMObject owner) { return StringUtil.joinToStringBuffer(pc.getExpandedAssociations(owner), - ","); + ", "); } } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/CategorizedChooseInformation.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/CategorizedChooseInformation.java 2010-11-21 03:18:04 UTC (rev 13937) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/CategorizedChooseInformation.java 2010-11-21 03:23:28 UTC (rev 13938) @@ -301,6 +301,6 @@ public CharSequence getDisplay(PlayerCharacter pc, CDOMObject owner) { return StringUtil.joinToStringBuffer(pc.getExpandedAssociations(owner), - ","); + ", "); } } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/SpellLevelChooseInformation.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/SpellLevelChooseInformation.java 2010-11-21 03:18:04 UTC (rev 13937) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/SpellLevelChooseInformation.java 2010-11-21 03:23:28 UTC (rev 13938) @@ -298,6 +298,6 @@ public CharSequence getDisplay(PlayerCharacter pc, CDOMObject owner) { return StringUtil.joinToStringBuffer(pc.getExpandedAssociations(owner), - ","); + ", "); } } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/UserChooseInformation.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/UserChooseInformation.java 2010-11-21 03:18:04 UTC (rev 13937) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/UserChooseInformation.java 2010-11-21 03:23:28 UTC (rev 13938) @@ -78,7 +78,7 @@ public CharSequence getDisplay(PlayerCharacter pc, CDOMObject owner) { return StringUtil.joinToStringBuffer(pc.getExpandedAssociations(owner), - ","); + ", "); } public void restoreChoice(PlayerCharacter pc, CDOMObject owner, Modified: Trunk/pcgen/code/src/java/pcgen/core/analysis/QualifiedName.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/QualifiedName.java 2010-11-21 03:18:04 UTC (rev 13937) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/QualifiedName.java 2010-11-21 03:23:28 UTC (rev 13938) @@ -20,6 +20,7 @@ package pcgen.core.analysis; import pcgen.base.lang.StringUtil; +import pcgen.cdom.base.ChooseInformation; import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.Ability; import pcgen.core.PlayerCharacter; @@ -55,25 +56,26 @@ if (pc.hasAssociations(a) && !a.getKeyName().startsWith("Armor Proficiency")) { - if (!ChooseActivation.hasChooseToken(a) - || (a.getSafe(ObjectKey.MULTIPLE_ALLOWED) && a - .getSafe(ObjectKey.STACKS))) + ChooseInformation<?> chooseInfo = + a.get(ObjectKey.CHOOSE_INFO); + + String choiceInfo; + if (chooseInfo != null) { - if (pc.getDetailedAssociationCount(a) > 1) - { - // number of items only (ie stacking), e.g. " (1x)" - aStrBuf.append(" ("); - aStrBuf.append(pc.getDetailedAssociationCount(a)); - aStrBuf.append("x)"); - } + + choiceInfo = chooseInfo.getDisplay(pc, a).toString(); } else { - // has a sub-detail + choiceInfo = StringUtil.joinToStringBuffer(pc + .getExpandedAssociations(a), ", ").toString(); + } + + if (choiceInfo.length() > 0) + { aStrBuf.append(" ("); - aStrBuf.append(StringUtil.joinToStringBuffer(pc - .getExpandedAssociations(a), ", ")); - aStrBuf.append(')'); + aStrBuf.append(choiceInfo); + aStrBuf.append(")"); } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/choose/NoChoiceToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/choose/NoChoiceToken.java 2010-11-21 03:18:04 UTC (rev 13937) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/choose/NoChoiceToken.java 2010-11-21 03:23:28 UTC (rev 13938) @@ -197,9 +197,8 @@ int count = (list == null) ? 0 : list.size(); if (count > 1) { - sb.append('('); sb.append(count); - sb.append("x)"); + sb.append("x"); } return sb; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2012-01-20 02:06:07
|
Revision: 15862 http://pcgen.svn.sourceforge.net/pcgen/?rev=15862&view=rev Author: thpr Date: 2012-01-20 02:06:00 +0000 (Fri, 20 Jan 2012) Log Message: ----------- More Spring enablement of Facets - Moves facets out of PlayerCharacter Modified Paths: -------------- Trunk/pcgen/code/src/java/applicationContext.xml Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/facet/AddLanguageFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/FreeLanguageFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/SkillLanguageFacet.java Modified: Trunk/pcgen/code/src/java/applicationContext.xml =================================================================== --- Trunk/pcgen/code/src/java/applicationContext.xml 2012-01-20 00:35:40 UTC (rev 15861) +++ Trunk/pcgen/code/src/java/applicationContext.xml 2012-01-20 02:06:00 UTC (rev 15862) @@ -12,6 +12,7 @@ <bean id="addedTemplateFacet" class="pcgen.cdom.facet.AddedTemplateFacet"> <property name="prerequisiteFacet" ref="prerequisiteFacet"/> </bean> + <bean id="addLanguageFacet" class="pcgen.cdom.facet.AddLanguageFacet"/> <bean id="addLevelFacet" class="pcgen.cdom.facet.AddLevelFacet" /> <bean id="ageFacet" class="pcgen.cdom.facet.AgeFacet" /> <bean id="ageSetFacet" class="pcgen.cdom.facet.AgeSetFacet"> @@ -136,6 +137,7 @@ </bean> <bean id="followerOptionFacet" class="pcgen.cdom.facet.FollowerOptionFacet" /> <bean id="formulaResolvingFacet" class="pcgen.cdom.facet.FormulaResolvingFacet" /> + <bean id="freeLanguageFacet" class="pcgen.cdom.facet.FreeLanguageFacet"/> <!-- G --> <bean id="genderFacet" class="pcgen.cdom.facet.GenderFacet"> <property name="templateFacet" ref="templateFacet"/> @@ -280,6 +282,7 @@ <property name="levelFacet" ref="levelFacet"/> </bean> <bean id="skillFacet" class="pcgen.cdom.facet.SkillFacet"/> + <bean id="skillLanguageFacet" class="pcgen.cdom.facet.SkillLanguageFacet"/> <bean id="sourcedEquipmentFacet" class="pcgen.cdom.facet.SourcedEquipmentFacet"/> <bean id="spellBookFacet" class="pcgen.cdom.facet.SpellBookFacet"/> <bean id="spellListFacet" class="pcgen.cdom.facet.SpellListFacet"/> Added: Trunk/pcgen/code/src/java/pcgen/cdom/facet/AddLanguageFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/AddLanguageFacet.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/AddLanguageFacet.java 2012-01-20 02:06:00 UTC (rev 15862) @@ -0,0 +1,24 @@ +/* + * Copyright (c) Thomas Parker, 2012. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package pcgen.cdom.facet; + +import pcgen.core.Language; + +public class AddLanguageFacet extends AbstractSourcedListFacet<Language> +{ +} \ No newline at end of file Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java 2012-01-20 00:35:40 UTC (rev 15861) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java 2012-01-20 02:06:00 UTC (rev 15862) @@ -17,9 +17,6 @@ */ package pcgen.cdom.facet; -import pcgen.core.PlayerCharacter.AddLanguageFacet; -import pcgen.core.PlayerCharacter.FreeLanguageFacet; -import pcgen.core.PlayerCharacter.SkillLanguageFacet; public class FacetInitialization { @@ -56,13 +53,13 @@ LanguageFacet languageFacet = FacetLibrary .getFacet(LanguageFacet.class); - LanguageFacet freeLangFacet = FacetLibrary + FreeLanguageFacet freeLangFacet = FacetLibrary .getFacet(FreeLanguageFacet.class); AutoLanguageFacet autoLangFacet = FacetLibrary .getFacet(AutoLanguageFacet.class); - LanguageFacet addLangFacet = FacetLibrary + AddLanguageFacet addLangFacet = FacetLibrary .getFacet(AddLanguageFacet.class); - LanguageFacet skillLangFacet = FacetLibrary + SkillLanguageFacet skillLangFacet = FacetLibrary .getFacet(SkillLanguageFacet.class); StartingLanguageFacet startingLangFacet = FacetLibrary .getFacet(StartingLanguageFacet.class); Added: Trunk/pcgen/code/src/java/pcgen/cdom/facet/FreeLanguageFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/FreeLanguageFacet.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/FreeLanguageFacet.java 2012-01-20 02:06:00 UTC (rev 15862) @@ -0,0 +1,28 @@ +/* + * Copyright (c) Thomas Parker, 2012. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package pcgen.cdom.facet; + +import pcgen.core.Language; + +/** + * FreeLanguageFacet is a Facet that tracks the Languages that have been granted + * to a Player Character for free. + */ +public class FreeLanguageFacet extends AbstractSourcedListFacet<Language> +{ +} Added: Trunk/pcgen/code/src/java/pcgen/cdom/facet/SkillLanguageFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/SkillLanguageFacet.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/SkillLanguageFacet.java 2012-01-20 02:06:00 UTC (rev 15862) @@ -0,0 +1,24 @@ +/* + * Copyright (c) Thomas Parker, 2012. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package pcgen.cdom.facet; + +import pcgen.core.Language; + +public class SkillLanguageFacet extends AbstractSourcedListFacet<Language> +{ +} \ No newline at end of file Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2012-01-20 00:35:40 UTC (rev 15861) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2012-01-20 02:06:00 UTC (rev 15862) @@ -208,10 +208,10 @@ private FollowerFacet followerFacet = FacetLibrary.getFacet(FollowerFacet.class); private LanguageFacet languageFacet = FacetLibrary.getFacet(LanguageFacet.class); - private LanguageFacet freeLangFacet = FacetLibrary.getFacet(FreeLanguageFacet.class); + private FreeLanguageFacet freeLangFacet = FacetLibrary.getFacet(FreeLanguageFacet.class); private AutoLanguageFacet autoLangFacet = FacetLibrary.getFacet(AutoLanguageFacet.class); - private LanguageFacet addLangFacet = FacetLibrary.getFacet(AddLanguageFacet.class); - private LanguageFacet skillLangFacet = FacetLibrary.getFacet(SkillLanguageFacet.class); + private AddLanguageFacet addLangFacet = FacetLibrary.getFacet(AddLanguageFacet.class); + private SkillLanguageFacet skillLangFacet = FacetLibrary.getFacet(SkillLanguageFacet.class); private StartingLanguageFacet startingLangFacet = FacetLibrary.getFacet(StartingLanguageFacet.class); private ObjectCache cache = new ObjectCache(); @@ -12055,17 +12055,6 @@ return !equipmentFacet.isEmpty(id); } - /* - * These are present here because they (1) Should be contained within - * PlayerCharacter (2) Should disappear once LanguageFacet can be reused - * with different parameters in a DI system if we go that direction - */ - public static class FreeLanguageFacet extends LanguageFacet {} - - public static class AddLanguageFacet extends LanguageFacet {} - - public static class SkillLanguageFacet extends LanguageFacet {} - public boolean hasUserVirtualAbility(AbilityCategory cat, Ability abilityInfo) { return abFacet.contains(id, cat, Nature.VIRTUAL, abilityInfo); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2012-02-04 18:48:51
|
Revision: 16002 http://pcgen.svn.sourceforge.net/pcgen/?rev=16002&view=rev Author: thpr Date: 2012-02-04 18:48:44 +0000 (Sat, 04 Feb 2012) Log Message: ----------- AppliedBonusFacet init() Modified Paths: -------------- Trunk/pcgen/code/src/java/applicationContext.xml Trunk/pcgen/code/src/java/pcgen/cdom/facet/AppliedBonusFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java Modified: Trunk/pcgen/code/src/java/applicationContext.xml =================================================================== --- Trunk/pcgen/code/src/java/applicationContext.xml 2012-02-04 18:46:27 UTC (rev 16001) +++ Trunk/pcgen/code/src/java/applicationContext.xml 2012-02-04 18:48:44 UTC (rev 16002) @@ -31,6 +31,7 @@ <bean id="appliedBonusFacet" class="pcgen.cdom.facet.AppliedBonusFacet"> <property name="addedBonusFacet" ref="addedBonusFacet"/> <property name="prerequisiteFacet" ref="prerequisiteFacet"/> + <property name="raceFacet" ref="raceFacet"/> </bean> <bean id="armorClassFacet" class="pcgen.cdom.facet.ArmorClassFacet"> <property name="prerequisiteFacet" ref="prerequisiteFacet"/> Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/AppliedBonusFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/AppliedBonusFacet.java 2012-02-04 18:46:27 UTC (rev 16001) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/AppliedBonusFacet.java 2012-02-04 18:48:44 UTC (rev 16002) @@ -30,6 +30,8 @@ private PrerequisiteFacet prerequisiteFacet; + private RaceFacet raceFacet; + @Override public void dataAdded(DataFacetChangeEvent<CDOMObject> dfce) { @@ -84,4 +86,13 @@ this.prerequisiteFacet = prerequisiteFacet; } + public void setRaceFacet(RaceFacet raceFacet) + { + this.raceFacet = raceFacet; + } + + public void init() + { + raceFacet.addDataFacetChangeListener(this); + } } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java 2012-02-04 18:46:27 UTC (rev 16001) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java 2012-02-04 18:48:44 UTC (rev 16002) @@ -176,8 +176,6 @@ .getFacet(SpellBookFacet.class); AddLevelFacet addLevelFacet = FacetLibrary .getFacet(AddLevelFacet.class); - AppliedBonusFacet appliedBonusFacet = - FacetLibrary.getFacet(AppliedBonusFacet.class); UnencumberedArmorFacet unencumberedArmorFacet = FacetLibrary.getFacet(UnencumberedArmorFacet.class); UnencumberedLoadFacet unencumberedLoadFacet = @@ -190,8 +188,6 @@ equipmentFacet.addDataFacetChangeListener(spellBookFacet); - raceFacet.addDataFacetChangeListener(appliedBonusFacet); - equipmentFacet.addDataFacetChangeListener(naturalEquipmentFacet); equippedFacet.addDataFacetChangeListener(activeEquipmentFacet); naturalEquipmentFacet.addDataFacetChangeListener(activeEquipmentFacet); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2012-02-04 18:52:00
|
Revision: 16004 http://pcgen.svn.sourceforge.net/pcgen/?rev=16004&view=rev Author: thpr Date: 2012-02-04 18:51:54 +0000 (Sat, 04 Feb 2012) Log Message: ----------- SpellBookFacet init() Modified Paths: -------------- Trunk/pcgen/code/src/java/applicationContext.xml Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/SpellBookFacet.java Modified: Trunk/pcgen/code/src/java/applicationContext.xml =================================================================== --- Trunk/pcgen/code/src/java/applicationContext.xml 2012-02-04 18:50:19 UTC (rev 16003) +++ Trunk/pcgen/code/src/java/applicationContext.xml 2012-02-04 18:51:54 UTC (rev 16004) @@ -290,7 +290,9 @@ <bean id="skillFacet" class="pcgen.cdom.facet.SkillFacet"/> <bean id="skillLanguageFacet" class="pcgen.cdom.facet.SkillLanguageFacet"/> <bean id="sourcedEquipmentFacet" class="pcgen.cdom.facet.SourcedEquipmentFacet"/> - <bean id="spellBookFacet" class="pcgen.cdom.facet.SpellBookFacet"/> + <bean id="spellBookFacet" class="pcgen.cdom.facet.SpellBookFacet"> + <property name="equipmentFacet" ref="equipmentFacet"/> + </bean> <bean id="spellListFacet" class="pcgen.cdom.facet.SpellListFacet"/> <bean id="spellsFacet" class="pcgen.cdom.facet.SpellsFacet"> <property name="raceFacet" ref="raceFacet"/> Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java 2012-02-04 18:50:19 UTC (rev 16003) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/FacetInitialization.java 2012-02-04 18:51:54 UTC (rev 16004) @@ -172,8 +172,6 @@ .getFacet(ConditionallyGrantedAbilityFacet.class); HasAnyFavoredClassFacet hasAnyFavoredFacet = FacetLibrary .getFacet(HasAnyFavoredClassFacet.class); - SpellBookFacet spellBookFacet = FacetLibrary - .getFacet(SpellBookFacet.class); UnencumberedArmorFacet unencumberedArmorFacet = FacetLibrary.getFacet(UnencumberedArmorFacet.class); UnencumberedLoadFacet unencumberedLoadFacet = @@ -184,8 +182,6 @@ addLangFacet.addDataFacetChangeListener(languageFacet); skillLangFacet.addDataFacetChangeListener(languageFacet); - equipmentFacet.addDataFacetChangeListener(spellBookFacet); - equipmentFacet.addDataFacetChangeListener(naturalEquipmentFacet); equippedFacet.addDataFacetChangeListener(activeEquipmentFacet); naturalEquipmentFacet.addDataFacetChangeListener(activeEquipmentFacet); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/SpellBookFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/SpellBookFacet.java 2012-02-04 18:50:19 UTC (rev 16003) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/SpellBookFacet.java 2012-02-04 18:51:54 UTC (rev 16004) @@ -34,6 +34,7 @@ */ public class SpellBookFacet implements DataFacetChangeListener<Equipment> { + private EquipmentFacet equipmentFacet; /** * Triggered when one of the Facets to which SpellBookFacet listens fires a @@ -210,4 +211,14 @@ componentMap.remove(name); } } + + public void setEquipmentFacet(EquipmentFacet equipmentFacet) + { + this.equipmentFacet = equipmentFacet; + } + + public void init() + { + equipmentFacet.addDataFacetChangeListener(this); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <spr...@us...> - 2012-09-09 23:56:55
|
Revision: 17197 http://pcgen.svn.sourceforge.net/pcgen/?rev=17197&view=rev Author: spraynpray Date: 2012-09-09 23:56:48 +0000 (Sun, 09 Sep 2012) Log Message: ----------- IN PROGRESS - issue CODE-1596: In gnome-shell task switcher, PCGen is referenced as pcgen-core-Main http://jira.pcgen.org/browse/CODE-1596 * Added a method that change the default to PCGen/GMGen. It does not expected exception. Issue#: CODE-1596 Modified Paths: -------------- Trunk/pcgen/code/src/java/gmgen/GMGenSystem.java Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utility.java Trunk/pcgen/code/src/java/pcgen/system/Main.java Modified: Trunk/pcgen/code/src/java/gmgen/GMGenSystem.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/GMGenSystem.java 2012-09-09 22:19:49 UTC (rev 17196) +++ Trunk/pcgen/code/src/java/gmgen/GMGenSystem.java 2012-09-09 23:56:48 UTC (rev 17197) @@ -55,9 +55,13 @@ import javax.swing.event.ChangeListener; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; + +import org.apache.commons.lang.SystemUtils; + import pcgen.cdom.base.Constants; import pcgen.core.SettingsHandler; import pcgen.gui2.tools.Icons; +import pcgen.gui2.tools.Utility; import pcgen.util.Logging; import pcgen.util.SwingWorker; @@ -82,8 +86,10 @@ private GMGenSystemView theView; // Boolean true if this is a Mac OS X system. - private static final boolean MAC_OS_X = (System.getProperty("os.name") - .equals("Mac OS X")); + private static final boolean MAC_OS_X = SystemUtils.IS_OS_MAC_OSX; + + /** GMGen Application name */ + public static final String APPLICATION_NAME = "GMGen"; private JMenuBar systemMenuBar; @@ -139,6 +145,7 @@ if (MAC_OS_X) { initialiseMacOS(); } + Utility.setApplicationTitle(APPLICATION_NAME); inst = this; initLogger(); Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utility.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utility.java 2012-09-09 22:19:49 UTC (rev 17196) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utility.java 2012-09-09 23:56:48 UTC (rev 17197) @@ -27,13 +27,14 @@ import java.awt.GraphicsEnvironment; import java.awt.GridBagConstraints; import java.awt.Rectangle; +import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.io.File; - import java.io.IOException; +import java.lang.reflect.Field; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; @@ -248,7 +249,7 @@ final JFileChooser fc = new JFileChooser(); fc.setDialogTitle("Find and select your preferred html browser."); - if (System.getProperty("os.name").startsWith("Mac OS")) + if (SystemUtils.IS_OS_MAC || SystemUtils.IS_OS_MAC_OSX) { // On MacOS X, do not traverse file bundles fc.putClientProperty("JFileChooser.appBundleIsTraversable", @@ -399,4 +400,31 @@ cropRect.y = image.getHeight() - cropRect.height; } } + + /** + * This method is used to set the name of the application for the window manager, especially X11. + * @param title Title to use + */ + public static final void setApplicationTitle(String title) + { + Toolkit xToolkit = Toolkit.getDefaultToolkit(); + + try + { + Field awtAppClassNameField = + xToolkit.getClass().getDeclaredField("awtAppClassName"); //$NON-NLS-1$ + awtAppClassNameField.setAccessible(true); + awtAppClassNameField.set(xToolkit, title); + } + catch (NoSuchFieldException e) + { + // Rather than do a OS system condition, just ignore this expected exception + //Logging.log(Level.FINEST, "Can not set name of application for window manager", e); + } + catch (IllegalAccessException e) + { + // Rather than do a OS system condition, just ignore this expected exception + //Logging.log(Level.FINEST, "Can not set name of application for window manager", e); + } + } } Modified: Trunk/pcgen/code/src/java/pcgen/system/Main.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/system/Main.java 2012-09-09 22:19:49 UTC (rev 17196) +++ Trunk/pcgen/code/src/java/pcgen/system/Main.java 2012-09-09 23:56:48 UTC (rev 17197) @@ -54,6 +54,7 @@ import pcgen.gui2.UIPropertyContext; import pcgen.gui2.dialog.OptionsPathDialog; import pcgen.gui2.plaf.LookAndFeelManager; +import pcgen.gui2.tools.Utility; import pcgen.io.ExportHandler; import pcgen.io.PCGFile; import pcgen.persistence.CampaignFileLoader; @@ -389,6 +390,7 @@ } LanguageBundle.init(); LookAndFeelManager.initLookAndFeel(); + Utility.setApplicationTitle(Constants.APPLICATION_NAME); //TODO: Remove these registrations once the old choosers are fully replaced. ChooserFactory.setInterfaceClassname(SwingChooser.class.getName()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2012-11-03 00:24:31
|
Revision: 18121 http://pcgen.svn.sourceforge.net/pcgen/?rev=18121&view=rev Author: thpr Date: 2012-11-03 00:24:22 +0000 (Sat, 03 Nov 2012) Log Message: ----------- Cleanup Unused Imports Modified Paths: -------------- Trunk/pcgen/code/src/java/gmgen/gui/PreferencesRootTreeNode.java Trunk/pcgen/code/src/java/gmgen/pluginmgr/ErrorListDialog.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/AddedTemplateFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/primitive/NegatingPrimitive.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/VariableProcessor.java Trunk/pcgen/code/src/java/pcgen/core/character/Follower.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitLangBonus.java Trunk/pcgen/code/src/java/pcgen/core/prereq/PrerequisiteUtilities.java Trunk/pcgen/code/src/java/pcgen/gui/converter/LSTConverter.java Trunk/pcgen/code/src/java/pcgen/gui/utils/IconUtilitities.java Trunk/pcgen/code/src/java/pcgen/gui/utils/Utility.java Trunk/pcgen/code/src/java/pcgen/gui2/InfoGuidePane.java Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utilities.java Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java Trunk/pcgen/code/src/java/pcgen/persistence/SourceFileLoader.java Trunk/pcgen/code/src/java/pcgen/rules/context/AbstractListContext.java Trunk/pcgen/code/src/java/plugin/experience/gui/PreferencesExperiencePanel.java Trunk/pcgen/code/src/java/plugin/notes/gui/NotesView.java Modified: Trunk/pcgen/code/src/java/gmgen/gui/PreferencesRootTreeNode.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/gui/PreferencesRootTreeNode.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/gmgen/gui/PreferencesRootTreeNode.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -27,8 +27,6 @@ import javax.swing.tree.DefaultMutableTreeNode; -import pcgen.system.LanguageBundle; - import java.util.ArrayList; import java.util.List; Modified: Trunk/pcgen/code/src/java/gmgen/pluginmgr/ErrorListDialog.java =================================================================== --- Trunk/pcgen/code/src/java/gmgen/pluginmgr/ErrorListDialog.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/gmgen/pluginmgr/ErrorListDialog.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -21,8 +21,6 @@ */ package gmgen.pluginmgr; -import gmgen.util.MiscUtilities; - import javax.swing.*; import javax.swing.border.EmptyBorder; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/AddedTemplateFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/AddedTemplateFacet.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/AddedTemplateFacet.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -30,7 +30,6 @@ import pcgen.core.Globals; import pcgen.core.PCTemplate; import pcgen.core.PlayerCharacter; -import pcgen.util.Logging; /** * AddedTemplateFacet is a Facet that tracks the Templates that have been added Modified: Trunk/pcgen/code/src/java/pcgen/cdom/primitive/NegatingPrimitive.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/primitive/NegatingPrimitive.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/cdom/primitive/NegatingPrimitive.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -21,7 +21,6 @@ import pcgen.cdom.base.Converter; import pcgen.cdom.base.PrimitiveCollection; -import pcgen.cdom.converter.NegateFilterConverter; import pcgen.cdom.enumeration.GroupingState; import pcgen.core.PlayerCharacter; Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -139,7 +139,6 @@ import pcgen.gui.GuiConstants; import pcgen.io.PCGFile; import pcgen.persistence.PersistenceManager; -import pcgen.system.LanguageBundle; import pcgen.system.PCGenSettings; import pcgen.util.Delta; import pcgen.util.Logging; Modified: Trunk/pcgen/code/src/java/pcgen/core/VariableProcessor.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/VariableProcessor.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/core/VariableProcessor.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -22,7 +22,6 @@ import pcgen.core.character.CachedVariable; import pcgen.core.character.CharacterSpell; -import pcgen.core.spell.Spell; import pcgen.core.utils.CoreUtility; import pcgen.io.ExportHandler; import pcgen.util.Logging; Modified: Trunk/pcgen/code/src/java/pcgen/core/character/Follower.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/character/Follower.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/core/character/Follower.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -30,7 +30,6 @@ import pcgen.cdom.base.Constants; import pcgen.cdom.list.CompanionList; import pcgen.core.Race; -import pcgen.system.PCGenSettings; /** * <code>Follower.java</code> Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitLangBonus.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitLangBonus.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitLangBonus.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.List; -import pcgen.base.lang.StringUtil; import pcgen.cdom.reference.CDOMSingleRef; import pcgen.core.Ability; import pcgen.core.AbilityCategory; Modified: Trunk/pcgen/code/src/java/pcgen/core/prereq/PrerequisiteUtilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/prereq/PrerequisiteUtilities.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/core/prereq/PrerequisiteUtilities.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -35,7 +35,6 @@ import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; -import pcgen.cdom.enumeration.StringKey; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.Domain; Modified: Trunk/pcgen/code/src/java/pcgen/gui/converter/LSTConverter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/converter/LSTConverter.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/gui/converter/LSTConverter.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -20,7 +20,6 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; -import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; Modified: Trunk/pcgen/code/src/java/pcgen/gui/utils/IconUtilitities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/utils/IconUtilitities.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/gui/utils/IconUtilitities.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -24,7 +24,6 @@ import javax.swing.AbstractButton; import javax.swing.ImageIcon; -import java.awt.Frame; import java.awt.Window; import java.net.URL; Modified: Trunk/pcgen/code/src/java/pcgen/gui/utils/Utility.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/utils/Utility.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/gui/utils/Utility.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -35,11 +35,8 @@ import java.awt.event.ActionListener; import java.io.BufferedWriter; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; -import java.io.OutputStreamWriter; import java.io.Writer; -import java.net.URL; import java.util.StringTokenizer; import javax.swing.ButtonGroup; Modified: Trunk/pcgen/code/src/java/pcgen/gui2/InfoGuidePane.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/InfoGuidePane.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/gui2/InfoGuidePane.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -45,7 +45,6 @@ import pcgen.gui2.tools.TipOfTheDayHandler; import pcgen.gui2.util.HtmlInfoBuilder; import pcgen.system.LanguageBundle; -import pcgen.util.Logging; /** * This class provides a guide for first time Modified: Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/gui2/dialog/PreferencesDialog.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -66,7 +66,6 @@ import javax.swing.tree.TreeSelectionModel; import pcgen.cdom.base.Constants; -import pcgen.core.SettingsHandler; import pcgen.gui2.prefs.CharacterStatsPanel; import pcgen.gui2.prefs.ColorsPanel; import pcgen.gui2.prefs.CopySettingsPanel; Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utilities.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tools/Utilities.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -27,7 +27,6 @@ import javax.swing.SwingUtilities; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; -import javax.swing.JSplitPane; /** * <code>Utilities</code>. Modified: Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/gui2/util/JTreeViewTable.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -71,7 +71,6 @@ import pcgen.system.PropertyContext; import pcgen.util.CollectionMaps; import pcgen.util.ListMap; -import pcgen.util.Logging; /** * This class is a reimplementation of JTreeViewPane Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -47,11 +47,9 @@ import pcgen.cdom.inst.PCClassLevel; import pcgen.core.Ability; import pcgen.core.AbilityCategory; -import pcgen.core.Campaign; import pcgen.core.GameMode; import pcgen.core.PCClass; import pcgen.core.PlayerCharacter; -import pcgen.core.SettingsHandler; import pcgen.core.SpecialAbility; import pcgen.core.facade.CampaignFacade; import pcgen.core.facade.SourceSelectionFacade; Modified: Trunk/pcgen/code/src/java/pcgen/persistence/SourceFileLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/SourceFileLoader.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/persistence/SourceFileLoader.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -72,7 +72,6 @@ import pcgen.core.analysis.SizeUtilities; import pcgen.core.facade.CampaignFacade; import pcgen.core.facade.DataSetFacade; -import pcgen.core.facade.GameModeFacade; import pcgen.core.facade.SourceSelectionFacade; import pcgen.core.facade.UIDelegate; import pcgen.core.facade.util.DefaultListFacade; @@ -91,7 +90,6 @@ import pcgen.rules.context.LoadContext; import pcgen.rules.context.LoadValidator; import pcgen.system.ConfigurationSettings; -import pcgen.system.FacadeFactory; import pcgen.system.LanguageBundle; import pcgen.system.PCGenSettings; import pcgen.system.PCGenTask; Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/AbstractListContext.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/AbstractListContext.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/AbstractListContext.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -27,7 +27,6 @@ import java.util.TreeSet; import pcgen.base.util.DoubleKeyMap; -import pcgen.base.util.DoubleKeyMapToList; import pcgen.base.util.HashMapToList; import pcgen.base.util.ListSet; import pcgen.base.util.MapToList; Modified: Trunk/pcgen/code/src/java/plugin/experience/gui/PreferencesExperiencePanel.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/experience/gui/PreferencesExperiencePanel.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/plugin/experience/gui/PreferencesExperiencePanel.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -32,7 +32,6 @@ import javax.swing.*; import javax.swing.border.TitledBorder; import java.awt.BorderLayout; -import java.awt.Font; /** * Modified: Trunk/pcgen/code/src/java/plugin/notes/gui/NotesView.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/notes/gui/NotesView.java 2012-11-02 23:26:50 UTC (rev 18120) +++ Trunk/pcgen/code/src/java/plugin/notes/gui/NotesView.java 2012-11-03 00:24:22 UTC (rev 18121) @@ -61,7 +61,6 @@ import java.awt.event.KeyEvent; import java.io.*; import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2012-12-17 02:46:12
|
Revision: 18700 http://sourceforge.net/p/pcgen/code/18700 Author: thpr Date: 2012-12-17 02:46:08 +0000 (Mon, 17 Dec 2012) Log Message: ----------- Convert information stored in AssociationKey.SKILL_POOL to a Facet Issue#: CODE-1908 Modified Paths: -------------- Trunk/pcgen/code/src/java/applicationContext.xml Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationKey.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/MonsterClassFacet.java Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillRankControl.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/facet/SkillPoolFacet.java Modified: Trunk/pcgen/code/src/java/applicationContext.xml =================================================================== --- Trunk/pcgen/code/src/java/applicationContext.xml 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/applicationContext.xml 2012-12-17 02:46:08 UTC (rev 18700) @@ -410,6 +410,7 @@ <bean id="skillLanguageFacet" class="pcgen.cdom.facet.input.SkillLanguageFacet"> <property name="languageFacet" ref="languageFacet"/> </bean> + <bean id="skillPoolFacet" class="pcgen.cdom.facet.SkillPoolFacet"/> <bean id="sourcedEquipmentFacet" class="pcgen.cdom.facet.SourcedEquipmentFacet"/> <bean id="specialAbilityFacet" class="pcgen.cdom.facet.analysis.SpecialAbilityFacet"> <property name="consolidationFacet" ref="consolidationFacet"/> Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationKey.java 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/AssociationKey.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -116,8 +116,6 @@ */ public static final AssociationKey<String> SPECIALTY = new AssociationKey<String>(); - public static final AssociationKey<Integer> SKILL_POOL = new AssociationKey<Integer>(); - /* * End Player Character items related to CODE-1908 */ Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/MonsterClassFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/MonsterClassFacet.java 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/MonsterClassFacet.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -22,13 +22,12 @@ import pcgen.cdom.base.CDOMObject; import pcgen.cdom.content.LevelCommandFactory; -import pcgen.cdom.enumeration.AssociationKey; import pcgen.cdom.enumeration.CharID; import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.facet.analysis.LevelFacet; import pcgen.cdom.facet.model.ClassFacet; -import pcgen.cdom.facet.model.RaceFacet; import pcgen.cdom.facet.model.ClassFacet.ClassInfo; +import pcgen.cdom.facet.model.RaceFacet; import pcgen.core.Globals; import pcgen.core.PCClass; import pcgen.core.PlayerCharacter; @@ -136,7 +135,7 @@ int cLevels = ci.getLevel(pcClass); classFacet.setLevel(id, pcClass, cLevels); - pc.setAssoc(pcClass, AssociationKey.SKILL_POOL, 0); + pc.setSkillPool(pcClass, 0); int cMod = 0; @@ -145,7 +144,7 @@ cMod += pc.recalcSkillPointMod(pcClass, ++totalLevels); } - pc.setAssoc(pcClass, AssociationKey.SKILL_POOL, cMod); + pc.setSkillPool(pcClass, cMod); } } } Added: Trunk/pcgen/code/src/java/pcgen/cdom/facet/SkillPoolFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/SkillPoolFacet.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/SkillPoolFacet.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -0,0 +1,31 @@ +/* + * Copyright (c) Thomas Parker, 2012. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package pcgen.cdom.facet; + +import pcgen.cdom.facet.base.AbstractAssociationFacet; +import pcgen.core.PCClass; + +/** + * SkillPoolFacet stores the number of Spill Points associated to a specific + * PCClass for a Player Character. + * + * @author Thomas Parker (thpr [at] yahoo.com) + */ +public class SkillPoolFacet extends AbstractAssociationFacet<PCClass, Integer> +{ +} Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -42,7 +42,6 @@ import pcgen.cdom.content.HitDie; import pcgen.cdom.content.KnownSpellIdentifier; import pcgen.cdom.content.LevelCommandFactory; -import pcgen.cdom.enumeration.AssociationKey; import pcgen.cdom.enumeration.AssociationListKey; import pcgen.cdom.enumeration.IntegerKey; import pcgen.cdom.enumeration.ListKey; @@ -1065,9 +1064,9 @@ } } - Integer currentPool = aPC.getAssoc(this, AssociationKey.SKILL_POOL); + Integer currentPool = aPC.getSkillPool(this); int newSkillPool = spMod + (currentPool == null ? 0 : currentPool); - aPC.setAssoc(this, AssociationKey.SKILL_POOL, newSkillPool); + aPC.setSkillPool(this, newSkillPool); aPC.setDirty(true); @@ -1234,7 +1233,7 @@ SkillRankControl.setZeroRanks(this, aPC, skill); } - Integer currentPool = aPC.getAssoc(this, AssociationKey.SKILL_POOL); + Integer currentPool = aPC.getSkillPool(this); spMod = currentPool == null ? 0 : currentPool; } @@ -1279,9 +1278,9 @@ } else { - Integer currentPool = aPC.getAssoc(this, AssociationKey.SKILL_POOL); + Integer currentPool = aPC.getSkillPool(this); int newSkillPool = (currentPool == null ? 0 : currentPool) - spMod; - aPC.setAssoc(this, AssociationKey.SKILL_POOL, newSkillPool); + aPC.setSkillPool(this, newSkillPool); aPC.setDirty(true); } Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -115,6 +115,7 @@ import pcgen.cdom.facet.PlayerCharacterTrackingFacet; import pcgen.cdom.facet.PrimaryWeaponFacet; import pcgen.cdom.facet.SecondaryWeaponFacet; +import pcgen.cdom.facet.SkillPoolFacet; import pcgen.cdom.facet.SourcedEquipmentFacet; import pcgen.cdom.facet.SpellBookFacet; import pcgen.cdom.facet.SpellListFacet; @@ -296,6 +297,7 @@ private ProhibitedSchoolFacet prohibitedSchoolFacet = FacetLibrary.getFacet(ProhibitedSchoolFacet.class); private QualifyFacet qualifyFacet = FacetLibrary.getFacet(QualifyFacet.class); private RacialSubTypesFacet subTypesFacet = FacetLibrary.getFacet(RacialSubTypesFacet.class); + private SkillPoolFacet skillPoolFacet = FacetLibrary.getFacet(SkillPoolFacet.class); private StartingLanguageFacet startingLangFacet = FacetLibrary.getFacet(StartingLanguageFacet.class); private StatLockFacet statLockFacet = FacetLibrary.getFacet(StatLockFacet.class); private StatValueFacet statValueFacet = FacetLibrary.getFacet(StatValueFacet.class); @@ -362,7 +364,7 @@ private AutoEquipmentListFacet autoListEquipmentFacet = FacetLibrary.getFacet(AutoEquipmentListFacet.class); private MasterSkillFacet masterSkillFacet = FacetLibrary.getFacet(MasterSkillFacet.class); private FollowerFacet followerFacet = FacetLibrary.getFacet(FollowerFacet.class); - + private LanguageFacet languageFacet = FacetLibrary.getFacet(LanguageFacet.class); private UserSpecialAbilityFacet userSpecialAbilityFacet = FacetLibrary.getFacet(UserSpecialAbilityFacet.class); private SpecialAbilityFacet specialAbilityFacet = FacetLibrary.getFacet(SpecialAbilityFacet.class); @@ -5094,7 +5096,7 @@ pi.setSkillPointsGained(this, newSkillPointsGained); pi.setSkillPointsRemaining(pi.getSkillPointsRemaining() + newSkillPointsGained - formerGained); - setAssoc(pcClass, AssociationKey.SKILL_POOL, pcClass.getSkillPool(this) + setSkillPool(pcClass, pcClass.getSkillPool(this) + newSkillPointsGained - formerGained); } } @@ -6039,7 +6041,7 @@ SkillRankControl.replaceClassRank(this, skill, aClass.getKeyName(), cl.getKeyName()); } - setAssoc(bClass, AssociationKey.SKILL_POOL, aClass.getSkillPool(this)); + setSkillPool(bClass, aClass.getSkillPool(this)); } catch (NumberFormatException nfe) { ShowMessageDelegate @@ -11037,8 +11039,7 @@ final int formerGained = pi.getSkillPointsGained(this); pi.setSkillPointsGained(this, newSkillPointsGained); pi.setSkillPointsRemaining(pi.getSkillPointsRemaining() + newSkillPointsGained - formerGained); - setAssoc(pcClass, AssociationKey.SKILL_POOL, pcClass.getSkillPool(this) + newSkillPointsGained - - formerGained); + setSkillPool(pcClass, pcClass.getSkillPool(this) + newSkillPointsGained - formerGained); setDirty(true); } } @@ -11320,4 +11321,14 @@ { domainSpellCountFacet.set(id, pcc, i); } + + public Integer getSkillPool(PCClass pcc) + { + return skillPoolFacet.get(id, pcc); + } + + public void setSkillPool(PCClass pcc, int skillPool) + { + skillPoolFacet.set(id, pcc, skillPool); + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillRankControl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillRankControl.java 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/SkillRankControl.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -27,7 +27,6 @@ import pcgen.base.util.NamedValue; import pcgen.cdom.base.CDOMObjectUtilities; import pcgen.cdom.base.PersistentTransitionChoice; -import pcgen.cdom.enumeration.AssociationKey; import pcgen.cdom.enumeration.AssociationListKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.SkillCost; @@ -247,9 +246,8 @@ { if (aClass != null) { - aPC.setAssoc(aClass, AssociationKey.SKILL_POOL, aClass - .getSkillPool(aPC) - - (int) (i * rankMod)); + aPC.setSkillPool(aClass, aClass.getSkillPool(aPC) + - (int) (i * rankMod)); } aPC.setDirty(true); Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -32,7 +32,6 @@ import pcgen.base.formula.Formula; import pcgen.base.lang.StringUtil; import pcgen.cdom.base.Constants; -import pcgen.cdom.enumeration.AssociationKey; import pcgen.core.Kit; import pcgen.core.PCClass; import pcgen.core.PCStat; @@ -104,7 +103,7 @@ aPC.setDirty(true); for (PCClass pcClass : classes) { - aPC.setAssoc(pcClass, AssociationKey.SKILL_POOL, 0); + aPC.setSkillPool(pcClass, 0); // We don't limit this to MOD_TO_SKILLS classes as they may manually include the INT bonus in the skills. for (int j = 0; j < aPC.getLevelInfoSize(); j++) { @@ -119,9 +118,9 @@ pcl.setSkillPointsGained(aPC, spMod); pcl.setSkillPointsRemaining(pcl .getSkillPointsGained(aPC) - alreadySpent); - Integer currentPool = aPC.getAssoc(pcClass, AssociationKey.SKILL_POOL); + Integer currentPool = aPC.getSkillPool(pcClass); int newSkillPool = (currentPool == null ? 0 : currentPool) + spMod; - aPC.setAssoc(pcClass, AssociationKey.SKILL_POOL, newSkillPool); + aPC.setSkillPool(pcClass, newSkillPool); aPC.setDirty(true); } } Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Creator.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -797,7 +797,7 @@ buffer.append(classLevel); buffer.append('|'); buffer.append(TAG_SKILLPOOL).append(':'); - Integer currentPool = thePC.getAssoc(pcClass, AssociationKey.SKILL_POOL); + Integer currentPool = thePC.getSkillPool(pcClass); buffer.append(currentPool == null ? 0 : currentPool); // determine if this class can cast spells Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2012-12-17 02:45:17 UTC (rev 18699) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGVer2Parser.java 2012-12-17 02:46:08 UTC (rev 18700) @@ -2324,7 +2324,7 @@ if (skillPool > -1) { - thePC.setAssoc(aPCClass, AssociationKey.SKILL_POOL, skillPool); + thePC.setSkillPool(aPCClass, skillPool); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <za...@us...> - 2014-03-23 09:52:50
|
Revision: 23531 http://sourceforge.net/p/pcgen/code/23531 Author: zaister Date: 2014-03-23 09:52:47 +0000 (Sun, 23 Mar 2014) Log Message: ----------- PREEQUIP tags have a design error - added BASEITEM qualifier Issue#: CODE-2438 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/prereq/PreEquippedTester.java Trunk/pcgen/code/src/java/plugin/pretokens/test/PreEquipTester.java Modified: Trunk/pcgen/code/src/java/pcgen/core/prereq/PreEquippedTester.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/prereq/PreEquippedTester.java 2014-03-23 01:37:46 UTC (rev 23530) +++ Trunk/pcgen/code/src/java/pcgen/core/prereq/PreEquippedTester.java 2014-03-23 09:52:47 UTC (rev 23531) @@ -26,6 +26,7 @@ */ package pcgen.core.prereq; +import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.EquipmentLocation; import pcgen.core.Equipment; import pcgen.core.PlayerCharacter; @@ -54,7 +55,7 @@ if (character.hasEquipment()) { - final String aString = prereq.getKey(); + String aString = prereq.getKey(); for ( Equipment eq : character.getDisplay().getEquippedEquipmentSet() ) { // @@ -81,7 +82,16 @@ } else //not a TYPE string { - final String eqName = eq.getName(); + String eqName; + if (aString.startsWith("BASEITEM=")) //$NON-NLS-1$ //$NON-NLS-2$ + { + eqName = eq.getBaseItemName(); + aString = aString.substring(aString.indexOf(Constants.EQUALS) + 1); + } + else + { + eqName = eq.getName(); + } if (aString.indexOf('%') >= 0) { //handle wildcards (always assume they Modified: Trunk/pcgen/code/src/java/plugin/pretokens/test/PreEquipTester.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/test/PreEquipTester.java 2014-03-23 01:37:46 UTC (rev 23530) +++ Trunk/pcgen/code/src/java/plugin/pretokens/test/PreEquipTester.java 2014-03-23 09:52:47 UTC (rev 23531) @@ -29,6 +29,7 @@ import java.util.StringTokenizer; import pcgen.cdom.base.CDOMObject; +import pcgen.cdom.base.Constants; import pcgen.core.Equipment; import pcgen.core.PlayerCharacter; import pcgen.core.character.WieldCategory; @@ -72,7 +73,7 @@ if (display.hasEquipment()) { - final String targetEquip = prereq.getKey(); + String targetEquip = prereq.getKey(); for (Equipment eq : display.getEquippedEquipmentSet()) { if (targetEquip.startsWith("WIELDCATEGORY=") @@ -119,7 +120,16 @@ else //not a TYPE string { - final String eqName = eq.getName().toUpperCase(); + String eqName; + if (targetEquip.startsWith("BASEITEM=")) //$NON-NLS-1$ //$NON-NLS-2$ + { + eqName = eq.getBaseItemName().toUpperCase(); + targetEquip = targetEquip.substring(targetEquip.indexOf(Constants.EQUALS) + 1); + } + else + { + eqName = eq.getName().toUpperCase(); + } if (targetEquip.indexOf('%') >= 0) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2014-08-24 12:20:34
|
Revision: 24955 http://sourceforge.net/p/pcgen/code/24955 Author: jdempsey Date: 2014-08-24 12:20:29 +0000 (Sun, 24 Aug 2014) Log Message: ----------- Fix bug: Can't save character and resultant error leaves pcg blank. Issue#: CODE-641,CODE-2691 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/io/IOHandler.java Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java Trunk/pcgen/code/src/java/plugin/pcgtracker/PCGTrackerPlugin.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2014-08-24 00:38:34 UTC (rev 24954) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2014-08-24 12:20:29 UTC (rev 24955) @@ -2858,7 +2858,7 @@ { GameMode mode = (GameMode) dataSet.getGameMode(); List<CampaignFacade> campaigns = ListFacades.wrap(dataSet.getCampaigns()); - (new PCGIOHandler()).write(theCharacter, mode, campaigns, file.getReference().getAbsolutePath()); + (new PCGIOHandler()).write(theCharacter, mode, campaigns, file.getReference()); theCharacter.setDirty(false); } Modified: Trunk/pcgen/code/src/java/pcgen/io/IOHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/IOHandler.java 2014-08-24 00:38:34 UTC (rev 24954) +++ Trunk/pcgen/code/src/java/pcgen/io/IOHandler.java 2014-08-24 12:20:29 UTC (rev 24955) @@ -141,36 +141,12 @@ throws IOException, NullPointerException { OutputStream out = null; - File bakFile = null; - final String BAK_PREFIX = ".bak"; //$NON-NLS-1$ try { - // Make a backup of the old file, if it exists and isn't empty File outFile = new File(filename); - if (PCGenSettings.getCreatePcgBackup() && outFile.exists() - && outFile.length() > 0) - { - String file = outFile.getName(); - String backupPcgPath = PCGenSettings.getBackupPcgDir(); - if (backupPcgPath != null && !backupPcgPath.isEmpty()) - { - bakFile = - new File(backupPcgPath, file - + BAK_PREFIX); - } - else - { - bakFile = new File(filename + BAK_PREFIX); - } - if (bakFile.exists() && outFile.exists() && outFile.length() > 0) - { - bakFile.delete(); - } - outFile.renameTo(bakFile); - } - outFile = null; + createBackupForFile(outFile); out = new FileOutputStream(filename); write(aPC, mode, campaigns, out); @@ -208,6 +184,35 @@ } /** + * Create a backup of the specified file, but only if backups are enabled, + * the file exists and the file is not empty. + * + * @param outFile The file to be backed up. + */ + public void createBackupForFile(File outFile) + { + final String BAK_PREFIX = ".bak"; //$NON-NLS-1$ + // Make a backup of the old file, if it exists and isn't empty + if (PCGenSettings.getCreatePcgBackup() && outFile.exists() + && outFile.length() > 0) + { + String file = outFile.getName(); + String backupPcgPath = PCGenSettings.getBackupPcgDir(); + if (backupPcgPath == null || backupPcgPath.isEmpty()) + { + backupPcgPath = outFile.getParent(); + } + File bakFile = new File(backupPcgPath, file + BAK_PREFIX); + + if (bakFile.exists() && outFile.exists() && outFile.length() > 0) + { + bakFile.delete(); + } + outFile.renameTo(bakFile); + } + } + + /** * Reads the contents of the given PlayerCharacter from a stream * * <br>author: Thomas Behr 11-03-02 Modified: Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java 2014-08-24 00:38:34 UTC (rev 24954) +++ Trunk/pcgen/code/src/java/pcgen/io/PCGIOHandler.java 2014-08-24 12:20:29 UTC (rev 24955) @@ -29,6 +29,7 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -316,6 +317,8 @@ * Writes the contents of the given PlayerCharacter to a stream * <p/> * <br>author: Thomas Behr 11-03-02 + * + * @deprecated The write to a file method should be used in preference as it has safe backup handling. * * @param pcToBeWritten the PlayerCharacter to write * @param out the stream to be written to @@ -356,6 +359,59 @@ } } + /** + * Writes the contents of the given PlayerCharacter to a file. This method also includes + * safely backing up the original character file, but only once we know we have + * successfully exported the character to a string ready for writing. This means that if + * the save fails, the file system is untouched. + * + * @param pcToBeWritten the PlayerCharacter to write + * @param out the stream to be written to + * @param mode The character's game mode. + * @param campaigns The character's sources. + * @param outFile The file to write the character to. + */ + public void write(PlayerCharacter pcToBeWritten, GameMode mode, List<CampaignFacade> campaigns, File outFile) + { + final String pcgString; + pcgString = (new PCGVer2Creator(pcToBeWritten, mode, campaigns)).createPCGString(); + + // Do backup now that we have the character ready to save + createBackupForFile(outFile); + + // Now save the character + BufferedWriter bw = null; + + try + { + FileOutputStream out = new FileOutputStream(outFile); + bw = new BufferedWriter(new OutputStreamWriter(out, "UTF-8")); + bw.write(pcgString); + bw.flush(); + + pcToBeWritten.setDirty(false); + } + catch (IOException ioe) + { + Logging.errorPrint("Exception in PCGIOHandler::write", ioe); + } + finally + { + try + { + if (bw != null) + { + bw.close(); + } + } + catch (IOException e) + { + Logging.errorPrint("Couldn't close file in PCGIOHandler.write", + e); + } + } + } + /* * ############################################################### * private helper methods Modified: Trunk/pcgen/code/src/java/plugin/pcgtracker/PCGTrackerPlugin.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pcgtracker/PCGTrackerPlugin.java 2014-08-24 00:38:34 UTC (rev 24954) +++ Trunk/pcgen/code/src/java/plugin/pcgtracker/PCGTrackerPlugin.java 2014-08-24 12:20:29 UTC (rev 24955) @@ -431,7 +431,7 @@ try { - (new PCGIOHandler()).write(aPC, file.getAbsolutePath()); + (new PCGIOHandler()).write(aPC, null, null, file); } catch (Exception ex) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2008-12-31 23:46:07
|
Revision: 8765 http://pcgen.svn.sourceforge.net/pcgen/?rev=8765&view=rev Author: thpr Date: 2008-12-31 23:46:04 +0000 (Wed, 31 Dec 2008) Log Message: ----------- Kit Token updates & fixes part 1 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpells.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FreeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/ClassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/LevelToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/SubclassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/deity/CountToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/FundsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/QtyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/LocationToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/QtyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/SizeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/ProfToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/RacialToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/ClassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/FreeToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/RankToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SelectionToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SkillToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/CountToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/SpellsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/ApplyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/EquipBuyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/StartpackToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/VisibleToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/TableToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpells.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpells.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitSpells.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -200,12 +200,9 @@ // while (true) { - xs = - Globals - .getChoiceFromList("Choose " + aClass.getKeyName() - + " spell(s) for " + workingBook, aSpellList, - new ArrayList<KitSpellBookEntry>(), - numberOfChoices); + xs = Globals.getChoiceFromList("Choose " + aClass.getKeyName() + + " spell(s) for " + workingBook, aSpellList, + new ArrayList<KitSpellBookEntry>(), numberOfChoices); if (xs.size() != 0) { @@ -305,9 +302,8 @@ if (spLevel == 99) { - spLevel = - SpellLevel.getFirstLevelForKey(spell, pcClass - .getSpellLists(pc), pc); + spLevel = SpellLevel.getFirstLevelForKey(spell, pcClass + .getSpellLists(pc), pc); owner = pcClass; } @@ -388,4 +384,21 @@ { spells.put(ksi, featList, count); } + + public Collection<KnownSpellIdentifier> getSpells() + { + return spells.getKeySet(); + } + + public Collection<List<CDOMSingleRef<Ability>>> getAbilities( + KnownSpellIdentifier ksi) + { + return spells.getSecondaryKeySet(ksi); + } + + public Integer getSpellCount(KnownSpellIdentifier ksi, + List<CDOMSingleRef<Ability>> abils) + { + return spells.get(ksi, abils); + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -88,13 +88,6 @@ + "in a Kit requires CATEGORY=<cat>|<ability>,<ability>"); return false; } - if (pipeLoc != value.lastIndexOf(Constants.PIPE)) - { - Logging.addParseMessage(Logging.LST_ERROR, - "Two pipes found. ABILITY token " - + "in a Kit requires CATEGORY=<cat>|<abilities>"); - return false; - } String catString = value.substring(0, pipeLoc); if (!catString.startsWith("CATEGORY=")) { @@ -123,7 +116,7 @@ + "in a Kit requires CATEGORY=<cat>|<abilities>"); return false; } - StringTokenizer st = new StringTokenizer(rest, "|"); + StringTokenizer st = new StringTokenizer(rest, Constants.PIPE); while (st.hasMoreTokens()) { @@ -157,7 +150,7 @@ { Collection<CDOMReference<Ability>> references = KitAbilities.getAbilityKeys(); - if (references == null) + if (references == null || references.isEmpty()) { return null; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FeatToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FeatToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -74,7 +74,7 @@ public boolean parse(LoadContext context, KitAbilities kitAbil, String value) { - if (isEmpty(value)) + if (isEmpty(value) || hasIllegalSeparator('|', value)) { return false; } @@ -123,7 +123,7 @@ public String[] unparse(LoadContext context, KitAbilities KitAbilities) { Collection<CDOMReference<Ability>> ref = KitAbilities.getAbilityKeys(); - if (ref == null) + if (ref == null || ref.isEmpty()) { return null; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FreeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FreeToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/FreeToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -60,6 +60,10 @@ public boolean parse(LoadContext context, KitAbilities kitAbil, String value) { + if (isEmpty(value)) + { + return false; + } Boolean set; char firstChar = value.charAt(0); if (firstChar == 'y' || firstChar == 'Y') @@ -76,13 +80,16 @@ { if (firstChar != 'N' && firstChar != 'n') { - if (value.length() > 1 && !value.equalsIgnoreCase("NO")) - { - Logging.errorPrint("You should use 'YES' or 'NO' as the " + Logging.errorPrint("You should use 'YES' or 'NO' as the " + getTokenName() + ": " + value); - return false; - } + return false; } + if (value.length() > 1 && !value.equalsIgnoreCase("NO")) + { + Logging.errorPrint("You should use 'YES' or 'NO' as the " + + getTokenName() + ": " + value); + return false; + } set = Boolean.FALSE; } kitAbil.setFree(set); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/ClassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/ClassToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/ClassToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -65,6 +65,10 @@ public boolean parse(LoadContext context, KitClass kitClass, String value) { + if (isEmpty(value)) + { + return false; + } CDOMSingleRef<PCClass> ref = context.ref.getCDOMReference(PCCLASS_CLASS, value); kitClass.setPcclass(ref); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/LevelToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/LevelToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/LevelToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -62,6 +62,10 @@ public boolean parse(LoadContext context, KitClass kitClass, String value) { + if (isEmpty(value)) + { + return false; + } kitClass.setLevel(FormulaFactory.getFormulaFor(value)); return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/SubclassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/SubclassToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/clazz/SubclassToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -63,6 +63,10 @@ public boolean parse(LoadContext context, KitClass kitClass, String value) { + if (isEmpty(value)) + { + return false; + } /* * This call to kitClass.getPcclass() is safe, as the line is CLASS: * and thus the CLASS: token is always encountered first Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/deity/CountToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/deity/CountToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/deity/CountToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -62,6 +62,10 @@ public boolean parse(LoadContext context, KitDeity kitDeity, String value) { + if (isEmpty(value)) + { + return false; + } kitDeity.setCount(FormulaFactory.getFormulaFor(value)); return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/FundsToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/FundsToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/FundsToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -60,6 +60,10 @@ public boolean parse(LoadContext context, KitFunds kitFunds, String value) { + if (isEmpty(value)) + { + return false; + } kitFunds.setName(value); return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/QtyToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/QtyToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/funds/QtyToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -61,6 +61,10 @@ public boolean parse(LoadContext context, KitFunds kitFunds, String value) { + if (isEmpty(value)) + { + return false; + } kitFunds.setQuantity(FormulaFactory.getFormulaFor(value)); return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/LocationToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/LocationToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/LocationToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -59,6 +59,10 @@ public boolean parse(LoadContext context, KitGear kitGear, String value) { + if (isEmpty(value)) + { + return false; + } kitGear.setLocation(value); return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/QtyToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/QtyToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/QtyToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -61,6 +61,10 @@ public boolean parse(LoadContext context, KitGear kitGear, String value) { + if (isEmpty(value)) + { + return false; + } kitGear.setQuantity(FormulaFactory.getFormulaFor(value)); return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/SizeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/SizeToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/gear/SizeToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -30,6 +30,7 @@ import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMSecondaryToken; +import pcgen.util.Logging; /** * SIZE token for KitGear @@ -70,9 +71,14 @@ } else { - SizeAdjustment size = - context.ref.getAbbreviatedObject(SizeAdjustment.class, - value); + SizeAdjustment size = context.ref.getAbbreviatedObject( + SizeAdjustment.class, value); + if (size == null) + { + Logging.errorPrint(getTokenName() + + " found invalid Size abbreviation: " + value); + return false; + } kitGear.setSize(size); } return true; @@ -88,8 +94,8 @@ { return null; } - return new String[]{"PC"}; + return new String[] { "PC" }; } - return new String[]{sz.getAbbreviation()}; + return new String[] { sz.getAbbreviation() }; } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/ProfToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/ProfToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/ProfToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -37,7 +37,6 @@ import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMSecondaryToken; -import pcgen.util.Logging; /** * PROF Token part of Kit Prof Lst Token @@ -82,22 +81,15 @@ String tokText = tok.nextToken(); CDOMSingleRef<WeaponProf> ref = context.ref.getCDOMReference(WEAPONPROF_CLASS, tokText); - if (ref == null) - { - Logging - .errorPrint(" Error was encountered while parsing KitProf. " - + tokText + " is not a valid WeaponProf"); - continue; - } obj.addProficiency(ref); } - return false; + return true; } public String[] unparse(LoadContext context, KitProf obj) { Collection<CDOMSingleRef<WeaponProf>> ref = obj.getProficiencies(); - if (ref == null) + if (ref == null || ref.isEmpty()) { return null; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/RacialToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/RacialToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/prof/RacialToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -46,21 +46,6 @@ return "RACIAL"; } - /** - * parse - * - * @param kitProf - * KitProf - * @param value - * String - * @return boolean - */ - public boolean parse(KitProf kitProf, String value) - { - kitProf.setRacialProf(value.startsWith("Y")); - return true; - } - public Class<KitProf> getTokenClass() { return KitProf.class; @@ -74,6 +59,10 @@ public boolean parse(LoadContext context, KitProf obj, String value) throws PersistenceLayerException { + if (isEmpty(value)) + { + return false; + } Boolean set; char firstChar = value.charAt(0); if (firstChar == 'y' || firstChar == 'Y') @@ -90,13 +79,16 @@ { if (firstChar != 'N' && firstChar != 'n') { - if (value.length() > 1 && !value.equalsIgnoreCase("NO")) - { - Logging.errorPrint("You should use 'YES' or 'NO' as the " + Logging.errorPrint("You should use 'YES' or 'NO' as the " + getTokenName() + ": " + value); - return false; - } + return false; } + if (value.length() > 1 && !value.equalsIgnoreCase("NO")) + { + Logging.errorPrint("You should use 'YES' or 'NO' as the " + + getTokenName() + ": " + value); + return false; + } set = Boolean.FALSE; } obj.setRacialProf(set); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/ClassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/ClassToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/ClassToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -64,6 +64,10 @@ public boolean parse(LoadContext context, KitSkill kitSkill, String value) { + if (isEmpty(value)) + { + return false; + } CDOMSingleRef<PCClass> ref = context.ref.getCDOMReference(PCCLASS_CLASS, value); kitSkill.setPcclass(ref); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/FreeToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/FreeToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/FreeToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -60,6 +60,10 @@ public boolean parse(LoadContext context, KitSkill kitSkill, String value) { + if (isEmpty(value)) + { + return false; + } Boolean set; char firstChar = value.charAt(0); if (firstChar == 'y' || firstChar == 'Y') @@ -67,7 +71,7 @@ if (value.length() > 1 && !value.equalsIgnoreCase("YES")) { Logging.errorPrint("You should use 'YES' as the " - + getTokenName() + ": " + value); + + getTokenName() + ": " + value); return false; } set = Boolean.TRUE; @@ -76,13 +80,16 @@ { if (firstChar != 'N' && firstChar != 'n') { - if (value.length() > 1 && !value.equalsIgnoreCase("NO")) - { - Logging.errorPrint("You should use 'YES' or 'NO' as the " + Logging.errorPrint("You should use 'YES' or 'NO' as the " + getTokenName() + ": " + value); - return false; - } + return false; } + if (value.length() > 1 && !value.equalsIgnoreCase("NO")) + { + Logging.errorPrint("You should use 'YES' or 'NO' as the " + + getTokenName() + ": " + value); + return false; + } set = Boolean.FALSE; } kitSkill.setFree(set); @@ -96,6 +103,6 @@ { return null; } - return new String[]{mult.booleanValue() ? "YES" : "NO"}; + return new String[] { mult.booleanValue() ? "YES" : "NO" }; } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/RankToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/RankToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/RankToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -62,6 +62,10 @@ public boolean parse(LoadContext context, KitSkill kitSkill, String value) { + if (isEmpty(value)) + { + return false; + } try { BigDecimal rank = new BigDecimal(value); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SelectionToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SelectionToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SelectionToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -91,7 +91,7 @@ public String[] unparse(LoadContext context, KitSkill kitSkill) { List<CDOMSingleRef<Language>> ref = kitSkill.getSelections(); - if (ref == null) + if (ref == null || ref.isEmpty()) { return null; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SkillToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SkillToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/skill/SkillToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -79,8 +79,13 @@ while (tok.hasMoreTokens()) { String tokText = tok.nextToken(); - kitSkill.addSkill(TokenUtilities.getTypeOrPrimitive(context, - SKILL_CLASS, tokText)); + CDOMReference<Skill> ref = TokenUtilities.getTypeOrPrimitive( + context, SKILL_CLASS, tokText); + if (ref == null) + { + return false; + } + kitSkill.addSkill(ref); } return true; } @@ -88,11 +93,11 @@ public String[] unparse(LoadContext context, KitSkill kitSkill) { Collection<CDOMReference<Skill>> ref = kitSkill.getSkills(); - if (ref == null) + if (ref == null || ref.isEmpty()) { return null; } - return new String[]{ReferenceUtilities.joinLstFormat(ref, - Constants.PIPE)}; + return new String[] { ReferenceUtilities.joinLstFormat(ref, + Constants.PIPE) }; } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/CountToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/CountToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/CountToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -61,6 +61,10 @@ public boolean parse(LoadContext context, KitSpells kitSpells, String value) { + if (isEmpty(value)) + { + return false; + } kitSpells.setCount(FormulaFactory.getFormulaFor(value)); return true; } @@ -72,6 +76,6 @@ { return null; } - return new String[]{bd.toString()}; + return new String[] { bd.toString() }; } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/SpellsToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/SpellsToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/spells/SpellsToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -26,12 +26,16 @@ package plugin.lsttokens.kit.spells; import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import java.util.StringTokenizer; +import pcgen.base.lang.StringUtil; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.content.KnownSpellIdentifier; import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.cdom.reference.ReferenceUtilities; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.Globals; @@ -76,6 +80,10 @@ public boolean parse(LoadContext context, KitSpells kitSpell, String value) { + if (isEmpty(value)) + { + return false; + } StringTokenizer aTok = new StringTokenizer(value, Constants.PIPE); while (aTok.hasMoreTokens()) { @@ -85,30 +93,43 @@ if (kitSpell.getSpellBook() != null) { Logging.errorPrint("Cannot reset SPELLBOOK in SPELLS: " - + value); + + value); return false; } - kitSpell.setSpellBook(field.substring(10)); + String spellBook = field.substring(10); + if (spellBook.length() == 0) + { + Logging.errorPrint("Cannot set SPELLBOOK " + + "to empty value in SPELLS: " + value); + return false; + } + kitSpell.setSpellBook(spellBook); } else if (field.startsWith("CLASS=")) { if (kitSpell.getCastingClass() != null) { Logging.errorPrint("Cannot reset CLASS" + " in SPELLS: " - + value); + + value); return false; } String className = field.substring(6); - if (className.equalsIgnoreCase("Default")) + if (className.length() == 0) { + Logging.errorPrint("Cannot set CLASS " + + "to empty value in SPELLS: " + value); + return false; + } + else if (className.equalsIgnoreCase("Default")) + { Logging - .deprecationPrint("Use of Default for CLASS= in KIT " - + "SPELLS line is unnecessary: Ignoring"); + .deprecationPrint("Use of Default for CLASS= in KIT " + + "SPELLS line is unnecessary: Ignoring"); } else { kitSpell.setCastingClass(context.ref.getCDOMReference( - PCClass.class, className)); + PCClass.class, className)); } } else @@ -125,59 +146,40 @@ catch (NumberFormatException e) { Logging.errorPrint("Expected an Integer COUNT," - + " but found: " + countStr + " in " + value); + + " but found: " + countStr + " in " + value); return false; } field = field.substring(0, equalLoc); } + if (field.length() == 0) + { + Logging.errorPrint("Expected an Spell in SPELLS" + + " but found: " + value); + return false; + } StringTokenizer subTok = new StringTokenizer(field, "[]"); String filterString = subTok.nextToken(); // must satisfy all elements in a comma delimited list - Integer levelLim = null; CDOMReference<Spell> sp = null; - if (filterString.startsWith("LEVEL=")) + sp = TokenUtilities.getTypeOrPrimitive(context, SPELL_CLASS, + filterString); + if (sp == null) { - // if the argument starts with LEVEL=, compare the level to - // the desired spellLevel - try - { - levelLim = Integer.valueOf(filterString.substring(6)); - } - catch (NumberFormatException e) - { - Logging.errorPrint("Invalid Number in " + Logging.errorPrint(" encountered Invalid limit in " + getTokenName() + ": " + value); - Logging.errorPrint(" Level must be an integer"); - return false; - } - sp = context.ref.getCDOMAllReference(SPELL_CLASS); + return false; } - else - { - sp = - TokenUtilities.getTypeOrPrimitive(context, - SPELL_CLASS, filterString); - if (sp == null) - { - Logging.errorPrint(" encountered Invalid limit in " - + getTokenName() + ": " + value); - return false; - } - } - KnownSpellIdentifier ksi = - new KnownSpellIdentifier(sp, levelLim); + KnownSpellIdentifier ksi = new KnownSpellIdentifier(sp, null); - ArrayList<CDOMSingleRef<Ability>> featList = - new ArrayList<CDOMSingleRef<Ability>>(); + ArrayList<CDOMSingleRef<Ability>> featList = new ArrayList<CDOMSingleRef<Ability>>(); while (subTok.hasMoreTokens()) { String featName = subTok.nextToken(); - CDOMSingleRef<Ability> feat = - context.ref.getCDOMReference(ABILITY_CLASS, - AbilityCategory.FEAT, featName); + CDOMSingleRef<Ability> feat = context.ref.getCDOMReference( + ABILITY_CLASS, AbilityCategory.FEAT, featName); featList.add(feat); } kitSpell.addSpell(ksi, featList, count); @@ -190,19 +192,69 @@ return true; } - public String[] unparse(LoadContext context, KitSpells kitSkill) + public String[] unparse(LoadContext context, KitSpells kitSpell) { - return null; + StringBuilder sb = new StringBuilder(); + String spellBook = kitSpell.getSpellBook(); + String globalSpellbook = Globals.getDefaultSpellBook(); + if (spellBook != null && !globalSpellbook.equals(spellBook)) + { + sb.append("SPELLBOOK=").append(spellBook); + } + CDOMSingleRef<PCClass> castingClass = kitSpell.getCastingClass(); + if (castingClass != null) + { + if (sb.length() != 0) + { + sb.append(Constants.PIPE); + } + sb.append("CLASS=").append(castingClass.getLSTformat()); + } + Collection<KnownSpellIdentifier> spells = kitSpell.getSpells(); + if (spells != null) + { + boolean needPipe = sb.length() > 0; + for (KnownSpellIdentifier ksi : spells) + { + if (needPipe) + { + sb.append(Constants.PIPE); + } + needPipe = true; + Collection<List<CDOMSingleRef<Ability>>> abilities = kitSpell + .getAbilities(ksi); + for (List<CDOMSingleRef<Ability>> abils : abilities) + { + StringBuilder spell = new StringBuilder(); + spell.append(StringUtil.replaceAll(ksi.getLSTformat(), + Constants.LST_TYPE, Constants.LST_TYPE_OLD)); + if (abils != null && !abils.isEmpty()) + { + spell.append('['); + spell.append(ReferenceUtilities.joinLstFormat(abils, + "][")); + spell.append(']'); + } + Integer count = kitSpell.getSpellCount(ksi, abils); + if (count != 1) + { + spell.append('=').append(count); + } + sb.append(spell); + } + } + } + if (sb.length() == 0) + { + return null; + } + return new String[] { sb.toString() }; } - - //TODO DeferredToken + // TODO DeferredToken /* - if (!aClass.getSafe(ObjectKey.MEMORIZE_SPELLS) - && !spellBook.equals(Globals.getDefaultSpellBook())) - { - warnings.add("SPELLS: " + aClass.getDisplayName() - + " can only add to " + Globals.getDefaultSpellBook()); - return false; - } + * if (!aClass.getSafe(ObjectKey.MEMORIZE_SPELLS) && + * !spellBook.equals(Globals.getDefaultSpellBook())) { warnings.add("SPELLS: " + + * aClass.getDisplayName() + " can only add to " + + * Globals.getDefaultSpellBook()); return false; } */ } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/ApplyToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/ApplyToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/ApplyToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -31,12 +31,12 @@ import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; /** - * Deals with APPLY lst token within KitStartpack + * Deals with APPLY lst token within KitStartpack */ -public class ApplyToken extends AbstractToken implements - CDOMPrimaryToken<Kit> +public class ApplyToken extends AbstractToken implements CDOMPrimaryToken<Kit> { /** * Gets the name of the tag this class will parse. @@ -54,16 +54,24 @@ return Kit.class; } - public String getParentToken() - { - return "*KITTOKEN"; - } - public boolean parse(LoadContext context, Kit kit, String value) { - KitApply ka = KitApply.valueOf(value); - kit.put(ObjectKey.APPLY_MODE, ka); - return true; + if (isEmpty(value)) + { + return false; + } + try + { + KitApply ka = KitApply.valueOf(value); + kit.put(ObjectKey.APPLY_MODE, ka); + return true; + } + catch (IllegalArgumentException e) + { + Logging.errorPrint(getTokenName() + + " encountered unexpected application type: " + value); + return false; + } } public String[] unparse(LoadContext context, Kit kit) @@ -73,6 +81,6 @@ { return null; } - return new String[]{bd.toString()}; + return new String[] { bd.toString() }; } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/EquipBuyToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/EquipBuyToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/EquipBuyToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -63,11 +63,6 @@ return Kit.class; } - public String getParentToken() - { - return "*KITTOKEN"; - } - public boolean parse(LoadContext context, Kit kit, String value) { if (isEmpty(value) || hasIllegalSeparator('|', value)) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/StartpackToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/StartpackToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/StartpackToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -29,13 +29,13 @@ import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; -import pcgen.rules.persistence.token.CDOMSecondaryToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; /** * STARTPACK token for Kit Startpack */ public class StartpackToken extends AbstractToken implements - CDOMSecondaryToken<Kit> + CDOMPrimaryToken<Kit> { /** * Gets the name of the tag this class will parse. @@ -48,11 +48,6 @@ return "STARTPACK"; } - public String getParentToken() - { - return "*KITTOKEN"; - } - public Class<Kit> getTokenClass() { return Kit.class; @@ -61,6 +56,10 @@ public boolean parse(LoadContext context, Kit kit, String value) throws PersistenceLayerException { + if (isEmpty(value)) + { + return false; + } return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/VisibleToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/VisibleToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/startpack/VisibleToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -55,13 +55,12 @@ return Kit.class; } - public String getParentToken() - { - return "*KITTOKEN"; - } - public boolean parse(LoadContext context, Kit kit, String value) { + if (isEmpty(value)) + { + return false; + } Visibility vis; if (value.equals("QUALIFY")) { Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/TableToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/TableToken.java 2008-12-31 20:17:37 UTC (rev 8764) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/TableToken.java 2008-12-31 23:46:04 UTC (rev 8765) @@ -64,6 +64,10 @@ public boolean parse(LoadContext context, KitTable kitTable, String value) { + if (isEmpty(value)) + { + return false; + } kitTable.setTableName(value); return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-01 00:36:41
|
Revision: 8769 http://pcgen.svn.sourceforge.net/pcgen/?rev=8769&view=rev Author: thpr Date: 2009-01-01 00:36:37 +0000 (Thu, 01 Jan 2009) Log Message: ----------- Kit Token updates & fixes part 2 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/kit/BaseKit.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitTemplate.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/LangBonusToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/SelectToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/StatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/TemplateToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/OptionToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/helper/OptionBound.java Added: Trunk/pcgen/code/src/java/pcgen/cdom/helper/OptionBound.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/OptionBound.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/OptionBound.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -0,0 +1,56 @@ +/* + * Copyright 2008 (C) Tom Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This library 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package pcgen.cdom.helper; + +import pcgen.base.formula.Formula; +import pcgen.core.PlayerCharacter; + +public class OptionBound +{ + private Formula minOption; + private Formula maxOption; + + public OptionBound(Formula min, Formula max) + { + minOption = min; + maxOption = max; + } + + public boolean isOption(PlayerCharacter pc, int val) + { + if (minOption == null || minOption.resolve(pc, "").intValue() <= val) + { + if (maxOption == null + || maxOption.resolve(pc, "").intValue() >= val) + { + return true; + } + } + return false; + } + + public Formula getOptionMin() + { + return minOption; + } + + public Formula getOptionMax() + { + return maxOption; + } +} \ No newline at end of file Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/BaseKit.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/BaseKit.java 2008-12-31 23:47:18 UTC (rev 8768) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/BaseKit.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -23,52 +23,56 @@ */ package pcgen.core.kit; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; import pcgen.base.formula.Formula; import pcgen.cdom.base.ConcretePrereqObject; +import pcgen.cdom.helper.OptionBound; import pcgen.core.Kit; import pcgen.core.PlayerCharacter; /** * Common code for the kits. + * * @author Jonas Karlson <juj...@sf...> * @version $Revision$ */ public abstract class BaseKit extends ConcretePrereqObject { - - Formula minOption; - Formula maxOption; - - public void setOptionBounds(Formula min, Formula max) + + List<OptionBound> bounds; + + public void setOptionBounds(Formula min, Formula max) { - minOption = min; - maxOption = max; + if (bounds == null) + { + bounds = new ArrayList<OptionBound>(); + } + bounds.add(new OptionBound(min, max)); } - public Formula getOptionMin() - { - return minOption; - } - public Formula getOptionMax() - { - return maxOption; - } - /** * Returns true if the value is in the option range for this item - * @param pc Charater the kit is being applied to. Used to eval formulas - * @param val the Select value + * + * @param pc + * Charater the kit is being applied to. Used to eval formulas + * @param val + * the Select value * @return true if the value is an option */ public boolean isOption(PlayerCharacter pc, int val) { - if (minOption == null || minOption.resolve(pc, "").intValue() <= val) + if (bounds != null) { - if (maxOption == null || maxOption.resolve(pc, "").intValue() >= val) + for (OptionBound bound : bounds) { - return true; + if (bound.isOption(pc, val)) + { + return true; + } } } return false; @@ -76,6 +80,7 @@ /** * Evaluate the the EVAL expression + * * @param aPC * @param aValue * @return the answer @@ -120,7 +125,7 @@ } if (nestingLevel != 0) { - // We don't have a valid expression. Maybe someone else will + // We don't have a valid expression. Maybe someone else will // handle it. return aValue; } @@ -139,22 +144,35 @@ /** * Test applying a kit - * @param aKit The owning kit for this item - * @param aPC The character the kit is being applied to - * @param warnings A list of warnings generated while attempting to apply the kit + * + * @param aKit + * The owning kit for this item + * @param aPC + * The character the kit is being applied to + * @param warnings + * A list of warnings generated while attempting to apply the kit * @return true if OK */ - public abstract boolean testApply(Kit aKit, PlayerCharacter aPC, List<String> warnings); + public abstract boolean testApply(Kit aKit, PlayerCharacter aPC, + List<String> warnings); /** * Apply Kit - * @param aPC The character to apply the kit to. + * + * @param aPC + * The character to apply the kit to. */ public abstract void apply(PlayerCharacter aPC); /** * Get object name + * * @return object name */ public abstract String getObjectName(); + + public Collection<OptionBound> getBounds() + { + return bounds == null ? null : Collections.unmodifiableList(bounds); + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java 2008-12-31 23:47:18 UTC (rev 8768) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitStat.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -27,8 +27,11 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import pcgen.base.formula.Formula; +import pcgen.base.lang.StringUtil; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.Kit; @@ -52,18 +55,12 @@ @Override public String toString() { - StringBuilder sb = new StringBuilder(100); - boolean needsPipe = false; + Set<String> set = new TreeSet<String>(); for (Map.Entry<PCStat, Formula> me : statMap.entrySet()) { - if (needsPipe) - { - sb.append(Constants.PIPE); - } - needsPipe = true; - sb.append(me.getKey().getAbb()).append('=').append(me.getValue()); + set.add(me.getKey().getAbb()+ '='+ me.getValue()); } - return sb.toString(); + return StringUtil.join(set, Constants.PIPE); } @Override @@ -164,4 +161,9 @@ throw new IllegalArgumentException("Cannot redefine stat: " + stat); } } + + public boolean isEmpty() + { + return statMap.isEmpty(); + } } Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitTemplate.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitTemplate.java 2008-12-31 23:47:18 UTC (rev 8768) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitTemplate.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -182,4 +182,9 @@ { return templateList.getKeySet(); } + + public boolean isEmpty() + { + return templateList.isEmpty(); + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/LangBonusToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/LangBonusToken.java 2008-12-31 23:47:18 UTC (rev 8768) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/LangBonusToken.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -91,7 +91,7 @@ public String[] unparse(LoadContext context, KitLangBonus kitLangBonus) { List<CDOMSingleRef<Language>> languages = kitLangBonus.getLanguages(); - if (languages == null) + if (languages == null ||languages.isEmpty()) { return null; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/SelectToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/SelectToken.java 2008-12-31 23:47:18 UTC (rev 8768) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/SelectToken.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -61,6 +61,10 @@ public boolean parse(LoadContext context, KitSelect kitSelect, String value) { + if (isEmpty(value)) + { + return false; + } kitSelect.setFormula(FormulaFactory.getFormulaFor(value)); return true; } @@ -72,7 +76,7 @@ { return null; } - return new String[]{f.toString()}; + return new String[] { f.toString() }; } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/StatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/StatToken.java 2008-12-31 23:47:18 UTC (rev 8768) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/StatToken.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -84,25 +84,31 @@ if (equalLoc == -1) { Logging.errorPrint("Illegal " + getTokenName() - + " did not have Stat=X format: " + value); + + " did not have Stat=X format: " + value); return false; } if (equalLoc != token.lastIndexOf('=')) { Logging.errorPrint("Illegal " + getTokenName() - + " had two equal signs, is not Stat=X format: " + value); + + " had two equal signs, is not Stat=X format: " + + value); return false; } String statName = token.substring(0, equalLoc); - PCStat stat = - context.ref.getAbbreviatedObject(PCStat.class, statName); + PCStat stat = context.ref.getAbbreviatedObject(PCStat.class, + statName); if (stat == null) { Logging.errorPrint("Unable to find STAT: " + statName); return false; } - Formula statValue = - FormulaFactory.getFormulaFor(token.substring(equalLoc + 1)); + String formula = token.substring(equalLoc + 1); + if (formula.length() == 0) + { + Logging.errorPrint("Unable to find STAT value: " + value); + return false; + } + Formula statValue = FormulaFactory.getFormulaFor(formula); kitStat.addStat(stat, statValue); } return true; @@ -110,7 +116,7 @@ public String[] unparse(LoadContext context, KitStat kitStat) { - return new String[]{kitStat.toString()}; + return kitStat.isEmpty() ? null : new String[] { kitStat.toString() }; } public boolean process(LoadContext context, Kit obj) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/TemplateToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/TemplateToken.java 2008-12-31 23:47:18 UTC (rev 8768) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/TemplateToken.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -135,6 +135,7 @@ public String[] unparse(LoadContext context, KitTemplate kitTemplate) { - return new String[]{kitTemplate.toString()}; + return kitTemplate.isEmpty() ? null : new String[] { kitTemplate + .toString() }; } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/OptionToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/OptionToken.java 2008-12-31 23:47:18 UTC (rev 8768) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/OptionToken.java 2009-01-01 00:36:37 UTC (rev 8769) @@ -25,10 +25,16 @@ package plugin.lsttokens.kit.basekit; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import java.util.StringTokenizer; import pcgen.base.formula.Formula; +import pcgen.base.lang.StringUtil; +import pcgen.cdom.base.Constants; import pcgen.cdom.base.FormulaFactory; +import pcgen.cdom.helper.OptionBound; import pcgen.core.kit.BaseKit; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; @@ -48,31 +54,6 @@ return "OPTION"; } - public boolean parse(BaseKit baseKit, String value) - { - StringTokenizer tok = new StringTokenizer(value, "|"); - while (tok.hasMoreTokens()) - { - String val = tok.nextToken(); - int ind = -1; - String lowVal; - String highVal; - if ((ind = val.indexOf(",")) != -1) - { - lowVal = val.substring(0, ind); - highVal = val.substring(ind + 1); - } - else - { - lowVal = highVal = val; - } - Formula min = FormulaFactory.getFormulaFor(lowVal); - Formula max = FormulaFactory.getFormulaFor(highVal); - baseKit.setOptionBounds(min, max); - } - return true; - } - public Class<BaseKit> getTokenClass() { return BaseKit.class; @@ -85,44 +66,67 @@ public boolean parse(LoadContext context, BaseKit kit, String value) { - int commaLoc = value.indexOf(','); - String minString; - String maxString; - if (commaLoc == -1) + if (isEmpty(value) || hasIllegalSeparator('|', value)) { - minString = value; - maxString = value; - } - else if (commaLoc != value.lastIndexOf(',')) - { return false; } - else + StringTokenizer tok = new StringTokenizer(value, "|"); + while (tok.hasMoreTokens()) { - minString = value.substring(0, commaLoc); - maxString = value.substring(commaLoc + 1); + String subTok = tok.nextToken(); + if (hasIllegalSeparator(',', subTok)) + { + return false; + } + int commaLoc = subTok.indexOf(','); + String minString; + String maxString; + if (commaLoc == -1) + { + minString = subTok; + maxString = subTok; + } + else if (commaLoc != subTok.lastIndexOf(',')) + { + return false; + } + else + { + minString = subTok.substring(0, commaLoc); + maxString = subTok.substring(commaLoc + 1); + } + Formula min = FormulaFactory.getFormulaFor(minString); + Formula max = FormulaFactory.getFormulaFor(maxString); + kit.setOptionBounds(min, max); } - Formula min = FormulaFactory.getFormulaFor(minString); - Formula max = FormulaFactory.getFormulaFor(maxString); - kit.setOptionBounds(min, max); return true; } public String[] unparse(LoadContext context, BaseKit kit) { - Formula min = kit.getOptionMin(); - Formula max = kit.getOptionMax(); - if (min == null && max == null) + Collection<OptionBound> bounds = kit.getBounds(); + if (bounds == null) { return null; } - // TODO Error if only one is null - StringBuilder sb = new StringBuilder(); - sb.append(min); - if (!min.equals(max)) + List<String> list = new ArrayList<String>(); + for (OptionBound bound : bounds) { - sb.append(',').append(max); + Formula min = bound.getOptionMin(); + Formula max = bound.getOptionMax(); + if (min == null || max == null) + { + // Error if only one is null + return null; + } + StringBuilder sb = new StringBuilder(); + sb.append(min); + if (!min.equals(max)) + { + sb.append(',').append(max); + } + list.add(sb.toString()); } - return new String[]{sb.toString()}; + return new String[] { StringUtil.join(list, Constants.PIPE) }; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-01 01:18:16
|
Revision: 8771 http://pcgen.svn.sourceforge.net/pcgen/?rev=8771&view=rev Author: thpr Date: 2009-01-01 01:18:06 +0000 (Thu, 01 Jan 2009) Log Message: ----------- Kit Token updates & fixes part 3 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/kit/KitGear.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/LookupToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/levelability/LevelAbilityToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/ValuesToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitGear.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitGear.java 2009-01-01 00:37:35 UTC (rev 8770) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitGear.java 2009-01-01 01:18:06 UTC (rev 8771) @@ -103,7 +103,7 @@ info.append(quantity).append('x'); } - info.append(equip.getLSTformat()); + info.append(equip == null ? "null" : equip.getLSTformat()); if (mods != null) { Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/LookupToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/LookupToken.java 2009-01-01 00:37:35 UTC (rev 8770) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/basekit/LookupToken.java 2009-01-01 01:18:06 UTC (rev 8771) @@ -25,9 +25,9 @@ package plugin.lsttokens.kit.basekit; +import java.util.ArrayList; import java.util.Collection; -import java.util.Set; -import java.util.TreeSet; +import java.util.List; import pcgen.base.formula.Formula; import pcgen.base.util.NamedFormula; @@ -88,11 +88,11 @@ { return null; } - Set<String> set = new TreeSet<String>(); + List<String> list = new ArrayList<String>(); for (NamedFormula nf : lookups) { - set.add(nf.getName() + "," + nf.getFormula().toString()); + list.add(nf.getName() + "," + nf.getFormula().toString()); } - return set.toArray(new String[set.size()]); + return list.toArray(new String[list.size()]); } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/levelability/LevelAbilityToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/levelability/LevelAbilityToken.java 2009-01-01 00:37:35 UTC (rev 8770) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/levelability/LevelAbilityToken.java 2009-01-01 01:18:06 UTC (rev 8771) @@ -66,8 +66,12 @@ } public boolean parse(LoadContext context, KitLevelAbility kitLA, - String value) + String value) { + if (isEmpty(value)) + { + return false; + } int equalLoc = value.indexOf('='); if (equalLoc == -1) { @@ -77,13 +81,19 @@ if (equalLoc != value.lastIndexOf('=')) { Logging.errorPrint(getTokenName() + " requires a single =: " - + value); + + value); return false; } String className = value.substring(0, equalLoc); + if (className.length() == 0) + { + Logging.errorPrint(getTokenName() + + " requires a class name before =: " + value); + return false; + } String level = value.substring(equalLoc + 1); - CDOMSingleRef<PCClass> cl = - context.ref.getCDOMReference(PCClass.class, className); + CDOMSingleRef<PCClass> cl = context.ref.getCDOMReference(PCClass.class, + className); try { Integer lvl = Integer.valueOf(level); @@ -97,8 +107,8 @@ catch (NumberFormatException nfe) { Logging.errorPrint(getTokenName() - + " expected an integer. Tag must be of the form: " - + getTokenName() + ":<int>"); + + " expected an integer. Tag must be of the form: " + + getTokenName() + ":<int>"); return false; } kitLA.setClass(cl); @@ -108,8 +118,12 @@ public String[] unparse(LoadContext context, KitLevelAbility kitLA) { CDOMReference<PCClass> cl = kitLA.getPCClass(); + if (cl == null) + { + return null; + } Integer lvl = kitLA.getLevel(); - return new String[]{cl.getLSTformat() + '=' + lvl}; + return new String[] { cl.getLSTformat() + '=' + lvl }; } public Class<Kit> getDeferredTokenClass() @@ -128,20 +142,12 @@ } return true; } - + /* - KitLevelAbility kla = (KitLevelAbility) bk; - PersistentTransitionChoice<?> add = kla.getAdd(); - CDOMSingleRef<PCClass> ref = kla.getPCClass(); - PCClass pcc = ref.resolvesTo(); - List<PersistentTransitionChoice<?>> addList = pcc.getListFor(ListKey.ADD); - if (addList == null) - { - //Error - } - else if (!addList.contains(add)) - { - //Error - } + * KitLevelAbility kla = (KitLevelAbility) bk; PersistentTransitionChoice<?> + * add = kla.getAdd(); CDOMSingleRef<PCClass> ref = kla.getPCClass(); + * PCClass pcc = ref.resolvesTo(); List<PersistentTransitionChoice<?>> + * addList = pcc.getListFor(ListKey.ADD); if (addList == null) { //Error } + * else if (!addList.contains(add)) { //Error } */ } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/ValuesToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/ValuesToken.java 2009-01-01 00:37:35 UTC (rev 8770) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/table/ValuesToken.java 2009-01-01 01:18:06 UTC (rev 8771) @@ -48,7 +48,7 @@ { /** * Gets the name of the tag this class will parse. - * + * * @return Name of the tag this class handles */ @Override @@ -68,7 +68,7 @@ } public boolean parse(LoadContext context, KitTable kitTable, String value) - throws PersistenceLayerException + throws PersistenceLayerException { if (isEmpty(value) || hasIllegalSeparator('|', value)) { @@ -90,13 +90,16 @@ if (colonLoc == -1) { Logging.errorPrint("Expected colon in Value item: " + s - + " within: " + value); + + " within: " + value); return false; } String key = s.substring(0, colonLoc); String thingValue = s.substring(colonLoc + 1); - context.processSubToken(optionInfo, getParentToken(), key, - thingValue); + if (!context.processSubToken(optionInfo, getParentToken(), key, + thingValue)) + { + return false; + } } if (!st.hasMoreTokens()) { @@ -107,7 +110,7 @@ if (!processRange(kitTable, optionInfo, range)) { Logging.errorPrint("Invalid Range in Value: " + range - + " within " + value); + + " within " + value); return false; } } @@ -116,8 +119,12 @@ } private boolean processRange(KitTable kitTable, KitGear optionInfo, - String range) + String range) { + if (hasIllegalSeparator(',', range)) + { + return false; + } int commaLoc = range.indexOf(','); String minString; String maxString; @@ -145,7 +152,11 @@ { StringBuilder sb = new StringBuilder(); List<TableEntry> list = kitTable.getList(); - boolean first = false; + if (list.isEmpty()) + { + return null; + } + boolean first = true; for (TableEntry rl : list) { if (!first) @@ -168,10 +179,13 @@ } sb.append(Constants.PIPE); sb.append(rl.lowRange.toString()); - sb.append(','); - sb.append(rl.highRange.toString()); + if (!rl.lowRange.equals(rl.highRange)) + { + sb.append(','); + sb.append(rl.highRange.toString()); + } first = false; } - return new String[]{sb.toString()}; + return new String[] { sb.toString() }; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-01 05:40:27
|
Revision: 8774 http://pcgen.svn.sourceforge.net/pcgen/?rev=8774&view=rev Author: thpr Date: 2009-01-01 05:40:17 +0000 (Thu, 01 Jan 2009) Log Message: ----------- Additional changes based on token updates removes use of URI (use CampaignSourceEntry) due to unparse issues with expanding of URI changes CHOOSE:LANGAUTO to not use ListKey.ADD to avoid being hit by ADD:.CLEAR Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ReferenceChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java Trunk/pcgen/code/src/java/pcgen/core/Campaign.java Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java Trunk/pcgen/code/src/java/pcgen/gui/pcGenGUI.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignLoader.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignSourceEntry.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java Trunk/pcgen/code/src/java/plugin/lsttokens/DrLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/MovecloneLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/NaturalattacksLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/SpelllevelLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/CopyrightToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LicenseToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LogoToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/PccToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/ChooseLangautoToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/StartfeatsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/template/ChooseLangautoToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ReferenceChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ReferenceChoiceSet.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ReferenceChoiceSet.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -25,8 +25,8 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; -import java.util.TreeSet; +import pcgen.base.util.WeightedCollection; import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.Constants; import pcgen.cdom.base.PrereqObject; @@ -53,7 +53,7 @@ * The underlying Set of CDOMReferences that contain the objects in this * ReferenceChoiceSet */ - private final Set<CDOMReference<T>> set; + private final Collection<CDOMReference<T>> set; /** * Constructs a new ReferenceChoiceSet which contains the Set of objects @@ -85,7 +85,7 @@ throw new IllegalArgumentException( "Choice Collection cannot be empty"); } - set = new HashSet<CDOMReference<T>>(col); + set = new WeightedCollection<CDOMReference<T>>(col); } /** @@ -94,7 +94,7 @@ */ public String getLSTformat() { - Set<CDOMReference<?>> sortedSet = new TreeSet<CDOMReference<?>>( + WeightedCollection<CDOMReference<?>> sortedSet = new WeightedCollection<CDOMReference<?>>( ReferenceUtilities.REFERENCE_SORTER); sortedSet.addAll(set); return ReferenceUtilities.joinLstFormat(sortedSet, Constants.COMMA); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -24,7 +24,6 @@ package pcgen.cdom.enumeration; import java.lang.reflect.Field; -import java.net.URI; import java.util.Collection; import java.util.HashSet; import java.util.Map; @@ -129,7 +128,7 @@ /** FILE_LST_EXCLUDE - a ListKey */ public static final ListKey<CampaignSourceEntry> FILE_LST_EXCLUDE = new ListKey<CampaignSourceEntry>(); /** FILE_PCC - a ListKey */ - public static final ListKey<URI> FILE_PCC = new ListKey<URI>(); + public static final ListKey<CampaignSourceEntry> FILE_PCC = new ListKey<CampaignSourceEntry>(); /** FILE_RACE - a ListKey */ public static final ListKey<CampaignSourceEntry> FILE_RACE = new ListKey<CampaignSourceEntry>(); /** FILE_SKILL - a ListKey */ @@ -145,7 +144,7 @@ /** LICENSE - a ListKey */ public static final ListKey<String> LICENSE = new ListKey<String>(); /** LICENSE_FILE - a ListKey */ - public static final ListKey<URI> LICENSE_FILE = new ListKey<URI>(); + public static final ListKey<CampaignSourceEntry> LICENSE_FILE = new ListKey<CampaignSourceEntry>(); /** FILE_LOGO - a ListKey */ public static final ListKey<CampaignSourceEntry> FILE_LOGO = new ListKey<CampaignSourceEntry>(); /** PANTHEON - a ListKey */ Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -35,6 +35,7 @@ import pcgen.base.util.CaseInsensitiveMap; import pcgen.cdom.base.CDOMListObject; import pcgen.cdom.base.Category; +import pcgen.cdom.base.PersistentTransitionChoice; import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.content.ChallengeRating; import pcgen.cdom.content.HitDie; @@ -51,6 +52,7 @@ import pcgen.core.ArmorProf; import pcgen.core.Campaign; import pcgen.core.Equipment; +import pcgen.core.Language; import pcgen.core.PCAlignment; import pcgen.core.PCClass; import pcgen.core.PCStat; @@ -271,6 +273,8 @@ public static final ObjectKey<Boolean> SHOW_IN_MENU = new ObjectKey<Boolean>(Boolean.FALSE); + public static final ObjectKey<PersistentTransitionChoice<Language>> CHOOSE_LANGAUTO = new ObjectKey<PersistentTransitionChoice<Language>>(null); + /* * TODO Okay, this is a hack. */ Modified: Trunk/pcgen/code/src/java/pcgen/core/Campaign.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Campaign.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/core/Campaign.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -24,7 +24,6 @@ */ package pcgen.core; -import java.net.URI; import java.util.ArrayList; import java.util.List; @@ -34,6 +33,7 @@ import pcgen.cdom.reference.TransparentReferenceManufacturer; import pcgen.core.utils.MessageType; import pcgen.core.utils.ShowMessageDelegate; +import pcgen.persistence.lst.CampaignSourceEntry; import pcgen.rules.context.AbstractReferenceContext; import pcgen.rules.context.ConsolidatedListCommitStrategy; import pcgen.rules.context.GameReferenceContext; @@ -129,13 +129,13 @@ */ public List<Campaign> getSubCampaigns() { - final List<URI> pccFiles = getSafeListFor(ListKey.FILE_PCC); + final List<CampaignSourceEntry> pccFiles = getSafeListFor(ListKey.FILE_PCC); final List<Campaign> ret = new ArrayList<Campaign>(pccFiles.size()); - for ( final URI fileName : pccFiles ) + for ( final CampaignSourceEntry fileName : pccFiles ) { - final Campaign campaign = Globals.getCampaignByURI(fileName, true); + final Campaign campaign = Globals.getCampaignByURI(fileName.getURI(), true); ret.add(campaign); } return ret; Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -28,10 +28,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import pcgen.base.lang.StringUtil; import pcgen.cdom.base.CDOMReference; -import pcgen.cdom.reference.CategorizedCDOMReference; +import pcgen.cdom.reference.ReferenceUtilities; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.AbilityUtilities; @@ -286,7 +288,10 @@ public Collection<CDOMReference<Ability>> getAbilityKeys() { - return abilityMap.keySet(); + Set<CDOMReference<Ability>> wc = new TreeSet<CDOMReference<Ability>>( + ReferenceUtilities.REFERENCE_SORTER); + wc.addAll(abilityMap.keySet()); + return wc; } private class AbilitySelection Modified: Trunk/pcgen/code/src/java/pcgen/gui/pcGenGUI.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui/pcGenGUI.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/gui/pcGenGUI.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -37,7 +37,6 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; -import java.net.URI; import java.util.List; import java.util.Map; import java.util.Observer; @@ -81,6 +80,7 @@ import pcgen.io.ExportHandler; import pcgen.io.PCGFile; import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.lst.CampaignSourceEntry; import pcgen.persistence.lst.LstFileLoader; import pcgen.persistence.lst.SponsorLoader; import pcgen.util.InputFactory; @@ -567,12 +567,12 @@ aFrame.setVisible(true); } - public static void showLicense(String title, List<URI> fileList) + public static void showLicense(String title, List<CampaignSourceEntry> fileList) { - for (URI licenseFile : fileList) + for (CampaignSourceEntry licenseFile : fileList) { try { - StringBuilder dataBuffer = LstFileLoader.readFromURI(licenseFile); + StringBuilder dataBuffer = LstFileLoader.readFromURI(licenseFile.getURI()); showLicense(title, dataBuffer.toString()); } catch (PersistenceLayerException e) { Logging.errorPrint("Could not read license at " + licenseFile, e); Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignLoader.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignLoader.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -211,8 +211,9 @@ baseCampaign.setInitted(true); // Add all sub-files to the main campaign, regardless of exclusions - for (URI fName : baseCampaign.getSafeListFor(ListKey.FILE_PCC)) + for (CampaignSourceEntry cse : baseCampaign.getSafeListFor(ListKey.FILE_PCC)) { + URI fName = cse.getURI(); if (PCGFile.isPCGenCampaignFile(fName)) { Campaign globalSubCampaign = Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignSourceEntry.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignSourceEntry.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/CampaignSourceEntry.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -266,7 +266,7 @@ * @return String containing the converted absolute path or URL * (as appropriate) */ - public static URI getPathURI(URI pccPath, String basePath) + private static URI getPathURI(URI pccPath, String basePath) { if (basePath.length() <= 0) { Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -213,7 +213,7 @@ new ArrayList<CampaignSourceEntry>(); private final List<CampaignSourceEntry> languageFileList = new ArrayList<CampaignSourceEntry>(); - private List<URI> licenseFiles = new ArrayList<URI>(); + private List<CampaignSourceEntry> licenseFiles = new ArrayList<CampaignSourceEntry>(); private final List<CampaignSourceEntry> lstExcludeFiles = new ArrayList<CampaignSourceEntry>(); @@ -1313,7 +1313,8 @@ licensesToDisplayString.append(licenseList); } - List<URI> licenseURIs = campaign.getSafeListFor(ListKey.LICENSE_FILE); + List<CampaignSourceEntry> licenseURIs = + campaign.getSafeListFor(ListKey.LICENSE_FILE); if (licenseURIs != null) { licenseFiles.addAll(licenseURIs); @@ -1361,12 +1362,12 @@ } // Add all sub-files to the main campaign, regardless of exclusions - for (URI fName : campaign.getSafeListFor(ListKey.FILE_PCC)) + for (CampaignSourceEntry fName : campaign.getSafeListFor(ListKey.FILE_PCC)) { - if (PCGFile.isPCGenCampaignFile(fName)) + URI uri = fName.getURI(); + if (PCGFile.isPCGenCampaignFile(uri)) { - Campaign subCampaign = Globals.getCampaignByURI(fName, - false); + Campaign subCampaign = Globals.getCampaignByURI(uri, false); if (loadedSet.add(subCampaign)) { subCampaign.applyTo(context.ref); Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -324,11 +324,6 @@ return CampaignSourceEntry.getNewCSE(source, sourceURI, value); } - public URI getPathURI(String value) - { - return CampaignSourceEntry.getPathURI(sourceURI, value); - } - CDOMObject stateful; public void clearStatefulInformation() Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/DrLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/DrLst.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/DrLst.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -51,6 +51,10 @@ public boolean parse(LoadContext context, CDOMObject obj, String value) { + if (isEmpty(value) || hasIllegalSeparator('|', value)) + { + return false; + } if (".CLEAR".equals(value)) { context.getObjectContext() @@ -59,40 +63,21 @@ } StringTokenizer tok = new StringTokenizer(value, "|"); - DamageReduction dr; - try + String drString = tok.nextToken(); + if (hasIllegalSeparator('/', drString)) { - String[] values = tok.nextToken().split("/"); - if (values.length != 2) - { - Logging.log(Logging.LST_ERROR, getTokenName() - + " failed to build DamageReduction with value " - + value); - Logging - .errorPrint(" ...expected a String with one / as a separator"); - return false; - } - if (values[0].length() == 0) - { - Logging.log(Logging.LST_ERROR, "Amount of Reduction in " + getTokenName() - + " cannot be empty"); - return false; - } - if (values[1].length() == 0) - { - Logging.log(Logging.LST_ERROR, "Damage Type in " + getTokenName() - + " cannot be empty"); - return false; - } - dr = new DamageReduction(values[0], values[1]); + return false; } - catch (IllegalArgumentException iae) + String[] values = drString.split("/"); + if (values.length != 2) { Logging.log(Logging.LST_ERROR, getTokenName() - + " failed to build DamageReduction with value " + value - + " ... " + iae.getLocalizedMessage()); + + " failed to build DamageReduction with value " + value); + Logging + .errorPrint(" ...expected a String with one / as a separator"); return false; } + DamageReduction dr = new DamageReduction(values[0], values[1]); if (tok.hasMoreTokens()) { @@ -128,7 +113,15 @@ { for (DamageReduction lw : added) { - set.add(lw.getLSTformat()); + StringBuilder sb = new StringBuilder(); + sb.append(lw.getLSTformat()); + if (lw.hasPrerequisites()) + { + sb.append(Constants.PIPE); + sb.append(context.getPrerequisiteString(lw + .getPrerequisiteList())); + } + set.add(sb.toString()); } } list.addAll(set); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/MovecloneLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/MovecloneLst.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/MovecloneLst.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -18,10 +18,9 @@ package plugin.lsttokens; import java.util.Collection; -import java.util.Set; import java.util.StringTokenizer; -import java.util.TreeSet; +import pcgen.base.util.WeightedCollection; import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.ListKey; @@ -135,7 +134,8 @@ // Zero indicates no Token return null; } - Set<String> set = new TreeSet<String>(); + WeightedCollection<String> set = new WeightedCollection<String>( + String.CASE_INSENSITIVE_ORDER); for (Movement m : added) { StringBuilder sb = new StringBuilder(); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/NaturalattacksLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/NaturalattacksLst.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/NaturalattacksLst.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -22,6 +22,7 @@ import java.util.List; import java.util.StringTokenizer; +import pcgen.base.lang.StringUtil; import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.FormulaKey; @@ -296,14 +297,14 @@ return null; } sb.append(name).append(Constants.COMMA); - String type = eq.getType(); - if (type == null || type.length() == 0) + List<Type> type = eq.getListFor(ListKey.TYPE); + if (type == null || type.isEmpty()) { context.addWriteMessage(getTokenName() + " expected Equipment to have a type"); return null; } - sb.append(type); + sb.append(StringUtil.join(type, Constants.DOT)); sb.append(Constants.COMMA); Boolean attProgress = eq.get(ObjectKey.ATTACKS_PROGRESS); if (attProgress == null) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/SpelllevelLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/SpelllevelLst.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/SpelllevelLst.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -162,7 +162,7 @@ return false; } - if (hasIllegalSeparator(',', casterString)) + if (isEmpty(casterString) || hasIllegalSeparator(',', casterString)) { return false; } @@ -174,15 +174,8 @@ { String classString = clTok.nextToken(); CDOMReference<CL> ref; - if (classString.length() == 0) + if (classString.startsWith("SPELLCASTER.")) { - Logging - .errorPrint("Cannot resolve empty SpellList reference in " - + getTokenName()); - return false; - } - else if (classString.startsWith("SPELLCASTER.")) - { /* * This is actually a TYPE */ @@ -261,7 +254,12 @@ .getTertiaryKeySet(prereqs, level)) { sb.append(Constants.PIPE); - sb.append(list.getLSTformat()); + String lsts = list.getLSTformat(); + if (lsts.startsWith("TYPE=")) + { + lsts = "SPELLCASTER." + lsts.substring(5); + } + sb.append(lsts); sb.append(Constants.EQUALS); sb.append(level); sb.append(Constants.PIPE); @@ -273,12 +271,8 @@ { sb.append(','); } - String lsts = lw.getLSTformat(); - if (lsts.startsWith("TYPE=")) - { - lsts = "SPELLCASTER." + lsts.substring(5); - } - sb.append(lsts); + first = false; + sb.append(lw.getLSTformat()); } } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/CopyrightToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/CopyrightToken.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/CopyrightToken.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -18,8 +18,9 @@ package plugin.lsttokens.campaign; import java.net.URI; +import java.util.ArrayList; import java.util.Collection; -import java.util.TreeSet; +import java.util.List; import pcgen.cdom.enumeration.ListKey; import pcgen.core.Campaign; @@ -65,7 +66,7 @@ Changes<String> changes = context.getObjectContext().getListChanges(campaign, ListKey.SECTION_15); - TreeSet<String> set = new TreeSet<String>(); + List<String> set = new ArrayList<String>(); Collection<String> added = changes.getAdded(); if (added != null && !added.isEmpty()) { @@ -73,9 +74,7 @@ } if (set.isEmpty()) { - context.addWriteMessage(getTokenName() - + " was expecting non-empty changes to include " - + "added items or global clear"); + //Okay, no copyright info return null; } return set.toArray(new String[set.size()]); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LicenseToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LicenseToken.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LicenseToken.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008 Tom Parker <th...@us...> +* Copyright (c) 2008 Tom Parker <th...@us...> * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free @@ -18,16 +18,19 @@ package plugin.lsttokens.campaign; import java.net.URI; +import java.util.ArrayList; import java.util.Collection; -import java.util.TreeSet; +import java.util.List; import pcgen.cdom.enumeration.ListKey; import pcgen.core.Campaign; import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.lst.CampaignSourceEntry; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; /** * Class deals with LICENSE Token @@ -51,13 +54,20 @@ } if (value.startsWith("FILE=")) { - URI uri = context.getPathURI(value.substring(5)); - if (uri == null) + String fileURI = value.substring(5); + if (fileURI.length() == 0) { + Logging.errorPrint("Cannot have empty FILE in " + + getTokenName()); + return false; + } + CampaignSourceEntry cse = context.getCampaignSourceEntry(campaign, fileURI); + if (cse == null) + { //Error return false; } - context.obj.addToList(campaign, ListKey.LICENSE_FILE, uri); + context.obj.addToList(campaign, ListKey.LICENSE_FILE, cse); } else { @@ -70,28 +80,26 @@ { Changes<String> changes = context.getObjectContext().getListChanges(campaign, ListKey.LICENSE); - Changes<URI> filechanges = + Changes<CampaignSourceEntry> filechanges = context.getObjectContext().getListChanges(campaign, ListKey.LICENSE_FILE); - TreeSet<String> set = new TreeSet<String>(); + List<String> set = new ArrayList<String>(); Collection<String> added = changes.getAdded(); if (added != null && !added.isEmpty()) { set.addAll(added); } - Collection<URI> addeduri = filechanges.getAdded(); + Collection<CampaignSourceEntry> addeduri = filechanges.getAdded(); if (addeduri != null && !addeduri.isEmpty()) { - for (URI uri : addeduri) + for (CampaignSourceEntry cse : addeduri) { - set.add("FILE=" + uri); + set.add("FILE=" + cse.getLSTformat()); } } if (set.isEmpty()) { - context.addWriteMessage(getTokenName() - + " was expecting non-empty changes to include " - + "added items or global clear"); + //Okay, no license info return null; } return set.toArray(new String[set.size()]); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LogoToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LogoToken.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/LogoToken.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -77,6 +77,7 @@ if (cse == null) { //Error + Thread.dumpStack(); return false; } if (!cse.getIncludeItems().isEmpty()) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/PccToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/PccToken.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/PccToken.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -17,7 +17,6 @@ */ package plugin.lsttokens.campaign; -import java.net.URI; import java.util.Collection; import java.util.Set; import java.util.TreeSet; @@ -25,6 +24,7 @@ import pcgen.cdom.enumeration.ListKey; import pcgen.core.Campaign; import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.lst.CampaignSourceEntry; import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; @@ -50,30 +50,31 @@ { return false; } - URI uri = context.getPathURI(value); - if (uri == null) + CampaignSourceEntry cse = context.getCampaignSourceEntry(campaign, + value); + if (cse == null) { // Error return false; } - context.obj.addToList(campaign, ListKey.FILE_PCC, uri); + context.obj.addToList(campaign, ListKey.FILE_PCC, cse); return true; } public String[] unparse(LoadContext context, Campaign campaign) { - Changes<URI> cseChanges = context.obj.getListChanges(campaign, - ListKey.FILE_PCC); - Collection<URI> added = cseChanges.getAdded(); + Changes<CampaignSourceEntry> cseChanges = context.obj.getListChanges( + campaign, ListKey.FILE_PCC); + Collection<CampaignSourceEntry> added = cseChanges.getAdded(); if (added == null) { // empty indicates no token return null; } Set<String> set = new TreeSet<String>(); - for (URI uri : added) + for (CampaignSourceEntry uri : added) { - set.add(uri.toString()); + set.add(uri.getLSTformat()); } return set.toArray(new String[set.size()]); } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/ChooseLangautoToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/ChooseLangautoToken.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/ChooseLangautoToken.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -18,7 +18,6 @@ package plugin.lsttokens.race; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.StringTokenizer; @@ -30,22 +29,23 @@ import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.base.PersistentChoiceActor; import pcgen.cdom.base.PersistentTransitionChoice; -import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.choiceset.ReferenceChoiceSet; import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.Globals; import pcgen.core.Language; import pcgen.core.PlayerCharacter; import pcgen.core.Race; -import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.TokenUtilities; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMSecondaryToken; +import pcgen.rules.persistence.token.DeferredToken; import pcgen.util.Logging; public class ChooseLangautoToken extends AbstractToken implements - CDOMSecondaryToken<Race>, PersistentChoiceActor<Language> + CDOMSecondaryToken<Race>, PersistentChoiceActor<Language>, + DeferredToken<Race> { private static final Class<Language> LANGUAGE_CLASS = Language.class; @@ -114,7 +114,7 @@ ChoiceSet<Language> cs = new ChoiceSet<Language>(getTokenName(), rcs); PersistentTransitionChoice<Language> tc = new PersistentTransitionChoice<Language>(cs, FormulaFactory.ONE); - context.getObjectContext().addToList(race, ListKey.ADD, tc); + context.getObjectContext().put(race, ObjectKey.CHOOSE_LANGAUTO, tc); tc.setTitle("Pick a Language"); tc.setChoiceActor(this); return true; @@ -122,38 +122,25 @@ public String[] unparse(LoadContext context, Race race) { - Changes<PersistentTransitionChoice<?>> grantChanges = - context.getObjectContext().getListChanges(race, ListKey.ADD); - Collection<PersistentTransitionChoice<?>> addedItems = - grantChanges.getAdded(); - if (addedItems == null || addedItems.isEmpty()) + PersistentTransitionChoice<Language> container = context + .getObjectContext().getObject(race, ObjectKey.CHOOSE_LANGAUTO); + if (container == null) { - // Zero indicates no Token return null; } - List<String> addStrings = new ArrayList<String>(); - for (TransitionChoice<?> container : addedItems) + ChoiceSet<?> cs = container.getChoices(); + Formula f = container.getCount(); + if (f == null) { - ChoiceSet<?> cs = container.getChoices(); - if (cs.getName().equals(getTokenName()) - && LANGUAGE_CLASS.equals(cs.getChoiceClass())) - { - Formula f = container.getCount(); - if (f == null) - { - context.addWriteMessage("Unable to find " + getFullName() - + " Count"); - return null; - } - StringBuilder sb = new StringBuilder(); - sb.append(cs.getLSTformat().replaceAll(Constants.COMMA, - Constants.PIPE)); - addStrings.add(sb.toString()); - - // assoc.getAssociation(AssociationKey.CHOICE_MAXCOUNT); - } + context.addWriteMessage("Unable to find " + getFullName() + + " Count"); + return null; } - return addStrings.toArray(new String[addStrings.size()]); + StringBuilder sb = new StringBuilder(); + sb + .append(cs.getLSTformat().replaceAll(Constants.COMMA, + Constants.PIPE)); + return new String[] { sb.toString() }; } public Class<Race> getTokenClass() @@ -188,4 +175,25 @@ { // No action required } + + public Class<Race> getDeferredTokenClass() + { + return Race.class; + } + + /* + * This is deferred into ListKey.ADD to ensure that ADD:.CLEAR doesn't + * impact CHOOSE:LANGAUTO. It is hoped that CHOOSE:LANGAUTO can be + * refactored into an ADD token in order to avoid this contortion + */ + public boolean process(LoadContext context, Race race) + { + PersistentTransitionChoice<Language> langauto = race + .get(ObjectKey.CHOOSE_LANGAUTO); + if (langauto != null) + { + race.addToListFor(ListKey.ADD, langauto); + } + return true; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/StartfeatsToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/StartfeatsToken.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/StartfeatsToken.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -18,9 +18,8 @@ package plugin.lsttokens.race; import java.util.Collection; -import java.util.Set; -import java.util.TreeSet; +import pcgen.base.util.WeightedCollection; import pcgen.cdom.enumeration.ListKey; import pcgen.core.Race; import pcgen.core.bonus.Bonus; @@ -96,7 +95,8 @@ // CONSIDER need to deal with removed... Collection<BonusObj> added = changes.getAdded(); String tokenName = getTokenName(); - Set<String> bonusSet = new TreeSet<String>(); + Collection<String> bonusSet = new WeightedCollection<String>( + String.CASE_INSENSITIVE_ORDER); for (BonusObj bonus : added) { if (tokenName.equals(bonus.getTokenSource())) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/template/ChooseLangautoToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/template/ChooseLangautoToken.java 2009-01-01 01:19:46 UTC (rev 8773) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/template/ChooseLangautoToken.java 2009-01-01 05:40:17 UTC (rev 8774) @@ -18,7 +18,6 @@ package plugin.lsttokens.template; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.StringTokenizer; @@ -30,22 +29,23 @@ import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.base.PersistentChoiceActor; import pcgen.cdom.base.PersistentTransitionChoice; -import pcgen.cdom.base.TransitionChoice; import pcgen.cdom.choiceset.ReferenceChoiceSet; import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.Globals; import pcgen.core.Language; import pcgen.core.PCTemplate; import pcgen.core.PlayerCharacter; -import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.TokenUtilities; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMSecondaryToken; +import pcgen.rules.persistence.token.DeferredToken; import pcgen.util.Logging; public class ChooseLangautoToken extends AbstractToken implements - CDOMSecondaryToken<PCTemplate>, PersistentChoiceActor<Language> + CDOMSecondaryToken<PCTemplate>, PersistentChoiceActor<Language>, + DeferredToken<PCTemplate> { private static final Class<Language> LANGUAGE_CLASS = Language.class; @@ -115,7 +115,7 @@ ChoiceSet<Language> cs = new ChoiceSet<Language>(getTokenName(), rcs); PersistentTransitionChoice<Language> tc = new PersistentTransitionChoice<Language>(cs, FormulaFactory.ONE); - context.getObjectContext().addToList(template, ListKey.ADD, tc); + context.getObjectContext().put(template, ObjectKey.CHOOSE_LANGAUTO, tc); tc.setTitle("Pick a Language"); tc.setChoiceActor(this); return true; @@ -123,38 +123,26 @@ public String[] unparse(LoadContext context, PCTemplate template) { - Changes<PersistentTransitionChoice<?>> grantChanges = - context.getObjectContext().getListChanges(template, ListKey.ADD); - Collection<PersistentTransitionChoice<?>> addedItems = - grantChanges.getAdded(); - if (addedItems == null || addedItems.isEmpty()) + PersistentTransitionChoice<Language> container = context + .getObjectContext().getObject(template, + ObjectKey.CHOOSE_LANGAUTO); + if (container == null) { - // Zero indicates no Token return null; } - List<String> addStrings = new ArrayList<String>(); - for (TransitionChoice<?> container : addedItems) + ChoiceSet<?> cs = container.getChoices(); + Formula f = container.getCount(); + if (f == null) { - ChoiceSet<?> cs = container.getChoices(); - if (cs.getName().equals(getTokenName()) - && LANGUAGE_CLASS.equals(cs.getChoiceClass())) - { - Formula f = container.getCount(); - if (f == null) - { - context.addWriteMessage("Unable to find " + getFullName() - + " Count"); - return null; - } - StringBuilder sb = new StringBuilder(); - sb.append(cs.getLSTformat().replaceAll(Constants.COMMA, - Constants.PIPE)); - addStrings.add(sb.toString()); - - // assoc.getAssociation(AssociationKey.CHOICE_MAXCOUNT); - } + context.addWriteMessage("Unable to find " + getFullName() + + " Count"); + return null; } - return addStrings.toArray(new String[addStrings.size()]); + StringBuilder sb = new StringBuilder(); + sb + .append(cs.getLSTformat().replaceAll(Constants.COMMA, + Constants.PIPE)); + return new String[] { sb.toString() }; } public Class<PCTemplate> getTokenClass() @@ -189,4 +177,25 @@ { // No action required } + + public Class<PCTemplate> getDeferredTokenClass() + { + return PCTemplate.class; + } + + /* + * This is deferred into ListKey.ADD to ensure that ADD:.CLEAR doesn't + * impact CHOOSE:LANGAUTO. It is hoped that CHOOSE:LANGAUTO can be + * refactored into an ADD token in order to avoid this contortion + */ + public boolean process(LoadContext context, PCTemplate template) + { + PersistentTransitionChoice<Language> langauto = template + .get(ObjectKey.CHOOSE_LANGAUTO); + if (langauto != null) + { + template.addToListFor(ListKey.ADD, langauto); + } + return true; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-01 18:42:31
|
Revision: 8780 http://pcgen.svn.sourceforge.net/pcgen/?rev=8780&view=rev Author: thpr Date: 2009-01-01 18:42:22 +0000 (Thu, 01 Jan 2009) Log Message: ----------- corrects parsing & writing defects for ANY/ALL in what seemed to be the least painful method Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/base/ChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java Trunk/pcgen/code/src/java/pcgen/cdom/base/PrimitiveChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityFromClassChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityRefChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ChoiceSetUtilities.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ClassReferenceChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/CompoundOrChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/QualifiedDecorator.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ReferenceChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SimpleChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellReferenceChoiceSet.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/ReferenceUtilities.java Trunk/pcgen/code/src/java/plugin/lsttokens/CompanionListLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/add/SkillToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/deity/DomainsToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/remove/FeatToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/ChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/ChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/ChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -58,6 +58,8 @@ */ private final String setName; + private final boolean useAny; + /** * Creates a new ChoiceSet with the given name and given underlying * PrimitiveChoiceSet. @@ -72,6 +74,25 @@ */ public ChoiceSet(String name, PrimitiveChoiceSet<T> choice) { + this(name, choice, false); + } + + /** + * Creates a new ChoiceSet with the given name and given underlying + * PrimitiveChoiceSet. + * + * @param name + * The name of this ChoiceSet + * @param choice + * The PrimitiveChoiceSet indicating the Collection of objects + * for this ChoiceSet + * @param any + * Use "ANY" for the "ALL" reference if true + * @throws IllegalArgumentException + * if the given name or PrimitiveChoiceSet is null + */ + public ChoiceSet(String name, PrimitiveChoiceSet<T> choice, boolean any) + { if (choice == null) { throw new IllegalArgumentException( @@ -83,6 +104,7 @@ } pcs = choice; setName = name; + useAny = any; } /** @@ -91,7 +113,7 @@ */ public String getLSTformat() { - return pcs.getLSTformat(); + return pcs.getLSTformat(useAny); } /** Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/Constants.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -304,7 +304,7 @@ String LST_ALL = "ALL"; String LST_ANY = "ANY"; String LST_DOT_CLEAR_DOT = ".CLEAR."; - String ALLREF_LST = "ANY"; + String ALLREF_LST = "ALL"; String DOT = "."; String LST_LIST = "LIST"; String LST_PATTERN = "%"; Modified: Trunk/pcgen/code/src/java/pcgen/cdom/base/PrimitiveChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/base/PrimitiveChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/base/PrimitiveChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -61,6 +61,8 @@ /** * Returns a representation of this PrimitiveChoiceSet, suitable for storing * in an LST file. + * @param useAny use "ANY" for the global "ALL" reference when creating + * the LST format */ - public String getLSTformat(); + public String getLSTformat(boolean useAny); } \ No newline at end of file Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityFromClassChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityFromClassChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityFromClassChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -37,7 +37,7 @@ cl = pcc; } - public String getLSTformat() + public String getLSTformat(boolean useAny) { return "CLASS." + cl.getLSTformat(); } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityRefChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityRefChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/AbilityRefChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -119,7 +119,7 @@ * Returns a representation of this AbilityRefChoiceSet, suitable for * storing in an LST file. */ - public String getLSTformat() + public String getLSTformat(boolean useAny) { Set<CDOMReference<?>> sortedSet = new TreeSet<CDOMReference<?>>( ReferenceUtilities.REFERENCE_SORTER); @@ -127,7 +127,8 @@ { sortedSet.add(ar.getRef()); } - return ReferenceUtilities.joinLstFormat(sortedSet, Constants.COMMA); + return ReferenceUtilities.joinLstFormat(sortedSet, Constants.COMMA, + useAny); } /** Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ChoiceSetUtilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ChoiceSetUtilities.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ChoiceSetUtilities.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -37,10 +37,10 @@ public static int compareChoiceSets(PrimitiveChoiceSet<?> arg0, PrimitiveChoiceSet<?> arg1) { - String base = arg0.getLSTformat(); + String base = arg0.getLSTformat(false); if (base == null) { - if (arg1.getLSTformat() == null) + if (arg1.getLSTformat(false) == null) { return 0; } @@ -51,13 +51,13 @@ } else { - if (arg1.getLSTformat() == null) + if (arg1.getLSTformat(false) == null) { return 1; } else { - return base.compareTo(arg1.getLSTformat()); + return base.compareTo(arg1.getLSTformat(false)); } } } @@ -80,7 +80,7 @@ * given Collection of PrimitiveChoiceSet objects */ public static <T extends PrimitiveChoiceSet<?>> String joinLstFormat( - Collection<T> c, String separator) + Collection<T> c, String separator, boolean useAny) { if (c == null) { @@ -98,7 +98,7 @@ result.append(separator); } needjoin = true; - result.append(obj.getLSTformat()); + result.append(obj.getLSTformat(useAny)); } return result.toString(); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ClassReferenceChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ClassReferenceChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ClassReferenceChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -93,12 +93,13 @@ * Returns a representation of this ClassReferenceChoiceSet, suitable for * storing in an LST file. */ - public String getLSTformat() + public String getLSTformat(boolean useAny) { Set<CDOMReference<?>> sortedSet = new TreeSet<CDOMReference<?>>( ReferenceUtilities.REFERENCE_SORTER); sortedSet.addAll(set); - return ReferenceUtilities.joinLstFormat(sortedSet, Constants.COMMA); + return ReferenceUtilities.joinLstFormat(sortedSet, Constants.COMMA, + useAny); } /** Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/CompoundOrChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/CompoundOrChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/CompoundOrChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -56,9 +56,9 @@ return returnSet; } - public String getLSTformat() + public String getLSTformat(boolean useAny) { - return ChoiceSetUtilities.joinLstFormat(set, Constants.COMMA); + return ChoiceSetUtilities.joinLstFormat(set, Constants.COMMA, useAny); } public Class<? super T> getChoiceClass() Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ModifyChoiceDecorator.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -41,9 +41,9 @@ return set.getChoiceClass(); } - public String getLSTformat() + public String getLSTformat(boolean useAny) { - return set.getLSTformat(); + return set.getLSTformat(useAny); } public Set<Ability> getSet(PlayerCharacter pc) Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/QualifiedDecorator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/QualifiedDecorator.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/QualifiedDecorator.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -41,9 +41,9 @@ return set.getChoiceClass(); } - public String getLSTformat() + public String getLSTformat(boolean useAny) { - return set.getLSTformat(); + return set.getLSTformat(useAny); } public Set<T> getSet(PlayerCharacter pc) Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ReferenceChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ReferenceChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/ReferenceChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -92,12 +92,13 @@ * Returns a representation of this ReferenceChoiceSet, suitable for storing * in an LST file. */ - public String getLSTformat() + public String getLSTformat(boolean useAny) { WeightedCollection<CDOMReference<?>> sortedSet = new WeightedCollection<CDOMReference<?>>( ReferenceUtilities.REFERENCE_SORTER); sortedSet.addAll(set); - return ReferenceUtilities.joinLstFormat(sortedSet, Constants.COMMA); + return ReferenceUtilities.joinLstFormat(sortedSet, Constants.COMMA, + useAny); } /** Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SimpleChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SimpleChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SimpleChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -84,7 +84,7 @@ * Returns a representation of this SimpleChoiceSet, suitable for storing in * an LST file. */ - public String getLSTformat() + public String getLSTformat(boolean useAny) { return StringUtil.join(new TreeSet<T>(set), Constants.COMMA); } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellCasterChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -60,7 +60,7 @@ return PCClass.class; } - public String getLSTformat() + public String getLSTformat(boolean useAny) { return Constants.EMPTY_STRING; } @@ -125,14 +125,23 @@ @Override public String getLSTformat() { + return getLSTformat(true); + } + + /** + * Returns a representation of this ClassReferenceChoiceSet, suitable for + * storing in an LST file. + */ + public String getLSTformat(boolean b) + { List<String> list = new ArrayList<String>(); if (primitives != null) { - list.add(primitives.getLSTformat()); + list.add(primitives.getLSTformat(b)); } if (pcset != null) { - list.add(pcset.getLSTformat()); + list.add(pcset.getLSTformat(b)); } if (!spelltypes.isEmpty()) { Modified: Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellReferenceChoiceSet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellReferenceChoiceSet.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/choiceset/SpellReferenceChoiceSet.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -90,7 +90,7 @@ * Returns a representation of this SpellReferenceChoiceSet, suitable for * storing in an LST file. */ - public String getLSTformat() + public String getLSTformat(boolean useAny) { Set<CDOMReference<?>> sortedSet = new TreeSet<CDOMReference<?>>( ReferenceUtilities.REFERENCE_SORTER); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/ReferenceUtilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/ReferenceUtilities.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/ReferenceUtilities.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -181,4 +181,53 @@ } return COLLATOR.compare(arg0.getName(), arg1.getName()); } + + /** + * Concatenates the LST format of the given Collection of CDOMReference + * objects into a String using the separator as the delimiter. This is a + * secondary method that joins using ANY for the global reference rather + * than ALL + * + * The LST format for each CDOMReference is determined by calling the + * getLSTformat() method on the CDOMReference. + * + * The items will be joined in the order determined by the ordering of the + * given Collection. + * + * @param strings + * An Collection of CDOMReference objects + * @param separator + * The separating string + * @return A 'separator' separated String containing the LST format of the + * given Collection of CDOMReference objects + */ + public static <T extends CDOMReference<?>> String joinLstFormat( + Collection<T> c, String separator, boolean useAny) + { + if (c == null) + { + return ""; + } + + final StringBuilder result = new StringBuilder(c.size() * 10); + + boolean needjoin = false; + + for (T obj : c) + { + if (needjoin) + { + result.append(separator); + } + needjoin = true; + String out = obj.getLSTformat(); + if (useAny && "ALL".equals(out)) + { + out = "ANY"; + } + result.append(out); + } + + return result.toString(); + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/CompanionListLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/CompanionListLst.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/CompanionListLst.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -349,7 +349,7 @@ ReferenceUtilities.REFERENCE_SORTER); raceSet.addAll(m.getListFor(prereqs, cl, fa)); sb.append(ReferenceUtilities.joinLstFormat(raceSet, - Constants.COMMA)); + Constants.COMMA, true)); if (fa != null && fa != 0) { sb.append(Constants.PIPE); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsLevelToken.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -208,7 +208,7 @@ } ReferenceChoiceSet<Skill> rcs = new ReferenceChoiceSet<Skill>(refs); - ChoiceSet<Skill> cs = new ChoiceSet<Skill>(getTokenName(), rcs); + ChoiceSet<Skill> cs = new ChoiceSet<Skill>(getTokenName(), rcs, true); PersistentTransitionChoice<Skill> tc = new PersistentTransitionChoice<Skill>( cs, count); // TODO This is a hack, to get this to work pre-CDOM Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/ClassSkillsToken.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -207,7 +207,7 @@ } ReferenceChoiceSet<Skill> rcs = new ReferenceChoiceSet<Skill>(refs); - ChoiceSet<Skill> cs = new ChoiceSet<Skill>(getTokenName(), rcs); + ChoiceSet<Skill> cs = new ChoiceSet<Skill>(getTokenName(), rcs, true); PersistentTransitionChoice<Skill> tc = new PersistentTransitionChoice<Skill>( cs, count); ClassSkillChoiceActor actor = new ClassSkillChoiceActor(obj, autoRank); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/add/SkillToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/add/SkillToken.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/add/SkillToken.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -133,7 +133,7 @@ } ReferenceChoiceSet<Skill> rcs = new ReferenceChoiceSet<Skill>(refs); - ChoiceSet<Skill> cs = new ChoiceSet<Skill>("SKILL", rcs); + ChoiceSet<Skill> cs = new ChoiceSet<Skill>("SKILL", rcs, true); PersistentTransitionChoice<Skill> tc = new PersistentTransitionChoice<Skill>( cs, count); context.getObjectContext().addToList(obj, ListKey.ADD, tc); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/deity/DomainsToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/deity/DomainsToken.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/deity/DomainsToken.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -202,8 +202,7 @@ Set<CDOMReference<Domain>> domainSet = new TreeSet<CDOMReference<Domain>>( ReferenceUtilities.REFERENCE_SORTER); domainSet.addAll(m.getListFor(prereqs)); - StringBuilder sb = new StringBuilder(ReferenceUtilities - .joinLstFormat(domainSet, Constants.COMMA)); + StringBuilder sb = new StringBuilder(ReferenceUtilities.joinLstFormat(domainSet, Constants.COMMA, true)); if (prereqs != null && !prereqs.isEmpty()) { sb.append(Constants.PIPE); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/race/FavclassToken.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -222,7 +222,13 @@ .getObjectContext().getListChanges(race, ListKey.FAVORED_CLASS); Changes<ChooseResultActor> listChanges = context.getObjectContext() .getListChanges(race, ListKey.CHOOSE_ACTOR); + Boolean anyfavored = context.getObjectContext().getObject(race, + ObjectKey.ANY_FAVORED_CLASS); SortedSet<String> set = new TreeSet<String>(); + if (anyfavored != null && anyfavored) + { + set.add("HIGHESTLEVELCLASS"); + } if (changes != null && !changes.isEmpty()) { for (CDOMReference<? extends PCClass> ref : changes.getAdded()) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/remove/FeatToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/remove/FeatToken.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/remove/FeatToken.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -211,7 +211,7 @@ ascs = new CompoundOrChoiceSet<AbilitySelection>(pcs); } ChoiceSet<AbilitySelection> cs = new ChoiceSet<AbilitySelection>( - getTokenName(), ascs); + getTokenName(), ascs, true); PersistentTransitionChoice<AbilitySelection> tc = new PersistentTransitionChoice<AbilitySelection>( cs, count); context.getObjectContext().addToList(obj, ListKey.REMOVE, tc); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java 2009-01-01 17:45:45 UTC (rev 8779) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/template/FavoredclassToken.java 2009-01-01 18:42:22 UTC (rev 8780) @@ -144,7 +144,13 @@ .getObjectContext().getListChanges(pct, ListKey.FAVORED_CLASS); Changes<ChooseResultActor> listChanges = context.getObjectContext() .getListChanges(pct, ListKey.CHOOSE_ACTOR); + Boolean anyfavored = context.getObjectContext().getObject(pct, + ObjectKey.ANY_FAVORED_CLASS); SortedSet<String> set = new TreeSet<String>(); + if (anyfavored != null && anyfavored) + { + set.add("HIGHESTLEVELCLASS"); + } if (changes != null && !changes.isEmpty()) { for (CDOMReference<? extends PCClass> ref : changes.getAdded()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-02 04:04:14
|
Revision: 8816 http://pcgen.svn.sourceforge.net/pcgen/?rev=8816&view=rev Author: thpr Date: 2009-01-02 04:04:10 +0000 (Fri, 02 Jan 2009) Log Message: ----------- Update to allow pattern matching unparsing Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedObjectCommitStrategy.java Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectCommitStrategy.java Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectContext.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/rules/context/PatternChanges.java Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedObjectCommitStrategy.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedObjectCommitStrategy.java 2009-01-02 03:52:58 UTC (rev 8815) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/ConsolidatedObjectCommitStrategy.java 2009-01-02 04:04:10 UTC (rev 8816) @@ -206,4 +206,10 @@ { cpo.clearPrerequisiteList(); } + + public <T> PatternChanges<T> getListPatternChanges(CDOMObject cdo, + ListKey<T> lk) + { + return new PatternChanges<T>(cdo.getListFor(lk), null, false); + } } Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectCommitStrategy.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectCommitStrategy.java 2009-01-02 03:52:58 UTC (rev 8815) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectCommitStrategy.java 2009-01-02 04:04:10 UTC (rev 8816) @@ -87,4 +87,7 @@ String pattern); public void clearPrerequisiteList(ConcretePrereqObject cpo); + + public <T> PatternChanges<T> getListPatternChanges(CDOMObject cdo, + ListKey<T> lk); } Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectContext.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectContext.java 2009-01-02 03:52:58 UTC (rev 8815) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/ObjectContext.java 2009-01-02 04:04:10 UTC (rev 8816) @@ -589,6 +589,14 @@ cdo, lk)); } + public <T> PatternChanges<T> getListPatternChanges(CDOMObject cdo, ListKey<T> lk) + { + return new PatternChanges<T>(getPositive(extractURI, cdo) + .getListFor(lk), patternClearSet.getListFor(extractURI, + cdo, lk), globalClearSet + .containsInList(extractURI, cdo, lk)); + } + public URI getExtractURI() { return extractURI; @@ -752,4 +760,10 @@ { edits.removePatternFromList(cdo, lk, pattern); } + + public <T> PatternChanges<T> getListPatternChanges(CDOMObject cdo, + ListKey<T> lk) + { + return commit.getListPatternChanges(cdo, lk); + } } Added: Trunk/pcgen/code/src/java/pcgen/rules/context/PatternChanges.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/PatternChanges.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/PatternChanges.java 2009-01-02 04:04:10 UTC (rev 8816) @@ -0,0 +1,71 @@ +/* + * Copyright 2008 (C) Thomas Parker + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package pcgen.rules.context; + +import java.util.Collection; + +/** + * The Class <code>PatternChanges</code> is responsible for tracking changes + * to a map so that the changes can be committed or rolled back at a later + * stage. Items can be added to the map, removed from the map or the map can be + * cleared. + */ +public class PatternChanges<T> +{ + private final Collection<T> positive; + private final Collection<String> negative; + private final boolean clear; + + public PatternChanges(Collection<T> added, Collection<String> removed, + boolean globallyCleared) + { + positive = added; + negative = removed; + clear = globallyCleared; + } + + public boolean includesGlobalClear() + { + return clear; + } + + public boolean isEmpty() + { + return !clear && !hasAddedItems() && !hasRemovedItems(); + } + + public Collection<T> getAdded() + { + return positive; + } + + public boolean hasAddedItems() + { + return positive != null && !positive.isEmpty(); + } + + public Collection<String> getRemoved() + { + return negative; + } + + public boolean hasRemovedItems() + { + return negative != null && !negative.isEmpty(); + } +} Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java 2009-01-02 03:52:58 UTC (rev 8815) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java 2009-01-02 04:04:10 UTC (rev 8816) @@ -29,8 +29,8 @@ import pcgen.core.prereq.Prerequisite; import pcgen.io.EntityEncoder; import pcgen.persistence.lst.prereq.PreParserFactory; -import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; +import pcgen.rules.context.PatternChanges; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; import pcgen.util.Logging; @@ -77,14 +77,14 @@ public String[] unparse(LoadContext context, Ability ability) { - Changes<Description> changes = context.getObjectContext() - .getListChanges(ability, ListKey.BENEFIT); + PatternChanges<Description> changes = context.getObjectContext() + .getListPatternChanges(ability, ListKey.BENEFIT); if (changes == null || changes.isEmpty()) { return null; } List<String> list = new ArrayList<String>(); - Collection<Description> removedItems = changes.getRemoved(); + Collection<String> removedItems = changes.getRemoved(); if (changes.includesGlobalClear()) { if (removedItems != null && !removedItems.isEmpty()) @@ -98,14 +98,11 @@ } else if (removedItems != null && !removedItems.isEmpty()) { - for (Description d : removedItems) + for (String d : removedItems) { list.add(Constants.LST_DOT_CLEAR_DOT + d); } } - /* - * TODO .CLEAR. is not properly round-robin capable - */ Collection<Description> added = changes.getAdded(); if (added != null && !added.isEmpty()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-03 16:48:06
|
Revision: 8857 http://pcgen.svn.sourceforge.net/pcgen/?rev=8857&view=rev Author: thpr Date: 2009-01-03 16:48:03 +0000 (Sat, 03 Jan 2009) Log Message: ----------- fix unparse of Kit Ability Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java Modified: Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java 2009-01-03 16:46:57 UTC (rev 8856) +++ Trunk/pcgen/code/src/java/pcgen/core/kit/KitAbilities.java 2009-01-03 16:48:03 UTC (rev 8857) @@ -322,4 +322,9 @@ { category = ac; } + + public AbilityCategory getCategory() + { + return category; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java 2009-01-03 16:46:57 UTC (rev 8856) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/kit/ability/AbilityToken.java 2009-01-03 16:48:03 UTC (rev 8857) @@ -146,25 +146,19 @@ return true; } - public String[] unparse(LoadContext context, KitAbilities KitAbilities) + public String[] unparse(LoadContext context, KitAbilities kitAbil) { Collection<CDOMReference<Ability>> references = - KitAbilities.getAbilityKeys(); + kitAbil.getAbilityKeys(); if (references == null || references.isEmpty()) { return null; } StringBuilder result = new StringBuilder(); + result.append("CATEGORY="); + result.append(kitAbil.getCategory().getKeyName()); for (CDOMReference<Ability> ref : references) { - if (result.length() == 0) - { - CategorizedCDOMReference<Ability> ccr = - (CategorizedCDOMReference<Ability>) ref; - Category<Ability> cat = ccr.getCDOMCategory(); - result.append("CATEGORY="); - result.append(cat.toString()); - } result.append(Constants.PIPE); result.append(ref.getLSTformat()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-03 19:08:34
|
Revision: 8869 http://pcgen.svn.sourceforge.net/pcgen/?rev=8869&view=rev Author: thpr Date: 2009-01-03 19:08:30 +0000 (Sat, 03 Jan 2009) Log Message: ----------- [ 2482731 ] CHANGEPROF does not appear to work Issue#: 2482731 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java Trunk/pcgen/code/src/java/pcgen/core/PCClass.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/pcgen/core/analysis/WeaponProfType.java Trunk/pcgen/code/src/java/pcgen/rules/persistence/TokenUtilities.java Trunk/pcgen/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/helper/WeaponProfProvider.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2009-01-03 18:58:34 UTC (rev 8868) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2009-01-03 19:08:30 UTC (rev 8869) @@ -49,6 +49,7 @@ import pcgen.cdom.helper.Quality; import pcgen.cdom.helper.ShieldProfProvider; import pcgen.cdom.helper.StatLock; +import pcgen.cdom.helper.WeaponProfProvider; import pcgen.cdom.list.ClassSkillList; import pcgen.cdom.modifier.ChangeArmorType; import pcgen.cdom.reference.CDOMSingleRef; @@ -230,7 +231,7 @@ public static final ListKey<CDOMReference<PCClass>> SERVES_AS_CLASS = new ListKey<CDOMReference<PCClass>>(); public static final ListKey<CDOMReference<Ability>> SERVES_AS_ABILITY = new ListKey<CDOMReference<Ability>>(); public static final ListKey<ChooseResultActor> CHOOSE_ACTOR = new ListKey<ChooseResultActor>(); - public static final ListKey<QualifiedObject<CDOMReference<WeaponProf>>> WEAPONPROF = new ListKey<QualifiedObject<CDOMReference<WeaponProf>>>(); + public static final ListKey<WeaponProfProvider> WEAPONPROF = new ListKey<WeaponProfProvider>(); public static final ListKey<CDOMSingleRef<WeaponProf>> IMPLIED_WEAPONPROF = new ListKey<CDOMSingleRef<WeaponProf>>(); public static final ListKey<QualifiedObject<CDOMReference<Equipment>>> EQUIPMENT = new ListKey<QualifiedObject<CDOMReference<Equipment>>>(); public static final ListKey<ArmorProfProvider> AUTO_ARMORPROF = new ListKey<ArmorProfProvider>(); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2009-01-03 18:58:34 UTC (rev 8868) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ObjectKey.java 2009-01-03 19:08:30 UTC (rev 8869) @@ -278,6 +278,8 @@ public static final ObjectKey<Prerequisite> PRERACETYPE = new ObjectKey<Prerequisite>(null); + public static final ObjectKey<QualifiedObject<Boolean>> HAS_ALL_WEAPONPROF = new ObjectKey<QualifiedObject<Boolean>>(new QualifiedObject<Boolean>(Boolean.FALSE)); + /* * TODO Okay, this is a hack. */ Added: Trunk/pcgen/code/src/java/pcgen/cdom/helper/WeaponProfProvider.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/WeaponProfProvider.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/WeaponProfProvider.java 2009-01-03 19:08:30 UTC (rev 8869) @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2008 Tom Parker <th...@us...> + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This program 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package pcgen.cdom.helper; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import pcgen.cdom.base.ConcretePrereqObject; +import pcgen.cdom.base.Constants; +import pcgen.cdom.reference.CDOMGroupRef; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.cdom.reference.ReferenceUtilities; +import pcgen.core.PlayerCharacter; +import pcgen.core.WeaponProf; +import pcgen.core.analysis.WeaponProfType; + +public class WeaponProfProvider extends ConcretePrereqObject +{ + + private List<CDOMSingleRef<WeaponProf>> direct; + + private List<CDOMGroupRef<WeaponProf>> type; + + public void addWeaponProf(CDOMSingleRef<WeaponProf> ref) + { + if (direct == null) + { + direct = new ArrayList<CDOMSingleRef<WeaponProf>>(); + } + direct.add(ref); + } + + public void addWeaponProfType(CDOMGroupRef<WeaponProf> ref) + { + if (type == null) + { + type = new ArrayList<CDOMGroupRef<WeaponProf>>(); + } + type.add(ref); + } + + public Collection<WeaponProf> getContainedProficiencies(PlayerCharacter pc) + { + List<WeaponProf> list = new ArrayList<WeaponProf>(); + if (direct != null) + { + for (CDOMSingleRef<WeaponProf> ref : direct) + { + list.add(ref.resolvesTo()); + } + } + if (type != null) + { + for (CDOMGroupRef<WeaponProf> ref : type) + { + list.addAll(WeaponProfType.getWeaponProfsInTarget(pc, ref)); + } + } + return list; + } + + public String getLstFormat() + { + StringBuilder sb = new StringBuilder(); + boolean typeEmpty = type == null || type.isEmpty(); + if (direct != null && !direct.isEmpty()) + { + sb.append(ReferenceUtilities.joinLstFormat(direct, Constants.PIPE)); + if (!typeEmpty) + { + sb.append(Constants.PIPE); + } + } + if (!typeEmpty) + { + sb.append(ReferenceUtilities.joinLstFormat(type, Constants.PIPE)); + } + return sb.toString(); + } + + @Override + public boolean equals(Object obj) + { + if (obj instanceof WeaponProfProvider) + { + WeaponProfProvider other = (WeaponProfProvider) obj; + if (direct == null) + { + if (other.direct != null) + { + return false; + } + } + else + { + if (!direct.equals(other.direct)) + { + return false; + } + } + if (type == null) + { + if (other.type != null) + { + return false; + } + } + else + { + if (!type.equals(other.type)) + { + return false; + } + } + return true; + } + return false; + } + + @Override + public int hashCode() + { + return (direct == null ? 0 : direct.hashCode() * 29) + + (type == null ? 0 : type.hashCode()); + } + + public boolean isEmpty() + { + return (direct == null || direct.isEmpty()) + && (type == null || type.isEmpty()); + } +} Modified: Trunk/pcgen/code/src/java/pcgen/core/PCClass.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2009-01-03 18:58:34 UTC (rev 8868) +++ Trunk/pcgen/code/src/java/pcgen/core/PCClass.java 2009-01-03 19:08:30 UTC (rev 8869) @@ -64,6 +64,7 @@ import pcgen.cdom.helper.ArmorProfProvider; import pcgen.cdom.helper.AttackCycle; import pcgen.cdom.helper.ShieldProfProvider; +import pcgen.cdom.helper.WeaponProfProvider; import pcgen.cdom.inst.PCClassLevel; import pcgen.cdom.list.ClassSkillList; import pcgen.cdom.list.ClassSpellList; @@ -3972,8 +3973,7 @@ addAllToListFor(ListKey.EQUIPMENT, e); } - List<QualifiedObject<CDOMReference<WeaponProf>>> wp = otherClass - .getListFor(ListKey.WEAPONPROF); + List<WeaponProfProvider> wp = otherClass.getListFor(ListKey.WEAPONPROF); if (wp != null) { addAllToListFor(ListKey.WEAPONPROF, wp); @@ -3984,6 +3984,12 @@ { put(ObjectKey.HAS_DEITY_WEAPONPROF, otherWP); } + QualifiedObject<Boolean> otherAllWP = otherClass + .get(ObjectKey.HAS_ALL_WEAPONPROF); + if (otherAllWP != null) + { + put(ObjectKey.HAS_ALL_WEAPONPROF, otherWP); + } List<ArmorProfProvider> ap = otherClass .getListFor(ListKey.AUTO_ARMORPROF); Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2009-01-03 18:58:34 UTC (rev 8868) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2009-01-03 19:08:30 UTC (rev 8869) @@ -89,6 +89,7 @@ import pcgen.cdom.helper.ProfProvider; import pcgen.cdom.helper.Qualifier; import pcgen.cdom.helper.StatLock; +import pcgen.cdom.helper.WeaponProfProvider; import pcgen.cdom.inst.EquipmentHead; import pcgen.cdom.inst.ObjectCache; import pcgen.cdom.inst.PCClassLevel; @@ -4058,14 +4059,13 @@ ret.put(prof.getKeyName(), prof); } // AUTO:WEAPONPROF except LIST - List<QualifiedObject<CDOMReference<WeaponProf>>> potentialProfs = - pobj.getSafeListFor(ListKey.WEAPONPROF); - for (QualifiedObject<CDOMReference<WeaponProf>> qo : potentialProfs) + List<WeaponProfProvider> potentialProfs = pobj + .getSafeListFor(ListKey.WEAPONPROF); + for (WeaponProfProvider wpp : potentialProfs) { - CDOMReference<WeaponProf> ref = qo.getObject(this); - if (ref != null) + if (wpp.qualifies(this)) { - for (WeaponProf wp : ref.getContainedObjects()) + for (WeaponProf wp : wpp.getContainedProficiencies(this)) { ret.put(wp.getKeyName(), wp); } @@ -4081,6 +4081,18 @@ ret.put(wp.getKeyName(), wp); } } + Boolean all = + pobj.getSafe(ObjectKey.HAS_ALL_WEAPONPROF) + .getObject(this); + if (all != null && all) + { + Collection<WeaponProf> allwps = Globals.getContext().ref + .getConstructedCDOMObjects(WeaponProf.class); + for (WeaponProf wp : allwps) + { + ret.put(wp.getKeyName(), wp); + } + } Boolean dwp = pobj.getSafe(ObjectKey.HAS_DEITY_WEAPONPROF) .getObject(this); Modified: Trunk/pcgen/code/src/java/pcgen/core/analysis/WeaponProfType.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/analysis/WeaponProfType.java 2009-01-03 18:58:34 UTC (rev 8868) +++ Trunk/pcgen/code/src/java/pcgen/core/analysis/WeaponProfType.java 2009-01-03 19:08:30 UTC (rev 8869) @@ -36,21 +36,40 @@ { /** * Get the Weapon Profs + * * @param type * @param aPC * @return List of Weapon Profs */ public static List<WeaponProf> getWeaponProfs(final String type, - final PlayerCharacter aPC) + final PlayerCharacter aPC) { + CDOMGroupRef<WeaponProf> master = Globals.getContext().ref + .getCDOMTypeReference(WeaponProf.class, type.split("\\.")); + return getWeaponProfsInTarget(type, aPC, master); + } + + public static List<WeaponProf> getWeaponProfsInTarget( + final PlayerCharacter aPC, CDOMGroupRef<WeaponProf> master) + { + String masterType = master.getLSTformat(); + if (!masterType.startsWith("TYPE=")) + { + throw new IllegalArgumentException("Cannot get targets for: " + + masterType); + } + return getWeaponProfsInTarget(masterType.substring(5), aPC, master); + } + + public static List<WeaponProf> getWeaponProfsInTarget(final String type, + final PlayerCharacter aPC, CDOMGroupRef<WeaponProf> master) + { AbstractReferenceContext ref = Globals.getContext().ref; - CDOMGroupRef<WeaponProf> master = - ref.getCDOMTypeReference(WeaponProf.class, type.split("\\.")); List<WeaponProf> aList = new ArrayList<WeaponProf>(); - //Can't use master because late called references may not have been initialized, see 2001287 - Collection<WeaponProf> weaponProfsOfType = - Globals.getPObjectsOfType(ref - .getConstructedCDOMObjects(WeaponProf.class), type); + // Can't use master because late called references may not have been + // initialized, see 2001287 + Collection<WeaponProf> weaponProfsOfType = Globals.getPObjectsOfType( + ref.getConstructedCDOMObjects(WeaponProf.class), type); for (CDOMObject cdo : aPC.getCDOMObjectList()) { List<ChangeProf> changes = cdo.getListFor(ListKey.CHANGEPROF); @@ -58,6 +77,9 @@ { for (ChangeProf cp : changes) { + System.err.println(cp.getResult() + " " + master); + System.err.println(cp.getSource().getContainedObjects()); + System.err.println(aList + " " + weaponProfsOfType); if (cp.getResult().equals(master)) { aList.addAll(cp.getSource().getContainedObjects()); @@ -65,7 +87,7 @@ else if (weaponProfsOfType != null) { weaponProfsOfType.removeAll(cp.getSource() - .getContainedObjects()); + .getContainedObjects()); } } } Modified: Trunk/pcgen/code/src/java/pcgen/rules/persistence/TokenUtilities.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/persistence/TokenUtilities.java 2009-01-03 18:58:34 UTC (rev 8868) +++ Trunk/pcgen/code/src/java/pcgen/rules/persistence/TokenUtilities.java 2009-01-03 19:08:30 UTC (rev 8869) @@ -22,6 +22,7 @@ import pcgen.cdom.base.CategorizedCDOMObject; import pcgen.cdom.base.Category; import pcgen.cdom.base.Constants; +import pcgen.cdom.reference.CDOMGroupRef; import pcgen.rules.context.LoadContext; import pcgen.util.Logging; @@ -47,7 +48,7 @@ } } - public static <T extends CDOMObject> CDOMReference<T> getTypeReference( + public static <T extends CDOMObject> CDOMGroupRef<T> getTypeReference( LoadContext context, Class<T> cl, String subStr) { if (subStr.length() == 0) Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java 2009-01-03 18:58:34 UTC (rev 8868) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/auto/WeaponProfToken.java 2009-01-03 19:08:30 UTC (rev 8869) @@ -22,16 +22,16 @@ import java.util.List; import java.util.StringTokenizer; -import pcgen.base.util.HashMapToList; import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; import pcgen.cdom.base.ChooseResultActor; import pcgen.cdom.base.Constants; import pcgen.cdom.content.ConditionalChoiceActor; import pcgen.cdom.enumeration.AssociationListKey; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; -import pcgen.cdom.reference.ReferenceUtilities; +import pcgen.cdom.helper.WeaponProfProvider; +import pcgen.cdom.reference.CDOMGroupRef; +import pcgen.cdom.reference.CDOMSingleRef; import pcgen.core.Globals; import pcgen.core.PlayerCharacter; import pcgen.core.QualifiedObject; @@ -95,8 +95,8 @@ .length() - 1)); if (prereq == null) { - Logging.log(Logging.LST_ERROR, "Error generating Prerequisite " + prereq - + " in " + getFullName()); + Logging.log(Logging.LST_ERROR, "Error generating Prerequisite " + + prereq + " in " + getFullName()); return false; } } @@ -110,6 +110,7 @@ boolean foundOther = false; StringTokenizer tok = new StringTokenizer(weaponProfs, Constants.PIPE); + WeaponProfProvider wpp = new WeaponProfProvider(); while (tok.hasMoreTokens()) { @@ -137,25 +138,34 @@ } else { - CDOMReference<WeaponProf> ref; if (Constants.LST_ALL.equalsIgnoreCase(aProf)) { foundAny = true; - ref = context.ref.getCDOMAllReference(WEAPONPROF_CLASS); + context.obj.put(obj, ObjectKey.HAS_ALL_WEAPONPROF, + new QualifiedObject<Boolean>(Boolean.TRUE, prereq)); } else { foundOther = true; - ref = TokenUtilities.getTypeOrPrimitive(context, - WEAPONPROF_CLASS, aProf); + if (aProf.startsWith(Constants.LST_TYPE_OLD) + || aProf.startsWith(Constants.LST_TYPE)) + { + CDOMGroupRef<WeaponProf> rr = TokenUtilities + .getTypeReference(context, WEAPONPROF_CLASS, + aProf.substring(5)); + if (rr == null) + { + return false; + } + wpp.addWeaponProfType(rr); + } + else + { + CDOMSingleRef<WeaponProf> ref = context.ref + .getCDOMReference(WEAPONPROF_CLASS, aProf); + wpp.addWeaponProf(ref); + } } - if (ref == null) - { - return false; - } - context.obj.addToList(obj, ListKey.WEAPONPROF, - new QualifiedObject<CDOMReference<WeaponProf>>(ref, - prereq)); } } @@ -165,7 +175,14 @@ + ": Contains ANY and a specific reference: " + value); return false; } - + if (!wpp.isEmpty()) + { + if (prereq != null) + { + wpp.addPrerequisite(prereq); + } + context.obj.addToList(obj, ListKey.WEAPONPROF, wpp); + } return true; } @@ -174,21 +191,13 @@ List<String> list = new ArrayList<String>(); Changes<ChooseResultActor> listChanges = context.getObjectContext() .getListChanges(obj, ListKey.CHOOSE_ACTOR); - - Changes<QualifiedObject<CDOMReference<WeaponProf>>> changes = context.obj - .getListChanges(obj, ListKey.WEAPONPROF); + Changes<WeaponProfProvider> changes = context.obj.getListChanges(obj, + ListKey.WEAPONPROF); QualifiedObject<Boolean> deityweap = context.obj.getObject(obj, ObjectKey.HAS_DEITY_WEAPONPROF); - Collection<QualifiedObject<CDOMReference<WeaponProf>>> added = changes - .getAdded(); - HashMapToList<List<Prerequisite>, CDOMReference<WeaponProf>> m = new HashMapToList<List<Prerequisite>, CDOMReference<WeaponProf>>(); - if (added != null) - { - for (QualifiedObject<CDOMReference<WeaponProf>> qo : added) - { - m.addToListFor(qo.getPrerequisiteList(), qo.getObject(null)); - } - } + QualifiedObject<Boolean> allweap = context.obj.getObject(obj, + ObjectKey.HAS_ALL_WEAPONPROF); + Collection<WeaponProfProvider> added = changes.getAdded(); Collection<ChooseResultActor> listAdded = listChanges.getAdded(); if (listAdded != null && !listAdded.isEmpty()) { @@ -221,23 +230,39 @@ } list.add(sb.toString()); } - for (List<Prerequisite> prereqs : m.getKeySet()) + if (allweap != null) { - String ab = ReferenceUtilities.joinLstFormat(m.getListFor(prereqs), - Constants.PIPE); - if (prereqs != null && !prereqs.isEmpty()) + StringBuilder sb = new StringBuilder(); + sb.append("ALL"); + if (allweap.hasPrerequisites()) { - if (prereqs.size() > 1) + sb.append('[').append( + context.getPrerequisiteString(allweap + .getPrerequisiteList())).append(']'); + } + list.add(sb.toString()); + } + if (added != null) + { + for (WeaponProfProvider wpp : added) + { + String ab = wpp.getLstFormat(); + List<Prerequisite> prereqs = wpp.getPrerequisiteList(); + if (prereqs != null && !prereqs.isEmpty()) { - context.addWriteMessage("Error: " - + obj.getClass().getSimpleName() - + " had more than one Prerequisite for " - + getFullName()); - return null; + if (prereqs.size() > 1) + { + context.addWriteMessage("Error: " + + obj.getClass().getSimpleName() + + " had more than one Prerequisite for " + + getFullName()); + return null; + } + ab = ab + '[' + context.getPrerequisiteString(prereqs) + + ']'; } - ab = ab + '[' + context.getPrerequisiteString(prereqs) + ']'; + list.add(ab); } - list.add(ab); } if (list.isEmpty()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-05 01:27:09
|
Revision: 8881 http://pcgen.svn.sourceforge.net/pcgen/?rev=8881&view=rev Author: thpr Date: 2009-01-05 01:27:04 +0000 (Mon, 05 Jan 2009) Log Message: ----------- [ 1994088 ] [Proposal] PREVISION:1,Foo=ANY Issue#: 1994088 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/persistence/lst/prereq/AbstractPrerequisiteListParser.java Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreVisionParser.java Trunk/pcgen/code/src/java/plugin/pretokens/test/PreVisionTester.java Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/prereq/AbstractPrerequisiteListParser.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/prereq/AbstractPrerequisiteListParser.java 2009-01-05 00:32:08 UTC (rev 8880) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/prereq/AbstractPrerequisiteListParser.java 2009-01-05 01:27:04 UTC (rev 8881) @@ -238,10 +238,22 @@ + kind + " require a target value, e.g. Key=Value"); } + String assumed = getAssumedValue(); + if (assumed == null) + { + subreq.setOperand(Integer.toString(min)); + } + else + { + Logging.deprecationPrint("Old syntax detected: " + + "Prerequisites of kind " + kind + + " now require a target value, " + + "e.g. Key=Value. Assuming Value=" + assumed); + subreq.setOperand(assumed); + } hasKeyOnly = true; subreq.setKey(elements[i]); subreq.setOperator(PrerequisiteOperator.GTEQ); - subreq.setOperand(Integer.toString(min)); } subreq.setOperand(Integer.toString(min)); prereq.addPrerequisite(subreq); @@ -334,6 +346,11 @@ } } + protected String getAssumedValue() + { + return null; + } + protected boolean requiresValue() { return false; Modified: Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreVisionParser.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreVisionParser.java 2009-01-05 00:32:08 UTC (rev 8880) +++ Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreVisionParser.java 2009-01-05 01:27:04 UTC (rev 8881) @@ -28,8 +28,11 @@ */ package plugin.pretokens.parser; +import pcgen.core.prereq.Prerequisite; +import pcgen.persistence.PersistenceLayerException; import pcgen.persistence.lst.prereq.AbstractPrerequisiteListParser; import pcgen.persistence.lst.prereq.PrerequisiteParserInterface; +import pcgen.util.Logging; /** * @author wardc @@ -42,4 +45,44 @@ { return new String[]{"VISION"}; } + + @Override + protected String getAssumedValue() + { + return "ANY"; + } + + @Override + public Prerequisite parse(String kind, String formula, + boolean invertResult, boolean overrideQualify) + throws PersistenceLayerException + { + Prerequisite prereq = super.parse(kind, formula, invertResult, overrideQualify); + if (!validateNotZero(prereq)) + { + Logging.errorPrint(" Prerequisite was: " + formula); + } + return prereq; + } + + private boolean validateNotZero(Prerequisite prereq) + { + boolean returnValue = true; + if (prereq.getKind() != null && prereq.getKind().equalsIgnoreCase("VISION")) + { + if ("0".equals(prereq.getOperand())) + { + Logging + .deprecationPrint("Found PREVISION that is invalid (vision=0 is always true)"); + Logging.deprecationPrint(" You should use =1 or =ANY"); + returnValue &= false; + } + } + + for (Prerequisite element : prereq.getPrerequisites()) + { + returnValue &= validateNotZero(element); + } + return returnValue; + } } Modified: Trunk/pcgen/code/src/java/plugin/pretokens/test/PreVisionTester.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/test/PreVisionTester.java 2009-01-05 00:32:08 UTC (rev 8880) +++ Trunk/pcgen/code/src/java/plugin/pretokens/test/PreVisionTester.java 2009-01-05 01:27:04 UTC (rev 8881) @@ -48,28 +48,49 @@ @Override public int passes(final Prerequisite prereq, final PlayerCharacter character) { - final int requiredRange = Integer.parseInt(prereq.getOperand()); + String range = prereq.getOperand(); + VisionType requiredVisionType = + VisionType.getVisionType(prereq.getKey()); int runningTotal = 0; - VisionType requiredVisionType = - VisionType.getVisionType(prereq.getKey()); - boolean found = false; - for (Vision charVision : character.getVisionList()) + if (range.equals("ANY")) { - if (charVision.getType().equals(requiredVisionType)) + for (Vision charVision : character.getVisionList()) { - int visionRange = Integer.parseInt(charVision.getDistance()); - runningTotal += - prereq.getOperator() - .compare(visionRange, requiredRange); - found = true; - break; + if (charVision.getType().equals(requiredVisionType)) + { + runningTotal += prereq.getOperator().compare(1, 0); + found = true; + break; + } } + if (!found) + { + runningTotal += prereq.getOperator().compare(0, 1); + } } - if (!found) + else { - runningTotal += prereq.getOperator().compare(0, requiredRange); + int requiredRange = Integer.parseInt(range); + for (Vision charVision : character.getVisionList()) + { + if (charVision.getType().equals(requiredVisionType)) + { + int visionRange = Integer.parseInt(charVision.getDistance()); + runningTotal += + prereq.getOperator() + .compare(visionRange, requiredRange); + found = true; + break; + } + } + if (!found) + { + runningTotal += prereq.getOperator().compare(0, requiredRange); + } } + + return countedTotal(prereq, runningTotal); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-05 02:02:16
|
Revision: 8884 http://pcgen.svn.sourceforge.net/pcgen/?rev=8884&view=rev Author: thpr Date: 2009-01-05 02:02:14 +0000 (Mon, 05 Jan 2009) Log Message: ----------- Code for [ 2215419 ] FORWARDREF pcc tag for suppressing unconstructed messages Issue#: 2215419 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java Trunk/pcgen/code/src/java/pcgen/cdom/helper/Qualifier.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/CategorizedReferenceManufacturer.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/ReferenceManufacturer.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/SimpleReferenceManufacturer.java Trunk/pcgen/code/src/java/pcgen/cdom/reference/TransparentReferenceManufacturer.java Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java Trunk/pcgen/code/src/java/pcgen/rules/context/AbstractReferenceContext.java Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java Trunk/pcgen/code/src/java/pcgen/util/StringPClassUtil.java Trunk/pcgen/code/src/java/plugin/lsttokens/QualifyToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/ServesAsToken.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/cdom/reference/UnconstructedValidator.java Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/ForwardRefToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -252,6 +252,7 @@ public static final ListKey<CDOMSingleRef<Race>> APPLIED_RACE = new ListKey<CDOMSingleRef<Race>>(); public static final ListKey<EqModRef> EQMOD_INFO = new ListKey<EqModRef>(); public static final ListKey<CampaignURL> CAMPAIGN_URL = new ListKey<CampaignURL>(); + public static final ListKey<Qualifier> FORWARDREF = new ListKey<Qualifier>(); //These are case sensitive, please do not change them to upper case public static final ListKey<String> HIDDEN_Equipment = new ListKey<String>(); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/Qualifier.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/helper/Qualifier.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/Qualifier.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -18,16 +18,16 @@ package pcgen.cdom.helper; import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.reference.CDOMSingleRef; public class Qualifier { private final Class<? extends CDOMObject> qualClass; - private final CDOMReference<? extends CDOMObject> qualRef; + private final CDOMSingleRef<? extends CDOMObject> qualRef; public Qualifier(Class<? extends CDOMObject> cl, - CDOMReference<? extends CDOMObject> ref) + CDOMSingleRef<? extends CDOMObject> ref) { if (cl == null) { @@ -46,7 +46,7 @@ return qualClass; } - public CDOMReference<? extends CDOMObject> getQualifiedReference() + public CDOMSingleRef<? extends CDOMObject> getQualifiedReference() { return qualRef; } Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -751,7 +751,7 @@ * @return true if the AbstractReferenceManufacturer is "valid"; false * otherwise. */ - public boolean validate() + public boolean validate(UnconstructedValidator validator) { boolean returnGood = true; for (CaseInsensitiveString second : duplicates.getKeySet()) @@ -825,10 +825,12 @@ { if (s.charAt(0) != '*') { - Logging.errorPrint("Unconstructed Reference: " - + getReferenceDescription() + " " + s); - fireUnconstuctedEvent(value); - returnGood = false; + if (!validate(validator, s)) + { + Logging.errorPrint("Unconstructed Reference: " + + getReferenceDescription() + " " + s); + returnGood = false; + } } constructObject(s); } @@ -838,6 +840,8 @@ return returnGood; } + protected abstract boolean validate(UnconstructedValidator validator, String s); + /** * Returns a description of the type of Class or Class/Category that this * AbstractReferenceManufacturer constructs or references. This is designed Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/CategorizedReferenceManufacturer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/CategorizedReferenceManufacturer.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/CategorizedReferenceManufacturer.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -90,10 +90,10 @@ * validation. Any matches in the parent for unconstructed references in * this class are registered as if they had been made in the child class. * - * @see pcgen.cdom.reference.AbstractReferenceManufacturer#validate() + * @see pcgen.cdom.reference.AbstractReferenceManufacturer#validate(List<Campaign>) */ @Override - public boolean validate() + public boolean validate(UnconstructedValidator validator) { if (parentCrm != null) { @@ -118,7 +118,7 @@ } } } - return super.validate(); + return super.validate(validator); } /** @@ -211,4 +211,11 @@ return this.getClass().getName() + " [" + getReferenceClass() + " " + category + "]"; } + + @Override + protected boolean validate(UnconstructedValidator validator, String s) + { + return validator.allow(getReferenceClass(), category, s); + } + } \ No newline at end of file Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/ReferenceManufacturer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/ReferenceManufacturer.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/ReferenceManufacturer.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -281,14 +281,19 @@ * * (2) Any identifier to which a reference was made has a constructed or * imported object with that identifier present in the - * ReferenceManufacturer. + * ReferenceManufacturer. (or the warning was suppressed by the given + * UnconstructedValidator) * * (3) No two objects in the ReferenceManufacturer have a matching * identifier. * + * @param validator + * UnconstructedValidator which is can suppress unconstructed + * reference warnings + * * @return true if the ReferenceManufacturer is "valid"; false otherwise. */ - public boolean validate(); + public boolean validate(UnconstructedValidator validator); /** * Triggers immediate construction of the object with the given identifier Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/SimpleReferenceManufacturer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/SimpleReferenceManufacturer.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/SimpleReferenceManufacturer.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -107,4 +107,10 @@ { return getReferenceClass().getSimpleName(); } + + @Override + protected boolean validate(UnconstructedValidator validator, String s) + { + return validator.allow(getReferenceClass(), s); + } } \ No newline at end of file Modified: Trunk/pcgen/code/src/java/pcgen/cdom/reference/TransparentReferenceManufacturer.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/TransparentReferenceManufacturer.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/TransparentReferenceManufacturer.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -154,4 +154,10 @@ { return getReferenceClass().getSimpleName(); } + + @Override + protected boolean validate(UnconstructedValidator validator, String s) + { + return validator.allow(getReferenceClass(), s); + } } \ No newline at end of file Added: Trunk/pcgen/code/src/java/pcgen/cdom/reference/UnconstructedValidator.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/reference/UnconstructedValidator.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/cdom/reference/UnconstructedValidator.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -0,0 +1,123 @@ +/* + * Copyright 2009 (C) Tom Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This library 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package pcgen.cdom.reference; + +import java.util.ArrayList; +import java.util.List; + +import pcgen.base.util.DoubleKeyMapToList; +import pcgen.base.util.HashMapToList; +import pcgen.cdom.base.CDOMObject; +import pcgen.cdom.base.CategorizedCDOMObject; +import pcgen.cdom.base.Category; +import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.helper.Qualifier; +import pcgen.core.Campaign; + +public class UnconstructedValidator +{ + + private static final Class<CategorizedCDOMObject> CATEGORIZED_CDOM_OBJECT_CLASS = CategorizedCDOMObject.class; + private final List<Campaign> campaignList; + private HashMapToList<Class<?>, String> simpleMap; + private DoubleKeyMapToList<Class<?>, Category<?>, String> categoryMap; + + public UnconstructedValidator(List<Campaign> selectedCampaignsList) + { + campaignList = new ArrayList<Campaign>(selectedCampaignsList); + } + + public <T extends CDOMObject> boolean allow(Class<T> cl, String s) + { + if (simpleMap == null) + { + buildSimpleMap(); + } + List<String> list = simpleMap.getListFor(cl); + if (list != null) + { + for (String key : list) + { + if (key.equalsIgnoreCase(s)) + { + return true; + } + } + } + return false; + } + + private void buildSimpleMap() + { + simpleMap = new HashMapToList<Class<?>, String>(); + for (Campaign c : campaignList) + { + for (Qualifier q : c.getSafeListFor(ListKey.FORWARDREF)) + { + Class<? extends CDOMObject> qcl = q.getQualifiedClass(); + if (!CATEGORIZED_CDOM_OBJECT_CLASS.isAssignableFrom(qcl)) + { + simpleMap.addToListFor(qcl, q.getQualifiedReference() + .getLSTformat()); + } + } + } + } + + private void buildCategoryMap() + { + categoryMap = new DoubleKeyMapToList<Class<?>, Category<?>, String>(); + for (Campaign c : campaignList) + { + for (Qualifier q : c.getSafeListFor(ListKey.FORWARDREF)) + { + Class<? extends CDOMObject> qcl = q.getQualifiedClass(); + if (CATEGORIZED_CDOM_OBJECT_CLASS.isAssignableFrom(qcl)) + { + CDOMSingleRef<? extends CDOMObject> ref = q + .getQualifiedReference(); + Category<?> cat = ((CategorizedCDOMReference<?>) ref) + .getCDOMCategory(); + categoryMap.addToListFor(qcl, cat, ref.getLSTformat()); + } + } + } + } + + public <T extends CDOMObject & CategorizedCDOMObject<T>> boolean allow( + Class<T> cl, Category<T> cat, String s) + { + if (categoryMap == null) + { + buildCategoryMap(); + } + List<String> list = categoryMap.getListFor(cl, cat); + if (list != null) + { + for (String key : list) + { + if (key.equalsIgnoreCase(s)) + { + return true; + } + } + } + return false; + } + +} Modified: Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/persistence/lst/LstSystemLoader.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -54,6 +54,7 @@ import pcgen.cdom.enumeration.SourceFormat; import pcgen.cdom.enumeration.StringKey; import pcgen.cdom.enumeration.Type; +import pcgen.cdom.reference.UnconstructedValidator; import pcgen.core.AbilityCategory; import pcgen.core.ArmorProf; import pcgen.core.Campaign; @@ -595,7 +596,7 @@ context.resolveDeferredTokens(); context.ref.buildDeferredObjects(); context.ref.buildDerivedObjects(); - context.ref.validate(); + context.ref.validate(new UnconstructedValidator(aSelectedCampaignsList)); context.resolveReferences(); for (Equipment eq : context.ref .getConstructedCDOMObjects(Equipment.class)) Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/AbstractReferenceContext.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/AbstractReferenceContext.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/AbstractReferenceContext.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -39,6 +39,7 @@ import pcgen.cdom.reference.CDOMGroupRef; import pcgen.cdom.reference.CDOMSingleRef; import pcgen.cdom.reference.ReferenceManufacturer; +import pcgen.cdom.reference.UnconstructedValidator; import pcgen.core.Domain; import pcgen.core.PCClass; import pcgen.core.SubClass; @@ -47,6 +48,7 @@ public abstract class AbstractReferenceContext { + private static final Class<CategorizedCDOMObject> CATEGORIZED_CDOM_OBJECT_CLASS = CategorizedCDOMObject.class; private static final Class<DomainSpellList> DOMAINSPELLLIST_CLASS = DomainSpellList.class; private static final Class<ClassSkillList> CLASSSKILLLIST_CLASS = ClassSkillList.class; private static final Class<ClassSpellList> CLASSSPELLLIST_CLASS = ClassSpellList.class; @@ -72,12 +74,12 @@ public abstract Collection<? extends ReferenceManufacturer<? extends CDOMObject, ?>> getAllManufacturers(); - public boolean validate() + public boolean validate(UnconstructedValidator validator) { boolean returnGood = true; for (ReferenceManufacturer<?, ?> ref : getAllManufacturers()) { - returnGood &= ref.validate(); + returnGood &= ref.validate(validator); } return returnGood; } @@ -108,7 +110,7 @@ public <T extends CDOMObject> T constructCDOMObject(Class<T> c, String val) { T obj; - if (CategorizedCDOMObject.class.isAssignableFrom(c)) + if (CATEGORIZED_CDOM_OBJECT_CLASS.isAssignableFrom(c)) { Class cl = c; obj = (T) getManufacturer(cl, null).constructObject(val); @@ -151,7 +153,7 @@ public <T extends CDOMObject> void reassociateKey(String key, T obj) { - if (CategorizedCDOMObject.class.isAssignableFrom(obj.getClass())) + if (CATEGORIZED_CDOM_OBJECT_CLASS.isAssignableFrom(obj.getClass())) { Class cl = obj.getClass(); reassociateCategorizedKey(key, obj, cl); @@ -227,7 +229,7 @@ public <T extends CDOMObject> void importObject(T orig) { - if (CategorizedCDOMObject.class.isAssignableFrom(orig.getClass())) + if (CATEGORIZED_CDOM_OBJECT_CLASS.isAssignableFrom(orig.getClass())) { Class cl = orig.getClass(); importCategorized(orig, cl); @@ -255,7 +257,7 @@ map.remove(obj); } - if (CategorizedCDOMObject.class.isAssignableFrom(obj.getClass())) + if (CATEGORIZED_CDOM_OBJECT_CLASS.isAssignableFrom(obj.getClass())) { Class cl = obj.getClass(); CategorizedCDOMObject cdo = (CategorizedCDOMObject) obj; Modified: Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/rules/context/LoadContext.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -27,6 +27,8 @@ import java.util.TreeSet; import pcgen.cdom.base.CDOMObject; +import pcgen.cdom.base.CategorizedCDOMObject; +import pcgen.cdom.base.Category; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.Type; import pcgen.cdom.inst.ObjectCache; @@ -41,6 +43,7 @@ import pcgen.rules.persistence.TokenSupport; import pcgen.rules.persistence.token.DeferredToken; import pcgen.util.Logging; +import pcgen.util.StringPClassUtil; public abstract class LoadContext { @@ -376,4 +379,100 @@ } public abstract boolean consolidate(); + + public ReferenceManufacturer<? extends CDOMObject, ?> getManufacturer(String firstToken) + { + int equalLoc = firstToken.indexOf('='); + String className; + String categoryName; + if (equalLoc != firstToken.lastIndexOf('=')) + { + Logging + .log(Logging.LST_ERROR, + " Error encountered: Found second = in ObjectType=Category"); + Logging.log(Logging.LST_ERROR, + " Format is: ObjectType[=Category]|Key[|Key] value was: " + + firstToken); + Logging.log(Logging.LST_ERROR, " Valid ObjectTypes are: " + + StringPClassUtil.getValidStrings()); + return null; + } + else if (firstToken.equals("FEAT")) + { + className = "ABILITY"; + categoryName = "FEAT"; + } + else if (equalLoc == -1) + { + className = firstToken; + categoryName = null; + } + else + { + className = firstToken.substring(0, equalLoc); + categoryName = firstToken.substring(equalLoc + 1); + } + Class<? extends CDOMObject> c = StringPClassUtil.getClassFor(className); + if (c == null) + { + Logging.log(Logging.LST_ERROR, "Unrecognized ObjectType: " + + className); + return null; + } + ReferenceManufacturer<? extends CDOMObject, ?> rm; + if (CategorizedCDOMObject.class.isAssignableFrom(c)) + { + if (categoryName == null) + { + Logging + .log(Logging.LST_ERROR, + " Error encountered: Found Categorized Type without =Category"); + Logging.log(Logging.LST_ERROR, + " Format is: ObjectType[=Category]|Key[|Key] value was: " + + firstToken); + Logging.log(Logging.LST_ERROR, " Valid ObjectTypes are: " + + StringPClassUtil.getValidStrings()); + return null; + } + + rm = getReferenceManufacturer((Class) c, categoryName); + if (rm == null) + { + Logging.log(Logging.LST_ERROR, " Error encountered: " + + className + " Category: " + categoryName + + " not found"); + return null; + } + } + else + { + if (categoryName != null) + { + Logging + .log(Logging.LST_ERROR, + " Error encountered: Found Non-Categorized Type with =Category"); + Logging.log(Logging.LST_ERROR, + " Format is: ObjectType[=Category]|Key[|Key] value was: " + + firstToken); + Logging.log(Logging.LST_ERROR, " Valid ObjectTypes are: " + + StringPClassUtil.getValidStrings()); + return null; + } + rm = ref.getManufacturer(c); + } + return rm; + } + + private <T extends CDOMObject & CategorizedCDOMObject<T>> ReferenceManufacturer<? extends CDOMObject, ?> getReferenceManufacturer( + Class<T> c, String categoryName) + { + Category<T> cat = StringPClassUtil.getCategoryFor(c, categoryName); + if (cat == null) + { + return null; + } + return ref.getManufacturer(c, cat); + } + + } Modified: Trunk/pcgen/code/src/java/pcgen/util/StringPClassUtil.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/util/StringPClassUtil.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/pcgen/util/StringPClassUtil.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -60,8 +60,8 @@ stringMap.put(Skill.class, "SKILL"); stringMap.put(PCTemplate.class, "TEMPLATE"); stringMap.put(WeaponProf.class, "WEAPONPROF"); - - //Hacks for ServesAs + + // Hacks for ServesAs stringMap.put(SubClass.class, "CLASS"); stringMap.put(SubstitutionClass.class, "CLASS"); } @@ -82,11 +82,12 @@ } public static <T extends CDOMObject & CategorizedCDOMObject<T>> Category<T> getCategoryFor( - Class<T> cl, String s) + Class<T> cl, String s) { if (cl.equals(Ability.class)) { - return (Category) SettingsHandler.getGame().silentlyGetAbilityCategory(s); + return (Category) SettingsHandler.getGame() + .silentlyGetAbilityCategory(s); } else { Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/QualifyToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/QualifyToken.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/QualifyToken.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -26,13 +26,12 @@ import pcgen.base.util.HashMapToList; import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; -import pcgen.cdom.base.CategorizedCDOMObject; import pcgen.cdom.base.Category; import pcgen.cdom.base.Constants; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.helper.Qualifier; import pcgen.cdom.inst.PCClassLevel; +import pcgen.cdom.reference.CDOMSingleRef; import pcgen.cdom.reference.CategorizedCDOMReference; import pcgen.cdom.reference.ReferenceManufacturer; import pcgen.cdom.reference.ReferenceUtilities; @@ -69,8 +68,8 @@ public List<Class<? extends CDOMObject>> getLegalTypes() { return Arrays.asList(PCClassLevel.class, Ability.class, Deity.class, - Domain.class, Equipment.class, PCClass.class, Race.class, - Skill.class, Spell.class, PCTemplate.class, WeaponProf.class); + Domain.class, Equipment.class, PCClass.class, Race.class, + Skill.class, Spell.class, PCTemplate.class, WeaponProf.class); } public boolean parse(LoadContext context, CDOMObject obj, String value) @@ -89,131 +88,58 @@ if (value.indexOf("|") == -1) { Logging.log(Logging.LST_ERROR, getTokenName() - + " requires at least two arguments, QualifyType and Key: " - + value); + + " requires at least two arguments, QualifyType and Key: " + + value); return false; } StringTokenizer st = new StringTokenizer(value, Constants.PIPE); String firstToken = st.nextToken(); - int equalLoc = firstToken.indexOf('='); - String className; - String categoryName; - if (equalLoc != firstToken.lastIndexOf('=')) + ReferenceManufacturer<? extends CDOMObject, ?> rm = context + .getManufacturer(firstToken); + if (rm == null) { - Logging.log(Logging.LST_ERROR, " Error encountered parsing " + getTokenName()); - Logging.log(Logging.LST_ERROR, " Found second = in QualifyType=Category"); - Logging.log(Logging.LST_ERROR, " Format is: QualifyType[=Category]|Key[|Key] value was: " - + value); - Logging.log(Logging.LST_ERROR, " Valid QualifyTypes are: " - + StringPClassUtil.getValidStrings()); - return false; - } - else if (equalLoc == -1) - { - className = firstToken; - categoryName = null; - } - else - { - className = firstToken.substring(0, equalLoc); - categoryName = firstToken.substring(equalLoc + 1); - } - Class<? extends CDOMObject> c = StringPClassUtil.getClassFor(className); - if (c == null) - { Logging.log(Logging.LST_ERROR, getTokenName() - + " does not understand object type: " + className); + + " unable to generate manufacturer for type: " + value); return false; } - ReferenceManufacturer<? extends CDOMObject, ?> rm; - if (CategorizedCDOMObject.class.isAssignableFrom(c)) - { - if (categoryName == null) - { - Logging.log(Logging.LST_ERROR, " Error encountered parsing " - + getTokenName()); - Logging.log(Logging.LST_ERROR, " Found Categorized Type without =Category"); - Logging.log(Logging.LST_ERROR, " Format is: QualifyType[=Category]|Key[|Key] value was: " - + value); - Logging.log(Logging.LST_ERROR, " Valid QualifyTypes are: " - + StringPClassUtil.getValidStrings()); - return false; - } - rm = getReferenceManufacturer(context, (Class) c, categoryName); - if (rm == null) - { - Logging.log(Logging.LST_ERROR, " Error encountered parsing " - + getTokenName()); - Logging.log(Logging.LST_ERROR, " " + className + " Category: " - + categoryName + " not found"); - return false; - } - } - else - { - if (categoryName != null) - { - Logging.log(Logging.LST_ERROR, " Error encountered parsing " - + getTokenName()); - Logging.log(Logging.LST_ERROR, " Found Non-Categorized Type with =Category"); - Logging.log(Logging.LST_ERROR, " Format is: QualifyType[=Category]|Key[|Key] value was: " - + value); - Logging.log(Logging.LST_ERROR, " Valid QualifyTypes are: " - + StringPClassUtil.getValidStrings()); - return false; - } - rm = context.ref.getManufacturer(c); - } while (st.hasMoreTokens()) { - CDOMReference<? extends CDOMObject> ref = - rm.getReference(st.nextToken()); + CDOMSingleRef<? extends CDOMObject> ref = rm.getReference(st + .nextToken()); context.obj.addToList(obj, ListKey.QUALIFY, new Qualifier(rm - .getReferenceClass(), ref)); + .getReferenceClass(), ref)); } return true; } - private <T extends CDOMObject & CategorizedCDOMObject<T>> ReferenceManufacturer<? extends CDOMObject, ?> getReferenceManufacturer( - LoadContext context, Class<T> c, String categoryName) - { - Category<T> cat = StringPClassUtil.getCategoryFor(c, categoryName); - if (cat == null) - { - return null; - } - return context.ref.getManufacturer(c, cat); - } - public String[] unparse(LoadContext context, CDOMObject obj) { - Changes<Qualifier> changes = - context.getObjectContext().getListChanges(obj, ListKey.QUALIFY); + Changes<Qualifier> changes = context.getObjectContext().getListChanges( + obj, ListKey.QUALIFY); if (changes == null || changes.isEmpty()) { return null; } Collection<Qualifier> quals = changes.getAdded(); - HashMapToList<String, CDOMReference<?>> map = - new HashMapToList<String, CDOMReference<?>>(); + HashMapToList<String, CDOMSingleRef<?>> map = new HashMapToList<String, CDOMSingleRef<?>>(); for (Qualifier qual : quals) { Class<? extends CDOMObject> cl = qual.getQualifiedClass(); String s = StringPClassUtil.getStringFor(cl); - CDOMReference<?> ref = qual.getQualifiedReference(); + CDOMSingleRef<?> ref = qual.getQualifiedReference(); String key = s; if (ref instanceof CategorizedCDOMReference) { - Category<?> cat = - ((CategorizedCDOMReference<?>) ref).getCDOMCategory(); + Category<?> cat = ((CategorizedCDOMReference<?>) ref) + .getCDOMCategory(); key += '=' + cat.toString(); } map.addToListFor(key, ref); } - Set<CDOMReference<?>> set = - new TreeSet<CDOMReference<?>>(ReferenceUtilities.REFERENCE_SORTER); + Set<CDOMSingleRef<?>> set = new TreeSet<CDOMSingleRef<?>>( + ReferenceUtilities.REFERENCE_SORTER); Set<String> returnSet = new TreeSet<String>(); for (String key : map.getKeySet()) { @@ -221,7 +147,7 @@ set.addAll(map.getListFor(key)); StringBuilder sb = new StringBuilder(); sb.append(key).append(Constants.PIPE).append( - ReferenceUtilities.joinLstFormat(set, Constants.PIPE)); + ReferenceUtilities.joinLstFormat(set, Constants.PIPE)); returnSet.add(sb.toString()); } return returnSet.toArray(new String[returnSet.size()]); Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ServesAsToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ServesAsToken.java 2009-01-05 01:31:09 UTC (rev 8883) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ServesAsToken.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -36,11 +36,9 @@ import pcgen.cdom.reference.CategorizedCDOMReference; import pcgen.cdom.reference.ReferenceManufacturer; import pcgen.core.Ability; -import pcgen.core.AbilityCategory; import pcgen.core.PCClass; import pcgen.core.PObject; import pcgen.core.Race; -import pcgen.core.SettingsHandler; import pcgen.core.Skill; import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.Changes; @@ -89,55 +87,15 @@ return false; } StringTokenizer st = new StringTokenizer(value, Constants.PIPE); - String key = st.nextToken(); - int equalLoc = key.indexOf('='); - Class<? extends PObject> servingClass; - ReferenceManufacturer<? extends PObject, ? extends CDOMSingleRef<?>> mfg; - if (equalLoc == -1) + String firstToken = st.nextToken(); + ReferenceManufacturer<? extends CDOMObject, ?> rm = context + .getManufacturer(firstToken); + if (rm == null) { - if ("ABILITY".equals(key)) - { - Logging.log(Logging.LST_ERROR, "Invalid use of ABILITY in SERVESAS " - + "(requires ABILITY=<category>): " + key); - return false; - } - servingClass = StringPClassUtil.getClassFor(key); - if (servingClass == null) - { - Logging.log(Logging.LST_ERROR, getTokenName() - + " expecting a POBJECT Type, found: " + key); - return false; - } - if (!servingClass.equals(obj.getClass())) - { - Logging.log(Logging.LST_ERROR, getTokenName() - + " expecting a POBJECT Type valid for " - + obj.getClass().getSimpleName() + ", found: " + key); - return false; - } - mfg = context.ref.getManufacturer(servingClass); + Logging.log(Logging.LST_ERROR, getTokenName() + + " unable to generate manufacturer for type: " + value); + return false; } - else - { - if (!"ABILITY".equals(key.substring(0, equalLoc))) - { - Logging.log(Logging.LST_ERROR, "Invalid use of = in SERVESAS " - + "(only valid for ABILITY): " + key); - return false; - } - String category = key.substring(equalLoc + 1); - key = key.substring(0, equalLoc); - AbilityCategory cat = SettingsHandler.getGame().getAbilityCategory( - category); - if (cat == null) - { - Logging.log(Logging.LST_ERROR, - "Could not find AbilityCategory " + category + " in " - + getTokenName()); - return false; - } - mfg = context.ref.getManufacturer(Ability.class, cat); - } if (!st.hasMoreTokens()) { Logging.log(Logging.LST_ERROR, getTokenName() @@ -146,10 +104,10 @@ } ListKey<CDOMReference> listkey = ListKey.getKeyFor(CDOMReference.class, - "SERVES_AS_" + key); + "SERVES_AS_" + firstToken); while (st.hasMoreTokens()) { - CDOMSingleRef<?> ref = mfg.getReference(st.nextToken()); + CDOMSingleRef<?> ref = rm.getReference(st.nextToken()); context.obj.addToList(obj, listkey, ref); } Added: Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/ForwardRefToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/ForwardRefToken.java (rev 0) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/campaign/ForwardRefToken.java 2009-01-05 02:02:14 UTC (rev 8884) @@ -0,0 +1,132 @@ +/* + * Copyright 2008 (C) Thomas Parker <th...@us...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package plugin.lsttokens.campaign; + +import java.util.Collection; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.TreeSet; + +import pcgen.base.util.HashMapToList; +import pcgen.cdom.base.CDOMObject; +import pcgen.cdom.base.Category; +import pcgen.cdom.base.Constants; +import pcgen.cdom.enumeration.ListKey; +import pcgen.cdom.helper.Qualifier; +import pcgen.cdom.reference.CDOMSingleRef; +import pcgen.cdom.reference.CategorizedCDOMReference; +import pcgen.cdom.reference.ReferenceManufacturer; +import pcgen.cdom.reference.ReferenceUtilities; +import pcgen.core.Campaign; +import pcgen.rules.context.Changes; +import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.util.Logging; +import pcgen.util.StringPClassUtil; + +public class ForwardRefToken extends AbstractToken implements + CDOMPrimaryToken<Campaign> +{ + + @Override + public String getTokenName() + { + return "FORWARDREF"; + } + + public boolean parse(LoadContext context, Campaign obj, String value) + { + if (isEmpty(value) || hasIllegalSeparator('|', value)) + { + return false; + } + + if (value.indexOf("|") == -1) + { + Logging.log(Logging.LST_ERROR, getTokenName() + + " requires at least two arguments, " + + "ReferenceType and Key: " + value); + return false; + } + StringTokenizer st = new StringTokenizer(value, Constants.PIPE); + String firstToken = st.nextToken(); + ReferenceManufacturer<? extends CDOMObject, ?> rm = context + .getManufacturer(firstToken); + if (rm == null) + { + Logging.log(Logging.LST_ERROR, getTokenName() + + " unable to generate manufacturer for type: " + value); + return false; + } + + while (st.hasMoreTokens()) + { + CDOMSingleRef<? extends CDOMObject> ref = rm.getReference(st + .nextToken()); + context.obj.addToList(obj, ListKey.FORWARDREF, new Qualifier(rm + .getReferenceClass(), ref)); + } + + return true; + } + + public String[] unparse(LoadContext context, Campaign obj) + { + Changes<Qualifier> changes = context.getObjectContext().getListChanges( + obj, ListKey.FORWARDREF); + if (changes == null || changes.isEmpty()) + { + return null; + } + Collection<Qualifier> quals = changes.getAdded(); + HashMapToList<String, CDOMSingleRef<?>> map = new HashMapToList<String, CDOMSingleRef<?>>(); + for (Qualifier qual : quals) + { + Class<? extends CDOMObject> cl = qual.getQualifiedClass(); + String s = StringPClassUtil.getStringFor(cl); + CDOMSingleRef<?> ref = qual.getQualifiedReference(); + String key = s; + if (ref instanceof CategorizedCDOMReference) + { + Category<?> cat = ((CategorizedCDOMReference<?>) ref) + .getCDOMCategory(); + key += '=' + cat.toString(); + } + map.addToListFor(key, ref); + } + Set<CDOMSingleRef<?>> set = new TreeSet<CDOMSingleRef<?>>( + ReferenceUtilities.REFERENCE_SORTER); + Set<String> returnSet = new TreeSet<String>(); + for (String key : map.getKeySet()) + { + set.clear(); + set.addAll(map.getListFor(key)); + StringBuilder sb = new StringBuilder(); + sb.append(key).append(Constants.PIPE).append( + ReferenceUtilities.joinLstFormat(set, Constants.PIPE)); + returnSet.add(sb.toString()); + } + return returnSet.toArray(new String[returnSet.size()]); + } + + public Class<Campaign> getTokenClass() + { + return Campaign.class; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-01-06 23:48:56
|
Revision: 8907 http://pcgen.svn.sourceforge.net/pcgen/?rev=8907&view=rev Author: thpr Date: 2009-01-06 23:48:53 +0000 (Tue, 06 Jan 2009) Log Message: ----------- better solution on SELECT: / embedded select in CHOOSE Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/FormulaKey.java Trunk/pcgen/code/src/java/plugin/lsttokens/ChooseLst.java Trunk/pcgen/code/src/java/plugin/lsttokens/choose/SpellLevelToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/choose/UserInputToken.java Trunk/pcgen/code/src/java/plugin/lsttokens/choose/WeaponProfToken.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/FormulaKey.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/FormulaKey.java 2009-01-06 23:36:31 UTC (rev 8906) +++ Trunk/pcgen/code/src/java/pcgen/cdom/enumeration/FormulaKey.java 2009-01-06 23:48:53 UTC (rev 8907) @@ -67,6 +67,8 @@ public static final FormulaKey SIZE; + public static final FormulaKey EMBEDDED_SELECT = getConstant("SELECT", FormulaFactory.ONE); + /* * TODO Okay, this is a hack. */ Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ChooseLst.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ChooseLst.java 2009-01-06 23:36:31 UTC (rev 8906) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ChooseLst.java 2009-01-06 23:48:53 UTC (rev 8907) @@ -26,6 +26,7 @@ import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; +import pcgen.rules.persistence.token.DeferredToken; import pcgen.util.Logging; /** @@ -33,7 +34,7 @@ * */ public class ChooseLst extends AbstractToken implements - CDOMPrimaryToken<CDOMObject> + CDOMPrimaryToken<CDOMObject>, DeferredToken<CDOMObject> { @Override @@ -126,4 +127,26 @@ { return CDOMObject.class; } + + public Class<CDOMObject> getDeferredTokenClass() + { + return CDOMObject.class; + } + + /* + * This makes an editor a bit more difficult, but since CHOOSE is an early + * target of 5.17, this probably isn't a big deal. + */ + public boolean process(LoadContext context, CDOMObject obj) + { + Formula emb = obj.get(FormulaKey.EMBEDDED_SELECT); + if (emb != null) + { + if (!FormulaFactory.ONE.equals(emb)) + { + obj.put(FormulaKey.SELECT, emb); + } + } + return true; + } } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/choose/SpellLevelToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/choose/SpellLevelToken.java 2009-01-06 23:36:31 UTC (rev 8906) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/choose/SpellLevelToken.java 2009-01-06 23:48:53 UTC (rev 8907) @@ -178,10 +178,7 @@ value).append(suffix); context.obj.put(obj, StringKey.CHOICE_STRING, sb.toString()); Formula f = FormulaFactory.getFormulaFor(start); - if (!FormulaFactory.ONE.equals(f)) - { - context.obj.put(obj, FormulaKey.SELECT, f); - } + context.obj.put(obj, FormulaKey.EMBEDDED_SELECT, f); return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/choose/UserInputToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/choose/UserInputToken.java 2009-01-06 23:36:31 UTC (rev 8906) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/choose/UserInputToken.java 2009-01-06 23:48:53 UTC (rev 8907) @@ -130,10 +130,7 @@ if (firstarg != null) { Formula f = FormulaFactory.getFormulaFor(firstarg); - if (!FormulaFactory.ONE.equals(f)) - { - context.obj.put(obj, FormulaKey.SELECT, f); - } + context.obj.put(obj, FormulaKey.EMBEDDED_SELECT, f); } return true; } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/choose/WeaponProfToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/choose/WeaponProfToken.java 2009-01-06 23:36:31 UTC (rev 8906) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/choose/WeaponProfToken.java 2009-01-06 23:48:53 UTC (rev 8907) @@ -148,10 +148,7 @@ .append(profs).append(suffix); Formula f = FormulaFactory.getFormulaFor(firstarg); context.obj.put(obj, FormulaKey.NUMCHOICES, f); - if (!FormulaFactory.ONE.equals(f)) - { - context.obj.put(obj, FormulaKey.SELECT, f); - } + context.obj.put(obj, FormulaKey.EMBEDDED_SELECT, f); context.obj.put(obj, StringKey.CHOICE_STRING, sb.toString()); /* * TODO Error catching here for SELECT/CHOOSE? This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |