/**
*
*/
package com.grendelscan.data.database.collections;
import java.util.Collection;
import java.util.Set;
/**
* @author david
*
*/
public class DatabaseBackedSet<T> extends DatabaseBackedList<T> implements Set<T>
{
/**
* @param uniqueName
*/
public DatabaseBackedSet(final String uniqueName)
{
super(uniqueName);
}
/**
* @param uniqueName
*/
public DatabaseBackedSet(final String uniqueName, final int initialSize)
{
super(uniqueName, initialSize);
}
@Override
public void add(final int index, final T element)
{
synchronized (this)
{
if (!cache.contains(element))
{
cache.add(index, element);
commitCache();
}
}
}
@Override
public boolean add(final T element)
{
synchronized (this)
{
if (!cache.contains(element))
{
cache.add(element);
commitCache();
return true;
}
return false;
}
}
@Override
public boolean addAll(final Collection<? extends T> c)
{
synchronized (this)
{
boolean changed = false;
for (T t : c)
{
if (!cache.contains(t))
{
changed = true;
cache.add(t);
}
}
if (changed)
{
commitCache();
}
return changed;
}
}
@Override
public boolean addAll(final int index, final Collection<? extends T> c)
{
int i = index;
boolean changed = false;
for (T t : c)
{
if (!cache.contains(t))
{
changed = true;
cache.add(i++, t);
}
}
if (changed)
{
commitCache();
}
return changed;
}
}