From: <cpm...@us...> - 2009-01-17 04:04:33
|
Revision: 9031 http://pcgen.svn.sourceforge.net/pcgen/?rev=9031&view=rev Author: cpmeister Date: 2009-01-17 04:04:27 +0000 (Sat, 17 Jan 2009) Log Message: ----------- Partial UI Update Modified Paths: -------------- branches/cdomui/code/src/java/pcgen/gui/facade/DataSetFacade.java branches/cdomui/code/src/java/pcgen/gui/generator/CharacterCreationManager.java branches/cdomui/code/src/java/pcgen/gui/generator/FacadeGenerator.java branches/cdomui/code/src/java/pcgen/gui/generator/GeneratorFactory.java branches/cdomui/code/src/java/pcgen/gui/generator/MutableFacadeGenerator.java branches/cdomui/code/src/java/pcgen/gui/generator/skill/MutableSkillGenerator.java branches/cdomui/code/src/java/pcgen/gui/generator/skill/SkillGenerator.java Added Paths: ----------- branches/cdomui/code/src/java/pcgen/gui/generator/MutableOrderedGenerator.java Removed Paths: ------------- branches/cdomui/code/src/java/pcgen/gui/generator/AbstractFacadeGenerator.java branches/cdomui/code/src/java/pcgen/gui/generator/AbstractGenerator.java branches/cdomui/code/src/java/pcgen/gui/generator/SingletonGenerator.java Modified: branches/cdomui/code/src/java/pcgen/gui/facade/DataSetFacade.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/facade/DataSetFacade.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/facade/DataSetFacade.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -33,16 +33,25 @@ public GenericListModel<AbilityFacade> getAbilities(AbilityCatagoryFacade catagory); + public AbilityFacade getAbility(AbilityCatagoryFacade catagory, + String ability); + public GenericListModel<AbilityCatagoryFacade> getAbilityCatagories(); + public AbilityCatagoryFacade getAbilityCatagory(String catagory); + public GenericListModel<SkillFacade> getSkills(); public SkillFacade getSkill(String skill); public GenericListModel<RaceFacade> getRaces(); + public RaceFacade getRace(String race); + public GenericListModel<ClassFacade> getClasses(); + public ClassFacade getClass(String className); + public GenericListModel<TempBonusFacade> getTempBonuses(); public GenericListModel<TemplateFacade> getTemplates(); Deleted: branches/cdomui/code/src/java/pcgen/gui/generator/AbstractFacadeGenerator.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/AbstractFacadeGenerator.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/AbstractFacadeGenerator.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -1,55 +0,0 @@ -/* - * AbstractFacadeGenerator.java - * Copyright 2008 Connor Petty <cpm...@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 - * - * Created on Sep 16, 2008, 4:24:34 PM - */ -package pcgen.gui.generator; - -import java.util.HashSet; -import java.util.Set; -import pcgen.gui.facade.InfoFacade; - -/** - * - * @author Connor Petty <cpm...@us...> - */ -public abstract class AbstractFacadeGenerator<E extends InfoFacade> extends AbstractGenerator<E> - implements FacadeGenerator<E> -{ - - public AbstractFacadeGenerator(String name) - { - super(name); - } - - public boolean isSingleton() - { - return false; - } - - public Set<String> getSources() - { - Set<String> sources = new HashSet<String>(); - for (E facade : getAll()) - { - sources.add(facade.getSource()); - } - return sources; - } - -} Deleted: branches/cdomui/code/src/java/pcgen/gui/generator/AbstractGenerator.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/AbstractGenerator.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/AbstractGenerator.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -1,56 +0,0 @@ -/* - * AbstractGenerator.java - * Copyright 2008 Connor Petty <cpm...@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 - * - * Created on Sep 10, 2008, 5:50:55 PM - */ -package pcgen.gui.generator; - -import java.util.Collections; -import java.util.List; - -/** - * - * @author Connor Petty <cpm...@us...> - */ -public abstract class AbstractGenerator<E> implements Generator<E> -{ - - private String name; - - public AbstractGenerator(String name) - { - this.name = name; - } - - public List<E> getAll() - { - return Collections.emptyList(); - } - - public void reset() - { - - } - - @Override - public String toString() - { - return name; - } - -} Modified: branches/cdomui/code/src/java/pcgen/gui/generator/CharacterCreationManager.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/CharacterCreationManager.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/CharacterCreationManager.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -21,19 +21,30 @@ package pcgen.gui.generator; import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Set; +import org.jdom.DocType; +import org.jdom.Document; import pcgen.cdom.enumeration.Gender; import pcgen.gui.facade.ClassFacade; +import pcgen.gui.facade.DataSetFacade; import pcgen.gui.facade.RaceFacade; +import pcgen.gui.facade.SkillFacade; import pcgen.gui.facade.StatFacade; import pcgen.gui.generator.Generator; import pcgen.gui.util.GenericComboBoxModel; +import pcgen.util.Logging; /** * * @author Connor Petty <cpm...@us...> */ -public interface CharacterCreationManager +public class CharacterCreationManager { public static final String NAME_VALIDITY = "Name"; @@ -42,34 +53,124 @@ public static final String RACE_VALIDITY = "Race"; public static final String STATS_VALIDITY = "Stats"; public static final String CLASSES_VALIDITY = "Classes"; + private final PropertyChangeSupport support; + private final Map<String, Boolean> validityMap; - public void addPropertyChangeListener(PropertyChangeListener l); + public CharacterCreationManager(DataSetFacade data) + { + support = new PropertyChangeSupport(this); + validityMap = new HashMap<String, Boolean>(); + List<Generator<Integer>> statGenerators = new ArrayList<Generator<Integer>>(); + List<Generator<SkillFacade>> skillGenerators = new ArrayList<Generator<SkillFacade>>(); + Set<File> files = data.getGeneratorFiles(); + for (File file : files) + { + try + { + Document document = GeneratorFactory.buildDocument(file); + DocType type = document.getDocType(); + if (type.getElementName().equals("GENERATORSET")) + { + String systemid = type.getSystemID(); + if (systemid.equals("StandardModeGenerator.dtd")) + { + statGenerators.addAll(GeneratorFactory.buildStandardModeGeneratorList(document)); + } + else if (systemid.equals("PurchaseModeGenerator.dtd")) + { + statGenerators.addAll(GeneratorFactory.buildPurchaseModeGeneratorList(document)); + } + else if (systemid.equals("SkillGenerator.dtd")) + { + skillGenerators.addAll(GeneratorFactory.buildSkillGeneratorList(document, + data)); + } + } + } + catch (Exception ex) + { + Logging.errorPrint(ex.getMessage(), ex); + } + } + } - public void addPropertyChangeListener(String prop, PropertyChangeListener l); + public void addPropertyChangeListener(PropertyChangeListener l) + { + support.addPropertyChangeListener(l); + } - public void removePropertyChangeListener(PropertyChangeListener l); + public void addPropertyChangeListener(String prop, + PropertyChangeListener l) + { + support.addPropertyChangeListener(prop, l); + } + public void removePropertyChangeListener(PropertyChangeListener l) + { + support.removePropertyChangeListener(l); + } + public void removePropertyChangeListener(String prop, - PropertyChangeListener l); + PropertyChangeListener l) + { + support.removePropertyChangeListener(prop, l); + } - public boolean isCharacterValid(); + public boolean isCharacterValid() + { + return !validityMap.values().contains(Boolean.FALSE); + } - public void setValidity(String prop, boolean valid); + public boolean isCharacterNameValid() + { + return validityMap.get(NAME_VALIDITY); + } - public GenericComboBoxModel<Generator<Integer>> getAlignmentGenerators(); + public void setValidity(String prop, boolean valid) + { + boolean oldvalue = validityMap.get(prop); + validityMap.put(prop, valid); + support.firePropertyChange(prop, oldvalue, valid); + } - public GenericComboBoxModel<Generator<Gender>> getGenderGenerators(); + public GenericComboBoxModel<Generator<Integer>> getAlignmentGenerators() + { + throw new UnsupportedOperationException("Not supported yet."); + } - public GenericComboBoxModel<Generator<RaceFacade>> getRaceGenerators(); + public GenericComboBoxModel<Generator<Gender>> getGenderGenerators() + { + throw new UnsupportedOperationException("Not supported yet."); + } - public GenericComboBoxModel<Generator<ClassFacade>> getClassGenerators(); + public GenericComboBoxModel<Generator<RaceFacade>> getRaceGenerators() + { + throw new UnsupportedOperationException("Not supported yet."); + } - public GenericComboBoxModel<Generator<Integer>> getStatGenerators(); + public GenericComboBoxModel<Generator<ClassFacade>> getClassGenerators() + { + throw new UnsupportedOperationException("Not supported yet."); + } - public List<StatFacade> getStats(); + public GenericComboBoxModel<Generator<Integer>> getStatGenerators() + { + throw new UnsupportedOperationException("Not supported yet."); + } - public int getModForScore(int score); + public List<StatFacade> getStats() + { + throw new UnsupportedOperationException("Not supported yet."); + } - public GenericComboBoxModel<Generator<Integer>> getClassLevelGenerators(); + public int getModForScore(int score) + { + throw new UnsupportedOperationException("Not supported yet."); + } + public GenericComboBoxModel<Generator<Integer>> getClassLevelGenerators() + { + throw new UnsupportedOperationException("Not supported yet."); + } + } Modified: branches/cdomui/code/src/java/pcgen/gui/generator/FacadeGenerator.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/FacadeGenerator.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/FacadeGenerator.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -30,6 +30,8 @@ public interface FacadeGenerator<E extends InfoFacade> extends Generator<E> { + public int getWeight(E item); + public Set<String> getSources(); public boolean isSingleton(); Modified: branches/cdomui/code/src/java/pcgen/gui/generator/GeneratorFactory.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/GeneratorFactory.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/GeneratorFactory.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -20,19 +20,19 @@ */ package pcgen.gui.generator; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URI; +import java.util.AbstractCollection; +import java.util.AbstractList; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -55,21 +55,17 @@ import org.xml.sax.SAXException; import pcgen.base.util.RandomUtil; import pcgen.base.util.WeightedCollection; -import pcgen.cdom.enumeration.Gender; import pcgen.core.SettingsHandler; import pcgen.gui.facade.ClassFacade; import pcgen.gui.facade.DataSetFacade; import pcgen.gui.facade.InfoFacade; -import pcgen.gui.facade.RaceFacade; import pcgen.gui.facade.SkillFacade; -import pcgen.gui.facade.StatFacade; import pcgen.gui.generator.skill.MutableSkillGenerator; import pcgen.gui.generator.skill.SkillGenerator; import pcgen.gui.generator.stat.MutablePurchaseModeGenerator; import pcgen.gui.generator.stat.MutableStandardModeGenerator; import pcgen.gui.generator.stat.PurchaseModeGenerator; import pcgen.gui.generator.stat.StandardModeGenerator; -import pcgen.gui.util.GenericComboBoxModel; import pcgen.util.Logging; /** @@ -90,7 +86,6 @@ return GeneratorFactoryHolder.INSTANCE; } - private final Map<Document, List<Generator<?>>> documentMap; private final SAXBuilder builder; private final XMLOutputter outputter; @@ -100,7 +95,6 @@ builder.setEntityResolver(this); outputter = new XMLOutputter(); outputter.setFormat(Format.getPrettyFormat()); - documentMap = new HashMap<Document, List<Generator<?>>>(); } public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException @@ -120,7 +114,7 @@ } } - private static Document buildDocument(File file) + static Document buildDocument(File file) { try { @@ -174,8 +168,7 @@ File file = new File("build/classes/generators/stat/DefaultStandardGenerators.xml"); GeneratorFactory factory = new GeneratorFactory(); Document doc = factory.builder.build(file); - file = new File("build/classes/generators/stat/DefaultStandardGenerators2.xml"); - outputDocument(doc, file); + System.out.println(doc.getDocType().getSystemID()); } catch (JDOMException ex) { @@ -189,133 +182,8 @@ } } - private final class DefaultCharacterCreationManager implements CharacterCreationManager + static List<StandardModeGenerator> buildStandardModeGeneratorList(Document document) { - - private final PropertyChangeSupport support; - private final Map<String, Boolean> validityMap; - - public DefaultCharacterCreationManager(DataSetFacade data) - { - support = new PropertyChangeSupport(this); - validityMap = new HashMap<String, Boolean>(); - List<Generator<Integer>> statGenerators = new ArrayList<Generator<Integer>>(); - List<Generator<SkillFacade>> skillGenerators = new ArrayList<Generator<SkillFacade>>(); - Set<File> files = data.getGeneratorFiles(); - for (File file : files) - { - try - { - Document document = builder.build(file); - DocType type = document.getDocType(); - if (type.getElementName().equals("GENERATORSET")) - { - String systemid = type.getSystemID(); - if (systemid.equals("StandardModeGenerator.dtd")) - { - // statGenerators.addAll(buildStandardModeGeneratorList(document)); - } - else if (systemid.equals("PurchaseModeGenerator.dtd")) - { - // statGenerators.addAll(buildPurchaseModeGeneratorList(document)); - } - else if (systemid.equals("SkillGenerator.dtd")) - { - // skillGenerators.addAll(buildSkillGeneratorList(document, - // data)); - } - } - } - catch (Exception ex) - { - Logging.errorPrint(ex.getMessage(), ex); - } - } - } - - public void addPropertyChangeListener(PropertyChangeListener l) - { - support.addPropertyChangeListener(l); - } - - public void addPropertyChangeListener(String prop, - PropertyChangeListener l) - { - support.addPropertyChangeListener(prop, l); - } - - public void removePropertyChangeListener(PropertyChangeListener l) - { - support.removePropertyChangeListener(l); - } - - public void removePropertyChangeListener(String prop, - PropertyChangeListener l) - { - support.removePropertyChangeListener(prop, l); - } - - public boolean isCharacterValid() - { - return !validityMap.values().contains(Boolean.FALSE); - } - - public boolean isCharacterNameValid() - { - return validityMap.get(NAME_VALIDITY); - } - - public void setValidity(String prop, boolean valid) - { - boolean oldvalue = validityMap.get(prop); - validityMap.put(prop, valid); - support.firePropertyChange(prop, oldvalue, valid); - } - - public GenericComboBoxModel<Generator<Integer>> getAlignmentGenerators() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - public GenericComboBoxModel<Generator<Gender>> getGenderGenerators() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - public GenericComboBoxModel<Generator<RaceFacade>> getRaceGenerators() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - public GenericComboBoxModel<Generator<ClassFacade>> getClassGenerators() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - public GenericComboBoxModel<Generator<Integer>> getStatGenerators() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - public List<StatFacade> getStats() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - public int getModForScore(int score) - { - throw new UnsupportedOperationException("Not supported yet."); - } - - public GenericComboBoxModel<Generator<Integer>> getClassLevelGenerators() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - } - - private static List<StandardModeGenerator> buildStandardModeGeneratorList(Document document) - { Element root = document.getRootElement(); boolean mutable = Boolean.parseBoolean(root.getAttributeValue("mutable")); List<StandardModeGenerator> generators = new ArrayList<StandardModeGenerator>(); @@ -340,7 +208,7 @@ return generators; } - private static List<PurchaseModeGenerator> buildPurchaseModeGeneratorList(Document document) + static List<PurchaseModeGenerator> buildPurchaseModeGeneratorList(Document document) { Element root = document.getRootElement(); boolean mutable = Boolean.parseBoolean(root.getAttributeValue("mutable")); @@ -367,8 +235,8 @@ } @SuppressWarnings("unchecked") - private static List<SkillGenerator> buildSkillGeneratorList(Document document, - DataSetFacade data) + static List<SkillGenerator> buildSkillGeneratorList(Document document, + DataSetFacade data) { Element root = document.getRootElement(); boolean mutable = Boolean.parseBoolean(root.getAttributeValue("mutable")); @@ -421,6 +289,11 @@ // } // return generatorElement; // } + public static <T extends InfoFacade> FacadeGenerator<T> createSingletonGenerator(T item) + { + return new SingletonGenerator<T>(item); + } + private static Document getCustomGeneratorDocument(DataSetFacade data, String generatorType) { @@ -529,8 +402,8 @@ generator.setRandomOrder(template.isRandomOrder()); for (SkillFacade skillName : template.getAll()) { - generator.setSkillPriority(skillName, - template.getSkillPriority(skillName)); + generator.setWeight(skillName, + template.getWeight(skillName)); } } return generator; @@ -550,6 +423,11 @@ private String name; + public AbstractGenerator(String name) + { + this.name = name; + } + public AbstractGenerator(Element element) { this.name = element.getAttributeValue("name"); @@ -574,15 +452,45 @@ } private abstract static class AbstractFacadeGenerator<E extends InfoFacade> - extends AbstractGenerator<E> + extends DefaultOrderedGenerator<E> implements FacadeGenerator<E> { - public AbstractFacadeGenerator(Element element) + protected Map<E, Integer> priorityMap; + + @SuppressWarnings("unchecked") + public AbstractFacadeGenerator(Element element, DataSetFacade data) throws GeneratorParsingException { super(element); + this.priorityMap = new HashMap<E, Integer>(); + + this.items = new ArrayList<E>(priorityMap.keySet()); + + List<Element> children = element.getChildren(getValueName()); + for (Element child : children) + { + String elementName = child.getText(); + Integer weight = Integer.valueOf(child.getAttributeValue("weight")); + E facade = getFacade(data, elementName); + if (facade == null) + { + throw new GeneratorParsingException(elementName + + " not found in DataSetFacade"); + } + priorityMap.put(facade, weight); + } + reset(); } + protected abstract E getFacade(DataSetFacade data, String name); + + protected abstract String getValueName(); + + public int getWeight(E item) + { + return priorityMap.get(item); + } + public boolean isSingleton() { return false; @@ -598,8 +506,135 @@ return sources; } + @Override + protected Queue<E> createQueue() + { + if (!randomOrder) + { + Comparator<E> comparator = new Comparator<E>() + { + + public int compare(E o1, + E o2) + { + // compare the numbers in reverse in order for the highest priority + // Skills to be used first + return priorityMap.get(o2).compareTo(priorityMap.get(o1)); + } + + }; + Queue<E> queue = new PriorityQueue<E>(priorityMap.size(), + comparator); + queue.addAll(priorityMap.keySet()); + return queue; + } + return new RandomWeightedQueue(); + } + + private class RandomWeightedQueue extends WeightedCollection<E> + implements Queue<E> + { + + private E element = null; + + public RandomWeightedQueue() + { + for (E skill : priorityMap.keySet()) + { + add(skill, priorityMap.get(skill)); + } + } + + public boolean offer(E o) + { + return false; + } + + public E poll() + { + if (isEmpty()) + { + return null; + } + return remove(); + } + + public E remove() + { + E skill = element(); + remove(skill); + element = null; + return skill; + } + + public E peek() + { + if (isEmpty()) + { + return null; + } + return element(); + } + + public E element() + { + if (element == null) + { + element = getRandomValue(); + } + return element; + } + + } } + private static class SingletonGenerator<E extends InfoFacade> extends AbstractGenerator<E> + implements FacadeGenerator<E> + { + + private E item; + + public SingletonGenerator(E item) + { + super(item.toString()); + this.item = item; + } + + public E getNext() + { + return item; + } + + @Override + public List<E> getAll() + { + return Collections.singletonList(item); + } + + public boolean isSingleton() + { + return true; + } + + public Set<String> getSources() + { + return Collections.singleton(item.getSource()); + } + + public int getWeight(E item) + { + if (item.equals(this.item)) + { + return 1; + } + else + { + return 0; + } + } + + } + private abstract static class DefaultOrderedGenerator<E> extends AbstractGenerator<E> implements OrderedGenerator<E> { @@ -810,7 +845,17 @@ public void saveChanges() { - //element. + element.removeContent(); + element.setAttribute("points", Integer.toString(points)); + int max = getMaxScore(); + for (int x = min; x <= max; x++) + { + Element costElement = new Element("COST"); + costElement.setAttribute("score", Integer.toString(x)); + costElement.setText(Integer.toString(getScoreCost(x))); + element.addContent(costElement); + } + outputDocument(element.getDocument()); } } @@ -835,13 +880,6 @@ } } -// public DefaultStandardModeGenerator(String name, boolean assignable, -// List<String> diceExpressions) -// { -// super(name); -// this.assignable = assignable; -// this.diceExpressions = diceExpressions; -// } public Integer getNext() { throw new UnsupportedOperationException("Not supported yet."); @@ -871,11 +909,6 @@ this.element = element; } -// @SuppressWarnings("unchecked") -// public DefaultMutableStandardModeGenerator(String name) -// { -// super(name, false, Collections.EMPTY_LIST); -// } public void setDiceExpressions(List<String> expressions) { diceExpressions = expressions; @@ -888,147 +921,61 @@ public void saveChanges() { - throw new UnsupportedOperationException("Not supported yet."); + element.removeContent(); + element.setAttribute("assignable", Boolean.toString(assignable)); + for (String expression : diceExpressions) + { + element.addContent(new Element("STAT").setText(expression)); + } + outputDocument(element.getDocument()); } } - private static class DefaultSkillGenerator extends DefaultOrderedGenerator<SkillFacade> - implements SkillGenerator + private static class DefaultClassGenerator extends AbstractFacadeGenerator<ClassFacade> { - protected Map<SkillFacade, Integer> priorityMap; - - @SuppressWarnings("unchecked") - public DefaultSkillGenerator(Element element, DataSetFacade data) throws GeneratorParsingException + public DefaultClassGenerator(Element element, DataSetFacade data) throws GeneratorParsingException { - super(element); - this.priorityMap = new HashMap<SkillFacade, Integer>(); - List<Element> children = element.getChildren("SKILL"); - for (Element child : children) - { - String skillName = child.getText(); - Integer weight = Integer.valueOf(child.getAttributeValue("weight")); - SkillFacade skill = data.getSkill(skillName); - if (skill == null) - { - throw new GeneratorParsingException(skillName + - " skill not found in DataSetFacade"); - } - priorityMap.put(skill, weight); - } - this.items = new ArrayList<SkillFacade>(priorityMap.keySet()); - reset(); + super(element, data); } -// public DefaultSkillGenerator(String name, -// Map<SkillFacade, Integer> priorityMap, -// boolean randomOrder) -// { -// super(name, new ArrayList<SkillFacade>(priorityMap.keySet()), -// randomOrder); -// this.priorityMap = priorityMap; -// } - public int getSkillPriority(SkillFacade skill) + @Override + protected ClassFacade getFacade(DataSetFacade data, String name) { - return priorityMap.get(skill); + return data.getClass(name); } - public boolean isSingleton() + @Override + protected String getValueName() { - return false; + return "CLASS"; } - public Set<String> getSources() + } + + private static class DefaultSkillGenerator extends AbstractFacadeGenerator<SkillFacade> + implements SkillGenerator + { + + @SuppressWarnings("unchecked") + public DefaultSkillGenerator(Element element, DataSetFacade data) throws GeneratorParsingException { - Set<String> sources = new HashSet<String>(); - for (SkillFacade skill : priorityMap.keySet()) - { - sources.add(skill.getSource()); - } - return sources; + super(element, data); } @Override - protected Queue<SkillFacade> createQueue() + protected SkillFacade getFacade(DataSetFacade data, String name) { - if (!randomOrder) - { - Comparator<SkillFacade> comparator = new Comparator<SkillFacade>() - { - - public int compare(SkillFacade o1, - SkillFacade o2) - { - // compare the numbers in reverse in order for the highest priority - // Skills to be used first - return priorityMap.get(o2).compareTo(priorityMap.get(o1)); - } - - }; - Queue<SkillFacade> queue = new PriorityQueue<SkillFacade>(priorityMap.size(), - comparator); - queue.addAll(priorityMap.keySet()); - return queue; - } - return new RandomWeightedQueue(); + return data.getSkill(name); } - private class RandomWeightedQueue extends WeightedCollection<SkillFacade> - implements Queue<SkillFacade> + @Override + protected String getValueName() { - - private SkillFacade element = null; - - public RandomWeightedQueue() - { - for (SkillFacade skill : priorityMap.keySet()) - { - add(skill, priorityMap.get(skill)); - } - } - - public boolean offer(SkillFacade o) - { - return false; - } - - public SkillFacade poll() - { - if (isEmpty()) - { - return null; - } - return remove(); - } - - public SkillFacade remove() - { - SkillFacade skill = element(); - remove(skill); - element = null; - return skill; - } - - public SkillFacade peek() - { - if (isEmpty()) - { - return null; - } - return element(); - } - - public SkillFacade element() - { - if (element == null) - { - element = getRandomValue(); - } - return element; - } - + return "SKILL"; } + } private static class DefaultMutableSkillGenerator extends DefaultSkillGenerator @@ -1055,11 +1002,6 @@ return new ArrayList<SkillFacade>(priorityMap.keySet()); } - public void setSkillPriority(SkillFacade skill, int priority) - { - priorityMap.put(skill, priority); - } - public void setRandomOrder(boolean randomOrder) { this.randomOrder = randomOrder; @@ -1067,15 +1009,27 @@ public void saveChanges() { - List<Element> sources = new ArrayList<Element>(); + element.removeContent(); + element.setAttribute("type", randomOrder ? "random" : "ordered"); for (String source : getSources()) { - sources.add(new Element("SOURCE").setText(source)); + element.addContent(new Element("SOURCE").setText(source)); } - element.removeChildren("SOURCE"); - element.addContent(0, sources); + for (SkillFacade skill : priorityMap.keySet()) + { + Element skillElement = new Element("SKILL"); + skillElement.setAttribute("weight", + priorityMap.get(skill).toString()); + skillElement.setText(skill.toString()); + element.addContent(skillElement); + } outputDocument(element.getDocument()); } + public void setWeight(SkillFacade item, int weight) + { + priorityMap.put(item, weight); + } + } } Modified: branches/cdomui/code/src/java/pcgen/gui/generator/MutableFacadeGenerator.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/MutableFacadeGenerator.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/MutableFacadeGenerator.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -26,11 +26,10 @@ * * @author Connor Petty <cpm...@us...> */ -public interface MutableFacadeGenerator<E extends InfoFacade> extends FacadeGenerator<E>, MutableGenerator<E> +public interface MutableFacadeGenerator<E extends InfoFacade> extends FacadeGenerator<E>, + MutableGenerator<E> { - public void add(E element); + public void setWeight(E item, int weight); - public void remove(E element); - } Added: branches/cdomui/code/src/java/pcgen/gui/generator/MutableOrderedGenerator.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/MutableOrderedGenerator.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/generator/MutableOrderedGenerator.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -0,0 +1,32 @@ +/* + * MutableOrderedGenerator.java + * Copyright 2009 Connor Petty <cpm...@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 + * + * Created on Jan 16, 2009, 7:52:07 PM + */ + +package pcgen.gui.generator; + +/** + * + * @author Connor Petty <cpm...@us...> + */ +public interface MutableOrderedGenerator<E> extends OrderedGenerator<E>, MutableGenerator<E>{ + + public void setRandomOrder(boolean randomOrder); + +} Deleted: branches/cdomui/code/src/java/pcgen/gui/generator/SingletonGenerator.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/SingletonGenerator.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/SingletonGenerator.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -1,65 +0,0 @@ -/* - * SingletonGenerator.java - * Copyright 2008 Connor Petty <cpm...@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 - * - * Created on Aug 26, 2008, 4:13:28 PM - */ -package pcgen.gui.generator; - -import java.util.Collections; -import java.util.List; -import java.util.Set; -import pcgen.gui.facade.InfoFacade; - -/** - * - * @author Connor Petty <cpm...@us...> - */ -public class SingletonGenerator<E extends InfoFacade> extends AbstractGenerator<E> - implements FacadeGenerator<E> -{ - - private E item; - - public SingletonGenerator(E item) - { - super(item.toString()); - this.item = item; - } - - public E getNext() - { - return item; - } - - @Override - public List<E> getAll() - { - return Collections.singletonList(item); - } - - public boolean isSingleton() - { - return true; - } - - public Set<String> getSources() - { - return Collections.singleton(item.getSource()); - } - -} Modified: branches/cdomui/code/src/java/pcgen/gui/generator/skill/MutableSkillGenerator.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/skill/MutableSkillGenerator.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/skill/MutableSkillGenerator.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -21,17 +21,14 @@ package pcgen.gui.generator.skill; import pcgen.gui.facade.SkillFacade; +import pcgen.gui.generator.MutableFacadeGenerator; import pcgen.gui.generator.MutableGenerator; +import pcgen.gui.generator.MutableOrderedGenerator; /** * * @author Connor Petty <cpm...@us...> */ -public interface MutableSkillGenerator extends SkillGenerator, MutableGenerator<SkillFacade> +public interface MutableSkillGenerator extends SkillGenerator, MutableFacadeGenerator<SkillFacade>, MutableOrderedGenerator<SkillFacade> { - - public void setSkillPriority(SkillFacade skill, int priority); - - public void setRandomOrder(boolean randomOrder); - } Modified: branches/cdomui/code/src/java/pcgen/gui/generator/skill/SkillGenerator.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/generator/skill/SkillGenerator.java 2009-01-17 02:23:47 UTC (rev 9030) +++ branches/cdomui/code/src/java/pcgen/gui/generator/skill/SkillGenerator.java 2009-01-17 04:04:27 UTC (rev 9031) @@ -30,7 +30,4 @@ */ public interface SkillGenerator extends OrderedGenerator<SkillFacade>, FacadeGenerator<SkillFacade> { - - public int getSkillPriority(SkillFacade skill); - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |