package org.limewire.core.impl.library;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
import org.limewire.core.api.Category;
import org.limewire.core.api.library.FileList;
import org.limewire.core.api.library.LibraryData;
import org.limewire.core.api.library.LibraryFileList;
import org.limewire.core.api.library.LibraryManager;
import org.limewire.core.api.library.LocalFileList;
import org.limewire.core.api.library.SharedFileList;
import org.limewire.core.api.library.SharedFileListManager;
import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.event.ListEventPublisher;
import ca.odell.glazedlists.util.concurrent.ReadWriteLock;
import com.google.inject.Singleton;
@Singleton
public class MockLibraryManager implements SharedFileListManager, LibraryManager {
private FileListAdapter allFileList;
private FriendFileListAdapter gnutellaList;
private FriendFileListAdapter friendList;
private LibraryData libraryData;
private Map<String, LocalFileList> friendMap;
public MockLibraryManager() {
allFileList = new FileListAdapter();
gnutellaList = new FriendFileListAdapter();
friendList = new FriendFileListAdapter();
libraryData = new LibraryDataAdapter();
friendMap = new HashMap<String, LocalFileList>();
initializeMockGnutellaData();
initializeMockFriendData();
initializeFriends();
}
@Override
public ListEventPublisher getLibraryListEventPublisher() {
return allFileList.getModel().getPublisher();
}
@Override
public ReadWriteLock getReadWriteLock() {
return allFileList.getModel().getReadWriteLock();
}
private void initializeMockGnutellaData() {
// MockLocalFileItem item = new MockLocalFileItem("Big Town Hero.mp3",
// 1000,12345,23456, 5,1, Category.AUDIO);
// gnutellaList.addFileItem(item);
// allFileList.addFileItem(item);
MockLocalFileItem item = new MockLocalFileItem("Pictures.jpg", 12345, 12312, 534512, 3, 2,
Category.IMAGE);
gnutellaList.addFileItem(item);
allFileList.addFileItem(item);
// item = new MockLocalFileItem("LimeWireStore.html", 32423, 3415412,
// 123123,0,0, Category.DOCUMENT);
// gnutellaList.addFileItem(item);
// allFileList.addFileItem(item);
// item = new MockLocalFileItem("Apu Cannon ball.avi", 32423, 3415412,
// 123123,0,0, Category.VIDEO);
// gnutellaList.addFileItem(item);
// allFileList.addFileItem(item);
Thread t = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
return;
}
MockLocalFileItem item = new MockLocalFileItem("Lazy load.bmp", 32423, 3415412,
123123, 0, 0, Category.IMAGE);
gnutellaList.addFileItem(item);
allFileList.addFileItem(item);
}
});
t.start();
}
private void initializeMockFriendData() {
MockLocalFileItem item = new MockLocalFileItem("Small Town Hero.mp3", 1000, 12345, 23456,
1, 1, Category.AUDIO);
friendList.addFileItem(item);
allFileList.addFileItem(item);
item = new MockLocalFileItem("LimeWire4.18.exe", 12345, 12312, 534512, 5, 0,
Category.PROGRAM);
friendList.addFileItem(item);
allFileList.addFileItem(item);
item = new MockLocalFileItem("Pictures_SanFrancisco.zip", 32423, 3415412, 123123, 0, 0,
Category.OTHER);
friendList.addFileItem(item);
allFileList.addFileItem(item);
}
private void initializeFriends() {
friendMap.put("Sean", new FileListAdapter());
initializeFriend4(friendMap.get("Sean"));
friendMap.put("Bob", new FileListAdapter());
friendMap.put("Johanna", new FileListAdapter());
friendMap.put("Mark", new FileListAdapter());
initializeFriend(friendMap.get("Mark"));
friendMap.put("Rob", new FileListAdapter());
initializeFriend2(friendMap.get("Rob"));
}
private void initializeFriend(FileList fileList) {
FileListAdapter files = (FileListAdapter) fileList;
files.addFileItem(allFileList.getModel().get(0));
}
private void initializeFriend2(FileList fileList) {
FileListAdapter files = (FileListAdapter) fileList;
files.addFileItem(allFileList.getModel().get(0));
files.addFileItem(allFileList.getModel().get(2));
}
private void initializeFriend4(FileList fileList) {
FileListAdapter files = (FileListAdapter) fileList;
files.addFileItem(allFileList.getModel().get(0));
files.addFileItem(allFileList.getModel().get(1));
files.addFileItem(allFileList.getModel().get(2));
files.addFileItem(allFileList.getModel().get(3));
}
@Override
public LibraryFileList getLibraryManagedList() {
return allFileList;
}
@Override
public LibraryData getLibraryData() {
return libraryData;
}
private class LibraryDataAdapter implements LibraryData {
@Override
public boolean isFileManageable(File f) {
return true;
}
@Override
public boolean isProgramManagingAllowed() {
return false;
}
@Override
public Collection<Category> getManagedCategories() {
return EnumSet.allOf(Category.class);
}
@Override
public boolean isDirectoryAllowed(File folder) {
return folder.isDirectory();
}
@Override
public Collection<String> getDefaultExtensions() {
return new ArrayList<String>();
}
@Override
public Map<Category, Collection<String>> getExtensionsPerCategory() {
return new HashMap<Category, Collection<String>>();
}
@Override
public void setManagedExtensions(Collection<String> extensions) {
}
@Override
public void setCategoriesToIncludeWhenAddingFolders(Collection<Category> managedCategories) {
}
}
@Override
public int createNewSharedFileList(String name) {
return -1;
}
private final BasicEventList<SharedFileList> model = new BasicEventList<SharedFileList>();
@Override
public EventList<SharedFileList> getModel() {
return model;
}
@Override
public void deleteSharedFileList(SharedFileList list) {
}
@Override
public void addPropertyChangeListener(PropertyChangeListener listener) {
}
@Override
public int getSharedFileCount() {
return 0;
}
@Override
public void removePropertyChangeListener(PropertyChangeListener listener) {
}
@Override
public void removeDocumentsFromPublicLists() {
}
}