/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.core.transaction;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.notify.Notification;
import org.teiid.core.designer.ModelerCoreException;
/**
* Interface for the UnitOfWork Object for an Emf Container
* @author lphillips
* @since 8.0
*
*/
public interface UnitOfWork extends MtkTransaction{
/**
* Call back method for the EmfAdapter to notify the transaction of an event notification
* @param notification
*/
void processNotification(Notification notification) throws ModelerCoreException;
// /**
// * Process the given invocation through this UnitOfWork..
// * If the invocation involves a write command, execute it through the edit
// * domain, else, execute it directly against the delegate.
// * @param invocation
// * @return the Object result of processing the invocation
// */
// Object process(Invocation invocation) throws ModelerCoreException;
/**
* @return the id for this UnitOfWork
*/
Object getId();
/**
* Setter for description attribute. Used when creating the undoable.
* @param description
*/
public void setDescription(String description);
/**
* Pass through to the editing domain / command stack to execute the
* command
* @return true if the command was executed, or false if it could not be executed
* @see UnitOfWork#executeCommand(Command)
*/
boolean executeCommand(Command command) throws ModelerCoreException;
/**
* Setter for the significant attribute that will passed on to the undoable upon commit
* @param isSignificant
* @throws ModelerCoreException if the UoW is not in a started state
*/
void setSignificant(boolean isSignificant) throws ModelerCoreException;
/**
* @return the isUndoable flag
*/
boolean isUndoable();
/**
* Set the isUndoable flag
* @param b
*/
public void setUndoable(boolean b);
}