From b00d441b68cb37bd4523f2269393a2e8f09574de Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 5 Jun 2012 22:29:12 +0000 Subject: [PATCH] Caldav: implement task priority over EWS git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1968 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- .../exchange/ews/EwsExchangeSession.java | 36 +++++++++++++++++++ src/java/davmail/exchange/ews/Field.java | 1 + 2 files changed, 37 insertions(+) diff --git a/src/java/davmail/exchange/ews/EwsExchangeSession.java b/src/java/davmail/exchange/ews/EwsExchangeSession.java index 5390bdaa..bbc03ad4 100644 --- a/src/java/davmail/exchange/ews/EwsExchangeSession.java +++ b/src/java/davmail/exchange/ews/EwsExchangeSession.java @@ -1346,6 +1346,7 @@ public class EwsExchangeSession extends ExchangeSession { EWSMethod.Item newItem = new EWSMethod.Item(); newItem.type = "Task"; List updates = new ArrayList(); + updates.add(Field.createFieldUpdate("importance", convertPriorityToExchange(vCalendar.getFirstVeventPropertyValue("PRIORITY")))); updates.add(Field.createFieldUpdate("calendaruid", vCalendar.getFirstVeventPropertyValue("UID"))); // force urlcompname updates.add(Field.createFieldUpdate("urlcompname", convertItemNameToEML(itemName))); @@ -1555,6 +1556,7 @@ public class EwsExchangeSession extends ExchangeSession { GetItemMethod getItemMethod; if ("Task".equals(type)) { getItemMethod = new GetItemMethod(BaseShape.ID_ONLY, itemId, false); + getItemMethod.addAdditionalProperty(Field.get("importance")); getItemMethod.addAdditionalProperty(Field.get("subject")); getItemMethod.addAdditionalProperty(Field.get("created")); getItemMethod.addAdditionalProperty(Field.get("lastmodified")); @@ -1599,6 +1601,7 @@ public class EwsExchangeSession extends ExchangeSession { vTodo.setPropertyValue("UID", calendarUid); vTodo.setPropertyValue("SUMMARY", getItemMethod.getResponseItem().get(Field.get("subject").getResponseName())); vTodo.setPropertyValue("DESCRIPTION", getItemMethod.getResponseItem().get(Field.get("description").getResponseName())); + vTodo.setPropertyValue("PRIORITY", convertPriorityFromExchange(getItemMethod.getResponseItem().get(Field.get("importance").getResponseName()))); vTodo.setPropertyValue("PERCENT-COMPLETE", getItemMethod.getResponseItem().get(Field.get("percentcomplete").getResponseName())); vTodo.setPropertyValue("STATUS", taskTovTodoStatusMap.get(getItemMethod.getResponseItem().get(Field.get("taskstatus").getResponseName()))); @@ -2366,5 +2369,38 @@ public class EwsExchangeSession extends ExchangeSession { protected static boolean isItemId(String itemName) { return itemName.length() >= 152; } + + + protected static final Map importanceToPriorityMap = new HashMap(); + + static { + importanceToPriorityMap.put("High", "1"); + importanceToPriorityMap.put("Normal", "5"); + importanceToPriorityMap.put("Low", "9"); + } + + protected static final Map priorityToImportanceMap = new HashMap(); + + static { + priorityToImportanceMap.put("1", "High"); + priorityToImportanceMap.put("5", "Normal"); + priorityToImportanceMap.put("9", "Low"); + } + + protected String convertPriorityFromExchange(String exchangeImportanceValue) { + String value = null; + if (exchangeImportanceValue != null) { + value = importanceToPriorityMap.get(exchangeImportanceValue); + } + return value; + } + + protected String convertPriorityToExchange(String vTodoPriorityValue) { + String value = null; + if (vTodoPriorityValue != null) { + value = priorityToImportanceMap.get(vTodoPriorityValue); + } + return value; + } } diff --git a/src/java/davmail/exchange/ews/Field.java b/src/java/davmail/exchange/ews/Field.java index c3856ff0..af9daa45 100644 --- a/src/java/davmail/exchange/ews/Field.java +++ b/src/java/davmail/exchange/ews/Field.java @@ -218,6 +218,7 @@ public final class Field { FIELD_MAP.put("xmozsendinvitations", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.PublicStrings, "xmozsendinvitations")); // task + FIELD_MAP.put("importance", new UnindexedFieldURI("item:Importance")); FIELD_MAP.put("percentcomplete", new UnindexedFieldURI("task:PercentComplete")); FIELD_MAP.put("taskstatus", new UnindexedFieldURI("task:Status"));