/*******************************************************************************
* Copyright (c) 2011-2014 Fernando Petrola
*
* This file is part of Dragome SDK.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
******************************************************************************/
package com.dragome.guia.helper.collections;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CollectionHandler<T>
{
protected T singleItem;
protected List<T> multipleItems;
public CollectionHandler()
{
}
public CollectionHandler(List<T> elements)
{
setMultipleItems(elements);
}
public void add(T item)
{
if (singleItem == null && multipleItems == null)
singleItem= item;
else
{
if (multipleItems == null)
{
multipleItems= new ArrayList<T>();
multipleItems.add(singleItem);
singleItem= null;
}
multipleItems.add(item);
}
}
public void forAll(ItemInvoker<T> invoker)
{
if (singleItem != null)
invoker.invoke(singleItem);
else if (multipleItems != null)
{
for (int i= 0; i < multipleItems.size(); i++)
invoker.invoke(multipleItems.get(i));
}
}
public List<T> getList()
{
if (singleItem != null)
return Arrays.asList(singleItem);
else
return multipleItems != null ? new ArrayList<T>(multipleItems) : new ArrayList<T>();
}
public List<T> getMultipleItems()
{
return multipleItems;
}
public T getSingleItem()
{
return singleItem;
}
public boolean isEmpty()
{
return singleItem == null && multipleItems == null;
}
public void remove(T item)
{
if (multipleItems == null)
singleItem= null;
else
{
multipleItems.remove(item);
if (multipleItems.isEmpty())
multipleItems= null;
}
}
public void removeAll()
{
singleItem= null;
multipleItems= null;
}
public void setMultipleItems(List<T> multipleItems)
{
this.multipleItems= multipleItems;
}
public void setSingleItem(T singleItem)
{
this.singleItem= singleItem;
}
}