001 /*
002
003 $Id: SharedFile.java,v 1.12 2003/05/02 20:29:47 culdesac Exp $
004
005 */
006
007 package sharpster.common;
008
009 import sharpster.common.PluginData;
010 import sharpster.common.Body;
011
012 import java.io.Serializable;
013 import java.io.ObjectStreamException;
014 import java.util.LinkedList;
015
016 /**
017 * A class for file management. The File objects contain a file
018 * attribute and attributes for storing information associated with the file.
019 */
020 public class SharedFile implements Serializable {
021
022 /**
023 * The name of the file.
024 */
025 private String fileName;
026
027 /**
028 * The path of the file in the CVS file tree.
029 */
030 private String pathInCVS;
031
032 /**
033 * The version of the file in the CVS.
034 */
035 private String version;
036
037 /**
038 * An array of users to whom the file has been shared.
039 */
040 private LinkedList sharedToUsers;
041
042 /**
043 * The access rights with which the file has been shared.
044 */
045 private int accessRights;
046
047 /**
048 * Plug-in information associated with the file name.
049 */
050 private PluginData pluginData;
051
052 /**
053 * The content of the file.
054 */
055 private Body body;
056
057 /**
058 *
059 */
060 public SharedFile() {
061 fileName = new String();
062 pathInCVS = new String();
063 version = new String();
064 sharedToUsers = new LinkedList();
065 accessRights = 0;
066 }
067
068 /**
069 * Overloaded constructor, for deep copying of file objects.
070 */
071 public SharedFile(SharedFile origFile) {
072 fileName = new String(origFile.fileName);
073 pathInCVS = new String(origFile.pathInCVS);
074 version = new String(origFile.version);
075 accessRights = origFile.accessRights;
076 /* reference */
077 pluginData = origFile.pluginData;
078 body = origFile.body;
079 sharedToUsers = new LinkedList();
080 for (int i=0; i<origFile.sharedToUsers.size(); i++){
081 sharedToUsers.add(new String((String)
082 origFile.sharedToUsers.get(i)));
083 }
084 }
085
086 /*public Object writeReplace() throws ObjectStreamException {
087 pluginData = null;
088 removeAllPluginData
089 return this;
090 }*/
091
092 /**
093 * Returns the name of a file.
094 */
095 public String getFileName() {
096 return fileName;
097 }
098
099 /**
100 * Sets the name of a file.
101 */
102 public void setFileName(String name) {
103 fileName = new String(name);
104 }
105
106 /**
107 * Returns the path of the file in the CVS tree.
108 */
109 public String getPathInCVS() {
110 return pathInCVS;
111 }
112
113 /**
114 * Sets the path of the file in the CVS tree.
115 */
116 public void setPathInCVS(String path) {
117 pathInCVS = new String(path);
118 }
119
120 public String getFullPath() {
121 return new String(pathInCVS + "/" + fileName);
122 }
123
124 /**
125 * Returns the version of the file in the CVS.
126 */
127 public String getVersion() {
128 return version;
129 }
130
131 /**
132 * Sets the version of the file in the CVS.
133 */
134 public void setVersion(String ver) {
135 version = new String(ver);
136 }
137
138 /**
139 * The users to whom the file is shared.
140 */
141 public String[] getSharedToUsers() {
142 String[] arr = new String[sharedToUsers.size()];
143
144 for(int i=0;i<sharedToUsers.size();i++) {
145 arr[i] = new String((String)sharedToUsers.get(i));
146 }
147
148 return arr;
149 }
150
151 /**
152 *
153 */
154 public void setSharedToUsers(String[] users) {
155 sharedToUsers.clear();
156 if(users == null) return;
157 for(int i=0;i<users.length;i++) {
158 sharedToUsers.add(new String(users[i]));
159 }
160 }
161
162 /**
163 *
164 */
165 public void addSharedToUser(String user) {
166 sharedToUsers.add(new String(user));
167 }
168
169 /**
170 * Returns the access rights with which the files has been shared.
171 */
172 public int getAccessRights() {
173 return accessRights;
174 }
175
176 public String getAccessRightString() {
177 String msg = new String();
178
179 if((accessRights&4) != 0) msg += "r";
180 if((accessRights&2) != 0) msg += "w";
181 if((accessRights&1) != 0) msg += "d";
182
183 return msg;
184 }
185
186 public boolean hasReadAccess(String user) {
187 boolean found = false;
188 for(int i=0;i<sharedToUsers.size();i++) {
189 String user2 = (String)sharedToUsers.get(i);
190 if(user2.equals(user)) found = true;
191 }
192 if(!found) return false;
193
194 if((accessRights&4) == 4) return true;
195 else return false;
196 }
197
198 public boolean hasWriteAccess(String user) {
199 boolean found = false;
200 for(int i=0;i<sharedToUsers.size();i++) {
201 String user2 = (String)sharedToUsers.get(i);
202 if(user2.equals(user)) found = true;
203 }
204 if(!found) return false;
205
206 if((accessRights&2) == 2) return true;
207 else return false;
208 }
209
210 public boolean hasDeleteAccess(String user) {
211 boolean found = false;
212 for(int i=0;i<sharedToUsers.size();i++) {
213 String user2 = (String)sharedToUsers.get(i);
214 if(user2.equals(user)) found = true;
215 }
216 if(!found) return false;
217
218 if((accessRights&1) == 1) return true;
219 else return false;
220 }
221
222 public void setAccessRights(int access) {
223 accessRights = access;
224 }
225
226 /**
227 * Sets the access rights read for this file
228 */
229 public void setAccessRead() {
230 accessRights = accessRights | 4;
231 }
232
233 /**
234 * Sets the access rights write for this file
235 */
236 public void setAccessWrite() {
237 accessRights = accessRights | 2;
238 }
239
240 /**
241 * Sets the access rights delete for this file
242 */
243 public void setAccessDelete() {
244 accessRights = accessRights | 1;
245 }
246
247 public String getPluginDataString() {
248 if(pluginData == null) return "";
249 else return pluginData.toString();
250 }
251
252 /**
253 * Returns the plug-in information associated with the file share
254 * made to the specified user.
255 */
256 public PluginData getPluginData() {
257 return pluginData;
258 }
259
260 /**
261 * Sets the plug-in information associated with the file share
262 * made to the specified user.
263 */
264 public void setPluginData(PluginData data) {
265 pluginData = data;
266 }
267
268 /**
269 *
270 */
271 public void setBody(Body body) {
272 this.body = body;
273 }
274
275 /**
276 * Returns the contents of the file.
277 */
278 public Body getBody() {
279 return body;
280 }
281
282 /**
283 *
284 */
285 public String toString() {
286 String msg = new String();
287 msg = msg + pathInCVS + " | " + fileName + " | "
288 + version + " | " + (pluginData!=null)
289 + " | " + (body!=null);
290 return msg;
291 }
292 }
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309