package org.peerbox.app.activity.collectors;
import net.engio.mbassy.listener.Handler;
import org.peerbox.app.activity.ActivityItem;
import org.peerbox.app.activity.ActivityLogger;
import org.peerbox.app.activity.ActivityType;
import org.peerbox.app.manager.file.IFileMessage;
import org.peerbox.app.manager.file.IFileMessageListener;
import org.peerbox.app.manager.file.messages.FileExecutionFailedMessage;
import org.peerbox.app.manager.file.messages.LocalFileAddedMessage;
import org.peerbox.app.manager.file.messages.LocalFileConflictMessage;
import org.peerbox.app.manager.file.messages.LocalFileDeletedMessage;
import org.peerbox.app.manager.file.messages.LocalFileSoftDeleteMessage;
import org.peerbox.app.manager.file.messages.LocalFileMovedMessage;
import org.peerbox.app.manager.file.messages.LocalFileUpdatedMessage;
import org.peerbox.app.manager.file.messages.LocalShareFolderMessage;
import org.peerbox.app.manager.file.messages.RemoteFileAddedMessage;
import org.peerbox.app.manager.file.messages.RemoteFileDeletedMessage;
import org.peerbox.app.manager.file.messages.RemoteFileMovedMessage;
import org.peerbox.app.manager.file.messages.RemoteFileUpdatedMessage;
import org.peerbox.app.manager.file.messages.RemoteShareFolderMessage;
import com.google.inject.Inject;
/**
* File events collector (added, updated, ... files)
*
* @author albrecht
*
*/
class FileManagerCollector extends AbstractActivityCollector implements IFileMessageListener {
@Inject
protected FileManagerCollector(ActivityLogger activityLogger) {
super(activityLogger);
}
@Handler
@Override
public void onLocalFileAdded(LocalFileAddedMessage upload) {
ActivityItem item = ActivityItem.create()
.setTitle("Local add finished.")
.setDescription(formatDescription(upload));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onLocalFileMoved(LocalFileMovedMessage download) {
ActivityItem item = ActivityItem.create()
.setTitle("Local move finished.")
.setDescription(formatDescription(download));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onLocalFileDeleted(LocalFileDeletedMessage delete) {
ActivityItem item = ActivityItem.create()
.setTitle("Local delete finished.")
.setDescription(formatDescription(delete));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onLocalFileUpdated(LocalFileUpdatedMessage message) {
ActivityItem item = ActivityItem.create()
.setTitle("Local update finished.")
.setDescription(formatDescription(message));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onLocalFileDesynchronized(LocalFileSoftDeleteMessage desync){
ActivityItem item = ActivityItem.create()
.setTitle("Soft-delete finished. File has been locally deleted.")
.setDescription(formatDescription(desync));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onLocalFileConfilct(LocalFileConflictMessage conflict) {
ActivityItem item = ActivityItem.create()
.setType(ActivityType.WARNING)
.setTitle("Conflict detected, local version renamed.")
.setDescription(formatDescription(conflict));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onRemoteFileAdded(RemoteFileAddedMessage upload) {
ActivityItem item = ActivityItem.create()
.setTitle("Remote add finished.")
.setDescription(formatDescription(upload));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onRemoteFileMoved(RemoteFileMovedMessage download) {
ActivityItem item = ActivityItem.create()
.setTitle("Remote move finished.")
.setDescription(formatDescription(download));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onRemoteFileDeleted(RemoteFileDeletedMessage delete) {
ActivityItem item = ActivityItem.create()
.setTitle("Remote delete finished.")
.setDescription(formatDescription(delete));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onRemoteFileUpdated(RemoteFileUpdatedMessage message) {
ActivityItem item = ActivityItem.create()
.setTitle("Remote update finished.")
.setDescription(formatDescription(message));
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onFileExecutionFailed(FileExecutionFailedMessage failure) {
ActivityItem item = ActivityItem.create()
.setType(ActivityType.WARNING)
.setTitle("All attempts to handle events failed.")
.setDescription(formatDescription(failure));
getActivityLogger().addActivityItem(item);
}
private String formatDescription(IFileMessage msg) {
return String.format("%s", msg.getFile().getPath());
}
@Handler
@Override
public void onRemoteShareFolder(RemoteShareFolderMessage message) {
String description = "Received an invite for folder \"" +
message.getFile().getPath() + " by user \"" +
message.getInvitedBy() + "\"";
ActivityItem item = ActivityItem.create()
.setType(ActivityType.INFORMATION)
.setTitle("Folder sharing.")
.setDescription(description);
getActivityLogger().addActivityItem(item);
}
@Handler
@Override
public void onLocalShareFolder(LocalShareFolderMessage message) {
String description = "Successful sharing of own folder" +
message.getFile().getPath() + " with user \""+
message.getInvitedUserPermission().getUserId();
ActivityItem item = ActivityItem.create()
.setType(ActivityType.INFORMATION)
.setTitle("Sharing complete.")
.setDescription(description);
getActivityLogger().addActivityItem(item);
}
}