public class Auftragsliste implements Serializable
{
private static final long serialVersionUID = -6312674064418117197L;
public String bearbeiter;
public String name;
public String vorname;
public String adresse;
public String plz;
public String ort;
public String paketNr;
private TreeMap<String, Auftrag> auftrag;
public transient int anzahlAuftraege;
public Auftragsliste(String bearbeiter, String name, String vorname, String adresse, String plz, String ort, String paketNr)
{
if(bearbeiter == null) {
bearbeiter = "";
}
if(name == null){
name = " ";
}
if(vorname == null) {
vorname = "";
}
if(adresse == null) {
adresse = "";
}
if(plz == null) {
plz = "";
}
if(ort == null) {
ort = "";
}
if(paketNr == null){
paketNr = "";
}
this.bearbeiter = bearbeiter.trim();
this.name = name.trim();
this.vorname = vorname.trim();
this.adresse = adresse.trim();
this.plz = plz.trim();
this.ort = ort.trim();
this.paketNr = paketNr;
anzahlAuftraege = 0;
auftrag = new TreeMap<String, Auftrag>();
}
public void neuerAuftrag(Auftrag derAuftrag) throws Exception
{
if(derAuftrag == null) {
throw new IllegalArgumentException(
"Parameter in neuerAuftrag darf nicht null sein.");
}
else{
auftrag.put(derAuftrag.gibBearbeiter(), derAuftrag);
auftrag.put(derAuftrag.gibName(), derAuftrag);
auftrag.put(derAuftrag.gibVorname(), derAuftrag);
auftrag.put(derAuftrag.gibAdresse(), derAuftrag);
auftrag.put(derAuftrag.gibPlz(), derAuftrag);
auftrag.put(derAuftrag.gibOrt(), derAuftrag);
auftrag.put(derAuftrag.gibPaketNr(), derAuftrag);
anzahlAuftraege++;
System.out.println("Erfolgreich gespeichert!");
}
}
public Auftrag[] suche(String praefix)
{
// Eine Liste für die Treffer anlegen.
List<Auftrag> treffer = new LinkedList<Auftrag>();
if(praefix != null) {
// Finden von Schlüsseln, die gleich dem oder größer als
// der Präfix sind.
SortedMap<String, Auftrag> rest = auftrag.tailMap(praefix);
Iterator<String> it = rest.keySet().iterator();
// Stoppen bei der ersten Nichtübereinstimmung.
boolean sucheBeendet = false;
while(!sucheBeendet && it.hasNext()) {
String schluessel = it.next();
if(schluessel.startsWith(praefix)) {
treffer.add(auftrag.get(schluessel));
}
else {
sucheBeendet = true;
}
}
}
Auftrag[] ergebnisse = new Auftrag[treffer.size()];
treffer.toArray(ergebnisse);
return ergebnisse;
}
public int gibAnzahlEintraege()
{
return anzahlAuftraege;
}
public boolean schluesselBekannt(String schluessel)
{
return auftrag.containsKey(schluessel);
}
public void entferneAuftrag(String schluessel)
{
if(schluesselBekannt(schluessel)) {
Auftrag derAuftrag = auftrag.get(schluessel);
auftrag.remove(derAuftrag.gibName());
auftrag.remove(derAuftrag.gibVorname());
auftrag.remove(derAuftrag.gibAdresse());
auftrag.remove(derAuftrag.gibPlz());
auftrag.remove(derAuftrag.gibOrt());
anzahlAuftraege--;
}
}
public HashSet<String> alleKontaktdaten()
{
Collection values = auftrag.values();
// Objekt Auftrag wird in String umgewandelt
String auftragAlsString = auftrag.toString();
// Der eben erzeugte String wird zerlegt und einzelne Wörter in einem Array gespeichert
String [] zerteilt = auftragAlsString.split(" ");
// Einzelne Wörter werden einer HashSet hinzugefügt
HashSet<String> einzelneWoerter = new HashSet<String>();
// Iterator zum Durchlaufen der HashSet wird instanziert
Iterator i = values.iterator();
while (i.hasNext()) {
Auftrag naechsterAuftrag = (Auftrag)i.next();
// so lange im Array zerteilt Elemente vorhanden sind werden sie der Set hinzugefügt
for(String einBestandteil : zerteilt){
einzelneWoerter.add(einBestandteil + "\n");
}
}
// die Set wird zurückgegeben
return einzelneWoerter;
}
public void aendereKontakt(String alterSchluessel,
Auftrag daten) throws Exception
{
if(schluesselBekannt(alterSchluessel) && daten != null){
entferneAuftrag(alterSchluessel);
neuerAuftrag(daten);
}
}
public String gibBearbeiter()
{
return bearbeiter;
}
public String gibName()
{
return name;
}
public String gibVorname()
{
return vorname;
}
public String gibAdresse()
{
return adresse;
}
public String gibPlz()
{
return plz;
}
public String gibOrt()
{
return ort;
}
public String gibPaketNr() {
return paketNr;
}
public String toString(){
return "Sachbearbeiter: " + gibBearbeiter() + "\nKundendaten: \n" + gibVorname() + " "+ gibName() + "\n" + gibAdresse() + "\n" + gibPlz() + " " + gibOrt() + "\n";
}
}