From: <nu...@us...> - 2006-04-08 20:24:34
|
Revision: 732 Author: nuance Date: 2006-04-08 13:24:17 -0700 (Sat, 08 Apr 2006) ViewCVS: http://svn.sourceforge.net/pcgen/?rev=732&view=rev Log Message: ----------- Tweaks to AbilityInfo to support new class ChoiceInfo which is a class for associating preconditions with a string. Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/AbilityInfo.java Added Paths: ----------- Trunk/pcgen/code/src/java/pcgen/core/ChoiceInfo.java Modified: Trunk/pcgen/code/src/java/pcgen/core/AbilityInfo.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/AbilityInfo.java 2006-04-08 19:39:04 UTC (rev 731) +++ Trunk/pcgen/code/src/java/pcgen/core/AbilityInfo.java 2006-04-08 20:24:17 UTC (rev 732) @@ -22,17 +22,17 @@ */ package pcgen.core; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + import pcgen.core.prereq.PrereqHandler; import pcgen.core.prereq.Prerequisite; -import pcgen.core.utils.CoreUtility; import pcgen.persistence.PersistenceLayerException; import pcgen.persistence.lst.prereq.PreParserFactory; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - /** * This tiny little class replaces a simple string representation of an Ability. * Since the move to Abilities, we can no longer look up these up based solely @@ -44,13 +44,17 @@ */ public class AbilityInfo extends Object implements Comparable, Categorisable { - private String keyName; - private final String category; - private Ability realThing; - private List prereqList; - private ArrayList decorations = new ArrayList(); + protected String keyName; + protected String category; + private Ability realThing; + private List prereqList; + private ArrayList decorations; + protected char delim = '<'; + private static final String split1 = "[<>\\|]"; + private static final String split2 = "[\\[\\]\\|]"; + /** * Make a new object to hold minimal info about Abilities * @@ -81,11 +85,12 @@ * * @return Returns the Ability. */ - public final Ability getAbility() + public Ability getAbility() { if (realThing == null) { - realThing = AbilityUtilities.retrieveAbilityKeyed(this.category, this.keyName); + realThing = AbilityUtilities.retrieveAbilityKeyed(this.category, this.keyName); + decorations = new ArrayList(); if ((realThing != null) && (!realThing.getKeyName().equals(this.keyName))) { // get the decorations, throw away the name (because we already have it in keyname) @@ -144,40 +149,37 @@ * Extract the key and any prerequisites that this Ability has, store them * in the object's fields * - * @param unparsed "Item name[PRE1|PRE2|...|PREn]" + * @param */ - private void extractPrereqs(String unparsed) + protected void extractPrereqs(String unparsed) { - int start = unparsed.indexOf('['); + int start = unparsed.indexOf(delim); - if ((start < 0) || !unparsed.endsWith("]")) + if ((start < 0)) { // no Prereqs, assign directly to key field this.keyName = unparsed; } else { - // extract and assign the key from the unparsed key, prereq parameter - this.keyName = unparsed.substring(0, start); - - int end = unparsed.length() - 1; - - // extract the list of prereq strings - final String prereqString = unparsed.substring(start, end); - final List preString = CoreUtility.split(prereqString, '|'); - if (prereqList == null) { prereqList = new ArrayList(); } + List tokens = Arrays.asList(unparsed.split(delim == '<' ? split1 : split2)); + Iterator tokIt = tokens.iterator(); + + // extract and assign the choice from the unparsed string + this.keyName = (String) tokIt.next(); + try { final PreParserFactory factory = PreParserFactory.getInstance(); - for (Iterator it = preString.iterator(); it.hasNext();) + for (; tokIt.hasNext();) { - final Prerequisite prereq = factory.parse((String) it.next()); + final Prerequisite prereq = factory.parse((String) tokIt.next()); if (prereq != null) { Added: Trunk/pcgen/code/src/java/pcgen/core/ChoiceInfo.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/ChoiceInfo.java (rev 0) +++ Trunk/pcgen/code/src/java/pcgen/core/ChoiceInfo.java 2006-04-08 20:24:17 UTC (rev 732) @@ -0,0 +1,75 @@ +/* + * ChoiceInfo.java + * + * 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 + * + * Current Version: $Revision$ + * Last Editor: $Author$ + * Last Edited: $Date: 2006-03-22 22:52:02 +0000 (Wed, 22 Mar 2006) $ + * + * Copyright 2006 Andrew Wilson <nu...@so...> + */ +package pcgen.core; + +/** + * This tiny little class implements a way to associate prerequisites with a + * simple string. This is a subclass of AbilityInfo so we can reuse some of + * its code + * + * @author Andrew Wilson <nu...@so...> + */ +public class ChoiceInfo extends AbilityInfo +{ + + /** + * Make a new object to hold info about a string and some associated + * prerequisites. + * + * @param key the Key of the Ability + * @param delim the Ability's category + */ + public ChoiceInfo(String key, char delim) + { + super(); + + this.category = "NONE"; + + if (delim == '[') { + this.delim = '['; + } + + this.extractPrereqs(key); + } + + public final Ability getAbility() + { + return null; + } + + /** + * Compares this AbilityInfo Object with an Object passed in. The object + * passed in should be either an AbilityInfo Object or a PObject. + * + * @param obj the object to test against + * + * @return the result of the compare, negative integer if this should sort + * before + */ + public int compareTo(Object obj) + { + return this.keyName.compareTo(obj.toString()); + } + +} Property changes on: Trunk/pcgen/code/src/java/pcgen/core/ChoiceInfo.java ___________________________________________________________________ Name: svn:keywords + "Date Revision Author Id" Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |