Tighten access

pull/467/head
Alex Baker 9 years ago
parent 0685a01da2
commit 9275e720a6

@ -49,25 +49,22 @@ public class GtasksTaskListUpdater {
// --- overrides // --- overrides
protected Metadata getTaskMetadata(long taskId) { Metadata getTaskMetadata(long taskId) {
return metadataDao.getFirstActiveByTaskAndKey(taskId, GtasksMetadata.METADATA_KEY); return metadataDao.getFirstActiveByTaskAndKey(taskId, GtasksMetadata.METADATA_KEY);
} }
protected Metadata createEmptyMetadata(GtasksList list, long taskId) {
private Metadata createEmptyMetadata(GtasksList list, long taskId) {
Metadata metadata = GtasksMetadata.createEmptyMetadataWithoutList(taskId); Metadata metadata = GtasksMetadata.createEmptyMetadataWithoutList(taskId);
metadata.setValue(GtasksMetadata.LIST_ID, list.getRemoteId()); metadata.setValue(GtasksMetadata.LIST_ID, list.getRemoteId());
return metadata; return metadata;
} }
protected void beforeIndent(GtasksList list) { private void iterateThroughList(GtasksList list, OrderedListIterator iterator) {
updateParentSiblingMapsFor(list);
}
protected void iterateThroughList(GtasksList list, OrderedListIterator iterator) {
String listId = list.getRemoteId(); String listId = list.getRemoteId();
gtasksSyncService.iterateThroughList(listId, iterator, 0, false); gtasksSyncService.iterateThroughList(listId, iterator, 0, false);
} }
protected void onMovedOrIndented(Metadata metadata) { private void onMovedOrIndented(Metadata metadata) {
gtasksSyncService.triggerMoveForMetadata(metadata); gtasksSyncService.triggerMoveForMetadata(metadata);
} }
@ -147,7 +144,7 @@ public class GtasksTaskListUpdater {
return; return;
} }
beforeIndent(list); updateParentSiblingMapsFor(list);
final AtomicInteger targetTaskIndent = new AtomicInteger(-1); final AtomicInteger targetTaskIndent = new AtomicInteger(-1);
final AtomicInteger previousIndent = new AtomicInteger(-1); final AtomicInteger previousIndent = new AtomicInteger(-1);
@ -234,7 +231,7 @@ public class GtasksTaskListUpdater {
* Move a task and all its children to the position right above * Move a task and all its children to the position right above
* taskIdToMoveto. Will change the indent level to match taskIdToMoveTo. * taskIdToMoveto. Will change the indent level to match taskIdToMoveTo.
*/ */
public void moveTo(GtasksList list, final long targetTaskId, void moveTo(GtasksList list, final long targetTaskId,
final long moveBeforeTaskId) { final long moveBeforeTaskId) {
if(list == null) { if(list == null) {
return; return;
@ -279,12 +276,12 @@ public class GtasksTaskListUpdater {
return ancestorOf(ancestor, descendant.parent); return ancestorOf(ancestor, descendant.parent);
} }
protected static class Node { static class Node {
public final long taskId; public final long taskId;
public Node parent; public Node parent;
public final ArrayList<Node> children = new ArrayList<>(); final ArrayList<Node> children = new ArrayList<>();
public Node(long taskId, Node parent) { Node(long taskId, Node parent) {
this.taskId = taskId; this.taskId = taskId;
this.parent = parent; this.parent = parent;
} }
@ -372,14 +369,14 @@ public class GtasksTaskListUpdater {
// --- task cascading operations // --- task cascading operations
public interface OrderedListNodeVisitor { interface OrderedListNodeVisitor {
void visitNode(Node node); void visitNode(Node node);
} }
/** /**
* Apply an operation only to the children of the task * Apply an operation only to the children of the task
*/ */
public void applyToChildren(GtasksList list, long targetTaskId, void applyToChildren(GtasksList list, long targetTaskId,
OrderedListNodeVisitor visitor) { OrderedListNodeVisitor visitor) {
Node root = buildTreeModel(list); Node root = buildTreeModel(list);
@ -402,7 +399,7 @@ public class GtasksTaskListUpdater {
/** /**
* Removes a task from the order hierarchy and un-indent children * Removes a task from the order hierarchy and un-indent children
*/ */
public void onDeleteTask(GtasksList list, final long targetTaskId) { void onDeleteTask(GtasksList list, final long targetTaskId) {
if(list == null) { if(list == null) {
return; return;
} }

@ -44,7 +44,7 @@ import java.util.concurrent.atomic.AtomicReference;
import timber.log.Timber; import timber.log.Timber;
public class OrderedMetadataListFragmentHelper { class OrderedMetadataListFragmentHelper {
private final DisplayMetrics metrics = new DisplayMetrics(); private final DisplayMetrics metrics = new DisplayMetrics();
private final GtasksTaskListUpdater updater; private final GtasksTaskListUpdater updater;
@ -63,7 +63,7 @@ public class OrderedMetadataListFragmentHelper {
private GtasksList list; private GtasksList list;
public OrderedMetadataListFragmentHelper(Preferences preferences, TaskAttachmentDao taskAttachmentDao, OrderedMetadataListFragmentHelper(Preferences preferences, TaskAttachmentDao taskAttachmentDao,
TaskDao taskDao, MetadataDao metadataDao, TaskDao taskDao, MetadataDao metadataDao,
TaskListFragment fragment, GtasksTaskListUpdater updater, TaskListFragment fragment, GtasksTaskListUpdater updater,
DialogBuilder dialogBuilder, CheckBoxes checkBoxes, TagService tagService, DialogBuilder dialogBuilder, CheckBoxes checkBoxes, TagService tagService,
@ -94,7 +94,7 @@ public class OrderedMetadataListFragmentHelper {
return (DraggableListView) fragment.getListView(); return (DraggableListView) fragment.getListView();
} }
public void setUpUiComponents() { void setUpUiComponents() {
TypedValue tv = new TypedValue(); TypedValue tv = new TypedValue();
getActivity().getTheme().resolveAttribute(R.attr.colorAccent, tv, false); getActivity().getTheme().resolveAttribute(R.attr.colorAccent, tv, false);
getTouchListView().setDragndropBackgroundColor(tv.data); getTouchListView().setDragndropBackgroundColor(tv.data);
@ -176,7 +176,7 @@ public class OrderedMetadataListFragmentHelper {
} }
}; };
public TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor, TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor,
AtomicReference<String> sqlQueryTemplate) { AtomicReference<String> sqlQueryTemplate) {
taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor,
@ -261,7 +261,7 @@ public class OrderedMetadataListFragmentHelper {
// //
} }
public void onDeleteTask(Task task) { void onDeleteTask(Task task) {
updater.onDeleteTask(list, task.getId()); updater.onDeleteTask(list, task.getId());
taskAdapter.notifyDataSetInvalidated(); taskAdapter.notifyDataSetInvalidated();
} }

@ -42,7 +42,7 @@ import java.util.concurrent.atomic.AtomicReference;
import timber.log.Timber; import timber.log.Timber;
public class AstridOrderedListFragmentHelper { class AstridOrderedListFragmentHelper {
private final DisplayMetrics metrics = new DisplayMetrics(); private final DisplayMetrics metrics = new DisplayMetrics();
private final SubtasksFilterUpdater updater; private final SubtasksFilterUpdater updater;
@ -59,7 +59,7 @@ public class AstridOrderedListFragmentHelper {
private TaskListMetadata list; private TaskListMetadata list;
public AstridOrderedListFragmentHelper(Preferences preferences, TaskAttachmentDao taskAttachmentDao, AstridOrderedListFragmentHelper(Preferences preferences, TaskAttachmentDao taskAttachmentDao,
TaskListFragment fragment, SubtasksFilterUpdater updater, TaskListFragment fragment, SubtasksFilterUpdater updater,
DialogBuilder dialogBuilder, CheckBoxes checkBoxes, DialogBuilder dialogBuilder, CheckBoxes checkBoxes,
TagService tagService, ThemeCache themeCache, TaskDao taskDao) { TagService tagService, ThemeCache themeCache, TaskDao taskDao) {
@ -88,7 +88,7 @@ public class AstridOrderedListFragmentHelper {
return fragment.getFilter(); return fragment.getFilter();
} }
public void setUpUiComponents() { void setUpUiComponents() {
TypedValue tv = new TypedValue(); TypedValue tv = new TypedValue();
getActivity().getTheme().resolveAttribute(R.attr.colorAccent, tv, false); getActivity().getTheme().resolveAttribute(R.attr.colorAccent, tv, false);
DraggableListView draggableListView = (DraggableListView) fragment.getListView(); DraggableListView draggableListView = (DraggableListView) fragment.getListView();
@ -101,7 +101,7 @@ public class AstridOrderedListFragmentHelper {
draggableListView.setItemHightNormal(taskAdapter.computeFullRowHeight()); draggableListView.setItemHightNormal(taskAdapter.computeFullRowHeight());
} }
public void beforeSetUpTaskList(Filter filter) { void beforeSetUpTaskList(Filter filter) {
updater.initialize(list, filter); updater.initialize(list, filter);
} }
@ -177,7 +177,7 @@ public class AstridOrderedListFragmentHelper {
} }
}; };
public TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor, TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor,
AtomicReference<String> sqlQueryTemplate) { AtomicReference<String> sqlQueryTemplate) {
taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor,
@ -268,13 +268,13 @@ public class AstridOrderedListFragmentHelper {
this.list = list; this.list = list;
} }
public void onCreateTask(String uuid) { void onCreateTask(String uuid) {
updater.onCreateTask(list, getFilter(), uuid); updater.onCreateTask(list, getFilter(), uuid);
fragment.reconstructCursor(); fragment.reconstructCursor();
fragment.loadTaskListContent(); fragment.loadTaskListContent();
} }
public void onDeleteTask(Task task) { void onDeleteTask(Task task) {
updater.onDeleteTask(list, getFilter(), task.getUuid()); updater.onDeleteTask(list, getFilter(), task.getUuid());
taskAdapter.notifyDataSetInvalidated(); taskAdapter.notifyDataSetInvalidated();
} }

@ -27,8 +27,8 @@ import timber.log.Timber;
public class SubtasksFilterUpdater { public class SubtasksFilterUpdater {
public static final String ACTIVE_TASKS_ORDER = "active_tasks_order"; //$NON-NLS-1$ static final String ACTIVE_TASKS_ORDER = "active_tasks_order"; //$NON-NLS-1$
public static final String TODAY_TASKS_ORDER = "today_tasks_order"; //$NON-NLS-1$ static final String TODAY_TASKS_ORDER = "today_tasks_order"; //$NON-NLS-1$
private final TaskListMetadataDao taskListMetadataDao; private final TaskListMetadataDao taskListMetadataDao;
private final TaskDao taskDao; private final TaskDao taskDao;
@ -41,7 +41,7 @@ public class SubtasksFilterUpdater {
this.taskListMetadataDao = taskListMetadataDao; this.taskListMetadataDao = taskListMetadataDao;
} }
protected String getSerializedTree(TaskListMetadata list) { private String getSerializedTree(TaskListMetadata list) {
if (list == null) { if (list == null) {
return "[]"; //$NON-NLS-1$ return "[]"; //$NON-NLS-1$
} }
@ -54,7 +54,7 @@ public class SubtasksFilterUpdater {
return order; return order;
} }
protected void writeSerialization(TaskListMetadata list, String serialized, boolean shouldQueueSync) { void writeSerialization(TaskListMetadata list, String serialized, boolean shouldQueueSync) {
if (list != null) { if (list != null) {
list.setTaskIDs(serialized); list.setTaskIDs(serialized);
if (!shouldQueueSync) { if (!shouldQueueSync) {
@ -69,7 +69,7 @@ public class SubtasksFilterUpdater {
applyToFilter(filter); applyToFilter(filter);
} }
protected void applyToFilter(Filter filter) { private void applyToFilter(Filter filter) {
String query = filter.getSqlQuery(); String query = filter.getSqlQuery();
query = query.replaceAll("ORDER BY .*", ""); query = query.replaceAll("ORDER BY .*", "");
@ -81,24 +81,24 @@ public class SubtasksFilterUpdater {
filter.setFilterQueryOverride(query); filter.setFilterQueryOverride(query);
} }
public interface OrderedListNodeVisitor { interface OrderedListNodeVisitor {
void visitNode(Node node); void visitNode(Node node);
} }
public static class Node { static class Node {
public String uuid; public String uuid;
public Node parent; public Node parent;
public int indent; public int indent;
public final ArrayList<Node> children = new ArrayList<>(); final ArrayList<Node> children = new ArrayList<>();
public Node(String uuid, Node parent, int indent) { Node(String uuid, Node parent, int indent) {
this.uuid = uuid; this.uuid = uuid;
this.parent = parent; this.parent = parent;
this.indent = indent; this.indent = indent;
} }
} }
public int getIndentForTask(String targetTaskId) { int getIndentForTask(String targetTaskId) {
Node n = idToNode.get(targetTaskId); Node n = idToNode.get(targetTaskId);
if (n == null) { if (n == null) {
return 0; return 0;
@ -106,7 +106,7 @@ public class SubtasksFilterUpdater {
return n.indent; return n.indent;
} }
public void initializeFromSerializedTree(TaskListMetadata list, Filter filter, String serializedTree) { void initializeFromSerializedTree(TaskListMetadata list, Filter filter, String serializedTree) {
idToNode.clear(); idToNode.clear();
treeRoot = buildTreeModel(serializedTree, node -> idToNode.put(node.uuid, node)); treeRoot = buildTreeModel(serializedTree, node -> idToNode.put(node.uuid, node));
verifyTreeModel(list, filter); verifyTreeModel(list, filter);
@ -178,12 +178,12 @@ public class SubtasksFilterUpdater {
return ids.toArray(new String[ids.size()]); return ids.toArray(new String[ids.size()]);
} }
String getOrderString() { private String getOrderString() {
String[] ids = getOrderedIds(); String[] ids = getOrderedIds();
return buildOrderString(ids); return buildOrderString(ids);
} }
public static String buildOrderString(String[] ids) { static String buildOrderString(String[] ids) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
if (ids.length == 0) { if (ids.length == 0) {
return "(1)"; //$NON-NLS-1$ return "(1)"; //$NON-NLS-1$
@ -207,7 +207,7 @@ public class SubtasksFilterUpdater {
} }
} }
public void applyToDescendants(String taskId, OrderedListNodeVisitor visitor) { void applyToDescendants(String taskId, OrderedListNodeVisitor visitor) {
Node n = idToNode.get(taskId); Node n = idToNode.get(taskId);
if (n == null) { if (n == null) {
return; return;
@ -289,7 +289,7 @@ public class SubtasksFilterUpdater {
} }
} }
public void moveTo(TaskListMetadata list, Filter filter, String targetTaskId, String beforeTaskId) { void moveTo(TaskListMetadata list, Filter filter, String targetTaskId, String beforeTaskId) {
Node target = idToNode.get(targetTaskId); Node target = idToNode.get(targetTaskId);
if (target == null) { if (target == null) {
return; return;
@ -313,7 +313,7 @@ public class SubtasksFilterUpdater {
moveHelper(list, filter, target, before); moveHelper(list, filter, target, before);
} }
public void moveToParentOf(String moveThis, String toParentOfThis) { void moveToParentOf(String moveThis, String toParentOfThis) {
Node target = idToNode.get(toParentOfThis); Node target = idToNode.get(toParentOfThis);
if (target == null) { if (target == null) {
return; return;
@ -384,7 +384,7 @@ public class SubtasksFilterUpdater {
applyToFilter(filter); applyToFilter(filter);
} }
public void onCreateTask(TaskListMetadata list, Filter filter, String uuid) { void onCreateTask(TaskListMetadata list, Filter filter, String uuid) {
if (idToNode.containsKey(uuid) || !RemoteModel.isValidUuid(uuid)) { if (idToNode.containsKey(uuid) || !RemoteModel.isValidUuid(uuid)) {
return; return;
} }
@ -396,7 +396,7 @@ public class SubtasksFilterUpdater {
applyToFilter(filter); applyToFilter(filter);
} }
public void onDeleteTask(TaskListMetadata list, Filter filter, String taskId) { void onDeleteTask(TaskListMetadata list, Filter filter, String taskId) {
Node task = idToNode.get(taskId); Node task = idToNode.get(taskId);
if (task == null) { if (task == null) {
return; return;
@ -425,7 +425,7 @@ public class SubtasksFilterUpdater {
void afterAddNode(Node node); void afterAddNode(Node node);
} }
public static Node buildTreeModel(String serializedTree, JSONTreeModelBuilder callback) { static Node buildTreeModel(String serializedTree, JSONTreeModelBuilder callback) {
Node root = new Node("-1", null, -1); //$NON-NLS-1$ Node root = new Node("-1", null, -1); //$NON-NLS-1$
try { try {
JSONArray tree = new JSONArray(serializedTree); JSONArray tree = new JSONArray(serializedTree);
@ -461,7 +461,7 @@ public class SubtasksFilterUpdater {
return serializeTree(treeRoot); return serializeTree(treeRoot);
} }
public static String serializeTree(Node root) { static String serializeTree(Node root) {
JSONArray tree = new JSONArray(); JSONArray tree = new JSONArray();
if (root == null) { if (root == null) {
return tree.toString(); return tree.toString();

@ -111,7 +111,7 @@ public class SubtasksHelper {
return ids; return ids;
} }
public static String[] getStringIdArray(String serializedTree) { static String[] getStringIdArray(String serializedTree) {
ArrayList<String> ids = new ArrayList<>(); ArrayList<String> ids = new ArrayList<>();
String[] values = serializedTree.split("[\\[\\],\"\\s]"); // Split on [ ] , or whitespace chars String[] values = serializedTree.split("[\\[\\],\"\\s]"); // Split on [ ] , or whitespace chars
for (String idString : values) { for (String idString : values) {
@ -125,7 +125,7 @@ public class SubtasksHelper {
/** /**
* Takes a subtasks string containing local ids and remaps it to one containing UUIDs * Takes a subtasks string containing local ids and remaps it to one containing UUIDs
*/ */
public static String convertTreeToRemoteIds(TaskDao taskDao, String localTree) { static String convertTreeToRemoteIds(TaskDao taskDao, String localTree) {
List<Long> localIds = getIdList(localTree); List<Long> localIds = getIdList(localTree);
HashMap<Long, String> idMap = getIdMap(taskDao, localIds, Task.ID, Task.UUID); HashMap<Long, String> idMap = getIdMap(taskDao, localIds, Task.ID, Task.UUID);
idMap.put(-1L, "-1"); //$NON-NLS-1$ idMap.put(-1L, "-1"); //$NON-NLS-1$
@ -135,7 +135,7 @@ public class SubtasksHelper {
return SubtasksFilterUpdater.serializeTree(tree); return SubtasksFilterUpdater.serializeTree(tree);
} }
public interface TreeRemapHelper<T> { interface TreeRemapHelper<T> {
T getKeyFromOldUuid(String uuid); T getKeyFromOldUuid(String uuid);
} }

Loading…
Cancel
Save