001    /*
002    
003      $Id: ExternalCommandManager.java,v 1.7 2003/04/30 20:49:21 culdesac Exp $
004    
005    */
006    
007    package sharpster.daemon.commandmanagement;
008    
009    import sharpster.daemon.SharpsterDaemon;
010    import sharpster.daemon.filemanagement.FileManager;
011    import sharpster.daemon.sharemanagement.ShareManager;
012    import sharpster.daemon.usermanagement.UserManager;
013    import sharpster.daemon.externalcommunication.ExternalCommunication;
014    import sharpster.common.*;
015    
016    /**
017     * Interface of the Command Management Module. It is used by the External
018     * Communication Module to invoke the execution of commands, requested
019     * by a remote user.
020     */
021    
022    public class ExternalCommandManager {
023    
024        private FileManager fileManager;
025        private ShareManager shareManager;
026        private UserManager userManager;
027        private ExternalCommunication externalCommunication;
028        private Mutex globalMutex;
029    
030        /**
031         * Constructs an object
032         */
033        public void initialize(FileManager fmi,
034                               ShareManager smi,
035                               UserManager umi,
036                               ExternalCommunication eci,
037                               Mutex mutex) {
038            fileManager = fmi;
039            shareManager = smi;
040            userManager = umi;
041            externalCommunication = eci;
042            globalMutex = mutex;
043        }
044    
045        /**
046         * Excecutes a remoteCheckoutFiles call received from an remote user.
047         */
048        public ResponseCollection remoteCheckoutFiles(FileCollection files,
049                                                      String user,
050                                                      String role) {
051            System.out.println("EC::Got a checkout command from "+user);
052    
053            ResponseCollection responses = new ResponseCollection();
054            ResponseCollection resp;
055    
056            responses = fileManager.translateRemotePaths(files,false);
057            if(responses.hasError()) return responses;
058    
059            resp = shareManager.checkAccess(files,user,4);
060            responses.appendCollection(resp);
061            if(responses.hasError()) return responses;
062    
063            resp = fileManager.remoteCheckoutFiles(files, role);
064            responses.appendCollection(resp);
065            fileManager.clearTemporaryFiles();
066            if(responses.hasError()) return responses;
067    
068            FileResponse fileResp = new FileResponse();
069            fileResp.setOrigin("CommandManager");
070            fileResp.setUser(SharpsterDaemon.getPeerName());
071            fileResp.setError(false);
072            fileResp.setFiles(files);
073            responses.addResponse(fileResp);
074    
075            return responses;
076        }
077    
078        /**
079         * Excecutes a remoteUpdateFiles call received from an remote user.
080         */
081        public ResponseCollection remoteUpdateFiles(FileCollection files, String user) {
082            System.out.println("EC::Got a update command from "+user);
083    
084            ResponseCollection responses = new ResponseCollection();
085            ResponseCollection resp;
086    
087            resp = shareManager.checkAccess(files,user,4);
088            responses.appendCollection(resp);
089            if(responses.hasError()) return responses;
090    
091            resp = fileManager.remoteUpdateFiles(files);
092            responses.appendCollection(resp);
093            fileManager.clearTemporaryFiles();
094            if(responses.hasError()) return responses;
095    
096            FileResponse fileResp = new FileResponse();
097            fileResp.setOrigin("CommandManager");
098            fileResp.setUser(SharpsterDaemon.getPeerName());
099            fileResp.setError(false);
100            fileResp.setFiles(files);
101            responses.addResponse(fileResp);
102    
103            return responses;
104        }
105    
106        /**
107         * Excecutes a remoteCommitFiles call received from an remote user.
108         */
109        public ResponseCollection remoteCommitFiles(FileCollection files,
110                                                    String user,
111                                                    String role) {
112            System.out.println("EC::Got a commit command from "+user);
113    
114            ResponseCollection responses = new ResponseCollection();
115            ResponseCollection resp;
116    
117            resp = shareManager.checkAccess(files,user,2);
118            responses.appendCollection(resp);
119            if(responses.hasError()) return responses;
120    
121            resp = fileManager.remoteCommitFiles(files, role);
122            responses.appendCollection(resp);
123            fileManager.clearTemporaryFiles();
124            if(responses.hasError()) return responses;
125    
126            FileResponse fileResp = new FileResponse();
127            fileResp.setOrigin("CommandManager");
128            fileResp.setUser(SharpsterDaemon.getPeerName());
129            fileResp.setError(false);
130            fileResp.setFiles(files);
131            responses.addResponse(fileResp);
132    
133            return responses;
134        }
135    
136        /**
137         * Excecutes a remoteAddFiles call received from an remote user.
138         */
139        public ResponseCollection remoteAddFiles(FileCollection files, String user) {
140            System.out.println("EC::Got a add command from "+user);
141            return new ResponseCollection();
142        }
143    
144        /**
145         * Excecutes a remoteRemoveFiles call received from an remote user.
146         */
147        public ResponseCollection remoteRemoveFiles(FileCollection files, String user) {
148            System.out.println("EC::Got a remove command from "+user);
149            return new ResponseCollection();
150        }
151    
152        /**
153         * Returns information about which files the external user has access to.
154         */
155        public ResponseCollection getFileAccess(String user) {
156            return shareManager.getSharedFiles(user);
157        }
158    }
159    
160    
161