From: <th...@us...> - 2008-02-24 18:58:50
|
Revision: 5289 http://pcgen.svn.sourceforge.net/pcgen/?rev=5289&view=rev Author: thpr Date: 2008-02-24 10:55:51 -0800 (Sun, 24 Feb 2008) Log Message: ----------- CDOM: Checkin 7 of ?? for the following changes: Major changes to support merge with trunk (backs out .equals changes in pcgen.core that were causing extremely hard to track errors) Breaks out 6.x parsers to avoid cross-contamination errors (see above, among others) Fixes methodology of creating Spell CAST/KNOWN, etc. (old method failed for editor context) Fixes abbreviation methodology to allow reference by abbreviation and unparsing Fixes .COPY methodology to allow editor context to respect .COPY Parses most KIT tokens 1883178 SUBSTITUTIONCLASSLEVEL needs parsing 1883177 SUBCLASSLEVEL needs parsing 1884027 Global KEY should be symmetric in behavior 1883183 Change CHOOSE to support SELECT= Modified Paths: -------------- branches/cdom/code/src/java/pcgen/persistence/PersistenceManager.java branches/cdom/code/src/java/pcgen/persistence/SystemLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/AbilityCategoryLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/AbilityLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/AbilityLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/AddLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/AddLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/ArmorProfLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/ArmorProfLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/AutoLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/AutoLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/CampaignLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/ChooseLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/ChooseLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/CompanionModLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/DeityLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/DeityLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/DeprecatedToken.java branches/cdom/code/src/java/pcgen/persistence/lst/DomainLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/DomainLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/EquipmentLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/EquipmentLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/EquipmentModifierLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/EquipmentModifierLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/FeatLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/GlobalLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/KitLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/KitLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/LanguageLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/LanguageLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/LstLineFileLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/LstObjectFileLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/LstSystemLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/LstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/LstUtils.java branches/cdom/code/src/java/pcgen/persistence/lst/PCClassLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/PCTemplateLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/PCTemplateLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/PObjectLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/RaceLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/RaceLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/RemoveLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/RemoveLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/ShieldProfLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/ShieldProfLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/SkillLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/SkillLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/SpellLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/SpellLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/SubClassLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/SubClassLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/TokenStore.java branches/cdom/code/src/java/pcgen/persistence/lst/WeaponProfLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/WeaponProfLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/output/prereq/PrerequisiteMultWriter.java branches/cdom/code/src/java/pcgen/persistence/lst/utils/FeatParser.java Removed Paths: ------------- branches/cdom/code/src/java/pcgen/persistence/AssociatedChanges.java branches/cdom/code/src/java/pcgen/persistence/AssociatedCollectionChanges.java branches/cdom/code/src/java/pcgen/persistence/CategorizedReferenceContext.java branches/cdom/code/src/java/pcgen/persistence/Changes.java branches/cdom/code/src/java/pcgen/persistence/CollectionChanges.java branches/cdom/code/src/java/pcgen/persistence/ConsolidatedGraphCommitStrategy.java branches/cdom/code/src/java/pcgen/persistence/ConsolidatedListCommitStrategy.java branches/cdom/code/src/java/pcgen/persistence/ConsolidatedObjectCommitStrategy.java branches/cdom/code/src/java/pcgen/persistence/ContextQueue.java branches/cdom/code/src/java/pcgen/persistence/EditorLoadContext.java branches/cdom/code/src/java/pcgen/persistence/GraphCommitStrategy.java branches/cdom/code/src/java/pcgen/persistence/GraphContext.java branches/cdom/code/src/java/pcgen/persistence/GroupReferenceContext.java branches/cdom/code/src/java/pcgen/persistence/ListChanges.java branches/cdom/code/src/java/pcgen/persistence/ListCommitStrategy.java branches/cdom/code/src/java/pcgen/persistence/ListContext.java branches/cdom/code/src/java/pcgen/persistence/LoadContext.java branches/cdom/code/src/java/pcgen/persistence/ObjectCommitStrategy.java branches/cdom/code/src/java/pcgen/persistence/ObjectContext.java branches/cdom/code/src/java/pcgen/persistence/ReferenceContext.java branches/cdom/code/src/java/pcgen/persistence/ReferenceManufacturer.java branches/cdom/code/src/java/pcgen/persistence/RuntimeLoadContext.java branches/cdom/code/src/java/pcgen/persistence/SimpleReferenceContext.java branches/cdom/code/src/java/pcgen/persistence/lst/AbstractToken.java branches/cdom/code/src/java/pcgen/persistence/lst/BonusLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/CDOMCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/CDOMToken.java branches/cdom/code/src/java/pcgen/persistence/lst/ChooseCDOMLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/ChooseCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/ChooseLstGlobalQualifierToken.java branches/cdom/code/src/java/pcgen/persistence/lst/ChooseLstQualifierToken.java branches/cdom/code/src/java/pcgen/persistence/lst/DeferredToken.java branches/cdom/code/src/java/pcgen/persistence/lst/EqModChooseCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/EquipmentLstCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/EquipmentModifierLstCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/GenericLstLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/GlobalLstCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/LstLeveledObjectFileLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/LstLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/PCClassClassLstCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/PCClassClassLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/PCClassLevelLoader.java branches/cdom/code/src/java/pcgen/persistence/lst/PCClassLevelLstCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/PCClassLevelLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/PCClassUniversalLstCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/PCClassUniversalLstToken.java branches/cdom/code/src/java/pcgen/persistence/lst/PrimitiveToken.java branches/cdom/code/src/java/pcgen/persistence/lst/QualifierToken.java branches/cdom/code/src/java/pcgen/persistence/lst/RaceLstCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/SubClassLstCompatibilityToken.java branches/cdom/code/src/java/pcgen/persistence/lst/utils/TokenUtilities.java Deleted: branches/cdom/code/src/java/pcgen/persistence/AssociatedChanges.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/AssociatedChanges.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/AssociatedChanges.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,25 +0,0 @@ -package pcgen.persistence; - -import java.util.Collection; - -import pcgen.base.util.MapToList; -import pcgen.cdom.base.AssociatedPrereqObject; -import pcgen.cdom.base.LSTWriteable; - -public interface AssociatedChanges<T> -{ - public boolean hasRemovedItems(); - - public boolean includesGlobalClear(); - - public boolean hasAddedItems(); - - public Collection<LSTWriteable> getAdded(); - - public Collection<LSTWriteable> getRemoved(); - - public MapToList<LSTWriteable, AssociatedPrereqObject> getAddedAssociations(); - - public MapToList<LSTWriteable, AssociatedPrereqObject> getRemovedAssociations(); - -} Deleted: branches/cdom/code/src/java/pcgen/persistence/AssociatedCollectionChanges.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/AssociatedCollectionChanges.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/AssociatedCollectionChanges.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,64 +0,0 @@ -package pcgen.persistence; - -import java.util.Collection; - -import pcgen.base.util.MapToList; -import pcgen.cdom.base.AssociatedPrereqObject; -import pcgen.cdom.base.LSTWriteable; - -public class AssociatedCollectionChanges<T> implements AssociatedChanges<T> -{ - private MapToList<LSTWriteable, AssociatedPrereqObject> positive; - private MapToList<LSTWriteable, AssociatedPrereqObject> negative; - private boolean clear; - - public AssociatedCollectionChanges( - MapToList<LSTWriteable, AssociatedPrereqObject> added, - MapToList<LSTWriteable, AssociatedPrereqObject> removed, - boolean globallyCleared) - { - positive = added; - negative = removed; - clear = globallyCleared; - } - - public boolean includesGlobalClear() - { - return clear; - } - - public boolean isEmpty() - { - return !clear && !hasAddedItems() && !hasRemovedItems(); - } - - public Collection<LSTWriteable> getAdded() - { - return positive.getKeySet(); - } - - public boolean hasAddedItems() - { - return positive != null && !positive.isEmpty(); - } - - public Collection<LSTWriteable> getRemoved() - { - return negative.getKeySet(); - } - - public boolean hasRemovedItems() - { - return negative != null && !negative.isEmpty(); - } - - public MapToList<LSTWriteable, AssociatedPrereqObject> getAddedAssociations() - { - return positive; - } - - public MapToList<LSTWriteable, AssociatedPrereqObject> getRemovedAssociations() - { - return negative; - } -} Deleted: branches/cdom/code/src/java/pcgen/persistence/CategorizedReferenceContext.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/CategorizedReferenceContext.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/CategorizedReferenceContext.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,466 +0,0 @@ -/* - * Copyright 2007 (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.persistence; - -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import pcgen.base.lang.CaseInsensitiveString; -import pcgen.base.util.TripleKeyMap; -import pcgen.base.util.TripleKeyMapToInstanceList; -import pcgen.cdom.base.CDOMCategorizedSingleRef; -import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; -import pcgen.cdom.base.CategorizedCDOMObject; -import pcgen.cdom.base.Category; -import pcgen.core.Ability; -import pcgen.core.PCClass; -import pcgen.core.PObject; -import pcgen.core.SettingsHandler; -import pcgen.util.Logging; -import pcgen.util.PropertyFactory; - -public class CategorizedReferenceContext -{ - - private TripleKeyMapToInstanceList<Class, Category, CaseInsensitiveString, CategorizedCDOMObject> duplicates = - new TripleKeyMapToInstanceList<Class, Category, CaseInsensitiveString, CategorizedCDOMObject>(); - - private TripleKeyMap<Class, Category, CaseInsensitiveString, CategorizedCDOMObject> active = - new TripleKeyMap<Class, Category, CaseInsensitiveString, CategorizedCDOMObject>(); - - private TripleKeyMap<Class, Category, CaseInsensitiveString, CDOMCategorizedSingleRef> referenced = - new TripleKeyMap<Class, Category, CaseInsensitiveString, CDOMCategorizedSingleRef>(); - - public <T extends CategorizedCDOMObject<T>> void registerWithKey( - Class<T> cl, Category<T> cat, T obj, String key) - { - CaseInsensitiveString cis = new CaseInsensitiveString(key); - if (active.containsKey(cl, cat, cis)) - { - duplicates.addToListFor(cl, cat, cis, obj); - } - else - { - active.put(cl, cat, cis, obj); - } - } - - public <T extends PObject & CategorizedCDOMObject<T>> T silentlyGetConstructedCDOMObject( - Class<T> c, Category<T> cat, String val) - { - CaseInsensitiveString cis = new CaseInsensitiveString(val); - CategorizedCDOMObject<?> po = active.get(c, cat, cis); - if (po != null) - { - if (duplicates.containsListFor(c, cat, cis)) - { - Logging.errorPrint("Reference to Constructed " - + c.getSimpleName() + " " + val + " is ambiguous"); - } - return (T) po; - } - return null; - } - - public <T extends PObject & CategorizedCDOMObject<T>> T getConstructedCDOMObject( - Class<T> c, Category<T> cat, String val) - { - T obj = silentlyGetConstructedCDOMObject(c, cat, val); - if (obj == null) - { - Logging.errorPrint("Someone expected " + c.getSimpleName() + " " - + cat + " " + val + " to exist."); - Thread.dumpStack(); - } - return obj; - } - - public <T extends PObject & CategorizedCDOMObject<T>> T constructCDOMObject( - Class<T> c, String val) - { - if (val.equals("")) - { - throw new IllegalArgumentException("Cannot build Empty Name"); - } - try - { - if (!CategorizedCDOMObject.class.isAssignableFrom(c)) - { - throw new IllegalArgumentException(c.getSimpleName() + " " - + val); - } - T obj = c.newInstance(); - obj.setName(val); - registerWithKey(c, obj.getCDOMCategory(), obj, val); - return obj; - } - catch (InstantiationException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - catch (IllegalAccessException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - throw new IllegalArgumentException(c + " " + val); - } - - public <T extends CategorizedCDOMObject<T>> void reassociateReference( - String value, T obj) - { - String oldKey = obj.getKeyName(); - if (oldKey.equalsIgnoreCase(value)) - { - Logging.debugPrint("Worthless Key change encountered: " - + obj.getDisplayName() + " " + oldKey); - } - CaseInsensitiveString cis = new CaseInsensitiveString(oldKey); - Class<T> cl = (Class<T>) obj.getClass(); - Category<T> cat = obj.getCDOMCategory(); - if (active.get(cl, cat, cis).equals(obj)) - { - List<CategorizedCDOMObject> list = - duplicates.getListFor(cl, cat, cis); - if (list == null) - { - // No replacement - active.remove(cl, cat, cis); - } - else - { - CategorizedCDOMObject newActive = - duplicates.getItemFor(cl, cat, cis, 0); - duplicates.removeFromListFor(cl, cat, cis, newActive); - active.put(cl, cat, cis, newActive); - } - } - else - { - duplicates.removeFromListFor(cl, cat, cis, obj); - } - obj.setKeyName(value); - registerWithKey(cl, cat, obj, value); - } - - public <T extends PObject & CategorizedCDOMObject<T>> void reassociateReference( - Category<T> cat, T obj) - { - Category<T> oldCat = obj.getCDOMCategory(); - if (oldCat == null && cat == null || oldCat != null - && oldCat.equals(cat)) - { - Logging.errorPrint("Worthless Category change encountered: " - + obj.getDisplayName() + " " + oldCat); - } - Class<T> cl = (Class<T>) obj.getClass(); - String key = obj.getKeyName(); - CaseInsensitiveString cis = new CaseInsensitiveString(key); - if (active.get(cl, oldCat, cis).equals(obj)) - { - List<CategorizedCDOMObject> list = - duplicates.getListFor(cl, oldCat, cis); - if (list == null) - { - // No replacement - active.remove(cl, oldCat, cis); - } - else - { - CategorizedCDOMObject newActive = - duplicates.getItemFor(cl, oldCat, cis, 0); - duplicates.removeFromListFor(cl, oldCat, cis, newActive); - active.put(cl, oldCat, cis, newActive); - } - } - else - { - duplicates.removeFromListFor(cl, oldCat, cis, obj); - } - obj.setCDOMCategory(cat); - registerWithKey(cl, cat, obj, key); - } - - public <T extends PObject & CategorizedCDOMObject<T>> void forgetCDOMObjectKeyed( - Class<T> cl, Category<T> cat, String forgetKey) - { - CaseInsensitiveString cis = new CaseInsensitiveString(forgetKey); - active.remove(cl, cat, cis); - duplicates.removeListFor(cl, cat, cis); - } - - public <T extends PObject & CategorizedCDOMObject<T>> Set<T> getConstructedCDOMObjects( - Class<T> name, Category<T> cat) - { - Set values = active.values(name, cat); - return values; - } - - public <T extends PObject & CategorizedCDOMObject<T>> boolean containsConstructedCDOMObject( - Class<T> name, Category<T> cat, String key) - { - return active.containsKey(name, cat, new CaseInsensitiveString(key)); - } - - public <T extends CategorizedCDOMObject<T>> T cloneConstructedCDOMObject( - Class<T> cl, T orig, String newKey) - { - try - { - T clone = cl.cast(((CDOMObject) orig).clone()); - clone.setName(newKey); - clone.setKeyName(newKey); - clone.setCDOMCategory(orig.getCDOMCategory()); - registerWithKey(cl, orig.getCDOMCategory(), clone, newKey); - return clone; - } - catch (CloneNotSupportedException e) - { - Logging.errorPrint(PropertyFactory.getFormattedString( - "Errors.LstFileLoader.CopyNotSupported", //$NON-NLS-1$ - cl.getName(), orig.getKeyName(), newKey)); - } - return null; - } - - public <T extends PObject & CategorizedCDOMObject<T>> CDOMCategorizedSingleRef<T> getCDOMReference( - Class<T> c, Category<T> cat, String val) - { - // TODO Auto-generated method stub - // TODO This is incorrect, but a hack for now :) - if (val.equals("")) - { - throw new IllegalArgumentException("Cannot reference Empty Name"); - } - if (val.startsWith("TYPE")) - { - throw new IllegalArgumentException(val); - } - if (val.equalsIgnoreCase("ANY")) - { - throw new IllegalArgumentException(val); - } - if (val.equalsIgnoreCase("ALL")) - { - throw new IllegalArgumentException(val); - } - if (val.startsWith("PRE")) - { - throw new IllegalArgumentException(val); - } - if (val.startsWith("CHOOSE")) - { - throw new IllegalArgumentException(val); - } - if (val.startsWith("TIMES=")) - { - throw new IllegalArgumentException(val); - } - if (c.equals(Ability.class)) - { - // FIXME This destroys ASSOCIATION information, so need to figure - // out how to preserve it - needs to be stripped before it gets here - // :( - int parenLoc = val.indexOf("("); - if (parenLoc != -1 && val.charAt(parenLoc - 1) != ' ') - { - val = val.substring(0, parenLoc); - } - } - if (c.equals(PCClass.class)) - { - if (val.startsWith("CLASS")) - { - throw new IllegalArgumentException(val); - } - else if (val.startsWith("SUB")) - { - throw new IllegalArgumentException(val); - } - else - { - try - { - Integer.parseInt(val); - throw new IllegalArgumentException(val); - } - catch (NumberFormatException nfe) - { - // Want this! - } - } - } - - CaseInsensitiveString cis = new CaseInsensitiveString(val); - CDOMCategorizedSingleRef<T> ref = referenced.get(c, cat, cis); - if (ref == null) - { - ref = new CDOMCategorizedSingleRef<T>(c, cat, val); - referenced.put(c, cat, cis, ref); - } - return ref; - } - - public boolean validate() - { - boolean returnGood = true; - for (Class key1 : duplicates.getKeySet()) - { - for (Category key2 : duplicates.getSecondaryKeySet(key1)) - { - for (CaseInsensitiveString second : duplicates - .getTertiaryKeySet(key1, key2)) - { - if (SettingsHandler.isAllowOverride()) - { - List<CategorizedCDOMObject> list = - duplicates.getListFor(key1, key2, second); - CategorizedCDOMObject good = - active.get(key1, key2, second); - for (int i = 0; i < list.size(); i++) - { - CategorizedCDOMObject dupe = list.get(i); - // If the new object is more recent than the current - // one, use the new object - final Date origDate = - good.getSourceEntry().getSourceBook() - .getDate(); - final Date dupeDate = - dupe.getSourceEntry().getSourceBook() - .getDate(); - if ((dupeDate != null) - && ((origDate == null) || ((dupeDate - .compareTo(origDate) > 0)))) - { - duplicates.removeFromListFor(key1, key2, - second, good); - good = dupe; - } - else - { - duplicates.removeFromListFor(key1, key2, - second, dupe); - } - } - if (!good.equals(active.get(key1, key2, second))) - { - active.put(key1, key2, second, good); - } - } - else - { - Logging.errorPrint("More than one " - + key1.getSimpleName() + " with key/name " + second - + " and category " + key2 + " was built"); - returnGood = false; - } - } - } - } - for (Class key1 : active.getKeySet()) - { - for (Category cat : active.getSecondaryKeySet(key1)) - { - for (CaseInsensitiveString s : active.getTertiaryKeySet(key1, - cat)) - { - String keyName = active.get(key1, cat, s).getKeyName(); - if (!keyName.equals(s.toString())) - { - Logging.errorPrint("Magical Key Change: " + s + " to " - + keyName); - returnGood = false; - } - } - } - } - return validateConstructed(); - } - - private boolean validateConstructed() - { - boolean returnGood = true; - for (Class cl : referenced.getKeySet()) - { - // System.err.println(cl); - for (Category cat : referenced.getSecondaryKeySet(cl)) - { - // System.err.println(cat); - for (CaseInsensitiveString s : referenced.getTertiaryKeySet(cl, - cat)) - { - // System.err.println(s); - if (!active.containsKey(cl, cat, s)) - { - Logging.errorPrint("Unconstructed Reference: " - + cl.getSimpleName() + " " + cat + " " + s); - returnGood = false; - } - } - } - } - return returnGood; - } - - public void clear() - { - duplicates.clear(); - active.clear(); - referenced.clear(); - } - - public <T extends PObject & CategorizedCDOMObject<T>> ReferenceManufacturer<T> getReferenceManufacturer( - final Class<T> c, final Category<T> cat) - { - if (!Ability.class.equals(c)) - { - throw new IllegalArgumentException(c.getSimpleName() - + " is not a Categorized Class"); - } - return new ReferenceManufacturer<T>() - { - public CDOMReference<T> getReference(String key) - { - return getCDOMReference(c, cat, key); - } - - public Class<T> getCDOMClass() - { - return c; - } - }; - } - - public Collection<CategorizedCDOMObject> getAllConstructedCDOMObjects() - { - Set<CategorizedCDOMObject> set = new HashSet<CategorizedCDOMObject>(); - for (Class<?> cl : active.getKeySet()) - { - for (Category<?> cat : active.getSecondaryKeySet(cl)) - { - set.addAll(active.values(cl, cat)); - } - } - return set; - } -} Deleted: branches/cdom/code/src/java/pcgen/persistence/Changes.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/Changes.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/Changes.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,19 +0,0 @@ -package pcgen.persistence; - -import java.util.Collection; - -public interface Changes<T> -{ - public boolean hasAddedItems(); - - public boolean hasRemovedItems(); - - public boolean includesGlobalClear(); - - public Collection<T> getAdded(); - - public Collection<T> getRemoved(); - - public boolean isEmpty(); - -} Deleted: branches/cdom/code/src/java/pcgen/persistence/CollectionChanges.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/CollectionChanges.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/CollectionChanges.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,48 +0,0 @@ -package pcgen.persistence; - -import java.util.Collection; - -public class CollectionChanges<T> implements Changes<T> -{ - private Collection<T> positive; - private Collection<T> negative; - private boolean clear; - - public CollectionChanges(Collection<T> added, Collection<T> 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<T> getRemoved() - { - return negative; - } - - public boolean hasRemovedItems() - { - return negative != null && !negative.isEmpty(); - } -} Deleted: branches/cdom/code/src/java/pcgen/persistence/ConsolidatedGraphCommitStrategy.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/ConsolidatedGraphCommitStrategy.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/ConsolidatedGraphCommitStrategy.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,284 +0,0 @@ -package pcgen.persistence; - -import java.net.URI; -import java.util.Collection; -import java.util.List; - -import pcgen.base.graph.core.DirectionalEdge; -import pcgen.base.io.FileLocationFactory; -import pcgen.base.util.MapToList; -import pcgen.base.util.TreeMapToList; -import pcgen.base.util.WeightedCollection; -import pcgen.cdom.base.AssociatedPrereqObject; -import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; -import pcgen.cdom.base.LSTWriteable; -import pcgen.cdom.base.PrereqObject; -import pcgen.cdom.graph.PCGenGraph; -import pcgen.cdom.graph.PCGraphEdge; -import pcgen.cdom.graph.PCGraphGrantsEdge; -import pcgen.persistence.lst.utils.TokenUtilities; - -public class ConsolidatedGraphCommitStrategy implements GraphCommitStrategy -{ - private URI sourceURI; - - private URI extractURI; - - private final PCGenGraph graph; - - private FileLocationFactory locFac = new FileLocationFactory(); - - public ConsolidatedGraphCommitStrategy(PCGenGraph pgg) - { - graph = pgg; - } - - public URI getExtractURI() - { - return extractURI; - } - - public void setExtractURI(URI uri) - { - extractURI = uri; - } - - public URI getSourceURI() - { - return sourceURI; - } - - public void setSourceURI(URI uri) - { - sourceURI = uri; - locFac.newFile(); - } - - public void setLine(int line) - { - locFac.setLine(line); - } - - private PrereqObject getInternalizedNode(PrereqObject pro) - { - PrereqObject node = graph.getInternalizedNode(pro); - if (node == null) - { - node = pro; - } - return node; - } - - public PCGraphGrantsEdge grant(String sourceToken, CDOMObject obj, - PrereqObject pro) - { - PrereqObject node = getInternalizedNode(pro); - graph.addNode(node); - PCGraphGrantsEdge edge = new PCGraphGrantsEdge(obj, node, sourceToken); - graph.addEdge(edge); - return edge; - } - - public void remove(String tokenName, CDOMObject obj, PrereqObject child) - { - List<PCGraphEdge> outwardEdgeList = graph.getOutwardEdgeList(obj); - if (outwardEdgeList != null) - { - for (PCGraphEdge edge : outwardEdgeList) - { - if (edge.getSourceToken().equals(tokenName)) - { - for (PrereqObject node : edge.getAdjacentNodes()) - { - if (edge.getNodeInterfaceType(node) == DirectionalEdge.SINK - && node.equals(child)) - { - // CONSIDER Clean up parent/child if no remaining - // links? - graph.removeEdge(edge); - break; - } - } - } - } - } - } - - public void removeAll(String tokenName, CDOMObject obj) - { - List<PCGraphEdge> outwardEdgeList = graph.getOutwardEdgeList(obj); - if (outwardEdgeList != null) - { - for (PCGraphEdge edge : outwardEdgeList) - { - if (edge.getSourceToken().equals(tokenName)) - { - graph.removeEdge(edge); - } - } - } - } - - public <T extends PrereqObject & LSTWriteable> AssociatedChanges<T> getChangesFromToken( - String tokenName, CDOMObject pct, Class<T> name) - { - return new GraphChangesFacade<T>(tokenName, pct, name); - } - - private class GraphChangesFacade<T extends PrereqObject & LSTWriteable> - implements AssociatedChanges<T> - { - - private final String token; - - private final CDOMObject source; - - private final Class<T> childClass; - - public GraphChangesFacade(String tokenName, CDOMObject cdo, - Class<T> name) - { - token = tokenName; - childClass = name; - source = cdo; - } - - public Collection<LSTWriteable> getAdded() - { - Collection<LSTWriteable> coll = - new WeightedCollection<LSTWriteable>( - TokenUtilities.WRITEABLE_SORTER); - List<PCGraphEdge> outwardEdgeList = - graph.getOutwardEdgeList(source); - if (outwardEdgeList == null) - { - return coll; - } - for (PCGraphEdge edge : outwardEdgeList) - { - if (!edge.getSourceToken().equals(token)) - { - continue; - } - for (PrereqObject node : edge.getAdjacentNodes()) - { - if (edge.getNodeInterfaceType(node) != DirectionalEdge.SINK) - { - continue; - } - if (childClass.isAssignableFrom(node.getClass())) - { - // TODO Can the edge actually return an LSTWriteable? - coll.add((LSTWriteable) node); - break; - } - else if (node instanceof CDOMReference) - { - CDOMReference<?> cdr = (CDOMReference) node; - if (cdr.getReferenceClass().equals(childClass)) - { - coll.add((LSTWriteable) node); - break; - } - } - } - } - return coll; - } - - public MapToList<LSTWriteable, AssociatedPrereqObject> getAddedAssociations() - { - TreeMapToList<LSTWriteable, AssociatedPrereqObject> coll = - new TreeMapToList<LSTWriteable, AssociatedPrereqObject>( - TokenUtilities.WRITEABLE_SORTER); - List<PCGraphEdge> outwardEdgeList = - graph.getOutwardEdgeList(source); - if (outwardEdgeList == null) - { - return coll; - } - for (PCGraphEdge edge : outwardEdgeList) - { - if (!edge.getSourceToken().equals(token)) - { - continue; - } - for (PrereqObject node : edge.getAdjacentNodes()) - { - if (edge.getNodeInterfaceType(node) != DirectionalEdge.SINK) - { - continue; - } - if (childClass.isAssignableFrom(node.getClass())) - { - // TODO Can the edge actually return an LSTWriteable? - coll.addToListFor((LSTWriteable) node, edge); - break; - } - else if (node instanceof CDOMReference) - { - CDOMReference<?> cdr = (CDOMReference) node; - if (cdr.getReferenceClass().equals(childClass)) - { - coll.addToListFor((LSTWriteable) node, edge); - break; - } - } - } - } - return coll; - } - - public Collection<LSTWriteable> getRemoved() - { - return null; - } - - public MapToList<LSTWriteable, AssociatedPrereqObject> getRemovedAssociations() - { - return null; - } - - public boolean hasAddedItems() - { - List<PCGraphEdge> outwardEdgeList = - graph.getOutwardEdgeList(source); - if (outwardEdgeList == null) - { - return false; - } - for (PCGraphEdge edge : outwardEdgeList) - { - if (!edge.getSourceToken().equals(token)) - { - continue; - } - for (PrereqObject node : edge.getAdjacentNodes()) - { - if (edge.getNodeInterfaceType(node) != DirectionalEdge.SINK) - { - continue; - } - if (childClass.isAssignableFrom(node.getClass()) - || (node instanceof CDOMReference && ((CDOMReference) node) - .getReferenceClass().equals(childClass))) - { - return true; - } - } - } - return false; - } - - public boolean hasRemovedItems() - { - return false; - } - - public boolean includesGlobalClear() - { - return false; - } - } -} Deleted: branches/cdom/code/src/java/pcgen/persistence/ConsolidatedListCommitStrategy.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/ConsolidatedListCommitStrategy.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/ConsolidatedListCommitStrategy.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,196 +0,0 @@ -package pcgen.persistence; - -import java.net.URI; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -import pcgen.base.util.DoubleKeyMapToList; -import pcgen.base.util.MapToList; -import pcgen.base.util.TreeMapToList; -import pcgen.cdom.base.AssociatedPrereqObject; -import pcgen.cdom.base.CDOMList; -import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; -import pcgen.cdom.base.LSTWriteable; -import pcgen.cdom.enumeration.AssociationKey; -import pcgen.cdom.inst.SimpleAssociatedObject; -import pcgen.persistence.lst.utils.TokenUtilities; - -public class ConsolidatedListCommitStrategy implements ListCommitStrategy -{ - private URI sourceURI; - - private URI extractURI; - - public URI getExtractURI() - { - return extractURI; - } - - public void setExtractURI(URI extractURI) - { - this.extractURI = extractURI; - } - - public URI getSourceURI() - { - return sourceURI; - } - - public void setSourceURI(URI sourceURI) - { - this.sourceURI = sourceURI; - } - - private final DoubleKeyMapToList<CDOMReference, LSTWriteable, AssociatedPrereqObject> masterList = - new DoubleKeyMapToList<CDOMReference, LSTWriteable, AssociatedPrereqObject>(); - - public AssociatedPrereqObject addToMasterList(String tokenName, - CDOMObject owner, CDOMReference<? extends CDOMList<?>> list, - LSTWriteable allowed) - { - SimpleAssociatedObject a = new SimpleAssociatedObject(); - a.setAssociation(AssociationKey.OWNER, owner); - a.setAssociation(AssociationKey.TOKEN, tokenName); - masterList.addToListFor(list, allowed, a); - return a; - } - - public Changes<CDOMReference> getMasterListChanges(String tokenName, - CDOMObject owner, Class<? extends CDOMList<?>> cl) - { - ArrayList<CDOMReference> list = new ArrayList<CDOMReference>(); - LIST: for (CDOMReference<? extends CDOMList<?>> ref : masterList - .getKeySet()) - { - if (!cl.equals(ref.getReferenceClass())) - { - continue; - } - for (LSTWriteable allowed : masterList.getSecondaryKeySet(ref)) - { - for (AssociatedPrereqObject assoc : masterList.getListFor(ref, - allowed)) - { - if (owner - .equals(assoc.getAssociation(AssociationKey.OWNER)) - && tokenName.equals(assoc - .getAssociation(AssociationKey.TOKEN))) - { - list.add(ref); - continue LIST; - } - } - } - } - return new CollectionChanges<CDOMReference>(list, null, false); - } - - public void clearAllMasterLists(String tokenName, CDOMObject owner) - { - for (CDOMReference<? extends CDOMList<?>> ref : masterList.getKeySet()) - { - for (LSTWriteable allowed : masterList.getSecondaryKeySet(ref)) - { - for (AssociatedPrereqObject assoc : masterList.getListFor(ref, - allowed)) - { - if (owner - .equals(assoc.getAssociation(AssociationKey.OWNER)) - && tokenName.equals(assoc - .getAssociation(AssociationKey.TOKEN))) - { - masterList.removeFromListFor(ref, allowed, assoc); - } - } - } - } - } - - public AssociatedChanges<LSTWriteable> getChangesInMasterList( - String tokenName, CDOMObject owner, - CDOMReference<? extends CDOMList<?>> swl) - { - Set<LSTWriteable> added = masterList.getSecondaryKeySet(swl); - MapToList<LSTWriteable, AssociatedPrereqObject> owned = - new TreeMapToList<LSTWriteable, AssociatedPrereqObject>( - TokenUtilities.WRITEABLE_SORTER); - for (LSTWriteable lw : added) - { - List<AssociatedPrereqObject> list = masterList.getListFor(swl, lw); - for (AssociatedPrereqObject assoc : list) - { - if (owner.equals(assoc.getAssociation(AssociationKey.OWNER))) - { - owned.addToListFor(lw, assoc); - break; - } - } - } - if (owned.isEmpty()) - { - return null; - } - return new AssociatedCollectionChanges<LSTWriteable>(owned, null, false); - } - - public boolean hasMasterLists() - { - return !masterList.isEmpty(); - } - - public <T extends CDOMObject> AssociatedPrereqObject addToList( - String tokenName, CDOMObject owner, - CDOMReference<? extends CDOMList<T>> list, CDOMReference<T> allowed) - { - SimpleAssociatedObject a = new SimpleAssociatedObject(); - a.setAssociation(AssociationKey.TOKEN, tokenName); - owner.putToList(list, allowed, a); - return a; - } - - public <T extends CDOMObject> void removeFromList(String tokenName, - CDOMObject owner, CDOMReference<? extends CDOMList<T>> swl, - CDOMReference<T> ref) - { - // TODO Auto-generated method stub - - } - - public void removeAllFromList(String tokenName, CDOMObject owner, - CDOMReference<? extends CDOMList<?>> swl) - { - // TODO Auto-generated method stub - - } - - public Collection<CDOMReference<? extends CDOMList<? extends CDOMObject>>> getChangedLists( - CDOMObject owner, Class<? extends CDOMList<?>> cl) - { - ArrayList<CDOMReference<? extends CDOMList<? extends CDOMObject>>> list = - new ArrayList<CDOMReference<? extends CDOMList<? extends CDOMObject>>>(); - for (CDOMReference<? extends CDOMList<? extends CDOMObject>> ref : owner - .getModifiedLists()) - { - if (cl.equals(ref.getReferenceClass())) - { - list.add(ref); - } - } - return list; - } - - public <T extends CDOMObject> AssociatedChanges<CDOMReference<T>> getChangesInList( - String tokenName, CDOMObject owner, - CDOMReference<? extends CDOMList<T>> swl) - { - if (owner.hasListMods(swl)) - { - // TODO Deal with matching the token... :/ - return new ListChanges<T>(owner, null, swl, false); - } - return null; - } -} Deleted: branches/cdom/code/src/java/pcgen/persistence/ConsolidatedObjectCommitStrategy.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/ConsolidatedObjectCommitStrategy.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/ConsolidatedObjectCommitStrategy.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,150 +0,0 @@ -/* - * Copyright 2007 (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.persistence; - -import java.net.URI; -import java.util.Set; - -import pcgen.base.formula.Formula; -import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.Constants; -import pcgen.cdom.enumeration.FormulaKey; -import pcgen.cdom.enumeration.IntegerKey; -import pcgen.cdom.enumeration.ListKey; -import pcgen.cdom.enumeration.ObjectKey; -import pcgen.cdom.enumeration.StringKey; -import pcgen.cdom.enumeration.VariableKey; - -public class ConsolidatedObjectCommitStrategy implements ObjectCommitStrategy -{ - private URI sourceURI; - - private URI extractURI; - - public URI getExtractURI() - { - return extractURI; - } - - public void setExtractURI(URI extractURI) - { - this.extractURI = extractURI; - } - - public URI getSourceURI() - { - return sourceURI; - } - - public void setSourceURI(URI sourceURI) - { - this.sourceURI = sourceURI; - } - - public String getString(CDOMObject cdo, StringKey sk) - { - return cdo.get(sk); - } - - public Integer getInteger(CDOMObject cdo, IntegerKey ik) - { - return cdo.get(ik); - } - - public Formula getFormula(CDOMObject cdo, FormulaKey fk) - { - return cdo.get(fk); - } - - public Formula getVariable(CDOMObject obj, VariableKey key) - { - return obj.get(key); - } - - public Set<VariableKey> getVariableKeys(CDOMObject obj) - { - return obj.getVariableKeys(); - } - - public <T> T getObject(CDOMObject cdo, ObjectKey<T> ik) - { - return cdo.get(ik); - } - - public <T> Changes<T> getListChanges(CDOMObject cdo, ListKey<T> lk) - { - return new CollectionChanges<T>(cdo.getListFor(lk), null, false); - } - - public void put(CDOMObject cdo, StringKey sk, String s) - { - if (s == null) - { - cdo.remove(sk); - } - else if (s.startsWith(Constants.LST_DOT_CLEAR)) - { - throw new IllegalArgumentException("Cannot set a value to " + s); - } - else - { - cdo.put(sk, s); - } - } - - public <T> void put(CDOMObject cdo, ObjectKey<T> sk, T s) - { - cdo.put(sk, s); - } - - public void put(CDOMObject cdo, IntegerKey ik, Integer i) - { - cdo.put(ik, i); - } - - public void put(CDOMObject cdo, FormulaKey fk, Formula f) - { - cdo.put(fk, f); - } - - public void put(CDOMObject obj, VariableKey vk, Formula f) - { - obj.put(vk, f); - } - - public boolean containsListFor(CDOMObject cdo, ListKey<?> key) - { - return cdo.containsListFor(key); - } - - public <T> void addToList(CDOMObject cdo, ListKey<T> key, T value) - { - cdo.addToListFor(key, value); - } - - public void removeList(CDOMObject cdo, ListKey<?> lk) - { - cdo.removeListFor(lk); - } - - public <T> void removeFromList(CDOMObject cdo, ListKey<T> lk, T val) - { - cdo.removeFromListFor(lk, val); - } - -} Deleted: branches/cdom/code/src/java/pcgen/persistence/ContextQueue.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/ContextQueue.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/ContextQueue.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,41 +0,0 @@ -package pcgen.persistence; - -import java.util.ArrayList; -import java.util.List; - -import pcgen.base.lang.Command; -import pcgen.cdom.base.AssociatedPrereqObject; -import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.PrereqObject; - -public class ContextQueue -{ - - private final GraphContext graph; - - public ContextQueue(GraphContext gc) - { - if (gc == null) - { - throw new IllegalArgumentException(); - } - graph = gc; - } - - private final List<Command> commands = new ArrayList<Command>(); - - public void commit() - { - for (Command c : commands) - { - c.execute(); - } - } - - public AssociatedPrereqObject grant(String sourceToken, CDOMObject obj, - PrereqObject pro) - { - return graph.grant(sourceToken, obj, pro); - } - -} Deleted: branches/cdom/code/src/java/pcgen/persistence/EditorLoadContext.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/EditorLoadContext.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/EditorLoadContext.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,22 +0,0 @@ -package pcgen.persistence; - -public class EditorLoadContext extends LoadContext -{ - private final String contextType; - - public EditorLoadContext() - { - super(new GraphContext(), new ListContext(), new ObjectContext()); - contextType = "Editor"; - } - - /* - * Get the type of context we're running in (either Editor or Runtime) - */ - @Override - public String getContextType() - { - return contextType; - } - -} Deleted: branches/cdom/code/src/java/pcgen/persistence/GraphCommitStrategy.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/GraphCommitStrategy.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/GraphCommitStrategy.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,45 +0,0 @@ -/* - * Copyright 2007 (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.persistence; - -import java.net.URI; - -import pcgen.cdom.base.AssociatedPrereqObject; -import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.LSTWriteable; -import pcgen.cdom.base.PrereqObject; - -public interface GraphCommitStrategy -{ - - public void setSourceURI(URI source); - - public void setExtractURI(URI uri); - - public void setLine(int line); - - public AssociatedPrereqObject grant(String sourceToken, CDOMObject obj, - PrereqObject pro); - - public void remove(String tokenName, CDOMObject obj, PrereqObject child); - - public void removeAll(String tokenName, CDOMObject obj); - - public <T extends PrereqObject & LSTWriteable> AssociatedChanges<T> getChangesFromToken( - String tokenName, CDOMObject pct, Class<T> name); -} Deleted: branches/cdom/code/src/java/pcgen/persistence/GraphContext.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/GraphContext.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/GraphContext.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,433 +0,0 @@ -/* - * Copyright 2007 (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.persistence; - -import java.net.URI; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -import pcgen.base.io.FileLocation; -import pcgen.base.io.FileLocationFactory; -import pcgen.base.util.DoubleKeyMapToList; -import pcgen.base.util.MapToList; -import pcgen.base.util.TreeMapToList; -import pcgen.base.util.TripleKeyMapToList; -import pcgen.base.util.WeightedCollection; -import pcgen.cdom.base.AssociatedPrereqObject; -import pcgen.cdom.base.CDOMObject; -import pcgen.cdom.base.CDOMReference; -import pcgen.cdom.base.LSTWriteable; -import pcgen.cdom.base.PrereqObject; -import pcgen.cdom.enumeration.AssociationKey; -import pcgen.cdom.inst.SimpleAssociatedObject; -import pcgen.persistence.lst.utils.TokenUtilities; - -public class GraphContext -{ - - private final TrackingGraphCommitStrategy edits = - new TrackingGraphCommitStrategy(); - - private final GraphCommitStrategy commit; - - public GraphContext() - { - commit = new TrackingGraphCommitStrategy(); - } - - public GraphContext(GraphCommitStrategy commitStrategy) - { - if (commitStrategy == null) - { - throw new IllegalArgumentException("Commit Strategy cannot be null"); - } - commit = commitStrategy; - } - - public URI getSourceURI() - { - return edits.getSourceURI(); - } - - public void setSourceURI(URI sourceURI) - { - edits.setSourceURI(sourceURI); - commit.setSourceURI(sourceURI); - } - - public URI getExtractURI() - { - return edits.getExtractURI(); - } - - public void setExtractURI(URI extractURI) - { - edits.setExtractURI(extractURI); - commit.setExtractURI(extractURI); - } - - public void setLine(int i) - { - edits.setLine(i); - commit.setLine(i); - } - - public AssociatedPrereqObject grant(String sourceToken, CDOMObject obj, - PrereqObject pro) - { - return edits.grant(sourceToken, obj, pro); - } - - public void remove(String sourceToken, CDOMObject obj, PrereqObject pro) - { - edits.remove(sourceToken, obj, pro); - } - - public void removeAll(String tokenName, CDOMObject obj) - { - edits.removeAll(tokenName, obj); - } - - public void commit() - { - for (String token : edits.globalRemoveSet.getKeySet()) - { - for (CDOMObject owner : edits.globalRemoveSet - .getSecondaryKeySet(token)) - { - commit.removeAll(token, owner); - } - } - for (String token : edits.removed.getKeySet()) - { - for (CDOMObject owner : edits.removed.getSecondaryKeySet(token)) - { - for (PrereqObject child : edits.removed.getTertiaryKeySet( - token, owner)) - { - commit.remove(token, owner, child); - } - } - } - for (String token : edits.added.getKeySet()) - { - for (CDOMObject owner : edits.added.getSecondaryKeySet(token)) - { - for (PrereqObject child : edits.added.getTertiaryKeySet(token, - owner)) - { - for (AssociatedPrereqObject assoc : edits.added.getListFor( - token, owner, child)) - { - AssociatedPrereqObject edge = - commit.grant(token, owner, child); - Collection<AssociationKey<?>> associationKeys = - assoc.getAssociationKeys(); - for (AssociationKey<?> ak : associationKeys) - { - setAssoc(assoc, edge, ak); - } - edge.addAllPrerequisites(assoc.getPrerequisiteList()); - } - } - } - } - decommit(); - } - - private <T> void setAssoc(AssociatedPrereqObject assoc, - AssociatedPrereqObject edge, AssociationKey<T> ak) - { - edge.setAssociation(ak, assoc.getAssociation(ak)); - } - - public void decommit() - { - edits.decommit(); - } - - public <T extends PrereqObject & LSTWriteable> AssociatedChanges<T> getChangesFromToken( - String tokenName, CDOMObject pct, Class<T> name) - { - return commit.getChangesFromToken(tokenName, pct, name); - } - - public class TrackingGraphCommitStrategy implements GraphCommitStrategy - { - - private DoubleKeyMapToList<String, CDOMObject, URI> globalRemoveSet = - new DoubleKeyMapToList<String, CDOMObject, URI>(); - - private TripleKeyMapToList<String, CDOMObject, PrereqObject, AssociatedPrereqObject> added = - new TripleKeyMapToList<String, CDOMObject, PrereqObject, AssociatedPrereqObject>(); - - private TripleKeyMapToList<String, CDOMObject, PrereqObject, AssociatedPrereqObject> removed = - new TripleKeyMapToList<String, CDOMObject, PrereqObject, AssociatedPrereqObject>(); - - private URI sourceURI; - - private URI extractURI; - - private FileLocationFactory locFac = new FileLocationFactory(); - - public void setSourceURI(URI source) - { - sourceURI = source; - locFac.newFile(); - } - - public URI getSourceURI() - { - return sourceURI; - } - - public void setExtractURI(URI uri) - { - extractURI = uri; - } - - public URI getExtractURI() - { - return extractURI; - } - - public AssociatedPrereqObject grant(String sourceToken, CDOMObject obj, - PrereqObject pro) - { - SimpleAssociatedObject sao = new SimpleAssociatedObject(); - added.addToListFor(sourceToken, obj, pro, sao); - sao.setAssociation(AssociationKey.SOURCE_URI, sourceURI); - FileLocation loc = locFac.getFileLocation(); - sao.setAssociation(AssociationKey.FILE_LOCATION, loc); - return sao; - } - - public void remove(String sourceToken, CDOMObject obj, PrereqObject pro) - { - SimpleAssociatedObject sao = new SimpleAssociatedObject(); - removed.addToListFor(sourceToken, obj, pro, sao); - sao.setAssociation(AssociationKey.SOURCE_URI, sourceURI); - sao.setAssociation(AssociationKey.FILE_LOCATION, locFac - .getFileLocation()); - sao.setAssociation(AssociationKey.RETIRED_BY, sourceURI); - } - - public void removeAll(String tokenName, CDOMObject obj) - { - Set<PrereqObject> children = - added.getTertiaryKeySet(tokenName, obj); - for (PrereqObject child : children) - { - List<AssociatedPrereqObject> assoc = - added.getListFor(tokenName, obj, child); - for (AssociatedPrereqObject apo : assoc) - { - if (extractURI != null) - { - if (!extractURI.equals(apo - .getAssociation(AssociationKey.SOURCE_URI))) - { - continue; - } - } - apo.setAssociation(AssociationKey.IRRELEVANT, Boolean.TRUE); - } - } - globalRemoveSet.addToListFor(tokenName, obj, sourceURI); - } - - public <T extends PrereqObject & LSTWriteable> AssociatedChanges<T> getChangesFromToken( - String tokenName, CDOMObject pct, Class<T> name) - { - return new EditorGraphChanges<T>(tokenName, pct, name); - } - - public class EditorGraphChanges<T> implements AssociatedChanges<T> - { - - private final String token; - - private final CDOMObject source; - - private final Class<T> childClass; - - public EditorGraphChanges(String tokenName, CDOMObject cdo, - Class<T> name) - { - token = tokenName; - childClass = name; - source = cdo; - } - - public Collection<LSTWriteable> getAdded() - { - return getSimple(added); - } - - private Collection<LSTWriteable> getSimple( - TripleKeyMapToList<String, CDOMObject, PrereqObject, AssociatedPrereqObject> mtl) - { - Collection<LSTWriteable> coll = - new WeightedCollection<LSTWriteable>( - TokenUtilities.WRITEABLE_SORTER); - Set<PrereqObject> children = - mtl.getTertiaryKeySet(token, source); - if (children == null) - { - return coll; - } - for (PrereqObject child : children) - { - List<AssociatedPrereqObject> assocs = - mtl.getListFor(token, source, child); - if (!childClass.isAssignableFrom(child.getClass()) - && !(child instanceof CDOMReference && ((CDOMReference) child) - .getReferenceClass().equals(childClass))) - { - continue; - } - for (AssociatedPrereqObject assoc : assocs) - { - if (extractURI != null) - { - if (!extractURI.equals(assoc - .getAssociation(AssociationKey.SOURCE_URI))) - { - continue; - } - } - coll.add((LSTWriteable) child); - } - } - return coll; - } - - public MapToList<LSTWriteable, AssociatedPrereqObject> getAddedAssociations() - { - TreeMapToList<LSTWriteable, AssociatedPrereqObject> coll = - new TreeMapToList<LSTWriteable, AssociatedPrereqObject>( - TokenUtilities.WRITEABLE_SORTER); - Set<PrereqObject> children = - added.getTertiaryKeySet(token, source); - if (children == null) - { - return coll; - } - for (PrereqObject child : children) - { - List<AssociatedPrereqObject> assocs = - added.getListFor(token, source, child); - if (childClass != null - && !childClass.isAssignableFrom(child.getClass()) - && !(child instanceof CDOMReference && ((CDOMReference) child) - .getReferenceClass().equals(childClass))) - { - continue; - } - for (AssociatedPrereqObject assoc : assocs) - { - if (extractURI != null) - { - if (!extractURI.equals(assoc - .getAssociation(AssociationKey.SOURCE_URI))) - { - continue; - } - } - coll.addToListFor((LSTWriteable) child, assoc); - } - } - return coll; - } - - public Collection<LSTWriteable> getRemoved() - { - return getSimple(removed); - } - - public MapToList<LSTWriteable, AssociatedPrereqObject> getRemovedAssociations() - { - return null; - } - - public boolean hasAddedItems() - { - return getPossess(added); - } - - private boolean getPossess( - TripleKeyMapToList<String, CDOMObject, PrereqObject, AssociatedPrereqObject> mtl) - { - Set<PrereqObject> children = - mtl.getTertiaryKeySet(token, source); - if (children == null) - { - return false; - } - for (PrereqObject child : children) - { - List<AssociatedPrereqObject> assocs = - mtl.getListFor(token, source, child); - if (!childClass.isAssignableFrom(child.getClass()) - && !(child instanceof CDOMReference && ((CDOMReference) child) - .getReferenceClass().equals(childClass))) - { - continue; - } - for (AssociatedPrereqObject assoc : assocs) - { - if (extractURI != null) - { - if (!extractURI.equals(assoc - .getAssociation(AssociationKey.SOURCE_URI))) - { - continue; - } - } - return true; - } - } - return false; - } - - public boolean hasRemovedItems() - { - return getPossess(removed); - } - - public boolean includesGlobalClear() - { - return globalRemoveSet - .containsInList(token, source, extractURI); - } - } - - public void setLine(int i) - { - locFac.setLine(i); - } - - public void decommit() - { - globalRemoveSet.clear(); - added.clear(); - removed.clear(); - } - } -} Deleted: branches/cdom/code/src/java/pcgen/persistence/GroupReferenceContext.java =================================================================== --- branches/cdom/code/src/java/pcgen/persistence/GroupReferenceContext.java 2008-02-24 18:53:28 UTC (rev 5288) +++ branches/cdom/code/src/java/pcgen/persistence/GroupReferenceContext.java 2008-02-24 18:55:51 UTC (rev 5289) @@ -1,174 +0,0 @@ -/* - * Copyright 2007 (C) Tom Parker <th...@us...> - * - * This library is free software; you can redist... [truncated message content] |