001    /*
002    
003      $Id: FileCollection.java,v 1.7 2003/05/02 20:29:47 culdesac Exp $
004    
005    */
006    
007    package sharpster.common;
008    
009    import sharpster.common.SharedFile;
010    import java.util.LinkedList;
011    import java.io.Serializable;
012    
013    /**
014     * A collection of File objects. The class is used both by modules 
015     * in the local client and in the daemon.
016     */
017    public class FileCollection implements Serializable {
018    
019        /**
020         * Contains the file objects.
021         */
022        private LinkedList files;
023    
024        public FileCollection() {
025            files = new LinkedList();       
026        }
027    
028        /**
029         * Returns the number of File objects in the collection.
030         */
031        public int getFileCount() {
032            return files.size();
033        }
034    
035        /**
036         * Removes all files from the collection.
037         */
038        public void removeAllFiles() {
039            files.clear();
040        }
041       
042        /**
043         * Adds a new File object to the collection.
044         */
045        public void addFile(SharedFile file) {
046            files.add(file);
047        }
048       
049        /**
050         * Appends a FileCollection to this collection.
051         */
052        public void appendCollection(FileCollection collection) {
053            files.addAll(collection.files);
054        }
055        
056        public FileCollection createDuplicate() {
057            FileCollection newFiles = new FileCollection();
058            for(int i=0;i<files.size();i++) {
059                newFiles.addFile(new SharedFile((SharedFile)files.get(i)));
060            }
061            return newFiles;
062        }
063        
064        /**
065         * Removes all plugin data from the files, used to
066         * prepare the file to be transported to a remote user.
067         * This is because there is no garantee that the remote
068         * user has this plugin type thus may not be able to 
069         * handle the plugin data.
070         */
071        public void removeAllPluginData() {
072            for(int i=0;i<files.size();i++) {
073                SharedFile file = (SharedFile)files.get(i);
074                file.setPluginData(null);
075            }
076        }
077    
078        /**
079         * Returns a specified file.
080         */
081        public SharedFile getFile(int index) {
082            SharedFile retval = null;
083            try {
084                retval = (SharedFile)files.get(index);
085            } catch (Exception e) {
086                retval = null;
087            }
088            return retval;
089        }
090    
091        /**
092         *
093         */
094        public String toString() {
095            String msg = new String();
096    
097            msg += "File Collection: ";
098            for(int i=0;i<files.size();i++) {
099                SharedFile file = (SharedFile)files.get(i);
100                msg += file.toString() + "\n                 ";
101            }
102            msg += "\r";
103    
104            return msg;
105        }
106    }
107    
108    
109    
110    
111    
112