Deprecated DSet.toArray. Pretending like arrays are parameterized collections

is a bad idea and will lead to pain. Nixed the one place where toArray was used
(which was a serous pig's breakfast itself).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6402 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2011-01-01 01:15:33 +00:00
parent 328ff30506
commit 1db66920d2
2 changed files with 46 additions and 46 deletions
@@ -25,8 +25,11 @@ import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
@@ -35,6 +38,7 @@ import javax.swing.JTable;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.samskivert.util.ComparableArrayList;
@@ -219,7 +223,7 @@ public class DSetEditor<E extends DSet.Entry> extends JPanel
_accessor.updateEntry(_setName, (DSet.Entry)ce.getArgument());
}
public void setData (ComparableArrayList<Comparable<Object>> keys, Object[] data)
public void setData (ComparableArrayList<Comparable<Object>> keys, Collection<?> data)
{
_keys = keys;
_table.setData(data);
@@ -296,28 +300,27 @@ public class DSetEditor<E extends DSet.Entry> extends JPanel
protected void refreshData ()
{
// add our entries to a tree map so that we get them sorted by key (optionally applying
// our filter in the process)
TreeMap<Comparable<?>,F> data = Maps.newTreeMap();
Iterator<F> iter = (_entryFilter == null) ? iterator() :
Iterators.filter(iterator(), _entryFilter);
while (iter.hasNext()) {
F entry = iter.next();
data.put(entry.getKey(), entry);
}
// now extract that data into a sorted key list and sorted value list
ComparableArrayList<Comparable<Object>> keys =
new ComparableArrayList<Comparable<Object>>();
E[] entries;
if (_entryFilter == null) {
entries = createArray();
} else {
// Do some shuffling to get out a filtered array.
Iterator<F> itr = Iterators.filter(iterator(), _entryFilter);
ArrayList<F> list = Lists.newArrayList();
Iterators.addAll(list, itr);
@SuppressWarnings("unchecked") F[] tmp = (F[])new DSet.Entry[list.size()];
entries = tmp;
list.toArray(entries);
List<F> values = Lists.newArrayList();
for (Map.Entry<Comparable<?>,F> entry : data.entrySet()) {
@SuppressWarnings("unchecked") Comparable<Object> key =
(Comparable<Object>)entry.getKey();
keys.add(key);
values.add(entry.getValue());
}
for (E entry : entries) {
keys.insertSorted(getKey(entry));
}
setData(keys, entries); // this works because DSet itself is sorted
setData(keys, values);
}
// documentation inherited from interface SetListener
@@ -351,14 +354,6 @@ public class DSetEditor<E extends DSet.Entry> extends JPanel
}
}
public E[] createArray ()
{
@SuppressWarnings("unchecked") F[] tmp = (F[])new DSet.Entry[_set.size()];
F[] entries = tmp;
_set.toArray(entries);
return entries;
}
public Iterator<F> iterator ()
{
return _set.iterator();
@@ -243,22 +243,6 @@ public class DSet<E extends DSet.Entry>
};
}
/**
* Copies the elements of this distributed set into the supplied array. If the array is not
* large enough to hold all of the elements, as many as fit into the array will be copied. If
* the <code>array</code> argument is null, an object array of sufficient size to contain all
* of the elements of this set will be created and returned.
*/
public E[] toArray (E[] array)
{
if (array == null) {
@SuppressWarnings("unchecked") E[] copy = (E[])new Entry[size()];
array = copy;
}
System.arraycopy(_entries, 0, array, 0, array.length);
return array;
}
/**
* Creates an <b>immutable</b> view of this distributed set as a Java set.
*/
@@ -288,7 +272,28 @@ public class DSet<E extends DSet.Entry>
}
/**
* @deprecated use {@link #toArray(Entry[])}.
* Copies the elements of this distributed set into the supplied array. If the array is not
* large enough to hold all of the elements, as many as fit into the array will be copied. If
* the <code>array</code> argument is null, an object array of sufficient size to contain all
* of the elements of this set will be created and returned.
*
* @deprecated use {@link #clone} or add this to an {@link ArrayList}. Arrays are an untypesafe
* quagmire.
*/
@Deprecated
public E[] toArray (E[] array)
{
if (array == null) {
@SuppressWarnings("unchecked") E[] copy = (E[])new Entry[size()];
array = copy;
}
System.arraycopy(_entries, 0, array, 0, array.length);
return array;
}
/**
* @deprecated use {@link #clone} or add this to an {@link ArrayList}. Arrays are an untypesafe
* quagmire.
*/
@Deprecated
public Object[] toArray (Object[] array)