private void deleteInTx(DatastoreTransaction tx, long id) { insider.deleting(clazz, id); E entity = get_(id); doTriggers(beforeDelete, TriggerAction.BEFORE_DELETE, id, entity, null); stats.deletes++; int row = row(id); // TODO check - changelog if not deleted rels? db.deleteRelsInTx(id, tx); // CHANGE #1 size--; // CHANGE #2 deletedCount++; // CHANGE #3 currentlyDeleted.add(row); // CHANGE #4 idColl.delete(id); // CHANGE #5 ids.remove(id); // CHANGE #6 changelog.add(TableChange.delete(id, row)); // CHANGELOG // TODO also delete old (renamed) columns? for (PropertyInfo prop : props) { deleteCell(tx, id, row, prop); } doTriggers(afterDelete, TriggerAction.AFTER_DELETE, id, entity, null); insider.deleted(clazz, id); }
@Override public void deleteFrom(long id) { try { // WRITE LOCK locker.globalWriteLock(); // nice("\nSTART DELETE FROM " + name + ": " + id); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.deletingLinksFrom(name, id); // DELEGATE TO DELETE LINKS FROM ID INSIDE TRANSACTION deleteFromInTx(id, tx); // INFORM INSIDER insider.deletedLinksFrom(name, id); // FINISH INSIDE TRANSACTION finishTransaction(tx); // nice("\nEND DELETE FROM " + name + ": " + id); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }
@Override public void deleteTo(long id) { try { // WRITE LOCK locker.globalWriteLock(); // nice("\nSTART DELETE TO " + name + ": " + id); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.deletingLinksTo(name, id); // DELEGATE TO DELETE LINKS TO ID INSIDE TRANSACTION deleteToInTx(id, tx); // INFORM INSIDER insider.deletedLinksTo(name, id); // FINISH INSIDE TRANSACTION finishTransaction(tx); // nice("\nEND DELETE TO " + name + ": " + id); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }
private boolean delinkInTx(DatastoreTransaction tx, long from, long to) { // INFORM INSIDER insider.delinking(name, from, to); // MAYBE CHANGE #1 boolean changed = delink_(from, to); if (changed) { tx.changed(from); tx.changed(to); changelog.add(RelationChange.delink(from, to)); // CHANGELOG } // INFORM INSIDER insider.delinked(name, from, to); return changed; }
@Override public void set(long id, String col, Object value) { try { // WRITE LOCK locker.globalWriteLock(); checkId(id); checkColumn(col); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.changing(clazz, id, col, value); E entity = get_(id); colInfo(col).set(entity, value); doUpdate(id, tx, entity); // INFORM INSIDER insider.changed(clazz, id, col, value); // FINISH INSIDE TRANSACTION finishTransaction(tx); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }
private void deleteCell(DatastoreTransaction tx, long id, int row, PropertyInfo prop) { insider.deletingCell(clazz, id, prop.getName()); Column column = prop.getColumn(); Index index = prop.getIndex(); Object value = column.delete(row); // CHANGE #1 if (index != null) { Transformer<Object> tr = prop.getTransformer(); index.remove(tr.transform(value), id); // CHANGE #2 } changelog.add(TableChange.deleteCell(id, prop, row, value)); // CHANGELOG tx.delete(id); // PERSIST }
private boolean delinkInTx(DatastoreTransaction tx, long from, long to) { // INFORM INSIDER insider.delinking(name, from, to); // MAYBE CHANGE #1 boolean changed = delink_(from, to); if (changed) { tx.changed(from); tx.changed(to); changelog.add(RelationChange.delink(from, to)); // CHANGELOG } // INFORM INSIDER insider.delinked(name, from, to); return changed; }
@Override public void set(long id, String col, Object value) { try { // WRITE LOCK locker.globalWriteLock(); checkId(id); checkColumn(col); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.changing(clazz, id, col, value); E entity = get_(id); colInfo(col).set(entity, value); doUpdate(id, tx, entity); // INFORM INSIDER insider.changed(clazz, id, col, value); // FINISH INSIDE TRANSACTION finishTransaction(tx); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }
private void deleteCell(DatastoreTransaction tx, long id, int row, PropertyInfo prop) { insider.deletingCell(clazz, id, prop.getName()); Column column = prop.getColumn(); Index index = prop.getIndex(); Object value = column.delete(row); // CHANGE #1 if (index != null) { Transformer<Object> tr = prop.getTransformer(); index.remove(tr.transform(value), id); // CHANGE #2 } changelog.add(TableChange.deleteCell(id, prop, row, value)); // CHANGELOG tx.delete(id); // PERSIST }
private boolean delinkInTx(DatastoreTransaction tx, long from, long to) { // INFORM INSIDER insider.delinking(name, from, to); // MAYBE CHANGE #1 boolean changed = delink_(from, to); if (changed) { tx.changed(from); tx.changed(to); changelog.add(RelationChange.delink(from, to)); // CHANGELOG } // INFORM INSIDER insider.delinked(name, from, to); return changed; }
@Override public void deleteFrom(long id) { try { // WRITE LOCK locker.globalWriteLock(); // nice("\nSTART DELETE FROM " + name + ": " + id); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.deletingLinksFrom(name, id); // DELEGATE TO DELETE LINKS FROM ID INSIDE TRANSACTION deleteFromInTx(id, tx); // INFORM INSIDER insider.deletedLinksFrom(name, id); // FINISH INSIDE TRANSACTION finishTransaction(tx); // nice("\nEND DELETE FROM " + name + ": " + id); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }
@Override public void set(long id, String col, Object value) { try { // WRITE LOCK locker.globalWriteLock(); checkId(id); checkColumn(col); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.changing(clazz, id, col, value); E entity = get_(id); colInfo(col).set(entity, value); doUpdate(id, tx, entity); // INFORM INSIDER insider.changed(clazz, id, col, value); // FINISH INSIDE TRANSACTION finishTransaction(tx); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }
private void deleteInTx(DatastoreTransaction tx, long id) { insider.deleting(clazz, id); E entity = get_(id); doTriggers(beforeDelete, TriggerAction.BEFORE_DELETE, id, entity, null); stats.deletes++; int row = row(id); // TODO check - changelog if not deleted rels? db.deleteRelsInTx(id, tx); // CHANGE #1 size--; // CHANGE #2 deletedCount++; // CHANGE #3 currentlyDeleted.add(row); // CHANGE #4 idColl.delete(id); // CHANGE #5 ids.remove(id); // CHANGE #6 changelog.add(TableChange.delete(id, row)); // CHANGELOG // TODO also delete old (renamed) columns? for (PropertyInfo prop : props) { deleteCell(tx, id, row, prop); } doTriggers(afterDelete, TriggerAction.AFTER_DELETE, id, entity, null); insider.deleted(clazz, id); }
@Override public void deleteTo(long id) { try { // WRITE LOCK locker.globalWriteLock(); // nice("\nSTART DELETE TO " + name + ": " + id); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.deletingLinksTo(name, id); // DELEGATE TO DELETE LINKS TO ID INSIDE TRANSACTION deleteToInTx(id, tx); // INFORM INSIDER insider.deletedLinksTo(name, id); // FINISH INSIDE TRANSACTION finishTransaction(tx); // nice("\nEND DELETE TO " + name + ": " + id); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }
private void deleteCell(DatastoreTransaction tx, long id, int row, PropertyInfo prop) { insider.deletingCell(clazz, id, prop.getName()); Column column = prop.getColumn(); Index index = prop.getIndex(); Object value = column.delete(row); // CHANGE #1 if (index != null) { Transformer<Object> tr = prop.getTransformer(); index.remove(tr.transform(value), id); // CHANGE #2 } changelog.add(TableChange.deleteCell(id, prop, row, value)); // CHANGELOG tx.delete(id); // PERSIST }
@Override public void deleteFrom(long id) { try { // WRITE LOCK locker.globalWriteLock(); // nice("\nSTART DELETE FROM " + name + ": " + id); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.deletingLinksFrom(name, id); // DELEGATE TO DELETE LINKS FROM ID INSIDE TRANSACTION deleteFromInTx(id, tx); // INFORM INSIDER insider.deletedLinksFrom(name, id); // FINISH INSIDE TRANSACTION finishTransaction(tx); // nice("\nEND DELETE FROM " + name + ": " + id); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }
private void deleteInTx(DatastoreTransaction tx, long id) { insider.deleting(clazz, id); E entity = get_(id); doTriggers(beforeDelete, TriggerAction.BEFORE_DELETE, id, entity, null); stats.deletes++; int row = row(id); // TODO check - changelog if not deleted rels? db.deleteRelsInTx(id, tx); // CHANGE #1 size--; // CHANGE #2 deletedCount++; // CHANGE #3 currentlyDeleted.add(row); // CHANGE #4 idColl.delete(id); // CHANGE #5 ids.remove(id); // CHANGE #6 changelog.add(TableChange.delete(id, row)); // CHANGELOG // TODO also delete old (renamed) columns? for (PropertyInfo prop : props) { deleteCell(tx, id, row, prop); } doTriggers(afterDelete, TriggerAction.AFTER_DELETE, id, entity, null); insider.deleted(clazz, id); }
@Override public void deleteTo(long id) { try { // WRITE LOCK locker.globalWriteLock(); // nice("\nSTART DELETE TO " + name + ": " + id); // RUN INSIDE TRANSACTION DatastoreTransaction tx = getTransaction(); // INFORM INSIDER insider.deletingLinksTo(name, id); // DELEGATE TO DELETE LINKS TO ID INSIDE TRANSACTION deleteToInTx(id, tx); // INFORM INSIDER insider.deletedLinksTo(name, id); // FINISH INSIDE TRANSACTION finishTransaction(tx); // nice("\nEND DELETE TO " + name + ": " + id); } finally { // WRITE UNLOCK locker.globalWriteUnlock(); } }