package org.nutz.resource; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import org.nutz.lang.Streams; public abstract class NutResource implements Comparable<NutResource> { protected String name; /** * 这个对象的来源 */ protected String source; protected int priority = 100; public NutResource() {} public boolean equals(Object obj) { if (obj == null) return false; if (this == obj) return true; if (obj instanceof NutResource) return this.toString().equals(obj.toString()); return false; } /**使用完毕后,务必关闭*/ public abstract InputStream getInputStream() throws IOException; public String getName() { return name; } /**使用完毕后,务必关闭*/ public Reader getReader() throws IOException { return Streams.utf8r(getInputStream()); } public int hashCode() { return null == name ? "NULL".hashCode() : name.hashCode(); } public NutResource setName(String name) { this.name = name; return this; } public String toString() { return String.format("NutResource[%s]", name); } public void setSource(String source) { this.source = source; } public String getSource() { return source; } public int compareTo(NutResource o) { if (o.priority == this.priority) return 0; return o.priority > this.priority ? -1 : 1; } public int getPriority() { return priority; } public NutResource setPriority(int priority) { this.priority = priority; return this; } }