package org.tmatesoft.svn.core.internal.wc17.db;
import java.util.HashMap;
import java.util.Map;
import org.tmatesoft.sqljet.core.SqlJetException;
import org.tmatesoft.sqljet.core.SqlJetTransactionMode;
import org.tmatesoft.sqljet.core.schema.SqlJetConflictAction;
import org.tmatesoft.sqljet.core.table.ISqlJetCursor;
import org.tmatesoft.sqljet.core.table.ISqlJetTable;
import org.tmatesoft.sqljet.core.table.SqlJetDb;
import org.tmatesoft.svn.core.internal.db.ISVNSqlJetTrigger;
import org.tmatesoft.svn.core.internal.db.SVNSqlJetDb;
import org.tmatesoft.svn.core.internal.wc17.db.statement.SVNWCDbSchema;
import org.tmatesoft.svn.core.internal.wc17.db.statement.SVNWCDbSchema.NODES__Fields;
import org.tmatesoft.svn.core.internal.wc17.db.statement.SVNWCDbSchema.REVERT_LIST__Fields;
public class SvnRevertNodesTrigger implements ISVNSqlJetTrigger {
private SVNSqlJetDb db;
public SvnRevertNodesTrigger(SVNSqlJetDb db) {
this.db = db;
}
public void beforeDelete(ISqlJetCursor cursor) throws SqlJetException {
ISqlJetTable table = db.getDb().getTemporaryDatabase().getTable(SVNWCDbSchema.REVERT_LIST.toString());
Map<String, Object> rowValues = new HashMap<String, Object>();
rowValues.put(REVERT_LIST__Fields.local_relpath.toString(), cursor.getValue(NODES__Fields.local_relpath.toString()));
rowValues.put(REVERT_LIST__Fields.actual.toString(), 0);
rowValues.put(REVERT_LIST__Fields.op_depth.toString(), cursor.getValue(NODES__Fields.op_depth.toString()));
rowValues.put(REVERT_LIST__Fields.repos_id.toString(), cursor.getValue(NODES__Fields.repos_id.toString()));
rowValues.put(REVERT_LIST__Fields.kind.toString(), cursor.getValue(NODES__Fields.kind.toString()));
table.insertByFieldNamesOr(SqlJetConflictAction.REPLACE, rowValues);
}
public void beforeUpdate(ISqlJetCursor cursor, Map<String, Object> newValues) throws SqlJetException {
}
public void beforeInsert(SqlJetConflictAction conflictAction, ISqlJetTable table, Map<String, Object> newValues) throws SqlJetException {
}
public void statementStarted(SqlJetDb db) throws SqlJetException {
this.db.getDb().getTemporaryDatabase().beginTransaction(SqlJetTransactionMode.WRITE);
}
public void statementCompleted(SqlJetDb db, SqlJetException error) throws SqlJetException {
if (error == null) {
this.db.getDb().getTemporaryDatabase().commit();
} else {
this.db.getDb().getTemporaryDatabase().rollback();
}
}
}