1 18 19 package sync4j.exchange.items.task.dao; 20 21 import java.io.IOException ; 22 import java.text.MessageFormat ; 23 import java.util.ArrayList ; 24 25 import sync4j.exchange.util.StringTools; 26 27 import sync4j.exchange.httptransport.WebDavHttpTransport; 28 import sync4j.exchange.items.task.model.Task; 29 import sync4j.exchange.items.common.dao.ItemDAO; 30 import sync4j.exchange.DataAccessException; 31 import sync4j.exchange.xml.XmlParseException; 32 import sync4j.exchange.xml.XmlParser; 33 import java.util.Date ; 34 import java.text.SimpleDateFormat ; 35 import java.util.TimeZone ; 36 37 38 45 public class TaskDAO extends ItemDAO { 46 47 49 private static final String WEBDAV_MSG_SELECT_TASKS = 50 "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" + 51 "<D:searchrequest xmlns:D =\"DAV:\">\n" + 52 "<D:sql>\n" + 53 "Select " + 54 "\"urn:schemas:httpmail:textdescription\" AS textdescription, " + 55 "\"urn:schemas:httpmail:subject\" AS subject, " + 56 "\"urn:schemas:calendar:dtstart\" AS dtstart, " + 57 "\"urn:schemas:calendar:dtend\" AS dtend, " + 58 "\"http://schemas.microsoft.com/exchange/keywords-utf8\" AS categories, " + 59 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x8110\" as actualwork, " + 60 "\"http://schemas.microsoft.com/mapi/id/'{'00062008-0000-0000-C000-000000000046'}'/0x8535\" as billinginformation, " + 61 "\"http://schemas.microsoft.com/mapi/id/'{'00062008-0000-0000-C000-000000000046'}'/0x8539\" as companies, " + 62 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x811c\" as complete, " + 63 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x8104\" as date, " + 64 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x810F\" as datecompleted, " + 65 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x8105\" as duedate, " + 66 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x811F\" as owner, " + 67 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x8102\" as perc, " + 68 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x8101\" as status, " + 69 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x8103\" as TeamTask, " + 70 "\"http://schemas.microsoft.com/mapi/id/'{'00062003-0000-0000-C000-000000000046'}'/0x8111\" as TotalWork, " + 71 "\"http://schemas.microsoft.com/mapi/reminderset\" as reminderset, " + 72 "\"http://schemas.microsoft.com/mapi/remindertime\" as remindertime, " + 73 "\"urn:schemas:httpmail:importance\" as importance, " + 74 "\"http://schemas.microsoft.com/exchange/mileage\" as mileage, " + 75 "\"http://schemas.microsoft.com/mapi/sensitivity\" as sensitivity, " + 76 "\"http://schemas.microsoft.com/repl/repl-uid\" AS repluid, " + 77 "\"DAV:getlastmodified\" AS getlastmodified, " + 78 "\"DAV:isfolder\" AS isfolder " + 79 "FROM \"/{0}/{1}/{2}\" " + 80 "{3} " + 81 "</D:sql>\n" + 82 "</D:searchrequest>" ; 83 84 public static final String TAG_DATE = "date" ; 85 public static final String TAG_DESCRIPTION = 86 "textdescription" ; 87 88 public static final String TAG_RESPONSE = "a:response" ; 89 public static final String TAG_SUBJECT = "subject" ; 90 91 public static final String TAG_REPLUID = "repluid" ; 92 93 public static final String TAG_LAST_MODIFIED = "getlastmodified" ; 94 95 public static final String TAG_DUE_DATE = "duedate" ; 96 97 98 100 private WebDavHttpTransport webDavHttp = null ; 101 102 104 public TaskDAO(String exchangeServerHost , 105 int exchangeServerPort) 106 throws DataAccessException { 107 108 this.webDavHttp = new WebDavHttpTransport(exchangeServerHost, 109 exchangeServerPort); 110 } 111 113 125 public Task setTask(Task task , 126 String username , 127 String credentials , 128 String exchangeFolder ) 129 throws DataAccessException { 130 131 132 String response = null ; 133 134 String id = null ; 135 136 StringBuffer webDavTaskMsg = new StringBuffer (); 137 138 String webDavHeaderMsg = null ; 139 140 String server = null ; 141 String resource = null ; 142 143 String tmp = null ; 144 145 server = getServerFromExchangeFolder (exchangeFolder ); 146 resource = getResourceFromExchangeFolder (exchangeFolder ); 147 148 149 webDavTaskMsg.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"); 150 webDavTaskMsg.append("<D:propertyupdate xmlns:D=\"DAV:\" "); 151 webDavTaskMsg.append("xmlns:EX=\"http://schemas.microsoft.com/exchange/\" "); 152 webDavTaskMsg.append("xmlns:HN=\"urn:schemas:httpmail:\" "); 153 webDavTaskMsg.append("xmlns:MAPI_ID_1=\"http://schemas.microsoft.com/mapi/id/{00062003-0000-0000-C000-000000000046}/\" "); 154 webDavTaskMsg.append("xmlns:MAPI_ID_2=\"http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/\" "); 155 webDavTaskMsg.append("xmlns:MAPI=\"http://schemas.microsoft.com/mapi/\" "); 156 webDavTaskMsg.append("xmlns:x=\"xml:\" "); 157 webDavTaskMsg.append("xmlns:b=\"urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/\">\n"); 158 webDavTaskMsg.append("<D:set>\n"); 159 webDavTaskMsg.append(" <D:prop>\n"); 160 webDavTaskMsg.append(" <D:contentclass>urn:content-classes:person</D:contentclass>\n"); 161 webDavTaskMsg.append(" <EX:outlookmessageclass>IPM.Task</EX:outlookmessageclass>\n"); 162 163 webDavTaskMsg.append("<MAPI_ID_1:0x8110 b:dt=\"int\">"); 164 webDavTaskMsg.append(task.getActualWork()); 165 webDavTaskMsg.append("</MAPI_ID_1:0x8110>"); 166 167 tmp = dateToWebDavTag(task.getDate()); 168 if (tmp != null && !tmp.equals("")) { 169 webDavTaskMsg.append("<MAPI_ID_1:0x8104 b:dt=\"dateTime.tz\">"); 170 webDavTaskMsg.append(tmp); 171 webDavTaskMsg.append("</MAPI_ID_1:0x8104>"); 172 } 173 174 tmp = dateToWebDavTag(task.getDateCompleted()); 175 if (tmp != null && !tmp.equals("")) { 176 webDavTaskMsg.append("<MAPI_ID_1:0x810F b:dt=\"dateTime.tz\">"); 177 webDavTaskMsg.append(tmp); 178 webDavTaskMsg.append("</MAPI_ID_1:0x810F>"); 179 } 180 181 tmp = dateToWebDavTag(task.getDueDate()); 182 if (tmp != null && !tmp.equals("")) { 183 webDavTaskMsg.append("<MAPI_ID_1:0x8105 b:dt=\"dateTime.tz\">"); 184 webDavTaskMsg.append(tmp); 185 webDavTaskMsg.append("</MAPI_ID_1:0x8105>"); 186 } 187 188 String billingInformation = task.getBillingInformation(); 189 if (billingInformation != null) { 190 billingInformation = StringTools.escapeXml(billingInformation); 191 webDavTaskMsg.append("<MAPI_ID_2:0x8535>"); 192 webDavTaskMsg.append(billingInformation); 193 webDavTaskMsg.append("</MAPI_ID_2:0x8535>"); 194 } 195 196 String companies = task.getCompanies(); 197 if (companies != null && companies.length() > 0) { 198 199 companies = StringTools.escapeXml(companies); 200 201 companies = XmlParser. 202 fieldToMultipleTag 203 (companies); 204 205 webDavTaskMsg.append("<MAPI_ID_2:0x8539 b:dt=\"mv.string\">"); 206 webDavTaskMsg.append(companies); 207 webDavTaskMsg.append("</MAPI_ID_2:0x8539>"); 208 } 209 210 if (task.getImportance() != null) { 211 webDavTaskMsg.append("<HN:importance>"); 212 webDavTaskMsg.append(task.getImportance()); 213 webDavTaskMsg.append("</HN:importance>"); 214 } 215 216 if (task.getMileage() != null) { 217 webDavTaskMsg.append("<EX:mileage>"); 218 webDavTaskMsg.append(task.getMileage()); 219 webDavTaskMsg.append("</EX:mileage>"); 220 } 221 222 String owner = task.getOwner(); 223 if (owner != null) { 224 owner = StringTools.escapeXml(owner); 225 webDavTaskMsg.append("<MAPI_ID_1:0x811F>"); 226 webDavTaskMsg.append(owner); 227 webDavTaskMsg.append("</MAPI_ID_1:0x811F>"); 228 } 229 230 String categories = task.getCategories(); 231 if (categories != null && categories.length() > 0) { 232 233 categories = StringTools.escapeXml(categories); 234 235 categories = XmlParser. 236 fieldToMultipleTag 237 (categories); 238 239 webDavTaskMsg.append("<EX:keywords-utf8>"); 240 webDavTaskMsg.append(categories); 241 webDavTaskMsg.append("</EX:keywords-utf8>"); 242 } 243 244 webDavTaskMsg.append("<MAPI:reminderset>"); 245 webDavTaskMsg.append((task.getReminderSet() ? "1" : "0")); 246 webDavTaskMsg.append("</MAPI:reminderset>"); 247 248 tmp = dateToWebDavTag(task.getReminderTime()); 249 if (tmp != null && !tmp.equals("")) { 250 webDavTaskMsg.append("<MAPI:remindertime b:dt=\"dateTime.tz\">"); 251 webDavTaskMsg.append(tmp); 252 webDavTaskMsg.append("</MAPI:remindertime>"); 253 } 254 255 if (task.getSensitivity() != null) { 256 webDavTaskMsg.append("<MAPI:sensitivity>"); 257 webDavTaskMsg.append(task.getSensitivity()); 258 webDavTaskMsg.append("</MAPI:sensitivity>"); 259 } 260 261 webDavTaskMsg.append("<MAPI_ID_1:0x811c b:dt=\"boolean\">"); 262 webDavTaskMsg.append( (task.isComplete() ? "1" : "0") ); 263 webDavTaskMsg.append("</MAPI_ID_1:0x811c>"); 264 265 266 String sPerc = task.getPercentComplete(); 267 String status = task.getStatus(); 268 269 if (task.isComplete()) { 270 sPerc = "100"; 271 status = "2"; } 273 274 if (sPerc != null) { 275 float perc = Float.parseFloat(sPerc) / 100; 276 webDavTaskMsg.append("<MAPI_ID_1:0x8102 b:dt=\"float\">"); 277 webDavTaskMsg.append(perc); 278 webDavTaskMsg.append("</MAPI_ID_1:0x8102>"); 279 } 280 281 if (status != null) { 282 webDavTaskMsg.append("<MAPI_ID_1:0x8101 b:dt=\"int\">"); 283 webDavTaskMsg.append(status); 284 webDavTaskMsg.append("</MAPI_ID_1:0x8101>"); 285 } 286 287 String subject = task.getSubject(); 288 289 if (subject != null) { 290 subject = StringTools.escapeXml(subject); 291 webDavTaskMsg.append("<HN:subject>"); 292 webDavTaskMsg.append(subject); 293 webDavTaskMsg.append("</HN:subject>"); 294 } 295 296 webDavTaskMsg.append("<MAPI_ID_1:0x8103 b:dt=\"boolean\">"); 297 webDavTaskMsg.append( (task.isTeamTask() ? "1" : "0")); 298 webDavTaskMsg.append("</MAPI_ID_1:0x8103>"); 299 300 String textDescription = task.getTextDescription(); 301 if (textDescription != null) { 302 textDescription = StringTools.escapeXml(textDescription); 303 webDavTaskMsg.append("<HN:textdescription>"); 304 webDavTaskMsg.append(textDescription); 305 webDavTaskMsg.append("</HN:textdescription>"); 306 } 307 308 webDavTaskMsg.append("<MAPI_ID_1:0x8111 b:dt=\"int\">"); 309 webDavTaskMsg.append(task.getTotalWork()); 310 webDavTaskMsg.append("</MAPI_ID_1:0x8111>"); 311 312 webDavTaskMsg.append(" </D:prop>\n"); 313 webDavTaskMsg.append("</D:set>\n"); 314 webDavTaskMsg.append("</D:propertyupdate>"); 315 316 webDavHeaderMsg 317 = MessageFormat.format(ItemDAO.WEBDAV_HEADER_PROPPATCH, 318 new Object [] { 319 "/" + 320 server + 321 "/" + 322 username + 323 "/" + 324 resource , 325 task.getHref() 326 } 327 ); 328 329 330 try { 331 response = this.webDavHttp.sendRequest(webDavHeaderMsg, 332 credentials, 333 webDavTaskMsg.toString(), 334 FILE_ENCODING); 335 } catch (Exception e) { 336 throw new DataAccessException("Error getting Exchange server response", 337 e); 338 } 339 340 try { 341 int s = getStatusFromResponse(response); 342 checkResponseStatus(s); 343 } catch (Exception e) { 344 345 throw new DataAccessException("USER " + 346 username + 347 " URI " + 348 exchangeFolder + 349 " setting exchange task" , 350 e) ; 351 352 } 353 354 try { 355 id = XmlParser.getRuidFromResponse(response); 356 } catch (XmlParseException e) { 357 throw new DataAccessException("Error getting task id", e); 358 } 359 360 task.setId(id); 361 362 return task; 363 364 } 365 366 377 public void removeTask(Task task , 378 String username , 379 String credentials , 380 String exchangeFolder ) 381 throws DataAccessException { 382 383 String webDavTaskMsg = null ; 384 385 String webDavHeaderMsg = null ; 386 387 String response = null ; 388 389 String server = null ; 390 String resource = null ; 391 392 server = getServerFromExchangeFolder (exchangeFolder ); 393 resource = getResourceFromExchangeFolder (exchangeFolder ); 394 395 webDavTaskMsg = "" ; 396 397 webDavHeaderMsg = 398 MessageFormat.format(ItemDAO.WEBDAV_HEADER_REMOVE, 399 new Object [] { 400 "/" + 401 server + 402 "/" + 403 username + 404 "/" + 405 resource , 406 task.getHref() 407 } 408 ); 409 410 try { 411 response = this.webDavHttp.sendRequest(webDavHeaderMsg, credentials, webDavTaskMsg, FILE_ENCODING); 412 } catch (IOException e) { 413 throw new DataAccessException("Error getting Exchange server response", 414 e); 415 } 416 417 try { 418 int s = getStatusFromResponse(response); 419 checkResponseStatus(s); 420 } catch (Exception e) { 421 422 throw new DataAccessException("USER " + 423 username + 424 " URI " + 425 exchangeFolder + 426 " removing exchange task" , 427 e) ; 428 429 } 430 431 } 432 433 445 public Task[] getTasks (String username , 446 String credentials , 447 String [] ids , 448 String exchangeFolder ) 449 throws DataAccessException { 450 451 String clause = getClause(ids); 452 return getTasks(username, credentials, clause, exchangeFolder); 453 } 454 455 456 468 public Task[] getTasks(String username, 469 String credentials, 470 String fields[], 471 Object values[], 472 String exchangeFolder) throws DataAccessException { 473 474 String clause = null ; 475 476 clause = getClause(fields, values); 477 478 return getTasks(username, credentials, clause, exchangeFolder); 479 } 480 481 483 493 private Task[] getTasksFromWebDavMsg(String webDavMsg) 494 throws DataAccessException { 495 496 ArrayList tasks = null ; 497 String [] resps = null ; 498 String [] msg = null ; 499 500 String response = null ; 501 String id = null ; 502 String replUid = null ; 503 504 String isFolder = null ; 505 int count = 0 ; 506 507 msg = new String [] {webDavMsg}; 508 509 tasks = new ArrayList (); 510 511 try { 512 513 resps = XmlParser.getXMLTag(msg, TAG_RESPONSE); 514 515 for (int i = 0, l = resps.length; i < l; i++) { 516 517 response = resps[i] ; 518 replUid = XmlParser.getXMLInitTagValue(response, TAG_REPLUID); 519 id = getIdFromReplUid(replUid) ; 520 521 isFolder = XmlParser.getXMLInitTagValue(response, 522 TAG_IS_FOLDER) ; 523 if(PROP_NO_FOLDER.equals(isFolder)) { 524 tasks.add(getTaskFromResponseTag(id, response)); 525 count ++; 526 } 527 528 } 529 530 } catch (XmlParseException e) { 531 throw new DataAccessException("Error parsing task", e); 532 } 533 534 return (Task[])tasks.toArray(new Task[count]); 535 536 } 537 538 548 private Task getTaskFromResponseTag(String id, String msgResponse) 549 throws DataAccessException { 550 551 Task t = null ; 552 String lastUpdate = null ; 553 String date = null ; 554 555 String categories = null ; 556 557 String companies = null ; 558 559 String tmp = null ; 560 561 t = new Task(id); 562 563 try { 564 565 tmp = XmlParser.getXMLInitTagValue 566 (msgResponse, "actualwork"); 567 568 if (tmp != null && tmp.length() > 0) { 569 t.setActualWork(Integer.parseInt(tmp)); 570 } 571 572 t.setBillingInformation(XmlParser.getXMLInitTagValue 573 (msgResponse, "billinginformation")); 574 575 t.setTextDescription(XmlParser.getXMLInitTagValue 576 (msgResponse, TAG_DESCRIPTION)); 577 578 t.setSubject(XmlParser.getXMLInitTagValue 579 (msgResponse, TAG_SUBJECT)); 580 581 date = XmlParser.getXMLInitTagValue 582 (msgResponse, TAG_DATE); 583 584 t.setDate(XmlParser.webDavTagToDate(date)); 585 586 lastUpdate = XmlParser.getXMLInitTagValue 587 (msgResponse, TAG_LAST_MODIFIED); 588 589 t.setLastModified(XmlParser.webDavTagToDate 590 (lastUpdate)); 591 592 t.setTextDescription(XmlParser.getXMLInitTagValue 593 (msgResponse, TAG_DESCRIPTION)); 594 595 companies = XmlParser.getXMLInitTagValue 596 (msgResponse, "companies"); 597 598 if (companies != null) { 599 600 try { 601 companies = XmlParser.getFieldFromMultipleTag(companies); 602 } catch (Exception e) { 603 throw new DataAccessException(e.getMessage()); 604 } 605 606 t.setCompanies(companies); 607 608 } 609 610 categories = XmlParser.getXMLInitTagValue 611 (msgResponse, "categories"); 612 613 if (categories != null) { 614 615 try { 616 categories = XmlParser.getFieldFromMultipleTag(categories); 617 } catch (Exception e) { 618 throw new DataAccessException(e.getMessage()); 619 } 620 621 t.setCategories(categories); 622 623 } 624 625 t.setDueDate(XmlParser.webDavTagToDate(XmlParser.getXMLInitTagValue 626 (msgResponse, "duedate"))); 627 628 t.setDateCompleted(XmlParser.webDavTagToDate(XmlParser.getXMLInitTagValue 629 (msgResponse, "datecompleted"))); 630 631 t.setImportance(XmlParser.getXMLInitTagValue 632 (msgResponse, "importance")); 633 634 t.setMileage(XmlParser.getXMLInitTagValue 635 (msgResponse, "mileage")); 636 637 t.setOwner(XmlParser.getXMLInitTagValue 638 (msgResponse, "owner")); 639 640 tmp = XmlParser.getXMLInitTagValue 641 (msgResponse, "perc"); 642 643 644 int perc = 0; 645 646 if (tmp != null && tmp.length() > 0) { 647 648 Float f = new Float (tmp); 649 650 perc = (int) (f.floatValue() * 100.0); 651 652 } 653 654 t.setPercentComplete(String.valueOf(perc)); 655 656 tmp = XmlParser.getXMLInitTagValue 657 (msgResponse, "reminderset"); 658 659 if ("1".equals(tmp)) { 660 t.setReminderSet(true); 661 } else { 662 t.setReminderSet(false); 663 } 664 665 t.setReminderTime(XmlParser.webDavTagToDate(XmlParser.getXMLInitTagValue 666 (msgResponse, "remindertime"))); 667 668 t.setSensitivity(XmlParser.getXMLInitTagValue 669 (msgResponse, "sensitivity")); 670 671 t.setStatus(XmlParser.getXMLInitTagValue 672 (msgResponse, "status")); 673 674 tmp = XmlParser.getXMLInitTagValue 675 (msgResponse, "TeamTask"); 676 677 if ("1".equals(tmp)) { 678 t.setTeamTask(true); 679 } else { 680 t.setTeamTask(false); 681 } 682 683 tmp = XmlParser.getXMLInitTagValue 684 (msgResponse, "TotalWork"); 685 686 if (tmp != null && tmp.length() > 0) { 687 t.setTotalWork(Integer.parseInt(tmp)); 688 } 689 690 tmp = XmlParser.getXMLInitTagValue(msgResponse, "complete"); 691 692 if (tmp != null && tmp.equals("1")) { 693 t.setComplete(true); 694 } else { 695 t.setComplete(false); 696 } 697 698 } catch (XmlParseException e) { 699 throw new DataAccessException("Error parsing task item: ", e); 700 } 701 702 return t; 703 704 } 705 706 714 private static String getClause (String [] fields, Object [] values) { 715 716 StringBuffer clause = new StringBuffer (); 717 718 int l = fields.length; 719 720 if (l == 0) { 721 return ""; 722 } 723 724 clause.append("where "); 725 726 StringBuffer tmp = null; 727 String valueTmp = null; 728 729 for (int i = 0; i < l; i++) { 730 tmp = new StringBuffer (); 731 732 valueTmp = ""; 733 734 if (TAG_DATE.equals(fields[i])) { 735 tmp.append("\"http://schemas.microsoft.com/mapi/id/{00062003-0000-0000-C000-000000000046}/0x8104\""); 736 737 if (values[i] != null) { 738 tmp.append("=CAST(\""); 739 valueTmp = dateToWebDavTag((java.util.Date )values[i]); 740 tmp.append(valueTmp).append("\" as 'dateTime')"); 741 } else { 742 tmp.append(" is null "); 743 } 744 } 745 746 if (TAG_DUE_DATE.equals(fields[i])) { 747 tmp.append("\"http://schemas.microsoft.com/mapi/id/{00062003-0000-0000-C000-000000000046}/0x8105\""); 748 749 if (values[i] != null) { 750 tmp.append("=CAST(\""); 751 valueTmp = dateToWebDavTag((java.util.Date )values[i]); 752 tmp.append(valueTmp).append("\" as 'dateTime')"); 753 } else { 754 tmp.append(" is null "); 755 } 756 } 757 758 759 if (TAG_SUBJECT.equals(fields[i])) { 760 tmp.append("\"urn:schemas:httpmail:subject\""); 761 762 if (values[i] != null) { 763 tmp.append("='"); 764 valueTmp = String.valueOf(values[i]); 765 valueTmp = valueTmp.replaceAll("'","''"); 766 valueTmp = StringTools.escapeXml(valueTmp); 767 tmp.append(valueTmp).append("'"); 768 } else { 769 tmp.append(" is null "); 770 } 771 772 } 773 774 if (i != 0 && tmp.length() != 0) { 775 clause.append(" and ").append(tmp); 776 } else if (tmp.length() != 0) { 777 clause.append(tmp); 778 } 779 780 } 781 782 clause.append("\r\n"); 783 784 return clause.toString(); 785 786 } 787 788 799 private Task[] getTasks(String username, 800 String credentials, 801 String clause, 802 String exchangeFolder) throws DataAccessException { 803 804 Task[] exchangeTasks = null; 805 806 String response = null; 807 String webDavTaskMsg = null; 808 809 String webDavHeaderMsg = null; 810 811 String server = null; 812 String resource = null; 813 814 server = getServerFromExchangeFolder(exchangeFolder); 815 resource = getResourceFromExchangeFolder(exchangeFolder); 816 webDavTaskMsg = 817 MessageFormat.format(WEBDAV_MSG_SELECT_TASKS, 818 new Object [] {server, username, resource, 819 clause}); 820 821 webDavHeaderMsg = 822 MessageFormat.format(ItemDAO.WEBDAV_HEADER_SELECT, 823 new Object [] { 824 "/" + 825 server + 826 "/" + 827 username + 828 "/" + 829 resource 830 } 831 ); 832 833 try { 834 response = this.webDavHttp.sendRequest(webDavHeaderMsg, credentials, 835 webDavTaskMsg, FILE_ENCODING); 836 } catch (IOException e) { 837 throw new DataAccessException( 838 "Error getting Exchange server response", 839 e); 840 } 841 842 try { 843 int s = getStatusFromResponse(response); 844 checkResponseStatus(s); 845 } catch (Exception e) { 846 847 throw new DataAccessException("USER " + 848 username + 849 " URI " + 850 exchangeFolder + 851 " getting exchange task", 852 e); 853 854 } 855 856 exchangeTasks = getTasksFromWebDavMsg(response); 857 858 return exchangeTasks; 859 } 860 861 } 862 | Popular Tags |