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