/*
* Copyright 2004 - 2008 Christian Sprajc. All rights reserved.
*
* This file is part of PowerFolder.
*
* PowerFolder is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* PowerFolder is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PowerFolder. If not, see <http://www.gnu.org/licenses/>.
*
* $Id$
*/
package de.dal33t.powerfolder.event;
import java.util.Collection;
import java.util.Collections;
import java.util.EventObject;
import de.dal33t.powerfolder.Member;
import de.dal33t.powerfolder.disk.Folder;
import de.dal33t.powerfolder.disk.ScanResult;
import de.dal33t.powerfolder.disk.SyncProfile;
import de.dal33t.powerfolder.light.FileInfo;
import de.dal33t.powerfolder.message.FileList;
import de.dal33t.powerfolder.message.FolderFilesChanged;
import de.dal33t.powerfolder.util.Reject;
/**
* Event about changes in the folder, mostly file changes. Exception: Stats
* calculated event.
*
* @author Christian Sprajc
* @version $Revision$
*/
public class FolderEvent extends EventObject {
/**
* In case the local folder has been scanned.
*/
private ScanResult scanResult;
/**
* Changes from the remote side. new list
*/
private FileList fileList;
/**
* Changes from the remote side. new list
*/
private FolderFilesChanged changeList;
/**
* The member which send the remote content changes.
*/
private Member member;
/**
* The files that has been freshly scanned
*/
private Collection<FileInfo> scannedFileInfos;
/**
* The locally deleted files
*/
private Collection<FileInfo> deletedFileInfos;
/**
* The new syncprofile of the folder.
*/
private SyncProfile newSyncProfile;
public FolderEvent(Folder source) {
super(source);
}
public FolderEvent(Folder source, ScanResult sr) {
super(source);
Reject.ifNull(sr, "ScanResult is null");
this.scanResult = sr;
}
public FolderEvent(Folder source, FileList fileList, Member member) {
super(source);
Reject.ifNull(fileList, "Filelist is null");
this.fileList = fileList;
this.member = member;
}
public FolderEvent(Folder source, FolderFilesChanged changeList,
Member member)
{
super(source);
Reject.ifNull(changeList, "ChangeList is null");
this.changeList = changeList;
this.member = member;
}
public FolderEvent(Folder source, FileInfo fileInfo) {
this(source, Collections.singleton(fileInfo), true);
}
public FolderEvent(Folder source, Collection<FileInfo> fileInfos,
boolean scanned)
{
super(source);
Reject.ifNull(fileInfos, "FileInfo is null");
if (scanned) {
this.scannedFileInfos = fileInfos;
} else {
this.deletedFileInfos = fileInfos;
}
}
public FolderEvent(Folder source, Collection<FileInfo> fileInfos) {
this(source, fileInfos, false);
}
public FolderEvent(Folder source, SyncProfile profile) {
super(source);
Reject.ifNull(profile, "New sync profile is null");
this.newSyncProfile = profile;
}
public Folder getFolder() {
return (Folder) getSource();
}
public ScanResult getScanResult() {
return scanResult;
}
public FileList getFileList() {
return fileList;
}
public FolderFilesChanged getChangeList() {
return changeList;
}
public Member getMember() {
return member;
}
public Collection<FileInfo> getScannedFileInfos() {
return scannedFileInfos;
}
public Collection<FileInfo> getDeletedFileInfos() {
return deletedFileInfos;
}
public SyncProfile getNewSyncProfile() {
return newSyncProfile;
}
}