import java.util.Iterator;
import java.lang.Iterable;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.InputMismatchException;
public class PersonQueue implements Queue, PersonIterator {
private List li;
private final String PERSON_TAG = "[PersonQueue]";
final static String lineSeparator = System.getProperty("line.separator");
//Person pers = new Person("hans","werner",22);
/**
* Constructor
*/
public PersonQueue(){
li = new List();
}
/**
* Fügt am Ende des Queues ein Objekt hinzu, vorzugsweise eine Person
* @param o Person zum hinzufügen
*/
public void addLast(Object o){
li.addLast(o);
}
/**
* Löscht Objekt am anfang des Queues
* @return Kopie des Objekts
*/
public Object removeFirst(){
Person tmp;
tmp = (Person)li.getFirst();
li.removeFirst();
return tmp;
}
/**
* Get funktion für ein objekt mit index i
* @param i Index
* @return Objekt mit index i
*/
public Object get(int i){
Person tmp;
tmp = (Person)li.get(i);
return tmp;
}
/**
* Testet ob Queue leer ist
* @return true wenn leer
*/
public boolean empty() {
boolean r = true;
for (int i = 0; i < li.size(); i++) {
if (li.get(i) != null) {
r = false;
}
}
return r;
}
/**
* Löscht aktuelle Liste
*/
public void clear() {
li.clear();
}
/**
* Testet ob Queue voll ist
* @return true wenn voll
*/
public boolean full(){
boolean r = true;
for (int i = 0; i < li.size(); i++) {
if (li.get(i) == null) {
r = false;
}
}
return r;
}
/**
* Größe des Queues
* @return Größe
*/
public int size(){
return li.size();
}
/**
* Speichert Liste in einer Text Datei
* @param path pfad zur Datei
* @param name Name der Datei
*/
public void queueSave(String path,String name) {
name = name.trim();
path = path.trim();
if (name.equals("") || path.equals("")){
throw new InputMismatchException();
}
String zeile;
try {
zeile = PERSON_TAG + lineSeparator;
path = path+"/"+name+".txt";
BufferedWriter writer = new BufferedWriter(new FileWriter(path,false));
writer.write(zeile);
for (int i = 0; i < li.size(); i++) {
zeile = li.get(i).toString() + lineSeparator;
writer.append(zeile);
}
writer.close();
} catch (Exception e) {
}
}
/**
* Läd Liste aus Text Datei
* @param path Pfad zur Datei
* @param name Name der Datei
*/
public void queueLoad(String path, String name) {
BufferedReader rd;
String line;
li.clear();
try {
rd = new BufferedReader(new FileReader(path+"/"+name+".txt"));
line = rd.readLine();
if (line.equals(PERSON_TAG))
while((line = rd.readLine()) != null){
addLast(deserialize(line));
}
} catch (Exception e){
}
}
/**
* Deserialisiert gegebene Strings und wandelt sie um
* @param object gegebener Serialisierter String
* @return Umgewandeltes Personen Objekt
*/
public Person deserialize(String object){
String vorname, nachname;
int alter, pos;
Person r;
object = object.trim();
pos = object.indexOf(",");
nachname = object.substring(0, pos);
object = object.substring(pos+2).trim();
pos = object.indexOf(";");
vorname = object.substring(0, pos);
object = object.substring(pos+2).trim();
alter = Integer.parseInt(object);
r = new Person(vorname, nachname, alter);
return r;
}
public void print() {
if (li.size == 0) {
System.out.println("size = 0");
} else {
Iterator<Person> itr = li.iterator();
System.out.println("Personen: ");
while (itr.hasNext()) {
Person pers = itr.next();
System.out.println(pers + " ");
}
}
}
public String smallest() {
String r = "";
return r;
}
public boolean hasNext() {
return true;
}
public Person next() {
Person p = new Person("","",0);
return p;
}
public void remove() {
}
/**
* Rückt Queue elemente zusammen
*/
/*
private void fill(){
for (int i = 0; i < q.length -1; i++){
if(q[i] == null){
q[i] = q[i+1];
q[i+1] = null;
}
}
}
*/
}