Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / jigsaw / src / org / w3c / www / webdav / DAVIfList.java
diff --git a/JMCR-Stable/real-world application/jigsaw/src/org/w3c/www/webdav/DAVIfList.java b/JMCR-Stable/real-world application/jigsaw/src/org/w3c/www/webdav/DAVIfList.java
new file mode 100644 (file)
index 0000000..16be1ae
--- /dev/null
@@ -0,0 +1,144 @@
+// DAVIfList.java\r
+// $Id: DAVIfList.java,v 1.1 2010/06/15 12:27:43 smhuang Exp $\r
+// (c) COPYRIGHT MIT, INRIA and Keio, 2000.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+package org.w3c.www.webdav;\r
+\r
+import java.util.Vector;\r
+import java.util.LinkedList;\r
+import java.util.ListIterator;\r
+\r
+import org.w3c.www.http.BasicValue;\r
+\r
+/**\r
+ * @version $Revision: 1.1 $\r
+ * @author  Benoît Mahé (bmahe@w3.org)\r
+ */\r
+public class DAVIfList extends BasicValue {\r
+\r
+    public static final boolean debug = false;\r
+\r
+    DAVIf davifs[] = null;\r
+\r
+    boolean tagged = false;\r
+\r
+    protected void parse() {\r
+       Vector vdavifs = new Vector();\r
+\r
+       if (debug) {\r
+           System.out.println("PARSING IF HEADER");\r
+       }\r
+       // for end of list ( ... )\r
+       ParseState list = new ParseState(0, raw.length);\r
+       list.separator  = (byte) ')';\r
+       list.spaceIsSep = false;\r
+       // for beginning of list\r
+       ParseState blist = new ParseState(0, 0);\r
+       blist.separator  = (byte) '(';\r
+       blist.spaceIsSep = false;\r
+       // for state token <...>\r
+       ParseState st = new ParseState(0, 0);\r
+       st.separator = (byte) '>';\r
+       st.spaceIsSep = false;\r
+\r
+       DAVIf davif = null;\r
+       if (DAVParser.nextItem(raw, list) >= 0) {\r
+           if (DAVParser.startsWith(raw, list, '<')) {\r
+               tagged = true;\r
+               do {\r
+                   if (DAVParser.startsWith(raw, list, '<')) {\r
+                       davif = null;\r
+                   }\r
+                   blist.prepare(list);\r
+                   while (DAVParser.nextItem(raw, blist) >= 0) {\r
+                       // the tagged resource\r
+                       if ((DAVParser.startsWith(raw, blist, '<')) &&\r
+                           (davif == null)) \r
+                       {\r
+                           davif = new DAVIf(blist.toString(raw));\r
+                           vdavifs.addElement(davif);\r
+                           if (debug) {\r
+                               System.out.println("Res : "+\r
+                                                  davif.getResource());\r
+                           }\r
+                           //list.start = st.end;\r
+                       } else {\r
+                           // another list for our tagged resource\r
+                           if (debug) {\r
+                               String slist = blist.toString(raw);\r
+                               System.out.println("LIST : "+slist);\r
+                           }\r
+                           davif.addList(raw, blist.start, blist.end);\r
+                       }\r
+                   }\r
+               } while (DAVParser.nextItem(raw, list) >= 0);\r
+           } else {\r
+               // (... ... ...) (... ... ...)\r
+               tagged = false;\r
+               davif  = new DAVIf();\r
+               vdavifs.addElement(davif);\r
+               do {\r
+                   blist.prepare(list);\r
+                   while (DAVParser.nextItem(raw, blist) >= 0) {\r
+                       if (debug) {\r
+                           System.out.println(blist.toString(raw));\r
+                       }\r
+                       davif.addList(raw, blist.start, blist.end);\r
+                   }\r
+               } while (DAVParser.nextItem(raw, list) >= 0);\r
+           }\r
+       }\r
+       // Ok good\r
+       davifs = new DAVIf[vdavifs.size()];\r
+       vdavifs.copyInto(davifs);\r
+    }\r
+\r
+    protected void updateByteValue() {\r
+       if (davifs != null) {\r
+           StringBuffer buf = new StringBuffer();\r
+           for (int i = 0; i < davifs.length ; i++) {\r
+               DAVIf davif = davifs[i];\r
+               if (davif.hasResource()) {\r
+                   buf.append("<").append(davif.getResource()).append("> ");\r
+               }\r
+               ListIterator iterator = davif.getTokenListIterator();\r
+               while (iterator.hasNext()) {\r
+                   LinkedList   list = (LinkedList) iterator.next();\r
+                   ListIterator it   = list.listIterator(0);\r
+                   buf.append("(");\r
+                   while (it.hasNext()) {\r
+                       Object token = (String) it.next();\r
+                       String item  = token.toString();\r
+                       if (it.hasNext()) {\r
+                           buf.append(item).append(" ");\r
+                       } else {\r
+                           buf.append(item);\r
+                       }\r
+                   }\r
+                   buf.append(")");\r
+               }\r
+           }\r
+           raw  = buf.toString().getBytes();\r
+           roff = 0;\r
+           rlen = raw.length;\r
+       } else {\r
+           raw  = new byte[0];\r
+           roff = 0;\r
+           rlen = 0;\r
+       }\r
+    }\r
+\r
+    public Object getValue() {\r
+       validate();\r
+       return davifs;\r
+    }\r
+\r
+    public boolean isTaggedList() {\r
+       return tagged;\r
+    }\r
+\r
+    public DAVIfList() {\r
+       this.isValid = false;\r
+    }\r
+    \r
+}\r