package com.orgzly.android.provider.actions; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import com.orgzly.android.provider.DatabaseUtils; import com.orgzly.android.provider.models.DbNote; public class SparseTreeAction implements Action { private static final String TAG = SparseTreeAction.class.getName(); public static final String ID = "id"; private long bookId; private ContentValues values; public SparseTreeAction(long bookId, ContentValues values) { this.bookId = bookId; this.values = values; } @Override public int run(SQLiteDatabase db) { int result = 0; CycleVisibilityAction.foldAllNotes(db, bookId); if (values.containsKey(ID)) { long noteId = values.getAsLong(ID); String ancestorsIds = DatabaseUtils.ancestorsIds(db, bookId, noteId); if (ancestorsIds != null) { ContentValues v; v = new ContentValues(); v.put(DbNote.Column.IS_FOLDED, 0); result = db.update(DbNote.TABLE, v, DbNote.Column._ID + " IN (" + ancestorsIds + ")", null); v = new ContentValues(); v.put(DbNote.Column.FOLDED_UNDER_ID, 0); db.update(DbNote.TABLE, v, DbNote.Column.FOLDED_UNDER_ID + " IN (" + ancestorsIds + ")", null); } } return result; } @Override public void undo() { } }