/* $Id: HBCIPassportList.java,v 1.1 2011/05/04 22:37:43 willuhn Exp $
This file is part of hbci4java
Copyright (C) 2001-2008 Stefan Palme
hbci4java is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
hbci4java 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.kapott.hbci.passport;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/* This class represents a collection of passports that will be used for
* multi-signatures. Each entry of this collection consists of a passport
* object and a string describing the role for that passport. When adding
* entries to this list, the add() method automatically removes any duplicates.*/
public class HBCIPassportList
{
/* one entry of the passport-collection consists of passport and role */
private static class Entry
{
private HBCIPassportInternal passport;
private String role;
public Entry(HBCIPassportInternal passport,String role)
{
this.passport=passport;
this.role=role;
}
public HBCIPassportInternal getPassport()
{
return passport;
}
public String getRole()
{
return role;
}
}
private List<Entry> passports;
public HBCIPassportList()
{
this.passports=new ArrayList<Entry>();
}
/* check whether a certain passport object is already in list */
private boolean contains(HBCIPassportInternal passport)
{
boolean ret=false;
for (Iterator<Entry> i=passports.iterator();i.hasNext();) {
if (i.next().getPassport()==passport) {
ret=true;
break;
}
}
return ret;
}
private void addPassport(Entry entry)
{
addPassport(entry.getPassport(),entry.getRole());
}
/* add a new entry to this list */
public void addPassport(HBCIPassportInternal passport,String role)
{
if (!contains(passport)) {
Entry entry=new Entry(passport,role);
passports.add(entry);
}
}
/* add all entries from another passportlist to this list */
public void addAll(HBCIPassportList passportList)
{
for (Iterator<Entry> i=passportList.iterator();i.hasNext();) {
addPassport(i.next());
}
}
/* return the main-passports, which is always the first one */
public HBCIPassportInternal getMainPassport()
{
return getPassport(0);
}
public HBCIPassportInternal getPassport(int idx)
{
return passports.get(idx).getPassport();
}
public String getRole(int idx)
{
return passports.get(idx).getRole();
}
private Iterator<Entry> iterator()
{
return passports.iterator();
}
public int size()
{
return passports.size();
}
public void clear()
{
passports.clear();
}
}