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