Beispiel #1
0
 public static ActFmSyncThread getInstance() {
   if (instance == null) {
     synchronized (ActFmSyncThread.class) {
       if (instance == null) {
         initializeSyncComponents(
             PluginServices.getTaskDao(),
             PluginServices.getTagDataDao(),
             PluginServices.getUserActivityDao(),
             PluginServices.getTaskAttachmentDao(),
             PluginServices.getTaskListMetadataDao());
       }
     }
   }
   return instance;
 }
 private static NowBriefed<?> instantiateNowBriefed(JSONObject json) {
   String table = json.optString("table");
   if (NameMaps.TABLE_ID_TASKS.equals(table))
     return new NowBriefed<Task>(json, PluginServices.getTaskDao());
   else if (NameMaps.TABLE_ID_TAGS.equals(table))
     return new NowBriefed<TagData>(json, PluginServices.getTagDataDao());
   else if (NameMaps.TABLE_ID_USER_ACTIVITY.equals(table))
     return new NowBriefed<UserActivity>(json, PluginServices.getUserActivityDao());
   else if (NameMaps.TABLE_ID_USERS.equals(table))
     return new NowBriefed<User>(json, PluginServices.getUserDao());
   else if (NameMaps.TABLE_ID_ATTACHMENTS.equals(table))
     return new NowBriefed<TaskAttachment>(json, PluginServices.getTaskAttachmentDao());
   else if (NameMaps.TABLE_ID_TASK_LIST_METADATA.equals(table))
     return new NowBriefed<TaskListMetadata>(json, PluginServices.getTaskListMetadataDao());
   else return null;
 }
Beispiel #3
0
  public void synchronizeMembers(
      TagData tagData, String legacyMembersString, String tagUuid, JSONArray members) {
    long tagId = tagData.getId();
    Set<String> emails = new HashSet<String>();
    Set<String> ids = new HashSet<String>();

    HashMap<String, String> idToEmail = new HashMap<String, String>();

    for (int i = 0; i < members.length(); i++) {
      JSONObject person = members.optJSONObject(i);
      if (person != null) {
        String id = person.optString("id"); // $NON-NLS-1$
        if (!TextUtils.isEmpty(id)) {
          ids.add(id);
        }

        String email = person.optString("email"); // $NON-NLS-1$
        if (!TextUtils.isEmpty(email)) {
          emails.add(email);
        }

        if (!TextUtils.isEmpty(id) && !TextUtils.isEmpty(email)) {
          idToEmail.put(id, email);
        }
      }
    }

    if (!TextUtils.isEmpty(legacyMembersString)) {
      try {
        JSONArray legacyMembers = new JSONArray(legacyMembersString);
        for (int i = 0; i < legacyMembers.length(); i++) {
          JSONObject user = legacyMembers.optJSONObject(i);
          if (user != null) {
            String id = user.optString("id"); // $NON-NLS-1$
            String email = user.optString("email"); // $NON-NLS-1$

            if (!TextUtils.isEmpty(id)) {
              createMemberLink(tagId, tagUuid, id, !ids.contains(id), false);
            } else if (!TextUtils.isEmpty(email)) {
              createMemberLink(tagId, tagUuid, email, !emails.contains(email), false);
            }
          }
        }
      } catch (JSONException e) {
        //
      }
      tagData.setValue(TagData.MEMBERS, ""); // $NON-NLS-1$
      PluginServices.getTagDataDao().saveExisting(tagData);
    }

    TodorooCursor<TagMetadata> currentMembers =
        query(
            Query.select(TagMemberMetadata.USER_UUID)
                .where(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY)));
    try {
      TagMetadata m = new TagMetadata();
      for (currentMembers.moveToNext();
          !currentMembers.isAfterLast();
          currentMembers.moveToNext()) {
        m.clear();
        m.readFromCursor(currentMembers);

        String userId = m.getValue(TagMemberMetadata.USER_UUID);
        boolean exists = ids.remove(userId) || emails.remove(userId);
        if (exists && idToEmail.containsKey(userId)) {
          String email = idToEmail.get(userId);
          emails.remove(email);
        }

        if (!exists) { // Was in database, but not in new members list
          removeMemberLink(tagId, tagUuid, userId, false);
        }
      }
    } finally {
      currentMembers.close();
    }

    for (String email : emails) {
      createMemberLink(tagId, tagUuid, email, false);
    }

    for (String id : ids) {
      createMemberLink(tagId, tagUuid, id, false);
    }
  }