use of org.alfresco.filesys.repo.rules.operations.CreateFileOperation in project alfresco-repository by Alfresco.
the class ScenarioOpenFile method createInstance.
@Override
public ScenarioInstance createInstance(final EvaluatorContext ctx, Operation operation) {
/**
* This scenario is triggered by an open or create of a new file
*/
if (operation instanceof CreateFileOperation) {
CreateFileOperation c = (CreateFileOperation) operation;
if (c.getName() == null) {
logger.debug("c.getName is null! - scenario not active");
return null;
}
if (c.getName().matches(pattern)) {
if (checkScenarioActive(c.getName(), ctx.getScenarioInstances())) {
logger.debug("scenario already active for name" + c.getName());
return null;
}
if (logger.isDebugEnabled()) {
logger.debug("New Open File Instance for CreateFileOperation:" + c);
}
ScenarioOpenFileInstance instance = new ScenarioOpenFileInstance();
instance.setTimeout(timeout);
instance.setRanking(ranking);
return instance;
}
}
if (operation instanceof OpenFileOperation) {
OpenFileOperation o = (OpenFileOperation) operation;
if (o.getName() == null) {
logger.debug("o.getName is null! - scenario not active");
return null;
}
if (o.getName().matches(pattern)) {
if (checkScenarioActive(o.getName(), ctx.getScenarioInstances())) {
logger.debug("scenario already active for name" + o.getName());
return null;
}
if (logger.isDebugEnabled()) {
logger.debug("New Open File Instance for OpenFileOperation:" + o);
}
ScenarioOpenFileInstance instance = new ScenarioOpenFileInstance();
instance.setTimeout(timeout);
instance.setRanking(ranking);
return instance;
}
}
// No not interested.
return null;
}
use of org.alfresco.filesys.repo.rules.operations.CreateFileOperation in project alfresco-repository by Alfresco.
the class ScenarioDeleteRenameOrCreateInstance method evaluate.
/**
* Evaluate the next operation
* @param operation
*/
public Command evaluate(Operation operation) {
/**
* Anti-pattern : timeout
*/
Date now = new Date();
if (now.getTime() > startTime.getTime() + getTimeout()) {
if (logger.isDebugEnabled()) {
logger.debug("Instance timed out");
}
isComplete = true;
return null;
}
switch(state) {
case NONE:
if (operation instanceof CloseFileOperation) {
CloseFileOperation c = (CloseFileOperation) operation;
this.name = c.getName();
logger.debug("New scenario initialised for file " + name);
state = InternalState.INITIALISED;
ArrayList<Command> commands = new ArrayList<Command>();
ArrayList<Command> postCommitCommands = new ArrayList<Command>();
ArrayList<Command> postErrorCommands = new ArrayList<Command>();
commands.add(new CloseFileCommand(c.getName(), c.getNetworkFile(), c.getRootNodeRef(), c.getPath()));
postCommitCommands.add(newDeleteFileCallbackCommand());
return new CompoundCommand(commands, postCommitCommands, postErrorCommands);
}
if (operation instanceof DeleteFileOperation) {
DeleteFileOperation c = (DeleteFileOperation) operation;
this.name = c.getName();
logger.debug("New scenario initialised for file " + name);
state = InternalState.INITIALISED;
ArrayList<Command> commands = new ArrayList<Command>();
ArrayList<Command> postCommitCommands = new ArrayList<Command>();
ArrayList<Command> postErrorCommands = new ArrayList<Command>();
commands.add(new DeleteFileCommand(c.getName(), c.getRootNodeRef(), c.getPath()));
postCommitCommands.add(newDeleteFileCallbackCommand());
return new CompoundCommand(commands, postCommitCommands, postErrorCommands);
}
break;
case INITIALISED:
if (operation instanceof CreateFileOperation) {
CreateFileOperation c = (CreateFileOperation) operation;
if (c.getName().equalsIgnoreCase(name)) {
isComplete = true;
if (originalNodeRef != null) {
logger.debug("Delete create shuffle fire!:" + this);
return new RestoreFileCommand(c.getName(), c.getRootNodeRef(), c.getPath(), c.getAllocationSize(), originalNodeRef);
}
return null;
}
}
if (operation instanceof RenameFileOperation) {
RenameFileOperation r = (RenameFileOperation) operation;
if (name.equals(r.getTo())) {
logger.debug("Delete Rename shuffle - fire!");
if (originalNodeRef != null) {
/**
* Shuffle is as follows
* a) Copy content from File to File~
* b) Delete File
* c) Rename File~ to File
*/
ArrayList<Command> commands = new ArrayList<Command>();
RestoreFileCommand r1 = new RestoreFileCommand(r.getTo(), r.getRootNodeRef(), r.getToPath(), 0, originalNodeRef);
CopyContentCommand copyContent = new CopyContentCommand(r.getFrom(), r.getTo(), r.getRootNodeRef(), r.getFromPath(), r.getToPath());
DeleteFileCommand d1 = new DeleteFileCommand(r.getFrom(), r.getRootNodeRef(), r.getFromPath());
commands.add(r1);
commands.add(copyContent);
commands.add(d1);
logger.debug("Scenario complete");
isComplete = true;
return new CompoundCommand(commands);
} else {
logger.debug("Scenario complete");
isComplete = true;
return null;
}
}
}
if (operation instanceof MoveFileOperation) {
MoveFileOperation r = (MoveFileOperation) operation;
if (name.equals(r.getTo())) {
logger.debug("Delete Rename shuffle - fire!");
if (originalNodeRef != null) {
/**
* Shuffle is as follows
* a) Copy content from File to File~
* b) Delete File
* c) Rename File~ to File
*/
ArrayList<Command> commands = new ArrayList<Command>();
RestoreFileCommand r1 = new RestoreFileCommand(r.getTo(), r.getRootNodeRef(), r.getToPath(), 0, originalNodeRef);
CopyContentCommand copyContent = new CopyContentCommand(r.getFrom(), r.getTo(), r.getRootNodeRef(), r.getFromPath(), r.getToPath());
DeleteFileCommand d1 = new DeleteFileCommand(r.getFrom(), r.getRootNodeRef(), r.getFromPath());
commands.add(r1);
commands.add(copyContent);
commands.add(d1);
logger.debug("Scenario complete");
isComplete = true;
return new CompoundCommand(commands);
} else {
logger.debug("Scenario complete");
isComplete = true;
return null;
}
}
}
}
return null;
}
use of org.alfresco.filesys.repo.rules.operations.CreateFileOperation in project alfresco-repository by Alfresco.
the class ScenarioDeleteRestoreInstance method evaluate.
/**
* Evaluate the next operation
* @param operation Operation
*/
public Command evaluate(Operation operation) {
/**
* Anti-pattern : timeout
*/
Date now = new Date();
if (now.getTime() > startTime.getTime() + getTimeout()) {
if (logger.isDebugEnabled()) {
logger.debug("Instance timed out deleteName:" + deleteName);
isComplete = true;
return null;
}
}
switch(internalState) {
case NONE:
/**
* Looking for file being deleted deleted
*/
if (operation instanceof DeleteFileOperation) {
DeleteFileOperation d = (DeleteFileOperation) operation;
deleteName = d.getName();
if (logger.isDebugEnabled()) {
logger.debug("entering LOOKING_FOR_CREATE state: " + deleteName);
}
internalState = InternalState.LOOKING_FOR_CREATE;
ArrayList<Command> commands = new ArrayList<Command>();
ArrayList<Command> postCommitCommands = new ArrayList<Command>();
ArrayList<Command> postErrorCommands = new ArrayList<Command>();
commands.add(new DeleteFileCommand(d.getName(), d.getRootNodeRef(), d.getPath()));
postCommitCommands.add(newDeleteFileCallbackCommand());
return new CompoundCommand(commands, postCommitCommands, postErrorCommands);
} else {
// anything else bomb out
if (logger.isDebugEnabled()) {
logger.debug("State error, expected a DELETE");
}
isComplete = true;
}
break;
case LOOKING_FOR_CREATE:
/**
* Looking for a create operation of the deleted file
*/
if (operation instanceof CreateFileOperation) {
CreateFileOperation c = (CreateFileOperation) operation;
if (c.getName().equalsIgnoreCase(deleteName)) {
isComplete = true;
if (originalNodeRef != null) {
logger.debug("Scenario fires:" + this);
return new RestoreFileCommand(c.getName(), c.getRootNodeRef(), c.getPath(), c.getAllocationSize(), originalNodeRef);
}
return null;
}
}
}
return null;
}
Aggregations