package javax.print;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class DocFlavor implements Cloneable, Serializable
{
public static class BYTE_ARRAY
extends DocFlavor
{
public static final BYTE_ARRAY AUTOSENSE = new BYTE_ARRAY("application/octet-stream");
public static final BYTE_ARRAY GIF = new BYTE_ARRAY("image/gif");
public static final BYTE_ARRAY JPEG = new BYTE_ARRAY("image/jpeg");
public static final BYTE_ARRAY PCL = new BYTE_ARRAY("application/vnd.hp-PCL");
public static final BYTE_ARRAY PDF = new BYTE_ARRAY("application/pdf");
public static final BYTE_ARRAY PNG = new BYTE_ARRAY("image/png");
public static final BYTE_ARRAY POSTSCRIPT = new BYTE_ARRAY("application/postscript");
public static final BYTE_ARRAY TEXT_HTML_HOST = new BYTE_ARRAY("text/html");
public static final BYTE_ARRAY TEXT_HTML_US_ASCII = new BYTE_ARRAY("text/html; charset=us-ascii");
public static final BYTE_ARRAY TEXT_HTML_UTF_16 = new BYTE_ARRAY("text/html; charset=utf-16");
public static final BYTE_ARRAY TEXT_HTML_UTF_16BE = new BYTE_ARRAY("text/html; charset=utf-16be");
public static final BYTE_ARRAY TEXT_HTML_UTF_16LE = new BYTE_ARRAY("text/html; charset=utf-16le");
public static final BYTE_ARRAY TEXT_HTML_UTF_8 = new BYTE_ARRAY("text/html; charset=utf-8");
public static final BYTE_ARRAY TEXT_PLAIN_HOST = new BYTE_ARRAY("text/plain");
public static final BYTE_ARRAY TEXT_PLAIN_US_ASCII = new BYTE_ARRAY("text/plain; charset=us-ascii");
public static final BYTE_ARRAY TEXT_PLAIN_UTF_16 = new BYTE_ARRAY("text/plain; charset=utf-16");
public static final BYTE_ARRAY TEXT_PLAIN_UTF_16BE = new BYTE_ARRAY("text/plain; charset=utf-16be");
public static final BYTE_ARRAY TEXT_PLAIN_UTF_16LE = new BYTE_ARRAY("text/plain; charset=utf-16le");
public static final BYTE_ARRAY TEXT_PLAIN_UTF_8 = new BYTE_ARRAY("text/plain; charset=utf-8");
public BYTE_ARRAY(String mimeType)
{
super(mimeType, "[B");
}
}
public static class CHAR_ARRAY
extends DocFlavor
{
private static final long serialVersionUID = -8720590903724405128L;
public CHAR_ARRAY(String mimeType)
{
super(mimeType, "[C");
}
}
public static class INPUT_STREAM
extends DocFlavor
{
public static final INPUT_STREAM AUTOSENSE = new INPUT_STREAM("application/octet-stream");
public static final INPUT_STREAM GIF = new INPUT_STREAM("image/gif");
public static final INPUT_STREAM JPEG = new INPUT_STREAM("image/jpeg");
public static final INPUT_STREAM PCL = new INPUT_STREAM("application/vnd.hp-PCL");
public static final INPUT_STREAM PDF = new INPUT_STREAM("application/pdf");
public static final INPUT_STREAM PNG = new INPUT_STREAM("image/png");
public static final INPUT_STREAM POSTSCRIPT = new INPUT_STREAM("application/postscript");
public static final INPUT_STREAM TEXT_HTML_HOST = new INPUT_STREAM("text/html");
public static final INPUT_STREAM TEXT_HTML_US_ASCII = new INPUT_STREAM("text/html; charset=us-ascii");
public static final INPUT_STREAM TEXT_HTML_UTF_16 = new INPUT_STREAM("text/html; charset=utf-16");
public static final INPUT_STREAM TEXT_HTML_UTF_16BE = new INPUT_STREAM("text/html; charset=utf-16be");
public static final INPUT_STREAM TEXT_HTML_UTF_16LE = new INPUT_STREAM("text/html; charset=utf-16le");
public static final INPUT_STREAM TEXT_HTML_UTF_8 = new INPUT_STREAM("text/html; charset=utf-8");
public static final INPUT_STREAM TEXT_PLAIN_HOST = new INPUT_STREAM("text/plain");
public static final INPUT_STREAM TEXT_PLAIN_US_ASCII = new INPUT_STREAM("text/plain; charset=us-ascii");
public static final INPUT_STREAM TEXT_PLAIN_UTF_16 = new INPUT_STREAM("text/plain; charset=utf-16");
public static final INPUT_STREAM TEXT_PLAIN_UTF_16BE = new INPUT_STREAM("text/plain; charset=utf-16be");
public static final INPUT_STREAM TEXT_PLAIN_UTF_16LE = new INPUT_STREAM("text/plain; charset=utf-16le");
public static final INPUT_STREAM TEXT_PLAIN_UTF_8 = new INPUT_STREAM("text/plain; charset=utf-8");
public INPUT_STREAM(String mimeType)
{
super(mimeType, "java.io.InputStream");
}
}
public static class READER
extends DocFlavor
{
private static final long serialVersionUID = 7100295812579351567L;
public READER(String mimeType)
{
super(mimeType, "java.io.Reader");
}
}
public static class SERVICE_FORMATTED
extends DocFlavor
{
private static final long serialVersionUID = 6181337766266637256L;
public SERVICE_FORMATTED(String className)
{
super("application/x-java-jvm-local-objectref", className);
}
}
public static class STRING
extends DocFlavor
{
private static final long serialVersionUID = 4414407504887034035L;
public STRING(String mimeType)
{
super(mimeType, "java.lang.String");
}
}
public static class URL
extends DocFlavor
{
private static final long serialVersionUID = 2936725788144902062L;
public URL(String mimeType)
{
super(mimeType, "java.net.URL");
}
}
private static final long serialVersionUID = -4512080796965449721L;
public static final String hostEncoding = "US-ASCII";
private String mediaSubtype;
private String mediaType;
private String className;
private HashMap params = new HashMap();
public DocFlavor(String mimeType, String className)
{
if (mimeType == null || className == null)
throw new NullPointerException();
parseMimeType(mimeType);
this.className = className;
}
private void parseMimeType(String mimeType)
{
int pos = mimeType.indexOf(';');
if (pos != -1)
{
String tmp = mimeType.substring(pos + 2);
mimeType = mimeType.substring(0, pos);
pos = tmp.indexOf('=');
params.put(tmp.substring(0, pos), tmp.substring(pos + 1));
}
pos = mimeType.indexOf('/');
if (pos == -1)
throw new IllegalArgumentException();
mediaType = mimeType.substring(0, pos);
mediaSubtype = mimeType.substring(pos + 1);
}
public boolean equals(Object obj)
{
if (! (obj instanceof DocFlavor))
return false;
DocFlavor tmp = (DocFlavor) obj;
return (getMimeType().equals(tmp.getMimeType())
&& getRepresentationClassName().equals(tmp.getRepresentationClassName()));
}
public String getMediaSubtype()
{
return mediaSubtype;
}
public String getMediaType()
{
return mediaType;
}
public String getMimeType()
{
String mimeType = getMediaType() + "/" + getMediaSubtype();
Iterator it = params.entrySet().iterator();
while (it.hasNext())
{
Map.Entry entry = (Map.Entry) it.next();
mimeType += "; " + entry.getKey() + "=\"" + entry.getValue() + "\"";
}
return mimeType;
}
public String getParameter(String paramName)
{
if (paramName == null)
throw new NullPointerException();
return (String) params.get(paramName);
}
public String getRepresentationClassName()
{
return className;
}
public int hashCode()
{
return ((mediaType.hashCode()
* mediaSubtype.hashCode()
* className.hashCode()) ^ params.hashCode());
}
public String toString()
{
return getMimeType();
}
}