From: <th...@us...> - 2012-02-24 03:29:04
|
Revision: 16291 http://pcgen.svn.sourceforge.net/pcgen/?rev=16291&view=rev Author: thpr Date: 2012-02-24 03:28:57 +0000 (Fri, 24 Feb 2012) Log Message: ----------- Add javadoc Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectBridge.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectConsolidationFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectSourceFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChallengeRatingFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChangeProfFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterConsolidationFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterSpellResistanceFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/CheckFacet.java Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChooseDriverFacet.java Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectBridge.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectBridge.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectBridge.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -20,9 +20,18 @@ import pcgen.cdom.base.CDOMObject; /** - * This is a transition class, designed to allow things to be taken out of - * PlayerCharacter while a transition is made to a sytem where abilities are - * added in a forward manner, rather than a loop. + * CDOMObjectBridge is a class that performs the breaking of cycles in the + * connection of Facets that form the CDOM core of PCGen. In particular, there + * are events that add objects (such as Templates) and as those objects are + * added, they can themselves add objects which result in the addition of + * objects of the same type. In order to deal with this (eventually) + * self-referencing cycle, CDOMObjectBridge acts as the underlying storage for + * two different Facets: CDOMObjectConsolidationFacet and CDOMObjectSourceFacet. + * + * Note that listening to CDOMObjectConsolidationFacet is the preferred method + * of listening to addition of (all) CDOMObjects, where possible. + * + * @author Thomas Parker (thpr [at] yahoo.com) */ public final class CDOMObjectBridge extends AbstractSourcedListFacet<CDOMObject> { Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectConsolidationFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectConsolidationFacet.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectConsolidationFacet.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -21,9 +21,22 @@ import pcgen.cdom.enumeration.CharID; /** - * This is a transition class, designed to allow things to be taken out of - * PlayerCharacter while a transition is made to a sytem where abilities are - * added in a forward manner, rather than a loop. + * CDOMObjectConsolidationFacet consolidates all of the CDOMObjects that are + * added to a Player Character. By consolidating all of the CDOMObjects into one + * location, behaviors which are consistent across all CDOMObjects can be + * performed based on events from a single source Facet. + * + * Note: If you attempt to use this class and receive an error that you have + * created a cycle in the Spring graph of objects, you may use + * CDOMObjectSourceFacet as the source of events instead of this Facet. This + * will cause the receiving object to receive the same events, but will not + * cause a cycle. This is possible because the underlying data store for the two + * facets is the same. + * + * @see pcgen.cdom.facet.CDOMObjectSourceFacet + * @see pcgen.cdom.facet.CDOMObjectBridge + * + * @author Thomas Parker (thpr [at] yahoo.com) */ public class CDOMObjectConsolidationFacet implements DataFacetChangeListener<CDOMObject> @@ -34,22 +47,86 @@ { bridgeFacet = bridge; } + + /** + * Add the given object with the given source to the list of objects stored + * in this CDOMObjectConsolidationFacet for the Player Character represented + * by the given CharID. + * + * @param id + * The CharID representing the Player Character for which the + * given item should be added + * @param obj + * The object to be added to the list of objects stored in this + * CDOMObjectConsolidationFacet for the Player Character + * represented by the given CharID + * @param source + * The source for the given object + */ public void add(CharID id, CDOMObject obj, Object source) { bridgeFacet.add(id, obj, source); } + /** + * Removes the given source entry from the list of sources for the given + * object stored in this CDOMObjectConsolidationFacet for the Player + * Character represented by the given CharID. If the given source was the + * only source for the given object, then the object is removed from the + * list of objects stored in this CDOMObjectConsolidationFacet for the + * Player Character represented by the given CharID. + * + * @param id + * The CharID representing the Player Character from which the + * given item source should be removed + * @param obj + * The object for which the source should be removed + * @param source + * The source for the given object to be removed from the list of + * sources + */ public void remove(CharID id, CDOMObject obj, Object source) { bridgeFacet.remove(id, obj, source); } + /** + * Adds a new DataFacetChangeListener to receive DataFacetChangeEvents + * (EdgeChangeEvent and NodeChangeEvent) from CDOMObjectConsolidationFacet. + * The given DataFacetChangeListener is added at the default priority + * (zero). + * + * Note that the DataFacetChangeListeners are a list, meaning a given + * DataFacetChangeListener can be added more than once at a given priority, + * and if that occurs, it must be removed an equivalent number of times in + * order to no longer receive events from this CDOMObjectConsolidationFacet. + * + * @param listener + * The DataFacetChangeListener to receive DataFacetChangeEvents + * from this CDOMObjectConsolidationFacet + */ public void addDataFacetChangeListener( DataFacetChangeListener<? super CDOMObject> listener) { bridgeFacet.addDataFacetChangeListener(listener); } + /** + * Detects the addition of a CDOMObject to a Player Character and adds the + * CDOMObject to the list of CDOMObjects stored in this + * CDOMObjectConsolidationFacet for the Player Character identified by the + * CharID in the DataFacetChangeEvent. + * + * Triggered when one of the Facets to which CDOMObjectConsolidationFacet + * listens fires a DataFacetChangeEvent to indicate a CDOMObject was added + * to a Player Character. + * + * @param dfce + * The DataFacetChangeEvent containing the information about the + * change + * + * @see pcgen.cdom.facet.DataFacetChangeListener#dataAdded(pcgen.cdom.facet.DataFacetChangeEvent) + */ @Override public void dataAdded(DataFacetChangeEvent<CDOMObject> dfce) { @@ -57,6 +134,22 @@ add(dfce.getCharID(), cdo, dfce.getSource()); } + /** + * Detects the removal of a CDOMObject to a Player Character and removes the + * CDOMObject to the list of CDOMObjects stored in this + * CDOMObjectConsolidationFacet for the Player Character identified by the + * CharID in the DataFacetChangeEvent. + * + * Triggered when one of the Facets to which CDOMObjectConsolidationFacet + * listens fires a DataFacetChangeEvent to indicate a CDOMObject was removed + * from a Player Character. + * + * @param dfce + * The DataFacetChangeEvent containing the information about the + * change + * + * @see pcgen.cdom.facet.DataFacetChangeListener#dataRemoved(pcgen.cdom.facet.DataFacetChangeEvent) + */ @Override public void dataRemoved(DataFacetChangeEvent<CDOMObject> dfce) { Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectSourceFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectSourceFacet.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/CDOMObjectSourceFacet.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -17,15 +17,23 @@ */ package pcgen.cdom.facet; -import java.util.Set; - import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.enumeration.CharID; /** - * This is a transition class, designed to allow things to be taken out of - * PlayerCharacter while a transition is made to a sytem where abilities are - * added in a forward manner, rather than a loop. + * CDOMObjectSourceFacet consolidates all of the CDOMObjects that are added to a + * Player Character. By consolidating all of the CDOMObjects into one location, + * behaviors which are consistent across all CDOMObjects can be performed based + * on events from a single source Facet. + * + * Note: CDOMObjectConsolidationFacet should be used in preference to this facet + * where possible. CDOMObjectSourceFacet is for use when the use of + * CDOMObjectConsolidationFacet would produce a cycle (and thus Spring would be + * unable to construct the facets in that cycle) + * + * @see pcgen.cdom.facet.CDOMObjectConsolidationFacet + * @see pcgen.cdom.facet.CDOMObjectBridge + * + * @author Thomas Parker (thpr [at] yahoo.com) */ public class CDOMObjectSourceFacet { @@ -37,11 +45,20 @@ bridgeFacet = bridge; } - public Set<CDOMObject> getSet(CharID id) - { - return bridgeFacet.getSet(id); - } - + /** + * Adds a new DataFacetChangeListener to receive DataFacetChangeEvents + * (EdgeChangeEvent and NodeChangeEvent) from CDOMObjectSourceFacet. The + * given DataFacetChangeListener is added at the default priority (zero). + * + * Note that the DataFacetChangeListeners are a list, meaning a given + * DataFacetChangeListener can be added more than once at a given priority, + * and if that occurs, it must be removed an equivalent number of times in + * order to no longer receive events from this CDOMObjectSourceFacet. + * + * @param listener + * The DataFacetChangeListener to receive DataFacetChangeEvents + * from this CDOMObjectSourceFacet + */ public void addDataFacetChangeListener( DataFacetChangeListener<? super CDOMObject> listener) { Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChallengeRatingFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChallengeRatingFacet.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChallengeRatingFacet.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -32,6 +32,8 @@ /** * ChallengeRatingFacet is a Facet that calculates the Challenge Rating of a * Player Character + * + * @author Thomas Parker (thpr [at] yahoo.com) */ public class ChallengeRatingFacet { @@ -48,7 +50,7 @@ * * @param id * The CharID representing the Player Character for which the - * Chellenge Rating should be returned + * Challenge Rating should be returned * @return The Challenge Rating of the Player Character represented by the * given CharID */ @@ -78,12 +80,12 @@ /** * Returns the ChallengeRating provided solely by PCTemplate objects granted - * to the Player Character + * to the Player Character identified by the given CharID. * * @param id * The CharID representing the Player Character * @return the Challenge Rating provided by the PCTemplate objects granted - * to the Player Character + * to the Player Character identified by the given CharID */ private float getTemplateCR(CharID id) { @@ -101,12 +103,12 @@ /** * Returns the ChallengeRating provided solely by PCClass objects granted to - * the Player Character + * the Player Character identified by the given CharID. * * @param id * The CharID representing the Player Character * @return the Challenge Rating provided by the PCClass objects granted to - * the Player Character + * the Player Character identified by the given CharID */ private float getClassCR(CharID id) { @@ -122,11 +124,12 @@ /** * Returns the ChallengeRating provided solely by the Race of the Player - * Character + * Character identified by the given CharID. * * @param id * The CharID representing the Player Character * @return the Challenge Rating provided by the Race of the Player Character + * identified by the given CharID */ private float calcRaceCR(CharID id) { @@ -138,6 +141,18 @@ return raceCR; } + /** + * Returns the ChallengeRating provided solely by the given Class of the + * Player Character identified by the given CharID. + * + * @param id + * The CharID representing the Player Character + * @param cl + * The PCClass for which the class Challenge Rating should be + * calculated + * @return the Challenge Rating provided solely by the given Class of the + * Player Character identified by the given CharID + */ private float calcClassCR(CharID id, PCClass cl) { Formula cr = cl.get(FormulaKey.CR); @@ -148,7 +163,8 @@ * ClassTypes and using one of those to set one of its variables. In * theory, we should have a ClassType that triggers CR that is not a * TYPE, but a unique token. See this thread: - * http://tech.groups.yahoo.com/group/pcgen_experimental/message/10778 + * http://tech.groups.yahoo + * .com/group/pcgen_experimental/message/10778 */ for (Type type : cl.getTrueTypeList(false)) { Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChangeProfFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChangeProfFacet.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChangeProfFacet.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -33,6 +33,8 @@ /** * ChangeProfFacet is a Facet that tracks the ChangeProf objects that are * contained in a Player Character. + * + * @author Thomas Parker (thpr [at] yahoo.com) */ public class ChangeProfFacet extends AbstractSourcedListFacet<ChangeProf> implements DataFacetChangeListener<CDOMObject> @@ -41,6 +43,9 @@ private CDOMObjectConsolidationFacet consolidationFacet; /** + * Determines ChangeProf objects granted by CDOMObjects which are added to a + * Player Character. + * * Triggered when one of the Facets to which ChangeProfFacet listens fires a * DataFacetChangeEvent to indicate a CDOMObject was added to a Player * Character. @@ -63,6 +68,9 @@ } /** + * Determines ChangeProf objects granted by CDOMObjects which are removed + * from a Player Character. + * * Triggered when one of the Facets to which ChangeProfFacet listens fires a * DataFacetChangeEvent to indicate a CDOMObject was removed from a Player * Character. @@ -79,6 +87,33 @@ removeAll(dfce.getCharID(), dfce.getCDOMObject()); } + /** + * For a given type of WeaponProf, returns a List of WeaponProf objects + * active for a Player Character after they are modified by the ChangeProf + * objects active on the Player Character. + * + * This method is value-semantic in that ownership of the returned List is + * transferred to the class calling this method. Modification of the + * returned List will not modify this ChangeProfFacet and modification of + * this ChangeProfFacet will not modify the returned List. Modifications to + * the returned List will also not modify any future or previous objects + * returned by this (or other) methods on ChangeProfFacet. If you wish to + * modify the information stored in this ChangeProfFacet, you must use the + * add*() and remove*() methods of ChangeProfFacet. + * + * @param type + * The type of WeaponProf for which the List of WeaponProf + * objects will be returned + * @param id + * The CharID identifying the Player Character for which the List + * of WeaponProf objects will be returned + * @param master + * The original group of WeaponProf objects to be modified by any + * ChangeProf objects active on the Player Character. + * @return A List of WeaponProf objects active for a Player Character, after + * they are modified by the ChangeProf objects active on the Player + * Character + */ public List<WeaponProf> getWeaponProfsInTarget(String type, CharID id, CDOMGroupRef<WeaponProf> master) { @@ -108,7 +143,13 @@ { this.consolidationFacet = consolidationFacet; } - + + /** + * Initializes the connections for ChangeProfFacet to other facets. + * + * This method is automatically called by the Spring framework during + * initialization of the ChangeProfFacet. + */ public void init() { consolidationFacet.addDataFacetChangeListener(this); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterConsolidationFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterConsolidationFacet.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterConsolidationFacet.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -20,21 +20,64 @@ import pcgen.cdom.base.CDOMObject; /** - * This is a transition class, designed to allow things to be taken out of - * PlayerCharacter while a transition is made to a sytem where abilities are - * added in a forward manner, rather than a loop. + * CharacterConsolidationFacet consolidates all of the CDOMObjects that are part + * of a Player Character. This includes CDOMObjects natively part of the Player + * Character, and not part of the Equipment equipped by the Player Character. + * + * By consolidating all of the CDOMObjects into one location, behaviors which + * are consistent across all CDOMObjects related to a Player Character can be + * performed based on events from a single source Facet. + * + * If you are looking for a Facet that consolidates all of the CDOMObjects + * granted to a Player Character, including those from Equipment, then use + * CDOMObjectConsolidationFacet + * + * @see pcgen.cdom.facet.CDOMObjectConsolidationFacet + * + * @author Thomas Parker (thpr [at] yahoo.com) */ public class CharacterConsolidationFacet extends AbstractSourcedListFacet<CDOMObject> implements DataFacetChangeListener<CDOMObject> { + /** + * Adds all of the CDOMObjects that are part of a Player Character. Listens + * for CDOMObjects natively part of the Player Character, and not part of + * the Equipment equipped by the Player Character. + * + * Triggered when one of the Facets to which CharacterConsolidationFacet + * listens fires a DataFacetChangeEvent to indicate a CDOMObject was added + * to a Player Character. + * + * @param dfce + * The DataFacetChangeEvent containing the information about the + * change + * + * @see pcgen.cdom.facet.DataFacetChangeListener#dataAdded(pcgen.cdom.facet.DataFacetChangeEvent) + */ @Override public void dataAdded(DataFacetChangeEvent<CDOMObject> dfce) { add(dfce.getCharID(), dfce.getCDOMObject(), dfce.getSource()); } + /** + * Removes all of the CDOMObjects that are part of a Player Character when + * they are removed from the Player Character. Listens for CDOMObjects + * natively part of the Player Character, and not part of the Equipment + * equipped by the Player Character. + * + * Triggered when one of the Facets to which CharacterConsolidationFacet + * listens fires a DataFacetChangeEvent to indicate a CDOMObject was removed + * from a Player Character. + * + * @param dfce + * The DataFacetChangeEvent containing the information about the + * change + * + * @see pcgen.cdom.facet.DataFacetChangeListener#dataRemoved(pcgen.cdom.facet.DataFacetChangeEvent) + */ @Override public void dataRemoved(DataFacetChangeEvent<CDOMObject> dfce) { Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterSpellResistanceFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterSpellResistanceFacet.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/CharacterSpellResistanceFacet.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -29,6 +29,8 @@ /** * CharacterSpellResistanceFacet is a Facet that tracks the SpellResistance * objects that have been granted to a Player Character. + * + * @author Thomas Parker (thpr [at] yahoo.com) */ public class CharacterSpellResistanceFacet extends AbstractSourcedListFacet<Formula> implements @@ -39,6 +41,10 @@ private CDOMObjectConsolidationFacet consolidationFacet; /** + * Captures any SpellResistance objects granted by CDOMObjects added to the + * Player Character and adds those SpellResisteance objects to this + * CharacterSpellResistanceFacet for the Player Character. + * * Triggered when one of the Facets to which CharacterSpellResistanceFacet * listens fires a DataFacetChangeEvent to indicate a CDOMObject was added * to a Player Character. @@ -61,6 +67,10 @@ } /** + * Captures any SpellResistance objects granted by CDOMObjects removed from + * the Player Character and removes those SpellResisteance objects to this + * CharacterSpellResistanceFacet for the Player Character. + * * Triggered when one of the Facets to which CharacterSpellResistanceFacet * listens fires a DataFacetChangeEvent to indicate a CDOMObject was removed * from a Player Character. @@ -77,6 +87,16 @@ removeAll(dfce.getCharID(), dfce.getCDOMObject()); } + /** + * Returns the Spell Resistance for the Player Character identified by the + * given CharID. + * + * @param id + * The CharID identifying the Player Character for which the + * Spell Resistance will be returned + * @return The Spell Resistance for the Player Character identified by the + * given CharID + */ public int getSR(CharID id) { Map<Formula, Set<Object>> componentMap = getCachedMap(id); @@ -109,7 +129,14 @@ { this.consolidationFacet = consolidationFacet; } - + + /** + * Initializes the connections for CharacterSpellResistanceFacet to other + * facets. + * + * This method is automatically called by the Spring framework during + * initialization of the CharacterSpellResistanceFacet. + */ public void init() { consolidationFacet.addDataFacetChangeListener(this); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/CheckFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/CheckFacet.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/CheckFacet.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -28,14 +28,35 @@ /** * CheckFacet is a Facet that tracks the PCCheck objects available to a Player * Character. + * + * @author Thomas Parker (thpr [at] yahoo.com) */ public class CheckFacet extends AbstractListFacet<PCCheck> { private BonusCheckingFacet bonusCheckingFacet; + /** + * Returns the Bonus value provided solely by Checks, for a given Bonus type + * and Bonus name on the Player Character identified by the given CharID. + * + * @param id + * CharId identifying the Player Character for which the Bonus + * value will be returned + * @param type + * The Bonus type for which the Bonus value will be returned + * @param name + * The Bonus name for which the Bonus value will be returned + * @return The Bonus value provided solely by Checks, for a given Bonus type + * and Bonus name on the Player Character identified by the given + * CharID + */ public double getCheckBonusTo(CharID id, String type, String name) { + /* + * TODO Need to consider whether this method actually belongs in the + * core or whether this is a Display layer item + */ double bonus = 0; type = type.toUpperCase(); name = name.toUpperCase(); Modified: Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChooseDriverFacet.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChooseDriverFacet.java 2012-02-24 03:28:03 UTC (rev 16290) +++ Trunk/pcgen/code/src/java/pcgen/cdom/facet/ChooseDriverFacet.java 2012-02-24 03:28:57 UTC (rev 16291) @@ -27,6 +27,12 @@ import pcgen.core.chooser.ChoiceManagerList; import pcgen.core.chooser.ChooserUtilities; +/** + * ChooseDriverFacet is a Facet that drives the selection of a CHOOSE on a + * CDOMObject. + * + * @author Thomas Parker (thpr [at] yahoo.com) + */ public class ChooseDriverFacet extends AbstractSingleSourceListFacet<CDOMObject, String> implements DataFacetChangeListener<CDOMObject> @@ -34,6 +40,8 @@ /* * Note this is a BIT of a hack in using the "source" to hold the * "associated data" + * + * TODO This needs to use AbstractAssociationFacet */ private final PlayerCharacterTrackingFacet trackingFacet = FacetLibrary @@ -131,8 +139,25 @@ @Override public void dataRemoved(DataFacetChangeEvent<CDOMObject> dfce) { + /* + * TODO Consider whether this needs to be symmetric to add (remove + * associations) + */ } + /** + * Directly adds an association (the result of a CHOOSE) - available for the + * I/O system. + * + * @param id + * The CharID identifying the Player Character to which the + * association should be added + * @param cdo + * The CDOMObject for which the association should be added + * @param fullassoc + * The association to be added to the CDOMObject for the Player + * Character identified by the given CharID + */ public void addAssociation(CharID id, CDOMObject cdo, String fullassoc) { add(id, cdo, fullassoc); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |