Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / jigsaw / src / org / w3c / tools / resources / upgrade / MimeTypeAttribute.java
diff --git a/JMCR-Stable/real-world application/jigsaw/src/org/w3c/tools/resources/upgrade/MimeTypeAttribute.java b/JMCR-Stable/real-world application/jigsaw/src/org/w3c/tools/resources/upgrade/MimeTypeAttribute.java
new file mode 100644 (file)
index 0000000..88c82e4
--- /dev/null
@@ -0,0 +1,93 @@
+// MimeTypeAttribute.java\r
+// $Id: MimeTypeAttribute.java,v 1.1 2010/06/15 12:22:50 smhuang Exp $\r
+// (c) COPYRIGHT MIT and INRIA, 1996.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+\r
+package org.w3c.tools.resources.upgrade ;\r
+\r
+import java.io.DataInputStream;\r
+import java.io.DataOutputStream;\r
+import java.io.IOException;\r
+\r
+import org.w3c.www.mime.MimeType ;\r
+import org.w3c.www.mime.MimeTypeFormatException;\r
+\r
+/**\r
+ * The generic class of Mime type attributes.\r
+ */\r
+\r
+public class MimeTypeAttribute extends Attribute {\r
+\r
+    /**\r
+     * Is the given object a valid MimeTypeAttribute value ?\r
+     * @param obj The object to test.\r
+     * @return A boolean <strong>true</strong> if okay.\r
+     */\r
+\r
+    public boolean checkValue(Object obj) {\r
+       return (obj instanceof MimeType) || (obj == null) ;\r
+    }\r
+\r
+    /**\r
+     * Get the number of bytes required to save that attribute value.\r
+     * @param The value about to be pickled.\r
+     * @return The number of bytes needed to pickle that value.\r
+     */\r
+\r
+    public final int getPickleLength(Object value) {\r
+       String str    = ((MimeType) value).toString();\r
+       int    strlen = str.length() ;\r
+       int    utflen = 0 ;\r
+\r
+       for (int i = 0 ; i < strlen ; i++) {\r
+           int c = str.charAt(i);\r
+           if ((c >= 0x0001) && (c <= 0x007F)) {\r
+               utflen++;\r
+           } else if (c > 0x07FF) {\r
+               utflen += 3;\r
+           } else {\r
+               utflen += 2;\r
+           }\r
+       }\r
+       return utflen + 2 ;\r
+    }\r
+\r
+    /**\r
+     * Pickle a MIME type to the given output stream.\r
+     * @param out The output stream to pickle to.\r
+     * @param obj The object to pickle.\r
+     * @exception IOException If some IO error occured.\r
+     */\r
+\r
+    public void pickle(DataOutputStream out, Object t) \r
+       throws IOException\r
+    {\r
+       if (t == null)\r
+           out.writeUTF("*none*");\r
+       else\r
+           out.writeUTF(((MimeType) t).toString()) ;\r
+    }\r
+\r
+    /**\r
+     * Unpickle a MIME type from the given input stream.\r
+     * @param in The input stream to unpickle from.\r
+     * @return An instance of String.\r
+     * @exception IOException If some IO error occured.\r
+     */\r
+\r
+    public Object unpickle (DataInputStream in) \r
+       throws IOException\r
+    {\r
+       try {\r
+           return new MimeType(in.readUTF()) ;\r
+       } catch (MimeTypeFormatException ex) {\r
+           return null;\r
+//         throw new IOException("illegal MIME type.") ;\r
+       }\r
+    }\r
+\r
+    public MimeTypeAttribute(String name, MimeType def, Integer flags) {\r
+       super(name, def, flags) ;\r
+       this.type = "org.w3c.www.mime.MimeType";\r
+    }\r
+}\r