]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/dav/DavXmlElement.java
Simplify and document new content provider implementation
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / dav / DavXmlElement.java
1 package org.argeo.cms.dav;
2
3 import java.util.Comparator;
4 import java.util.Objects;
5
6 import javax.xml.namespace.QName;
7 import javax.xml.stream.XMLStreamException;
8 import javax.xml.stream.XMLStreamWriter;
9
10 import org.argeo.api.acr.QNamed;
11
12 enum DavXmlElement implements QNamed {
13 response, //
14 multistatus, //
15 href, //
16 /** MUST be the same as DName.collection */
17 collection, //
18 prop, //
19 resourcetype, //
20
21 // propfind
22 propfind, //
23 allprop, //
24 propname, //
25 include, //
26 propstat, //
27 status, //
28
29 // locking
30 lockscope, //
31 locktype, //
32 supportedlock, //
33 lockentry, //
34 lockdiscovery, //
35 write, //
36 shared, //
37 exclusive, //
38 ;
39
40 final static String WEBDAV_NAMESPACE_URI = "DAV:";
41 final static String WEBDAV_DEFAULT_PREFIX = "D";
42
43 final static Comparator<QName> QNAME_COMPARATOR = new Comparator<QName>() {
44
45 @Override
46 public int compare(QName qn1, QName qn2) {
47 if (Objects.equals(qn1.getNamespaceURI(), qn2.getNamespaceURI())) {// same namespace
48 return qn1.getLocalPart().compareTo(qn2.getLocalPart());
49 } else {
50 return qn1.getNamespaceURI().compareTo(qn2.getNamespaceURI());
51 }
52 }
53
54 };
55
56 // private final QName value;
57 //
58 // private DavXmlElement() {
59 // this.value = new ContentName(getNamespace(), localName(), RuntimeNamespaceContext.getNamespaceContext());
60 // }
61 //
62 // @Override
63 // public QName qName() {
64 // return value;
65 // }
66
67 @Override
68 public String getNamespace() {
69 return WEBDAV_NAMESPACE_URI;
70 }
71
72 @Override
73 public String getDefaultPrefix() {
74 return WEBDAV_DEFAULT_PREFIX;
75 }
76
77 public static DavXmlElement toEnum(QName name) {
78 for (DavXmlElement e : values()) {
79 if (e.qName().equals(name))
80 return e;
81 }
82 return null;
83 }
84
85 public void setSimpleValue(XMLStreamWriter xsWriter, String value) throws XMLStreamException {
86 if (value == null) {
87 emptyElement(xsWriter);
88 return;
89 }
90 startElement(xsWriter);
91 xsWriter.writeCharacters(value);
92 xsWriter.writeEndElement();
93 }
94
95 public void emptyElement(XMLStreamWriter xsWriter) throws XMLStreamException {
96 xsWriter.writeEmptyElement(WEBDAV_NAMESPACE_URI, name());
97 }
98
99 public void startElement(XMLStreamWriter xsWriter) throws XMLStreamException {
100 xsWriter.writeStartElement(WEBDAV_NAMESPACE_URI, name());
101 }
102 }