Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

rssowl google sync page size

By: a guest on Jun 26th, 2012  |  syntax: Diff  |  size: 8.76 KB  |  views: 56  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Index: SyncService.java
  2. ===================================================================
  3. --- SyncService.java    (revision 8609)
  4. +++ SyncService.java    (working copy)
  5. @@ -81,6 +81,8 @@
  6.    /* Sync scheduler interval in Millies */
  7.    private static final int SYNC_SCHEDULER = 300000; // 5 minutes
  8.  
  9. +  private static final int SYNC_PAGE_SIZE = 150;
  10. +
  11.    /* HTTP Constants */
  12.    private static final String REQUEST_HEADER_CONTENT_TYPE = "Content-Type"; //$NON-NLS-1$
  13.    private static final String REQUEST_HEADER_AUTHORIZATION = "Authorization"; //$NON-NLS-1$
  14. @@ -393,96 +395,102 @@
  15.          if (equivalentItems.isEmpty())
  16.            continue;
  17.  
  18. -        /* Connection Headers */
  19. -        Map<String, String> headers = new HashMap<String, String>();
  20. -        headers.put(REQUEST_HEADER_CONTENT_TYPE, CONTENT_TYPE_FORM_ENCODED);
  21. -        headers.put(REQUEST_HEADER_AUTHORIZATION, SyncUtils.getGoogleAuthorizationHeader(authToken));
  22. +        for (int syncPage = 0; syncPage <= equivalentItems.size() / SYNC_PAGE_SIZE; syncPage++) {
  23. +          int fromIndex = syncPage * SYNC_PAGE_SIZE;
  24. +          int toIndex = Math.min((syncPage + 1) * SYNC_PAGE_SIZE, equivalentItems.size());
  25. +          List<SyncItem> equivalentItemsPage = equivalentItems.subList(fromIndex, toIndex);
  26.  
  27. -        /* POST Parameters */
  28. -        Map<String, String[]> parameters = new HashMap<String, String[]>();
  29. -        parameters.put(SyncUtils.API_PARAM_TOKEN, new String[] { token });
  30. +          /* Connection Headers */
  31. +          Map<String, String> headers = new HashMap<String, String>();
  32. +          headers.put(REQUEST_HEADER_CONTENT_TYPE, CONTENT_TYPE_FORM_ENCODED);
  33. +          headers.put(REQUEST_HEADER_AUTHORIZATION, SyncUtils.getGoogleAuthorizationHeader(authToken));
  34.  
  35. -        List<String> identifiers = new ArrayList<String>();
  36. -        List<String> streamIds = new ArrayList<String>();
  37. -        Set<String> tagsToAdd = new HashSet<String>();
  38. -        Set<String> tagsToRemove = new HashSet<String>();
  39. -        for (SyncItem item : equivalentItems) {
  40. -          identifiers.add(item.getId());
  41. -          streamIds.add(item.getStreamId());
  42. +          /* POST Parameters */
  43. +          Map<String, String[]> parameters = new HashMap<String, String[]>();
  44. +          parameters.put(SyncUtils.API_PARAM_TOKEN, new String[] { token });
  45.  
  46. -          if (item.isMarkedRead()) {
  47. -            tagsToAdd.add(SyncUtils.CATEGORY_READ);
  48. -            tagsToRemove.add(SyncUtils.CATEGORY_UNREAD);
  49. -          }
  50. +          List<String> identifiers = new ArrayList<String>();
  51. +          List<String> streamIds = new ArrayList<String>();
  52. +          Set<String> tagsToAdd = new HashSet<String>();
  53. +          Set<String> tagsToRemove = new HashSet<String>();
  54. +          for (SyncItem item : equivalentItemsPage) {
  55. +            identifiers.add(item.getId());
  56. +            streamIds.add(item.getStreamId());
  57.  
  58. -          if (item.isMarkedUnread()) {
  59. -            tagsToAdd.add(SyncUtils.CATEGORY_UNREAD);
  60. -            tagsToAdd.add(SyncUtils.CATEGORY_TRACKING_UNREAD);
  61. -            tagsToRemove.add(SyncUtils.CATEGORY_READ);
  62. -          }
  63. +            if (item.isMarkedRead()) {
  64. +              tagsToAdd.add(SyncUtils.CATEGORY_READ);
  65. +              tagsToRemove.add(SyncUtils.CATEGORY_UNREAD);
  66. +            }
  67.  
  68. -          if (item.isStarred())
  69. -            tagsToAdd.add(SyncUtils.CATEGORY_STARRED);
  70. +            if (item.isMarkedUnread()) {
  71. +              tagsToAdd.add(SyncUtils.CATEGORY_UNREAD);
  72. +              tagsToAdd.add(SyncUtils.CATEGORY_TRACKING_UNREAD);
  73. +              tagsToRemove.add(SyncUtils.CATEGORY_READ);
  74. +            }
  75.  
  76. -          if (item.isUnStarred())
  77. -            tagsToRemove.add(SyncUtils.CATEGORY_STARRED);
  78. +            if (item.isStarred())
  79. +              tagsToAdd.add(SyncUtils.CATEGORY_STARRED);
  80.  
  81. -          List<String> addedLabels = item.getAddedLabels();
  82. -          if (addedLabels != null) {
  83. -            for (String label : addedLabels) {
  84. -              tagsToAdd.add(SyncUtils.CATEGORY_LABEL_PREFIX + label);
  85. +            if (item.isUnStarred())
  86. +              tagsToRemove.add(SyncUtils.CATEGORY_STARRED);
  87. +
  88. +            List<String> addedLabels = item.getAddedLabels();
  89. +            if (addedLabels != null) {
  90. +              for (String label : addedLabels) {
  91. +                tagsToAdd.add(SyncUtils.CATEGORY_LABEL_PREFIX + label);
  92. +              }
  93.              }
  94. -          }
  95.  
  96. -          List<String> removedLabels = item.getRemovedLabels();
  97. -          if (removedLabels != null) {
  98. -            for (String label : removedLabels) {
  99. -              tagsToRemove.add(SyncUtils.CATEGORY_LABEL_PREFIX + label);
  100. +            List<String> removedLabels = item.getRemovedLabels();
  101. +            if (removedLabels != null) {
  102. +              for (String label : removedLabels) {
  103. +                tagsToRemove.add(SyncUtils.CATEGORY_LABEL_PREFIX + label);
  104. +              }
  105.              }
  106.            }
  107. -        }
  108.  
  109. -        parameters.put(SyncUtils.API_PARAM_IDENTIFIER, identifiers.toArray(new String[identifiers.size()]));
  110. -        parameters.put(SyncUtils.API_PARAM_STREAM, streamIds.toArray(new String[streamIds.size()]));
  111. +          parameters.put(SyncUtils.API_PARAM_IDENTIFIER, identifiers.toArray(new String[identifiers.size()]));
  112. +          parameters.put(SyncUtils.API_PARAM_STREAM, streamIds.toArray(new String[streamIds.size()]));
  113.  
  114. -        if (!tagsToAdd.isEmpty())
  115. -          parameters.put(SyncUtils.API_PARAM_TAG_TO_ADD, tagsToAdd.toArray(new String[tagsToAdd.size()]));
  116. +          if (!tagsToAdd.isEmpty())
  117. +            parameters.put(SyncUtils.API_PARAM_TAG_TO_ADD, tagsToAdd.toArray(new String[tagsToAdd.size()]));
  118.  
  119. -        if (!tagsToRemove.isEmpty())
  120. -          parameters.put(SyncUtils.API_PARAM_TAG_TO_REMOVE, tagsToRemove.toArray(new String[tagsToRemove.size()]));
  121. +          if (!tagsToRemove.isEmpty())
  122. +            parameters.put(SyncUtils.API_PARAM_TAG_TO_REMOVE, tagsToRemove.toArray(new String[tagsToRemove.size()]));
  123.  
  124. -        /* Connection Properties */
  125. -        Map<Object, Object> properties = new HashMap<Object, Object>();
  126. -        properties.put(IConnectionPropertyConstants.HEADERS, headers);
  127. -        properties.put(IConnectionPropertyConstants.POST, Boolean.TRUE);
  128. -        properties.put(IConnectionPropertyConstants.PARAMETERS, parameters);
  129. -        properties.put(IConnectionPropertyConstants.CON_TIMEOUT, getConnectionTimeout());
  130. +          /* Connection Properties */
  131. +          Map<Object, Object> properties = new HashMap<Object, Object>();
  132. +          properties.put(IConnectionPropertyConstants.HEADERS, headers);
  133. +          properties.put(IConnectionPropertyConstants.POST, Boolean.TRUE);
  134. +          properties.put(IConnectionPropertyConstants.PARAMETERS, parameters);
  135. +          properties.put(IConnectionPropertyConstants.CON_TIMEOUT, getConnectionTimeout());
  136.  
  137. -        /* Return on cancellation */
  138. -        if (isCanceled(monitor))
  139. -          return itemCount;
  140. +          /* Return on cancellation */
  141. +          if (isCanceled(monitor))
  142. +            return itemCount;
  143.  
  144. -        /* Perform POST */
  145. -        URI uri = URI.create(SyncUtils.GOOGLE_EDIT_TAG_URL);
  146. -        IProtocolHandler handler = Owl.getConnectionService().getHandler(uri);
  147. -        InputStream inS = null;
  148. -        try {
  149. -          inS = handler.openStream(uri, new NullProgressMonitor(), properties); //Do not allow to cancel this outgoing request for transactional reasons
  150. -          fSyncItemsManager.removeUncommitted(equivalentItems);
  151. -          itemCount += equivalentItems.size();
  152. -        } finally {
  153. -          if (inS != null) {
  154. -            try {
  155. -              inS.close();
  156. -            } catch (IOException e) {
  157. -              throw new ConnectionException(Activator.getDefault().createErrorStatus(e.getMessage(), e));
  158. +          /* Perform POST */
  159. +          URI uri = URI.create(SyncUtils.GOOGLE_EDIT_TAG_URL);
  160. +          IProtocolHandler handler = Owl.getConnectionService().getHandler(uri);
  161. +          InputStream inS = null;
  162. +          try {
  163. +            inS = handler.openStream(uri, new NullProgressMonitor(), properties); //Do not allow to cancel this outgoing request for transactional reasons
  164. +            fSyncItemsManager.removeUncommitted(equivalentItemsPage);
  165. +            itemCount += equivalentItemsPage.size();
  166. +          } finally {
  167. +            if (inS != null) {
  168. +              try {
  169. +                inS.close();
  170. +              } catch (IOException e) {
  171. +                throw new ConnectionException(Activator.getDefault().createErrorStatus(e.getMessage(), e));
  172. +              }
  173.              }
  174.            }
  175. +
  176. +          /* Return on cancellation */
  177. +          if (isCanceled(monitor))
  178. +            return itemCount;
  179.          }
  180. -
  181. -        /* Return on cancellation */
  182. -        if (isCanceled(monitor))
  183. -          return itemCount;
  184.        }
  185.      }
clone this paste RAW Paste Data