public UserActionEntity build() { return new UserActionEntity( mId, mTimestamp, mEntityType, mEntityId, mEntityParam, mActionType, mActionParam ); } }
public static Builder newBuilder(UserActionEntity userAction) { return newBuilder() .setId(userAction.getActionId()) .setTimestamp(userAction.getDatetime()) .setEntityType(userAction.getEntityType()) .setEntityId(userAction.getEntityId()) .setEntityParam(userAction.getEntityParam()) .setActionType(userAction.getActionType()) .setActionParam(userAction.getActionParam()); }
public static PickUpRequestUserActionEntity fromUserAction(UserActionEntity userAction) { return new PickUpRequestUserActionEntity( userAction.getDatetime(), userAction.getEntityId(), userAction.getActionParam()); }
private boolean isCreateRequestUserAction(UserActionEntity userAction) { return userAction.getEntityType().equals(IDoCareContract.UserActions.ENTITY_TYPE_REQUEST) && userAction.getActionType().equals(IDoCareContract.UserActions.ACTION_TYPE_CREATE_REQUEST); }
public void cacheUserAction(UserActionEntity userAction) { mLogger.d(TAG, "cacheUserAction(); user action: " + userAction); ContentValues userActionCV = new ContentValues(6); userActionCV.put(IDoCareContract.UserActions.COL_TIMESTAMP, userAction.getDatetime()); userActionCV.put(IDoCareContract.UserActions.COL_ENTITY_TYPE, userAction.getEntityType()); userActionCV.put(IDoCareContract.UserActions.COL_ENTITY_ID, userAction.getEntityId()); userActionCV.put(IDoCareContract.UserActions.COL_ENTITY_PARAM, userAction.getEntityParam()); userActionCV.put(IDoCareContract.UserActions.COL_ACTION_TYPE, userAction.getActionType()); userActionCV.put(IDoCareContract.UserActions.COL_ACTION_PARAM, userAction.getActionParam()); mContentResolver.insert( IDoCareContract.UserActions.CONTENT_URI, userActionCV ); }
/** * * @param userAction the user action which should be applied to request * @param requestEntity the request on which to apply the user action * @return new request which is the merge of the provided request and the information from * user action * @throws IllegalArgumentException if the provided user action is not applicable to the * provided request */ public RequestEntity applyUserActionToRequest(@NonNull UserActionEntity userAction, @NonNull RequestEntity requestEntity) { if (!userAction.getEntityType().equals(UserActions.ENTITY_TYPE_REQUEST) || !userAction.getEntityId().equals(requestEntity.getId())) { throw new IllegalArgumentException("user action is not related to the request"); } if (userAction.getActionType().equals(UserActions.ACTION_TYPE_CLOSE_REQUEST)) { return closeRequest(CloseRequestUserActionEntity.fromUserAction(userAction), requestEntity); } else if (userAction.getActionType().equals(UserActions.ACTION_TYPE_PICKUP_REQUEST)) { return pickUpRequest(PickUpRequestUserActionEntity.fromUserAction(userAction), requestEntity); } else if (userAction.getActionType().equals(UserActions.ACTION_TYPE_CREATE_REQUEST)) { // this action is just a "marker" - the actual data has already been written to requests cache return requestEntity; } else if (userAction.getActionType().equals(UserActions.ACTION_TYPE_VOTE_FOR_REQUEST)) { return voteForRequest(VoteForRequestUserActionEntity.fromUserAction(userAction), requestEntity); } else { throw new RuntimeException("invalid user action: " + userAction); } }
private void handleUserActionDispatched(UserActionEntity userAction) { String entityId = userAction.getEntityId(); // Mark user's action as being dispatched mEntityIdToDispatchedUserActionsMap.get(entityId).add(userAction); mDispatchedUserActionsCount++; }
private static int getVoteTypeFromUserAction(UserActionEntity userAction) { String entityParam = userAction.getEntityParam(); String actionParam = userAction.getActionParam(); switch (entityParam) { case IDoCareContract.UserActions.ENTITY_PARAM_REQUEST_CREATED: switch (actionParam) { case "1": return VOTE_UP_CREATED; case "-1": return VOTE_DOWN_CREATED; default: throw new RuntimeException(); } case IDoCareContract.UserActions.ENTITY_PARAM_REQUEST_CLOSED: switch (actionParam) { case "1": return VOTE_UP_CLOSED; case "-1": return VOTE_DOWN_CLOSED; default: throw new RuntimeException(); } default: throw new RuntimeException(); } }
public static VoteForRequestUserActionEntity fromUserAction(UserActionEntity userAction) { return new VoteForRequestUserActionEntity( userAction.getDatetime(), userAction.getEntityId(), getVoteTypeFromUserAction(userAction) ); }
private boolean isStallingAction(UserActionEntity userAction) { switch (userAction.getActionType()) { case IDoCareContract.UserActions.ACTION_TYPE_CREATE_REQUEST: case IDoCareContract.UserActions.ACTION_TYPE_PICKUP_REQUEST: case IDoCareContract.UserActions.ACTION_TYPE_CLOSE_REQUEST: return true; default: return false; } }
/** * @return true if the provided user action is related to requests */ public boolean isUserActionAffectingRequest(@NonNull UserActionEntity userAction) { return userAction.getEntityType() != null && userAction.getEntityType().equals(UserActions.ENTITY_TYPE_REQUEST); }
@Override public int compare(UserActionEntity lhs, UserActionEntity rhs) { return IdcDateTimeUtils.compareDateTimes(lhs.getDatetime(), rhs.getDatetime()); } }
public void deleteUserAction(UserActionEntity userAction) { mLogger.d(TAG, "deleteUserAction(); user action: " + userAction); mContentResolver.delete( IDoCareContract.UserActions.CONTENT_URI, IDoCareContract.UserActions._ID + " = ?", new String[] {String.valueOf(userAction.getActionId())} ); } }
private void changeIdsInMap(Map<String, List<UserActionEntity>> map, String oldId, String newId) { if (map.containsKey(oldId)) { // obtain the list of actions mapped by old ID List<UserActionEntity> userActions = map.remove(oldId); // update IDs for all actions in the list for (ListIterator<UserActionEntity> iter = userActions.listIterator(); iter.hasNext(); ) { UserActionEntity userAction = iter.next(); UserActionEntity updatedUserAction = UserActionEntity.newBuilder(userAction) .setEntityId(newId) .build(); iter.set(updatedUserAction); } // return the list to the map under new ID map.put(newId, userActions); } }
private void assertUserActionsEqual(UserActionEntity actual, UserActionEntity expected) { assertThat(actual.getActionParam(), is(expected.getActionParam())); assertThat(actual.getActionType(), is(expected.getActionType())); assertThat(actual.getEntityId(), is(expected.getEntityId())); assertThat(actual.getEntityParam(), is(expected.getEntityParam())); assertThat(actual.getEntityType(), is(expected.getEntityType())); assertThat(actual.getDatetime(), is(expected.getDatetime())); }
public static CloseRequestUserActionEntity fromUserAction(UserActionEntity userAction) { Gson gson = new Gson(); // TODO: this is inefficient ActionParam actionParam = gson.fromJson(userAction.getActionParam(), ActionParam.class); return new CloseRequestUserActionEntity( userAction.getDatetime(), userAction.getEntityId(), actionParam.closedBy, actionParam.closedComment, StringUtils.commaSeparatedStringToList(actionParam.closedPictures)); }
private void syncUserActionAndNotifyDispatcher(UserActionEntity userAction) { mLogger.d(TAG, "syncUserActionAndNotifyDispatcher(); user action: " + userAction); String entityType = userAction.getEntityType(); String actionType = userAction.getActionType(); case IDoCareContract.UserActions.ACTION_TYPE_CREATE_REQUEST: mRequestsSyncer.syncRequestCreated(userAction.getEntityId()); break;
private Map<String, List<UserActionEntity>> mapEntityIdsToSortedUserActions(List<UserActionEntity> userActions) { Map<String, List<UserActionEntity>> resultMap = new HashMap<>(); String entityId; // map entities to user actions that affect them for (UserActionEntity userAction : userActions) { entityId = userAction.getEntityId(); if (!resultMap.containsKey(entityId)) { resultMap.put(entityId, new ArrayList<UserActionEntity>(1)); } resultMap.get(entityId).add(userAction); } // independently sort user actions for each entity for (String sortedEntityId : resultMap.keySet()) { Collections.sort(resultMap.get(sortedEntityId), new UserActionsComparator()); } return resultMap; }
@Override public void onUserActionAdded(UserActionEntity userAction) { RequestDetailsFragment fragment = RequestDetailsFragment.newInstance(userAction.getEntityId()); mMainFrameHelper.replaceFragment(fragment, false, true); } });
private UserActionEntity createUserActionEntityFromCurrentCursorPosition(Cursor cursor) { long id; String timestamp; String entityType; String entityId; String entityParam; String actionType; String actionParam; // mandatory fields id = cursor.getLong(cursor.getColumnIndexOrThrow(UserActions._ID)); timestamp = cursor.getString(cursor.getColumnIndexOrThrow(UserActions.COL_TIMESTAMP)); entityType = cursor.getString(cursor.getColumnIndexOrThrow(UserActions.COL_ENTITY_TYPE)); entityId = cursor.getString(cursor.getColumnIndexOrThrow(UserActions.COL_ENTITY_ID)); entityParam = cursor.getString(cursor.getColumnIndexOrThrow(UserActions.COL_ENTITY_PARAM)); actionType = cursor.getString(cursor.getColumnIndexOrThrow(UserActions.COL_ACTION_TYPE)); actionParam = cursor.getString(cursor.getColumnIndexOrThrow(UserActions.COL_ACTION_PARAM)); return new UserActionEntity(id, timestamp, entityType, entityId, entityParam, actionType, actionParam); } }