From: <lh...@us...> - 2008-08-11 16:45:28
|
Revision: 118 http://tinytim.svn.sourceforge.net/tinytim/?rev=118&view=rev Author: lheuer Date: 2008-08-11 16:45:18 +0000 (Mon, 11 Aug 2008) Log Message: ----------- - Added IIntObjectMap factory methods to the CollectionFactory - Inlined implementations of IIntObjectMap Modified Paths: -------------- tinytim/trunk/src/main/java/org/tinytim/core/CopyUtils.java tinytim/trunk/src/main/java/org/tinytim/core/DuplicateRemovalUtils.java tinytim/trunk/src/main/java/org/tinytim/core/IConstruct.java tinytim/trunk/src/main/java/org/tinytim/core/IScope.java tinytim/trunk/src/main/java/org/tinytim/core/IScoped.java tinytim/trunk/src/main/java/org/tinytim/core/MergeUtils.java tinytim/trunk/src/main/java/org/tinytim/core/Scope.java tinytim/trunk/src/main/java/org/tinytim/utils/CollectionFactory.java tinytim/trunk/src/main/java/org/tinytim/utils/ICollectionFactory.java tinytim/trunk/src/main/java/org/tinytim/utils/IIntObjectMap.java tinytim/trunk/src/main/java/org/tinytim/utils/JavaCollectionFactory.java tinytim/trunk/src/main/java/org/tinytim/utils/TroveCollectionFactory.java tinytim/trunk/src/main/java/org/tinytim/utils/WeakObjectRegistry.java Removed Paths: ------------- tinytim/trunk/src/main/java/org/tinytim/utils/IntObjectMap.java tinytim/trunk/src/main/java/org/tinytim/utils/JavaIntObjectMap.java tinytim/trunk/src/main/java/org/tinytim/utils/TroveIntObjectMap.java Modified: tinytim/trunk/src/main/java/org/tinytim/core/CopyUtils.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/core/CopyUtils.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/core/CopyUtils.java 2008-08-11 16:45:18 UTC (rev 118) @@ -25,7 +25,6 @@ import org.tinytim.utils.CollectionFactory; import org.tinytim.utils.IIntObjectMap; -import org.tinytim.utils.IntObjectMap; import org.tmapi.core.Association; import org.tmapi.core.Construct; import org.tmapi.core.Locator; @@ -179,7 +178,7 @@ */ private static void _copyCharacteristics(Topic topic, TopicImpl targetTopic, Map<Topic, Topic> mergeMap) { - IIntObjectMap<Reifiable> sigs = IntObjectMap.create(); + IIntObjectMap<Reifiable> sigs = CollectionFactory.createIntObjectMap(); for (Occurrence occ: targetTopic.getOccurrences()) { sigs.put(SignatureGenerator.generateSignature(occ), occ); } @@ -229,7 +228,7 @@ */ private static void _copyVariants(Name source, NameImpl target, Map<Topic, Topic> mergeMap) { - IIntObjectMap<Variant> sigs = IntObjectMap.create(); + IIntObjectMap<Variant> sigs = CollectionFactory.createIntObjectMap(); for (Variant variant: target.getVariants()) { sigs.put(SignatureGenerator.generateSignature(variant), variant); } @@ -324,7 +323,7 @@ private static void _copyAssociations(TopicMap source, TopicMapImpl target, Map<Topic, Topic> mergeMap) { Set<Association> assocs = target.getAssociations(); - IIntObjectMap<Association> sigs = IntObjectMap.create(assocs.size()); + IIntObjectMap<Association> sigs = CollectionFactory.createIntObjectMap(assocs.size()); for (Association assoc: assocs) { sigs.put(SignatureGenerator.generateSignature(assoc), assoc); } Modified: tinytim/trunk/src/main/java/org/tinytim/core/DuplicateRemovalUtils.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/core/DuplicateRemovalUtils.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/core/DuplicateRemovalUtils.java 2008-08-11 16:45:18 UTC (rev 118) @@ -23,8 +23,8 @@ import java.util.ArrayList; import java.util.Collection; +import org.tinytim.utils.CollectionFactory; import org.tinytim.utils.IIntObjectMap; -import org.tinytim.utils.IntObjectMap; import org.tmapi.core.Association; import org.tmapi.core.Name; import org.tmapi.core.Occurrence; @@ -56,7 +56,7 @@ for (Topic topic: tm.getTopics()) { removeDuplicates(topic); } - IIntObjectMap<Association> sig2Assoc = IntObjectMap.create(); + IIntObjectMap<Association> sig2Assoc = CollectionFactory.createIntObjectMap(); TypeInstanceIndex typeInstanceIdx = tm.getIndexManager().getTypeInstanceIndex(); if (!typeInstanceIdx.isAutoUpdated()) { typeInstanceIdx.reindex(); @@ -99,7 +99,7 @@ * @param name The name from which the duplicates should be removed. */ public static void removeDuplicates(Name name) { - IIntObjectMap<Variant> sigs = IntObjectMap.create(); + IIntObjectMap<Variant> sigs = CollectionFactory.createIntObjectMap(); for (Variant variant: new ArrayList<Variant>(name.getVariants())) { int sig = SignatureGenerator.generateSignature(variant); Variant existing = sigs.get(sig); @@ -119,7 +119,7 @@ * @param occs */ private static void _removeDuplicateOccurrences(Collection<Occurrence> occs) { - IIntObjectMap<Occurrence> sigs = IntObjectMap.create(occs.size()); + IIntObjectMap<Occurrence> sigs = CollectionFactory.createIntObjectMap(occs.size()); Occurrence existing = null; for (Occurrence occ: new ArrayList<Occurrence>(occs)) { int sig = SignatureGenerator.generateSignature(occ); @@ -140,7 +140,7 @@ * @param names */ private static void _removeDuplicateNames(Collection<Name> names) { - IIntObjectMap<Name> sigs = IntObjectMap.create(names.size()); + IIntObjectMap<Name> sigs = CollectionFactory.createIntObjectMap(names.size()); Name existing = null; for (Name name: new ArrayList<Name>(names)) { removeDuplicates(name); @@ -163,7 +163,7 @@ * @param assoc The association to remove duplicate roles from. */ public static void removeDuplicates(Association assoc) { - IIntObjectMap<Role> sig2Role = IntObjectMap.create(); + IIntObjectMap<Role> sig2Role = CollectionFactory.createIntObjectMap(); Role existing = null; for (Role role: new ArrayList<Role>(assoc.getRoles())) { int sig = SignatureGenerator.generateSignature(role); Modified: tinytim/trunk/src/main/java/org/tinytim/core/IConstruct.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/core/IConstruct.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/core/IConstruct.java 2008-08-11 16:45:18 UTC (rev 118) @@ -26,7 +26,7 @@ * * * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ + * @version $Rev$ - $Date$ */ public interface IConstruct extends Construct { Modified: tinytim/trunk/src/main/java/org/tinytim/core/IScope.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/core/IScope.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/core/IScope.java 2008-08-11 16:45:18 UTC (rev 118) @@ -30,7 +30,7 @@ * This interface is not meant to be used outside of the tinyTiM package. * * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ + * @version $Rev$ - $Date$ */ public interface IScope extends Iterable<Topic> { Modified: tinytim/trunk/src/main/java/org/tinytim/core/IScoped.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/core/IScoped.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/core/IScoped.java 2008-08-11 16:45:18 UTC (rev 118) @@ -26,7 +26,7 @@ * * * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ + * @version $Rev$ - $Date$ */ public interface IScoped extends Scoped, IConstruct { Modified: tinytim/trunk/src/main/java/org/tinytim/core/MergeUtils.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/core/MergeUtils.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/core/MergeUtils.java 2008-08-11 16:45:18 UTC (rev 118) @@ -25,8 +25,8 @@ import java.util.List; import org.tinytim.index.IIndexManager; +import org.tinytim.utils.CollectionFactory; import org.tinytim.utils.IIntObjectMap; -import org.tinytim.utils.IntObjectMap; import org.tmapi.core.Association; import org.tmapi.core.Construct; import org.tmapi.core.Locator; @@ -121,7 +121,7 @@ for(Topic type: source.getTypes()) { target.addType(type); } - IIntObjectMap<Reifiable> sigs = IntObjectMap.create(); + IIntObjectMap<Reifiable> sigs = CollectionFactory.createIntObjectMap(); for (Occurrence occ: target.getOccurrences()) { sigs.put(SignatureGenerator.generateSignature(occ), occ); } @@ -177,7 +177,7 @@ * @param target The association which takes the role characteristics. */ static void moveRoleCharacteristics(Association source, Association target) { - IIntObjectMap<Role> sigs = IntObjectMap.create(); + IIntObjectMap<Role> sigs = CollectionFactory.createIntObjectMap(); for (Role role: target.getRoles()) { sigs.put(SignatureGenerator.generateSignature(role), role); } @@ -195,7 +195,7 @@ * @param target The target to add the variants to. */ static void moveVariants(Name source, Name target) { - IIntObjectMap<Variant> sigs = IntObjectMap.create(); + IIntObjectMap<Variant> sigs = CollectionFactory.createIntObjectMap(); for (Variant var: target.getVariants()) { sigs.put(SignatureGenerator.generateSignature(var), var); } Modified: tinytim/trunk/src/main/java/org/tinytim/core/Scope.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/core/Scope.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/core/Scope.java 2008-08-11 16:45:18 UTC (rev 118) @@ -33,7 +33,7 @@ * * * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ + * @version $Rev$ - $Date$ */ final class Scope implements IScope { Modified: tinytim/trunk/src/main/java/org/tinytim/utils/CollectionFactory.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/CollectionFactory.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/CollectionFactory.java 2008-08-11 16:45:18 UTC (rev 118) @@ -24,12 +24,11 @@ import java.util.Set; - /** * * * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ + * @version $Rev$ - $Date$ */ public final class CollectionFactory { @@ -105,4 +104,12 @@ return _COLL_FACTORY.createSet(); } + public static <E> IIntObjectMap<E> createIntObjectMap() { + return _COLL_FACTORY.createIntObjectMap(); + } + + public static <E> IIntObjectMap<E> createIntObjectMap(int size) { + return _COLL_FACTORY.createIntObjectMap(size); + } + } Modified: tinytim/trunk/src/main/java/org/tinytim/utils/ICollectionFactory.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/ICollectionFactory.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/ICollectionFactory.java 2008-08-11 16:45:18 UTC (rev 118) @@ -33,6 +33,10 @@ */ interface ICollectionFactory { + <E> IIntObjectMap<E> createIntObjectMap(); + + <E> IIntObjectMap<E> createIntObjectMap(int size); + /** * Creates a {@link java.util.Set} with the specified initial <code>size</code>. * Modified: tinytim/trunk/src/main/java/org/tinytim/utils/IIntObjectMap.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/IIntObjectMap.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/IIntObjectMap.java 2008-08-11 16:45:18 UTC (rev 118) @@ -24,7 +24,7 @@ * * * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ + * @version $Rev$ - $Date$ */ public interface IIntObjectMap<V> { Deleted: tinytim/trunk/src/main/java/org/tinytim/utils/IntObjectMap.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/IntObjectMap.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/IntObjectMap.java 2008-08-11 16:45:18 UTC (rev 118) @@ -1,57 +0,0 @@ -/* - * This is tinyTiM, a tiny Topic Maps engine. - * - * Copyright (C) 2008 Lars Heuer (heuer[at]semagia.com) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ -package org.tinytim.utils; - -/** - * - * - * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ - */ -public class IntObjectMap { - - private static final boolean _TROVE_AVAILABLE; - - static { - boolean available = false; - try { - // Probe if Trove is available. - Class.forName("gnu.trove.THashSet"); - available = true; - } - catch (Exception ex) { - - } - _TROVE_AVAILABLE = available; - } - - private IntObjectMap() { - // noop. - } - - public static <V> IIntObjectMap<V> create() { - return _TROVE_AVAILABLE ? new TroveIntObjectMap<V>() : new JavaIntObjectMap<V>(); - } - - public static <V> IIntObjectMap<V> create(int size) { - return _TROVE_AVAILABLE ? new TroveIntObjectMap<V>(size) : new JavaIntObjectMap<V>(size); - } -} Modified: tinytim/trunk/src/main/java/org/tinytim/utils/JavaCollectionFactory.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/JavaCollectionFactory.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/JavaCollectionFactory.java 2008-08-11 16:45:18 UTC (rev 118) @@ -38,6 +38,22 @@ final class JavaCollectionFactory implements ICollectionFactory { /* (non-Javadoc) + * @see org.tinytim.utils.ICollectionFactory#createIntObjectMap() + */ + @Override + public <E> IIntObjectMap<E> createIntObjectMap() { + return new JavaIntObjectMap<E>(); + } + + /* (non-Javadoc) + * @see org.tinytim.utils.ICollectionFactory#createIntObjectMap(int) + */ + @Override + public <E> IIntObjectMap<E> createIntObjectMap(int size) { + return new JavaIntObjectMap<E>(size); + } + + /* (non-Javadoc) * @see org.tinytim.ICollectionFactory#createMap(int) */ public <K, V> Map<K, V> createMap(int size) { @@ -157,4 +173,36 @@ _map.clear(); } } + + private static final class JavaIntObjectMap<V> implements IIntObjectMap<V> { + + private final Map<Integer, V> _map; + + JavaIntObjectMap() { + _map = new HashMap<Integer, V>(); + } + + JavaIntObjectMap(int size) { + _map = new HashMap<Integer, V>(size); + } + + /* (non-Javadoc) + * @see org.tinytim.utils.IIntObjectMap#get(int) + */ + public V get(int key) { + return _map.get(key); + } + + /* (non-Javadoc) + * @see org.tinytim.utils.IIntObjectMap#put(int, java.lang.Object) + */ + public V put(int key, V value) { + return _map.put(Integer.valueOf(key), value); + } + + public void clear() { + _map.clear(); + } + + } } Deleted: tinytim/trunk/src/main/java/org/tinytim/utils/JavaIntObjectMap.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/JavaIntObjectMap.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/JavaIntObjectMap.java 2008-08-11 16:45:18 UTC (rev 118) @@ -1,62 +0,0 @@ -/* - * This is tinyTiM, a tiny Topic Maps engine. - * - * Copyright (C) 2008 Lars Heuer (heuer[at]semagia.com) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ -package org.tinytim.utils; - -import java.util.HashMap; -import java.util.Map; - -/** - * - * - * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ - */ -final class JavaIntObjectMap<V> implements IIntObjectMap<V> { - - private final Map<Integer, V> _map; - - JavaIntObjectMap() { - _map = new HashMap<Integer, V>(); - } - - JavaIntObjectMap(int size) { - _map = new HashMap<Integer, V>(size); - } - - /* (non-Javadoc) - * @see org.tinytim.utils.IIntObjectMap#get(int) - */ - public V get(int key) { - return _map.get(key); - } - - /* (non-Javadoc) - * @see org.tinytim.utils.IIntObjectMap#put(int, java.lang.Object) - */ - public V put(int key, V value) { - return _map.put(Integer.valueOf(key), value); - } - - public void clear() { - _map.clear(); - } - -} Modified: tinytim/trunk/src/main/java/org/tinytim/utils/TroveCollectionFactory.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/TroveCollectionFactory.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/TroveCollectionFactory.java 2008-08-11 16:45:18 UTC (rev 118) @@ -22,6 +22,7 @@ import gnu.trove.THashMap; import gnu.trove.THashSet; +import gnu.trove.TIntObjectHashMap; import gnu.trove.TObjectIdentityHashingStrategy; import java.util.Map; @@ -37,6 +38,16 @@ */ final class TroveCollectionFactory implements ICollectionFactory { + @Override + public <E> IIntObjectMap<E> createIntObjectMap() { + return new TroveIntObjectMap<E>(); + } + + @Override + public <E> IIntObjectMap<E> createIntObjectMap(int size) { + return new TroveIntObjectMap<E>(size); + } + /* (non-Javadoc) * @see org.tinytim.ICollectionFactory#createMap(int) */ @@ -94,4 +105,35 @@ } + private static final class TroveIntObjectMap<V> implements IIntObjectMap<V> { + + private final TIntObjectHashMap<V> _map; + + TroveIntObjectMap() { + _map = new TIntObjectHashMap<V>(); + } + + TroveIntObjectMap(int size) { + _map = new TIntObjectHashMap<V>(size); + } + + /* (non-Javadoc) + * @see org.tinytim.utils.IIntObjectMap#get(int) + */ + public V get(int key) { + return _map.get(key); + } + + /* (non-Javadoc) + * @see org.tinytim.utils.IIntObjectMap#put(int, java.lang.Object) + */ + public V put(int key, V value) { + return _map.put(key, value); + } + + public void clear() { + _map.clear(); + } + + } } Deleted: tinytim/trunk/src/main/java/org/tinytim/utils/TroveIntObjectMap.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/TroveIntObjectMap.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/TroveIntObjectMap.java 2008-08-11 16:45:18 UTC (rev 118) @@ -1,61 +0,0 @@ -/* - * This is tinyTiM, a tiny Topic Maps engine. - * - * Copyright (C) 2008 Lars Heuer (heuer[at]semagia.com) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ -package org.tinytim.utils; - -import gnu.trove.TIntObjectHashMap; - -/** - * - * - * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ - */ -final class TroveIntObjectMap<V> implements IIntObjectMap<V> { - - private final TIntObjectHashMap<V> _map; - - TroveIntObjectMap() { - _map = new TIntObjectHashMap<V>(); - } - - TroveIntObjectMap(int size) { - _map = new TIntObjectHashMap<V>(size); - } - - /* (non-Javadoc) - * @see org.tinytim.utils.IIntObjectMap#get(int) - */ - public V get(int key) { - return _map.get(key); - } - - /* (non-Javadoc) - * @see org.tinytim.utils.IIntObjectMap#put(int, java.lang.Object) - */ - public V put(int key, V value) { - return _map.put(key, value); - } - - public void clear() { - _map.clear(); - } - -} Modified: tinytim/trunk/src/main/java/org/tinytim/utils/WeakObjectRegistry.java =================================================================== --- tinytim/trunk/src/main/java/org/tinytim/utils/WeakObjectRegistry.java 2008-08-11 13:42:49 UTC (rev 117) +++ tinytim/trunk/src/main/java/org/tinytim/utils/WeakObjectRegistry.java 2008-08-11 16:45:18 UTC (rev 118) @@ -30,7 +30,7 @@ * * * @author Lars Heuer (heuer[at]semagia.com) <a href="http://www.semagia.com/">Semagia</a> - * @version $Rev:$ - $Date:$ + * @version $Rev$ - $Date$ */ public final class WeakObjectRegistry<E> extends AbstractSet<E> { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |