001: /*
002: * ====================================================================
003: * Copyright (c) 2004-2008 TMate Software Ltd. All rights reserved.
004: *
005: * This software is licensed as described in the file COPYING, which
006: * you should have received as part of this distribution. The terms
007: * are also available at http://svnkit.com/license.html
008: * If newer versions of this license are posted there, you may use a
009: * newer version instead, at your option.
010: * ====================================================================
011: */
012:
013: package org.tmatesoft.svn.core.internal.io.dav;
014:
015: import java.util.HashMap;
016: import java.util.Map;
017:
018: import org.tmatesoft.svn.core.internal.io.dav.http.XMLReader;
019:
020: /**
021: * @version 1.1.1
022: * @author TMate Software Ltd.
023: */
024: public class DAVElement {
025:
026: private static Map ourProperties = new HashMap();
027:
028: public static DAVElement getElement(String namespace, String name) {
029: if (namespace == null) {
030: namespace = "";
031: }
032: Map properties = (Map) ourProperties.get(namespace);
033: if (properties == null) {
034: properties = new HashMap();
035: ourProperties.put(namespace, properties);
036: }
037: name = name.replace(XMLReader.COLON_REPLACEMENT, ':');
038: DAVElement property = (DAVElement) properties.get(name);
039: if (property == null) {
040: property = new DAVElement(namespace, name);
041: properties.put(name, property);
042: }
043: return property;
044: }
045:
046: public static final String SVN_DAV_PROPERTY_NAMESPACE = "http://subversion.tigris.org/xmlns/dav/";
047: public static final String SVN_CUSTOM_PROPERTY_NAMESPACE = "http://subversion.tigris.org/xmlns/custom/";
048: public static final String SVN_SVN_PROPERTY_NAMESPACE = "http://subversion.tigris.org/xmlns/svn/";
049: public static final String SVN_APACHE_PROPERTY_NAMESPACE = "http://apache.org/dav/xmlns";
050:
051: public static final String SVN_DAV_ERROR_NAMESPACE = "svn:";
052: public static final String DAV_NAMESPACE = "DAV:";
053: public static final String SVN_NAMESPACE = "svn:";
054:
055: public static final DAVElement MULTISTATUS = getElement(
056: DAV_NAMESPACE, "multistatus");
057: public static final DAVElement RESPONSE = getElement(DAV_NAMESPACE,
058: "response");
059: public static final DAVElement HREF = getElement(DAV_NAMESPACE,
060: "href");
061: public static final DAVElement PROPSTAT = getElement(DAV_NAMESPACE,
062: "propstat");
063: public static final DAVElement PROP = getElement(DAV_NAMESPACE,
064: "prop");
065: public static final DAVElement STATUS = getElement(DAV_NAMESPACE,
066: "status");
067: public static final DAVElement BASELINE = getElement(DAV_NAMESPACE,
068: "baseline");
069: public static final DAVElement BASELINE_COLLECTION = getElement(
070: DAV_NAMESPACE, "baseline-collection");
071: public static final DAVElement CHECKED_IN = getElement(
072: DAV_NAMESPACE, "checked-in");
073: public static final DAVElement COLLECTION = getElement(
074: DAV_NAMESPACE, "collection");
075: public static final DAVElement RESOURCE_TYPE = getElement(
076: DAV_NAMESPACE, "resourcetype");
077: public static final DAVElement VERSION_CONTROLLED_CONFIGURATION = getElement(
078: DAV_NAMESPACE, "version-controlled-configuration");
079: public static final DAVElement VERSION_NAME = getElement(
080: DAV_NAMESPACE, "version-name");
081: public static final DAVElement GET_CONTENT_LENGTH = getElement(
082: DAV_NAMESPACE, "getcontentlength");
083: public static final DAVElement CREATION_DATE = getElement(
084: DAV_NAMESPACE, "creationdate");
085: public static final DAVElement CREATOR_DISPLAY_NAME = getElement(
086: DAV_NAMESPACE, "creator-displayname");
087: public static final DAVElement COMMENT = getElement(DAV_NAMESPACE,
088: "comment");
089: public static final DAVElement DATE = getElement(SVN_NAMESPACE,
090: "date");
091:
092: public static final DAVElement SUPPORTED_LOCK = getElement(
093: DAV_NAMESPACE, "supportedlock");
094: public static final DAVElement LOCK_DISCOVERY = getElement(
095: DAV_NAMESPACE, "lockdiscovery");
096: public static final DAVElement LOCK_OWNER = getElement(
097: DAV_NAMESPACE, "owner");
098: public static final DAVElement LOCK_TIMEOUT = getElement(
099: DAV_NAMESPACE, "timeout");
100: public static final DAVElement LOCK_TOKEN = getElement(
101: DAV_NAMESPACE, "locktoken");
102:
103: public static final DAVElement SVN_LOCK = getElement(SVN_NAMESPACE,
104: "lock");
105: public static final DAVElement SVN_LOCK_PATH = getElement(
106: SVN_NAMESPACE, "path");
107: public static final DAVElement SVN_LOCK_TOKEN = getElement(
108: SVN_NAMESPACE, "token");
109: public static final DAVElement SVN_LOCK_COMMENT = getElement(
110: SVN_NAMESPACE, "comment");
111: public static final DAVElement SVN_LOCK_OWNER = getElement(
112: SVN_NAMESPACE, "owner");
113: public static final DAVElement SVN_LOCK_CREATION_DATE = getElement(
114: SVN_NAMESPACE, "creationdate");
115: public static final DAVElement SVN_LOCK_EXPIRATION_DATE = getElement(
116: SVN_NAMESPACE, "expirationdate");
117:
118: public static final DAVElement BASELINE_RELATIVE_PATH = getElement(
119: SVN_DAV_PROPERTY_NAMESPACE, "baseline-relative-path");
120: public static final DAVElement REPOSITORY_UUID = getElement(
121: SVN_DAV_PROPERTY_NAMESPACE, "repository-uuid");
122: public static final DAVElement MD5_CHECKSUM = getElement(
123: SVN_DAV_PROPERTY_NAMESPACE, "md5-checksum");
124:
125: public static final DAVElement AUTO_VERSION = getElement(
126: DAV_NAMESPACE, "auto-version");
127:
128: public static final DAVElement[] STARTING_PROPERTIES = {
129: VERSION_CONTROLLED_CONFIGURATION, RESOURCE_TYPE,
130: BASELINE_RELATIVE_PATH, REPOSITORY_UUID };
131: public static final DAVElement[] BASELINE_PROPERTIES = {
132: BASELINE_COLLECTION, VERSION_NAME };
133:
134: private String myPropertyName;
135: private String myNamespace;
136:
137: private DAVElement(String namespace, String propertyName) {
138: myNamespace = namespace;
139: myPropertyName = propertyName;
140: }
141:
142: public String getNamespace() {
143: return myNamespace;
144: }
145:
146: public String getName() {
147: return myPropertyName;
148: }
149:
150: public String toString() {
151: StringBuffer sb = new StringBuffer();
152: sb.append(getNamespace());
153: if (!getNamespace().endsWith(":")) {
154: sb.append(":");
155: }
156: sb.append(getName());
157: return sb.toString();
158: }
159:
160: }
|