/******************************************************************************* * Copyright (c) 2012 György Orosz, Attila Novák. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/ * * This file is part of PurePos. * * PurePos is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * PurePos 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 Public License for more details. * * Contributors: * György Orosz - initial API and implementation ******************************************************************************/ package hu.ppke.itk.nlpg.docmodel.internal; import hu.ppke.itk.nlpg.docmodel.IDocElement; import hu.ppke.itk.nlpg.docmodel.IDocElementContainer; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Vector; /** * Abstract class which is a container for storing document parts in a general * way. * * @author György Orosz * * @param <T> * type of the stored docuemnt part */ abstract class AbstractDocElementContainer<T extends IDocElement> extends AbstractDocElement implements IDocElementContainer<T> { protected static final String NL = System.getProperty("line.separator"); protected Vector<T> elements = new Vector<T>(); protected AbstractDocElementContainer() { } public AbstractDocElementContainer(Iterable<T> elements) { init(elements); } protected void init(Iterable<T> elements) { if (elements == null) { this.elements = new Vector<T>(); return; } for (T t : elements) { this.elements.add(t); } } @Override public int size() { return elements.size(); } @Override public boolean isEmpty() { return elements.isEmpty(); } @Override public boolean contains(Object o) { return elements.contains(o); } @Override public Object[] toArray() { return elements.toArray(); } @Override public <TT> TT[] toArray(TT[] a) { return elements.toArray(a); } @Override public boolean add(T e) { return elements.add(e); } @Override public boolean remove(Object o) { return elements.remove(o); } @Override public boolean containsAll(Collection<?> c) { return elements.containsAll(c); } @Override public boolean addAll(Collection<? extends T> c) { return elements.addAll(c); } @Override public boolean removeAll(Collection<?> c) { return elements.removeAll(c); } @Override public boolean retainAll(Collection<?> c) { return elements.retainAll(c); } @Override public void clear() { elements.clear(); } @Override public boolean addAll(int index, Collection<? extends T> c) { return elements.addAll(index, c); } @Override public T get(int index) { return elements.get(index); } @Override public T set(int index, T element) { return elements.set(index, element); } @Override public void add(int index, T element) { elements.add(index, element); } @Override public T remove(int index) { return elements.remove(index); } @Override public int indexOf(Object o) { return elements.indexOf(o); } @Override public int lastIndexOf(Object o) { return elements.lastIndexOf(o); } @Override public ListIterator<T> listIterator() { return elements.listIterator(); } @Override public ListIterator<T> listIterator(int index) { return elements.listIterator(index); } @Override public List<T> subList(int fromIndex, int toIndex) { return elements.subList(fromIndex, toIndex); } @Override public List<String> toList() { ArrayList<String> list = new ArrayList<String>(); for (T t : this) { list.add(t.toString()); } return list; } @Override public Iterator<T> iterator() { return elements.iterator(); } }