mirror of
https://github.com/moparisthebest/davmail
synced 2025-02-28 09:21:49 -05:00
Doc: javadoc and code cleanup
git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1241 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
parent
534c129660
commit
3f3e51298b
@ -381,6 +381,7 @@ public class CaldavConnection extends AbstractConnection {
|
||||
*
|
||||
* @param response Caldav response
|
||||
* @param request Caldav request
|
||||
* @param folder folder object
|
||||
* @param subFolder calendar folder path relative to request path
|
||||
* @return Exchange folder object
|
||||
* @throws IOException on error
|
||||
|
@ -67,14 +67,14 @@ public class DavExchangeSession extends ExchangeSession {
|
||||
protected static final DavPropertyNameSet WELL_KNOWN_FOLDERS = new DavPropertyNameSet();
|
||||
|
||||
static {
|
||||
WELL_KNOWN_FOLDERS.add(Field.get("inbox").davPropertyName);
|
||||
WELL_KNOWN_FOLDERS.add(Field.get("deleteditems").davPropertyName);
|
||||
WELL_KNOWN_FOLDERS.add(Field.get("sentitems").davPropertyName);
|
||||
WELL_KNOWN_FOLDERS.add(Field.get("sendmsg").davPropertyName);
|
||||
WELL_KNOWN_FOLDERS.add(Field.get("drafts").davPropertyName);
|
||||
WELL_KNOWN_FOLDERS.add(Field.get("calendar").davPropertyName);
|
||||
WELL_KNOWN_FOLDERS.add(Field.get("contacts").davPropertyName);
|
||||
WELL_KNOWN_FOLDERS.add(Field.get("outbox").davPropertyName);
|
||||
WELL_KNOWN_FOLDERS.add(Field.getPropertyName("inbox"));
|
||||
WELL_KNOWN_FOLDERS.add(Field.getPropertyName("deleteditems"));
|
||||
WELL_KNOWN_FOLDERS.add(Field.getPropertyName("sentitems"));
|
||||
WELL_KNOWN_FOLDERS.add(Field.getPropertyName("sendmsg"));
|
||||
WELL_KNOWN_FOLDERS.add(Field.getPropertyName("drafts"));
|
||||
WELL_KNOWN_FOLDERS.add(Field.getPropertyName("calendar"));
|
||||
WELL_KNOWN_FOLDERS.add(Field.getPropertyName("contacts"));
|
||||
WELL_KNOWN_FOLDERS.add(Field.getPropertyName("outbox"));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -238,7 +238,7 @@ public class DavExchangeSession extends ExchangeSession {
|
||||
}
|
||||
|
||||
protected String getURIPropertyIfExists(DavPropertySet properties, String alias) throws URIException {
|
||||
DavProperty property = properties.get(Field.get(alias).davPropertyName);
|
||||
DavProperty property = properties.get(Field.getPropertyName(alias));
|
||||
if (property == null) {
|
||||
return null;
|
||||
} else {
|
||||
@ -1172,8 +1172,7 @@ public class DavExchangeSession extends ExchangeSession {
|
||||
.append(Field.getRequestPropertyString("permanenturl"));
|
||||
if (attributes != null) {
|
||||
for (String attribute : attributes) {
|
||||
Field field = Field.get(attribute);
|
||||
searchRequest.append(',').append(Field.getRequestPropertyString(field.getAlias()));
|
||||
searchRequest.append(',').append(Field.getRequestPropertyString(attribute));
|
||||
}
|
||||
}
|
||||
searchRequest.append(" FROM SCOPE('").append(folderQueryTraversal).append(" TRAVERSAL OF \"").append(folderUrl).append("\"')");
|
||||
@ -1181,8 +1180,6 @@ public class DavExchangeSession extends ExchangeSession {
|
||||
searchRequest.append(" WHERE ");
|
||||
condition.appendTo(searchRequest);
|
||||
}
|
||||
// TODO order by ImapUid
|
||||
//searchRequest.append(" ORDER BY \"urn:schemas:httpmail:date\" ASC");
|
||||
DavGatewayTray.debug(new BundleMessage("LOG_SEARCH_QUERY", searchRequest));
|
||||
return DavGatewayHttpClientFacade.executeSearchMethod(
|
||||
httpClient, URIUtil.encodePath(folderUrl), searchRequest.toString());
|
||||
@ -1192,11 +1189,11 @@ public class DavExchangeSession extends ExchangeSession {
|
||||
protected static final DavPropertyNameSet EVENT_REQUEST_PROPERTIES = new DavPropertyNameSet();
|
||||
|
||||
static {
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.get("permanenturl").davPropertyName);
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.get("urlcompname").davPropertyName);
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.get("etag").davPropertyName);
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.get("contentclass").davPropertyName);
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.get("displayname").davPropertyName);
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.getPropertyName("permanenturl"));
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.getPropertyName("urlcompname"));
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.getPropertyName("etag"));
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.getPropertyName("contentclass"));
|
||||
EVENT_REQUEST_PROPERTIES.add(Field.getPropertyName("displayname"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -73,11 +73,11 @@ public class Field {
|
||||
/**
|
||||
* Property type list from EWS
|
||||
*/
|
||||
@SuppressWarnings({"UnusedDeclaration"})
|
||||
protected static enum PropertyType {
|
||||
ApplicationTime, ApplicationTimeArray, Binary, BinaryArray, Boolean, CLSID, CLSIDArray, Currency, CurrencyArray,
|
||||
Double, DoubleArray, Error, Float, FloatArray, Integer, IntegerArray, Long, LongArray, Null, Object,
|
||||
ObjectArray, Short, ShortArray, SystemTime, SystemTimeArray, String, StringArray,
|
||||
String10
|
||||
ObjectArray, Short, ShortArray, SystemTime, SystemTimeArray, String, StringArray
|
||||
}
|
||||
|
||||
protected static final Map<PropertyType, String> propertyTypeMap = new HashMap<PropertyType, String>();
|
||||
@ -88,9 +88,9 @@ public class Field {
|
||||
propertyTypeMap.put(PropertyType.SystemTime, "0040");
|
||||
propertyTypeMap.put(PropertyType.String, "001f"); // 001f is PT_UNICODE_STRING, 001E is PT_STRING
|
||||
propertyTypeMap.put(PropertyType.Binary, "0102");
|
||||
propertyTypeMap.put(PropertyType.String10, "0030"); // decimal PT_STRING
|
||||
}
|
||||
|
||||
@SuppressWarnings({"UnusedDeclaration"})
|
||||
protected static enum DistinguishedPropertySetType {
|
||||
Meeting, Appointment, Common, PublicStrings, Address, InternetHeaders, CalendarAssistant, UnifiedMessaging, Task
|
||||
}
|
||||
@ -283,7 +283,7 @@ public class Field {
|
||||
String name = 'x' + toHexString(propertyTag) + propertyTypeMap.get(propertyType);
|
||||
Field field;
|
||||
if (propertyType == PropertyType.Binary) {
|
||||
field = new Field(alias, SCHEMAS_MAPI_PROPTAG, name, null, "bin.base64", name, propertyType);
|
||||
field = new Field(alias, SCHEMAS_MAPI_PROPTAG, name, propertyType, null, "bin.base64", name);
|
||||
} else {
|
||||
field = new Field(alias, SCHEMAS_MAPI_PROPTAG, name, propertyType);
|
||||
}
|
||||
@ -291,7 +291,7 @@ public class Field {
|
||||
}
|
||||
|
||||
protected static void createField(String alias, DistinguishedPropertySetType propertySetType, int propertyTag, String responseAlias) {
|
||||
createField(alias, propertySetType, propertyTag, responseAlias, null);
|
||||
createField(alias, propertySetType, propertyTag, responseAlias, null);
|
||||
}
|
||||
|
||||
protected static void createField(String alias, DistinguishedPropertySetType propertySetType, int propertyTag, String responseAlias, PropertyType propertyType) {
|
||||
@ -306,7 +306,7 @@ public class Field {
|
||||
}
|
||||
updateAlias = "_x0030_x" + toHexString(propertyTag);
|
||||
Field field = new Field(alias, Namespace.getNamespace(SCHEMAS_MAPI_ID.getURI() +
|
||||
'{' + distinguishedPropertySetMap.get(propertySetType) + "}/"), name, responseAlias, null, updateAlias, propertyType);
|
||||
'{' + distinguishedPropertySetMap.get(propertySetType) + "}/"), name, propertyType, responseAlias, null, updateAlias);
|
||||
fieldMap.put(field.alias, field);
|
||||
}
|
||||
|
||||
@ -325,8 +325,7 @@ public class Field {
|
||||
fieldMap.put(field.alias, field);
|
||||
}
|
||||
|
||||
protected final DavPropertyName davPropertyName;
|
||||
protected final PropertyType propertyType;
|
||||
private final DavPropertyName davPropertyName;
|
||||
protected final String alias;
|
||||
protected final String uri;
|
||||
protected final String requestPropertyString;
|
||||
@ -337,23 +336,52 @@ public class Field {
|
||||
protected final boolean isMultivalued;
|
||||
protected final boolean isBooleanValue;
|
||||
|
||||
|
||||
public Field(Namespace namespace, String name) {
|
||||
/**
|
||||
* Create field for namespace and name, use name as alias.
|
||||
*
|
||||
* @param namespace Exchange namespace
|
||||
* @param name Exchange name
|
||||
*/
|
||||
protected Field(Namespace namespace, String name) {
|
||||
this(name, namespace, name, null);
|
||||
}
|
||||
|
||||
public Field(String alias, Namespace namespace, String name, PropertyType propertyType) {
|
||||
this(alias, namespace, name, null, null, name, propertyType);
|
||||
/**
|
||||
* Create field for namespace and name of type propertyType.
|
||||
*
|
||||
* @param alias logical name in DavMail
|
||||
* @param namespace Exchange namespace
|
||||
* @param name Exchange name
|
||||
* @param propertyType property type
|
||||
*/
|
||||
protected Field(String alias, Namespace namespace, String name, PropertyType propertyType) {
|
||||
this(alias, namespace, name, propertyType, null, null, name);
|
||||
}
|
||||
|
||||
public Field(String alias, Namespace namespace, String name, String responseAlias, String cast, String updateAlias, PropertyType propertyType) {
|
||||
davPropertyName = DavPropertyName.create(name, namespace);
|
||||
updatePropertyName = DavPropertyName.create(updateAlias, namespace);
|
||||
this.propertyType = propertyType;
|
||||
isMultivalued = propertyType == PropertyType.StringArray;
|
||||
isIntValue = propertyType == PropertyType.Integer || propertyType == PropertyType.Long;
|
||||
isBooleanValue = propertyType == PropertyType.Boolean;
|
||||
/**
|
||||
* Create field for namespace and name of type propertyType.
|
||||
*
|
||||
* @param alias logical name in DavMail
|
||||
* @param namespace Exchange namespace
|
||||
* @param name Exchange name
|
||||
* @param propertyType property type
|
||||
* @param responseAlias property name in SEARCH response (as responsealias in request)
|
||||
* @param cast response cast type (e.g. bin.base64)
|
||||
* @param updateAlias some properties use a different alias in PROPPATCH requests
|
||||
*/
|
||||
protected Field(String alias, Namespace namespace, String name, PropertyType propertyType, String responseAlias, String cast, String updateAlias) {
|
||||
this.alias = alias;
|
||||
|
||||
// property name in PROPFIND requests
|
||||
davPropertyName = DavPropertyName.create(name, namespace);
|
||||
// property name in PROPPATCH requests
|
||||
updatePropertyName = DavPropertyName.create(updateAlias, namespace);
|
||||
|
||||
// a few type based flags
|
||||
isMultivalued = propertyType != null && propertyType.toString().endsWith("Array");
|
||||
isIntValue = propertyType == PropertyType.Integer || propertyType == PropertyType.Long || propertyType == PropertyType.Short;
|
||||
isBooleanValue = propertyType == PropertyType.Boolean;
|
||||
|
||||
this.uri = namespace.getURI() + name;
|
||||
if (responseAlias == null) {
|
||||
this.requestPropertyString = '"' + uri + '"';
|
||||
@ -365,14 +393,20 @@ public class Field {
|
||||
this.cast = cast;
|
||||
}
|
||||
|
||||
/**
|
||||
* Property uri.
|
||||
*
|
||||
* @return uri
|
||||
*/
|
||||
public String getUri() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
public String getAlias() {
|
||||
return alias;
|
||||
}
|
||||
|
||||
/**
|
||||
* Integer value property type.
|
||||
*
|
||||
* @return true if the field value is integer
|
||||
*/
|
||||
public boolean isIntValue() {
|
||||
return isIntValue;
|
||||
}
|
||||
@ -401,12 +435,20 @@ public class Field {
|
||||
return new Field(SCHEMAS_MAPI_STRING_INTERNET_HEADERS, headerName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create DavProperty object for field alias and value.
|
||||
*
|
||||
* @param alias DavMail field alias
|
||||
* @param value field value
|
||||
* @return DavProperty with value or DavPropertyName for null values
|
||||
*/
|
||||
public static DavConstants createDavProperty(String alias, String value) {
|
||||
Field field = Field.get(alias);
|
||||
if (value == null) {
|
||||
// return DavPropertyName to remove property
|
||||
return field.updatePropertyName;
|
||||
} else if (field.isMultivalued) {
|
||||
// multivalued field, split values separated by \n
|
||||
List<XmlSerializable> valueList = new ArrayList<XmlSerializable>();
|
||||
String[] values = value.split("\n");
|
||||
for (final String singleValue : values) {
|
||||
@ -421,25 +463,42 @@ public class Field {
|
||||
} else if (field.isBooleanValue) {
|
||||
if ("true".equals(value)) {
|
||||
return new DefaultDavProperty(field.updatePropertyName, "1");
|
||||
} else if ("false".equals(value)){
|
||||
} else if ("false".equals(value)) {
|
||||
return new DefaultDavProperty(field.updatePropertyName, "0");
|
||||
} else {
|
||||
throw new RuntimeException("Invalid value for "+field.alias+": "+value);
|
||||
throw new RuntimeException("Invalid value for " + field.alias + ": " + value);
|
||||
}
|
||||
} else {
|
||||
return new DefaultDavProperty(field.updatePropertyName, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static DavPropertyName getPropertyName(String alias) {
|
||||
return Field.get(alias).davPropertyName;
|
||||
}
|
||||
|
||||
/**
|
||||
* SEARCH request property name for alias
|
||||
*
|
||||
* @param alias field alias
|
||||
* @return request property string
|
||||
*/
|
||||
public static String getRequestPropertyString(String alias) {
|
||||
return Field.get(alias).requestPropertyString;
|
||||
}
|
||||
|
||||
/**
|
||||
* PROPFIND request property name
|
||||
*
|
||||
* @param alias field alias
|
||||
* @return request property name
|
||||
*/
|
||||
public static DavPropertyName getPropertyName(String alias) {
|
||||
return Field.get(alias).davPropertyName;
|
||||
}
|
||||
|
||||
/**
|
||||
* SEARCH response property name
|
||||
*
|
||||
* @param alias field alias
|
||||
* @return response property name
|
||||
*/
|
||||
public static DavPropertyName getResponsePropertyName(String alias) {
|
||||
return Field.get(alias).responsePropertyName;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user