package elw.vo;
import java.util.*;
import java.util.regex.Pattern;
public class FileType implements IdNamed, Cloneable {
private String id;
public String getId() { return id; }
public void setId(String id) { this.id = id; }
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
private long lengthLimit;
public long getLengthLimit() { return lengthLimit; }
public void setLengthLimit(long lengthLimit) { this.lengthLimit = lengthLimit; }
private String nameRegex;
public String getNameRegex() { return nameRegex; }
public void setNameRegex(String nameRegex) { this.nameRegex = nameRegex; }
private String viewer;
public String getViewer() { return viewer; }
public void setViewer(String viewer) { this.viewer = viewer; }
private String editor;
public String getEditor() { return editor; }
public void setEditor(String editor) { this.editor = editor; }
private java.lang.Class validator;
public java.lang.Class getValidator() { return validator; }
public void setValidator(java.lang.Class validator) { this.validator = validator; }
private boolean binary;
public boolean isBinary() { return binary; }
public void setBinary(boolean binary) { this.binary = binary; }
private List<String> contentTypes = new ArrayList<String>();
public List<String> getContentTypes() {
return Collections.unmodifiableList(contentTypes);
}
public void setContentTypes(List<String> contentTypes) {
this.contentTypes.clear();
if (contentTypes != null) {
this.contentTypes.addAll(contentTypes);
}
}
private List<byte[]> headers = new ArrayList<byte[]>();
public List<byte[]> getHeaders() {
return Collections.unmodifiableList(headers);
}
public void setHeaders(List<byte[]> headers) {
this.headers.clear();
if (headers != null) {
this.headers.addAll(headers);
}
}
@Override
public FileType clone() throws CloneNotSupportedException {
final FileType clone = (FileType) super.clone();
clone.contentTypes = new ArrayList<String>(contentTypes);
clone.headers = new ArrayList<byte[]>(headers);
return clone;
}
public static class _ {
public static void filterByLength(SortedMap<String, FileType> validTypes, long length) {
for (Iterator<String> fileTypeIds = validTypes.keySet().iterator(); fileTypeIds.hasNext();) {
if (length > validTypes.get(fileTypeIds.next()).getLengthLimit()) {
fileTypeIds.remove();
}
}
}
public static void filterByName(SortedMap<String, FileType> validTypes, String fname) {
for (Iterator<String> fileTypeIds = validTypes.keySet().iterator(); fileTypeIds.hasNext();) {
final Pattern pattern = Pattern.compile(validTypes.get(fileTypeIds.next()).getNameRegex());
if (!pattern.matcher(fname).matches()) {
fileTypeIds.remove();
}
}
}
}
}