From: <th...@us...> - 2007-08-28 23:51:38
|
Revision: 3934 http://pcgen.svn.sourceforge.net/pcgen/?rev=3934&view=rev Author: thpr Date: 2007-08-28 16:51:37 -0700 (Tue, 28 Aug 2007) Log Message: ----------- CDOM: Update MON*SKILL* tokens to (hopefully?) unparse PRExxx Modified Paths: -------------- branches/cdom/code/src/java/plugin/lsttokens/pcclass/MonnonskillhdToken.java branches/cdom/code/src/java/plugin/lsttokens/pcclass/MonskillToken.java branches/cdom/code/src/utest/plugin/lsttokens/pcclass/MonNonSkillTHDTokenTest.java branches/cdom/code/src/utest/plugin/lsttokens/pcclass/MonSkillTokenTest.java Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/MonnonskillhdToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/pcclass/MonnonskillhdToken.java 2007-08-28 23:42:49 UTC (rev 3933) +++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/MonnonskillhdToken.java 2007-08-28 23:51:37 UTC (rev 3934) @@ -21,21 +21,26 @@ */ package plugin.lsttokens.pcclass; +import java.io.StringWriter; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; +import pcgen.base.util.MapToList; import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; import pcgen.core.PCClass; import pcgen.core.bonus.BonusObj; +import pcgen.core.prereq.Prerequisite; import pcgen.persistence.AssociatedChanges; import pcgen.persistence.LoadContext; +import pcgen.persistence.PersistenceLayerException; import pcgen.persistence.lst.AbstractToken; import pcgen.persistence.lst.BonusLoader; import pcgen.persistence.lst.PCClassClassLstToken; import pcgen.persistence.lst.PCClassLstToken; +import pcgen.persistence.lst.output.prereq.PrerequisiteWriter; /** * Class deals with MONNONSKILLHD Token @@ -85,13 +90,44 @@ { return null; } + PrerequisiteWriter prereqWriter = new PrerequisiteWriter(); Set<String> set = new TreeSet<String>(); - for (LSTWriteable b : changes.getAdded()) + MapToList<LSTWriteable, AssociatedPrereqObject> mtl = + changes.getAddedAssociations(); + if (mtl != null && !mtl.isEmpty()) { - // TODO Validate MONNONSKILLHD? - // TODO Validate NUMBER? - // TODO Validate PRExxx? - set.add(b.getLSTformat()); + for (LSTWriteable ab : mtl.getKeySet()) + { + // TODO Validate MONNONSKILLHD? + // TODO Validate NUMBER? + // TODO Validate PRExxx? + for (AssociatedPrereqObject assoc : mtl.getListFor(ab)) + { + StringBuilder sb = new StringBuilder(); + sb.append(ab.getLSTformat()); + if (assoc.hasPrerequisites()) + { + for (Prerequisite prereq : assoc.getPrerequisiteList()) + { + sb.append(Constants.PIPE); + StringWriter swriter = new StringWriter(); + try + { + prereqWriter.write(swriter, prereq); + } + catch (PersistenceLayerException e) + { + context + .addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + sb.append(swriter.toString()); + } + } + set.add(sb.toString()); + } + } } if (set.isEmpty()) { Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/MonskillToken.java =================================================================== --- branches/cdom/code/src/java/plugin/lsttokens/pcclass/MonskillToken.java 2007-08-28 23:42:49 UTC (rev 3933) +++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/MonskillToken.java 2007-08-28 23:51:37 UTC (rev 3934) @@ -21,21 +21,26 @@ */ package plugin.lsttokens.pcclass; +import java.io.StringWriter; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; +import pcgen.base.util.MapToList; import pcgen.cdom.base.AssociatedPrereqObject; import pcgen.cdom.base.Constants; import pcgen.cdom.base.LSTWriteable; import pcgen.core.PCClass; import pcgen.core.bonus.BonusObj; +import pcgen.core.prereq.Prerequisite; import pcgen.persistence.AssociatedChanges; import pcgen.persistence.LoadContext; +import pcgen.persistence.PersistenceLayerException; import pcgen.persistence.lst.AbstractToken; import pcgen.persistence.lst.BonusLoader; import pcgen.persistence.lst.PCClassClassLstToken; import pcgen.persistence.lst.PCClassLstToken; +import pcgen.persistence.lst.output.prereq.PrerequisiteWriter; /** * Class deals with MONSKILL Token @@ -67,9 +72,9 @@ BonusObj bonus = BonusLoader.getBonus(context, pcc, "MONSKILLPTS", "NUMBER", st .nextToken()); + bonus.addPrerequisite(getPrerequisite("PRELEVELMAX:1")); AssociatedPrereqObject assoc = context.getGraphContext().grant(getTokenName(), pcc, bonus); - assoc.addPrerequisite(getPrerequisite("PRELEVELMAX:1")); while (st.hasMoreTokens()) { assoc.addPrerequisite(getPrerequisite(st.nextToken())); @@ -86,13 +91,44 @@ { return null; } + PrerequisiteWriter prereqWriter = new PrerequisiteWriter(); Set<String> set = new TreeSet<String>(); - for (LSTWriteable b : changes.getAdded()) + MapToList<LSTWriteable, AssociatedPrereqObject> mtl = + changes.getAddedAssociations(); + if (mtl != null && !mtl.isEmpty()) { - // TODO Validate MONSKILLPTS? - // TODO Validate NUMBER? - // TODO Validate PRExxx? - set.add(b.getLSTformat()); + for (LSTWriteable ab : mtl.getKeySet()) + { + // TODO Validate MONSKILLPTS? + // TODO Validate NUMBER? + // TODO Validate PRExxx? + for (AssociatedPrereqObject assoc : mtl.getListFor(ab)) + { + StringBuilder sb = new StringBuilder(); + sb.append(ab.getLSTformat()); + if (assoc.hasPrerequisites()) + { + for (Prerequisite prereq : assoc.getPrerequisiteList()) + { + sb.append(Constants.PIPE); + StringWriter swriter = new StringWriter(); + try + { + prereqWriter.write(swriter, prereq); + } + catch (PersistenceLayerException e) + { + context + .addWriteMessage("Error writing Prerequisite: " + + e); + return null; + } + sb.append(swriter.toString()); + } + } + set.add(sb.toString()); + } + } } if (set.isEmpty()) { Modified: branches/cdom/code/src/utest/plugin/lsttokens/pcclass/MonNonSkillTHDTokenTest.java =================================================================== --- branches/cdom/code/src/utest/plugin/lsttokens/pcclass/MonNonSkillTHDTokenTest.java 2007-08-28 23:42:49 UTC (rev 3933) +++ branches/cdom/code/src/utest/plugin/lsttokens/pcclass/MonNonSkillTHDTokenTest.java 2007-08-28 23:51:37 UTC (rev 3934) @@ -28,6 +28,9 @@ import plugin.bonustokens.MonNonSkillHD; import plugin.lsttokens.testsupport.AbstractTokenTestCase; import plugin.lsttokens.testsupport.PCClassLoaderFacade; +import plugin.lsttokens.testsupport.TokenRegistration; +import plugin.pretokens.parser.PreRaceParser; +import plugin.pretokens.writer.PreRaceWriter; public class MonNonSkillTHDTokenTest extends AbstractTokenTestCase<PCClass> { @@ -35,12 +38,17 @@ static MonnonskillhdToken token = new MonnonskillhdToken(); static PCClassLoaderFacade loader = new PCClassLoaderFacade(); + PreRaceParser prerace = new PreRaceParser(); + PreRaceWriter preracewriter = new PreRaceWriter(); + @Override public void setUp() throws PersistenceLayerException, URISyntaxException { super.setUp(); prefix = "CLASS:"; addBonus("MONNONSKILLHD", MonNonSkillHD.class); + TokenRegistration.register(prerace); + TokenRegistration.register(preracewriter); } @Override @@ -92,4 +100,28 @@ { runRoundRobin("3+CL(\"FIGHTER\")"); } + + @Test + public void testRoundRobinPre() throws PersistenceLayerException + { + runRoundRobin("VARIABLE1|PRERACE:1,Human"); + } + + @Test + public void testRoundRobinDupePre() throws PersistenceLayerException + { + runRoundRobin("VARIABLE1", "VARIABLE1|PRERACE:1,Human"); + } + + @Test + public void testRoundRobinDiffPre() throws PersistenceLayerException + { + runRoundRobin("VARIABLE1|PRERACE:1,Dwarf", "VARIABLE1|PRERACE:1,Human"); + } + + @Test + public void testRoundRobinDiffSamePre() throws PersistenceLayerException + { + runRoundRobin("VARIABLE1|PRERACE:1,Human", "VARIABLE2|PRERACE:1,Human"); + } } Modified: branches/cdom/code/src/utest/plugin/lsttokens/pcclass/MonSkillTokenTest.java =================================================================== --- branches/cdom/code/src/utest/plugin/lsttokens/pcclass/MonSkillTokenTest.java 2007-08-28 23:42:49 UTC (rev 3933) +++ branches/cdom/code/src/utest/plugin/lsttokens/pcclass/MonSkillTokenTest.java 2007-08-28 23:51:37 UTC (rev 3934) @@ -28,6 +28,9 @@ import plugin.bonustokens.MonSkillPts; import plugin.lsttokens.testsupport.AbstractTokenTestCase; import plugin.lsttokens.testsupport.PCClassLoaderFacade; +import plugin.lsttokens.testsupport.TokenRegistration; +import plugin.pretokens.parser.PreRaceParser; +import plugin.pretokens.writer.PreRaceWriter; public class MonSkillTokenTest extends AbstractTokenTestCase<PCClass> { @@ -35,12 +38,17 @@ static MonskillToken token = new MonskillToken(); static PCClassLoaderFacade loader = new PCClassLoaderFacade(); + PreRaceParser prerace = new PreRaceParser(); + PreRaceWriter preracewriter = new PreRaceWriter(); + @Override public void setUp() throws PersistenceLayerException, URISyntaxException { super.setUp(); prefix = "CLASS:"; addBonus("MONSKILLPTS", MonSkillPts.class); + TokenRegistration.register(prerace); + TokenRegistration.register(preracewriter); } @Override @@ -92,4 +100,29 @@ { runRoundRobin("3+CL(\"FIGHTER\")"); } + + @Test + public void testRoundRobinPre() throws PersistenceLayerException + { + runRoundRobin("VARIABLE1|PRERACE:1,Human"); + } + + @Test + public void testRoundRobinDupePre() throws PersistenceLayerException + { + runRoundRobin("VARIABLE1", "VARIABLE1|PRERACE:1,Human"); + } + + @Test + public void testRoundRobinDiffPre() throws PersistenceLayerException + { + runRoundRobin("VARIABLE1|PRERACE:1,Dwarf", "VARIABLE1|PRERACE:1,Human"); + } + + @Test + public void testRoundRobinDiffSamePre() throws PersistenceLayerException + { + runRoundRobin("VARIABLE1|PRERACE:1,Human", "VARIABLE2|PRERACE:1,Human"); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |