/*
* Copyright James Leigh (c) 2007.
*
* Licensed under the Aduna BSD-style license.
*/
package net.enilink.komma.dm.internal.change;
import java.util.Collections;
import net.enilink.komma.core.IReference;
import net.enilink.komma.core.IStatement;
import net.enilink.komma.dm.IDataManager;
import net.enilink.komma.dm.change.IDataChange;
import net.enilink.komma.dm.change.IStatementChange;
/**
* Internal command object representing a statement being added to the
* connection.
*
*/
public class AddChange implements IDataChange, IStatementChange {
protected final IStatement stmt;
public AddChange(IStatement stmt) {
this.stmt = stmt;
}
protected IReference[] getModifyContexts() {
IReference context = stmt.getContext();
return context == null ? new IReference[0]
: new IReference[] { context };
}
@Override
public IStatement getStatement() {
return stmt;
}
public void redo(IDataManager dm) {
dm.add(Collections.singleton(stmt), getModifyContexts());
}
@Override
public String toString() {
return new StringBuilder().append("statement added ")
.append(super.toString()).toString();
}
public void undo(IDataManager dm) {
dm.remove(Collections.singleton(stmt), getModifyContexts());
}
@Override
public boolean isAdd() {
return true;
}
}