/*
Copyright 2009 Hauke Rehfeld
This file is part of QuakeInjector.
QuakeInjector 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 3 of the License, or
(at your option) any later version.
QuakeInjector 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 QuakeInjector. If not, see <http://www.gnu.org/licenses/>.
*/
package de.haukerehfeld.quakeinjector;
import java.util.Iterator;
import java.util.TreeSet;
public class PackageFileList implements Iterable<FileInfo>, Comparable<PackageFileList> {
/**
* other classes rely on the sorted iteration this provides
*/
private TreeSet<FileInfo> files = new TreeSet<FileInfo>();
private String id;
public PackageFileList(String id) {
this.id = id;
}
public boolean isEmpty() {
return files.isEmpty();
}
public void add(FileInfo file) {
file.clean();
files.add(file);
}
public void remove(FileInfo file) {
file.clean();
files.remove(file);
}
public int size() {
return files.size();
}
/**
* iterate the files in ascending order by their filename
*/
public Iterator<FileInfo> iterator() {
return files.iterator();
}
public Iterator<FileInfo> descendingIterator() {
return files.descendingIterator();
}
public String getId() {
return id;
}
@Override public int compareTo(PackageFileList o) {
return -(o.id.compareTo(id));
}
@Override public boolean equals(Object o) {
if (!(o instanceof PackageFileList)) {
return false;
}
return ((PackageFileList) o).id.equals(id);
}
@Override public int hashCode() {
return id.hashCode();
}
@Override public String toString() {
return id + "[" + files.toString() + "]";
}
}