741 |
10 Oct 06 |
olle |
1 |
/* |
1652 |
22 May 07 |
gregory |
$Id$ |
741 |
10 Oct 06 |
olle |
3 |
|
1916 |
31 Aug 07 |
jari |
Copyright (C) 2006 Olle Mansson |
1916 |
31 Aug 07 |
jari |
Copyright (C) 2007 Gregory Vincic, Olle Mansson |
741 |
10 Oct 06 |
olle |
6 |
|
1652 |
22 May 07 |
gregory |
This file is part of Proteios. |
1652 |
22 May 07 |
gregory |
Available at http://www.proteios.org/ |
741 |
10 Oct 06 |
olle |
9 |
|
1652 |
22 May 07 |
gregory |
Proteios is free software; you can redistribute it and/or modify it |
1652 |
22 May 07 |
gregory |
under the terms of the GNU General Public License as published by |
1652 |
22 May 07 |
gregory |
the Free Software Foundation; either version 2 of the License, or |
1652 |
22 May 07 |
gregory |
(at your option) any later version. |
741 |
10 Oct 06 |
olle |
14 |
|
1652 |
22 May 07 |
gregory |
Proteios is distributed in the hope that it will be useful, but |
1652 |
22 May 07 |
gregory |
WITHOUT ANY WARRANTY; without even the implied warranty of |
1652 |
22 May 07 |
gregory |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1652 |
22 May 07 |
gregory |
General Public License for more details. |
741 |
10 Oct 06 |
olle |
19 |
|
1652 |
22 May 07 |
gregory |
You should have received a copy of the GNU General Public License |
1652 |
22 May 07 |
gregory |
along with this program; if not, write to the Free Software |
1652 |
22 May 07 |
gregory |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
1652 |
22 May 07 |
gregory |
02111-1307, USA. |
1652 |
22 May 07 |
gregory |
24 |
*/ |
741 |
10 Oct 06 |
olle |
// Xerver Free Web Server |
741 |
10 Oct 06 |
olle |
// Copyright (C) 2002-2005 Omid Rouhani |
741 |
10 Oct 06 |
olle |
27 |
// |
741 |
10 Oct 06 |
olle |
28 |
// |
741 |
10 Oct 06 |
olle |
// This program is free software; you can redistribute it and/or |
741 |
10 Oct 06 |
olle |
// modify it under the terms of the GNU General Public License |
741 |
10 Oct 06 |
olle |
// as published by the Free Software Foundation; either version 2 |
741 |
10 Oct 06 |
olle |
// of the License, or (at your option) any later version. |
741 |
10 Oct 06 |
olle |
33 |
// |
741 |
10 Oct 06 |
olle |
// This program is distributed in the hope that it will be useful, |
741 |
10 Oct 06 |
olle |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
741 |
10 Oct 06 |
olle |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
741 |
10 Oct 06 |
olle |
// GNU General Public License for more details. |
741 |
10 Oct 06 |
olle |
38 |
// |
741 |
10 Oct 06 |
olle |
// You should have received a copy of the GNU General Public License |
741 |
10 Oct 06 |
olle |
// along with this program; if not, write to the Free Software |
741 |
10 Oct 06 |
olle |
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
741 |
10 Oct 06 |
olle |
42 |
// |
741 |
10 Oct 06 |
olle |
43 |
// |
741 |
10 Oct 06 |
olle |
44 |
// ############################################################# |
741 |
10 Oct 06 |
olle |
// ## YOU CAN CONTACT THE AUTHOR (OMID ROUHANI) AT: ## |
741 |
10 Oct 06 |
olle |
// ## HTTP://WWW.JAVASCRIPT.NU/XERVER/ ## |
741 |
10 Oct 06 |
olle |
47 |
// ## ## |
741 |
10 Oct 06 |
olle |
// ## IF YOUR SOFTWARE IS NOT RELEASED UNDER THE ## |
741 |
10 Oct 06 |
olle |
// ## GNU GENERAL PUBLIC LICENSE (GPL), ## |
741 |
10 Oct 06 |
olle |
// ## PLEASE DO NOT COPY ANYTHING FROM THIS SOURCE CODE!!! ## |
741 |
10 Oct 06 |
olle |
51 |
// ## ## |
741 |
10 Oct 06 |
olle |
// ## FOR FULL LICENSE, PLEASE READ "XERVER LICENSE". ## |
741 |
10 Oct 06 |
olle |
53 |
// ############################################################# |
1652 |
22 May 07 |
gregory |
54 |
package se.lu.thep.coreftpd.ftp_server; |
741 |
10 Oct 06 |
olle |
55 |
|
790 |
23 Oct 06 |
olle |
56 |
import org.proteios.core.DbControl; |
931 |
16 Nov 06 |
olle |
57 |
import org.proteios.core.Include; |
1656 |
22 May 07 |
gregory |
58 |
import org.proteios.core.ItemFactory; |
790 |
23 Oct 06 |
olle |
59 |
import org.proteios.core.ItemQuery; |
790 |
23 Oct 06 |
olle |
60 |
import org.proteios.core.ItemResultList; |
1216 |
18 Feb 07 |
gregory |
61 |
import org.proteios.core.Path.Type; |
3469 |
02 Nov 09 |
olle |
62 |
import org.proteios.core.Project; |
3458 |
23 Oct 09 |
olle |
63 |
import org.proteios.core.QueryFactory; |
1676 |
25 May 07 |
olle |
64 |
import org.proteios.core.SessionControl; |
3458 |
23 Oct 09 |
olle |
65 |
import org.proteios.core.query.Expressions; |
3458 |
23 Oct 09 |
olle |
66 |
import org.proteios.core.query.Hql; |
3458 |
23 Oct 09 |
olle |
67 |
import org.proteios.core.query.Restrictions; |
791 |
23 Oct 06 |
olle |
68 |
import se.lu.thep.coreftpd.common.MyGregorianCalendar; |
791 |
23 Oct 06 |
olle |
69 |
import se.lu.thep.coreftpd.common.MyString; |
791 |
23 Oct 06 |
olle |
70 |
import se.lu.thep.coreftpd.webserver.PathInfo; |
741 |
10 Oct 06 |
olle |
71 |
import java.io.DataOutputStream; |
741 |
10 Oct 06 |
olle |
72 |
import java.io.File; |
3458 |
23 Oct 09 |
olle |
73 |
import java.util.ArrayList; |
741 |
10 Oct 06 |
olle |
74 |
import java.util.Arrays; |
1650 |
21 May 07 |
olle |
75 |
import java.util.Date; |
741 |
10 Oct 06 |
olle |
76 |
import java.util.GregorianCalendar; |
3458 |
23 Oct 09 |
olle |
77 |
import java.util.List; |
741 |
10 Oct 06 |
olle |
78 |
|
741 |
10 Oct 06 |
olle |
79 |
/** |
1652 |
22 May 07 |
gregory |
* <B>About this class:</B> <BR> |
741 |
10 Oct 06 |
olle |
* This is doing a directory listing with the format used by DIR in MS-DOS. |
1652 |
22 May 07 |
gregory |
82 |
* |
741 |
10 Oct 06 |
olle |
* @author <a href="http://www.JavaScript.nu/xerver/" TARGET="_top">Omid Rouhani</a> |
741 |
10 Oct 06 |
olle |
* @version 1.0 |
741 |
10 Oct 06 |
olle |
85 |
*/ |
1656 |
22 May 07 |
gregory |
86 |
final public class MyLS |
1656 |
22 May 07 |
gregory |
87 |
{ |
3469 |
02 Nov 09 |
olle |
88 |
public static final String coreSeparator = FTPNewConnection.coreSeparator; |
3469 |
02 Nov 09 |
olle |
89 |
public static final String sharedProjectsFolderName = FTPNewConnection.sharedProjectsFolderName; |
1652 |
22 May 07 |
gregory |
90 |
private File f_folder; |
741 |
10 Oct 06 |
olle |
91 |
private String s_path; |
1652 |
22 May 07 |
gregory |
92 |
private boolean isValidDirectory = false; |
1652 |
22 May 07 |
gregory |
93 |
private final static boolean b_showErrors = false; |
931 |
16 Nov 06 |
olle |
94 |
/* |
931 |
16 Nov 06 |
olle |
* Instance variables not in original Xerver code. |
931 |
16 Nov 06 |
olle |
96 |
*/ |
1676 |
25 May 07 |
olle |
97 |
private SessionControl sc = null; |
1652 |
22 May 07 |
gregory |
98 |
private org.proteios.core.Directory coreDir = null; |
1652 |
22 May 07 |
gregory |
99 |
private org.proteios.core.File coreFile = null; |
3469 |
02 Nov 09 |
olle |
100 |
private boolean inSharedProjectsFolder = false; |
4047 |
01 Dec 10 |
olle |
101 |
private boolean textBasedFTPClientType = false; |
790 |
23 Oct 06 |
olle |
102 |
/** |
790 |
23 Oct 06 |
olle |
* Logger used. Used to log specific events. |
790 |
23 Oct 06 |
olle |
104 |
*/ |
790 |
23 Oct 06 |
olle |
105 |
private static final org.apache.log4j.Logger log = org.apache.log4j.LogManager |
1656 |
22 May 07 |
gregory |
106 |
.getLogger("se.lu.thep.coreftpd.ftp_server"); |
790 |
23 Oct 06 |
olle |
107 |
|
1656 |
22 May 07 |
gregory |
108 |
|
1676 |
25 May 07 |
olle |
109 |
/** |
3469 |
02 Nov 09 |
olle |
* Get inSharedProjectsFolder flag. |
3469 |
02 Nov 09 |
olle |
111 |
* |
3469 |
02 Nov 09 |
olle |
* @return boolean True if in shared projects folder, else false. |
3469 |
02 Nov 09 |
olle |
113 |
*/ |
3469 |
02 Nov 09 |
olle |
114 |
public boolean isInSharedProjectsFolder() |
3469 |
02 Nov 09 |
olle |
115 |
{ |
3469 |
02 Nov 09 |
olle |
116 |
return this.inSharedProjectsFolder; |
3469 |
02 Nov 09 |
olle |
117 |
} |
3469 |
02 Nov 09 |
olle |
118 |
|
3469 |
02 Nov 09 |
olle |
119 |
|
3469 |
02 Nov 09 |
olle |
120 |
/** |
3469 |
02 Nov 09 |
olle |
* Set inSharedProjectsFolder flag. |
3469 |
02 Nov 09 |
olle |
122 |
* |
3469 |
02 Nov 09 |
olle |
* @param inSharedProjectsFolder The inSharedProjectsFolder flag to set. |
3469 |
02 Nov 09 |
olle |
124 |
*/ |
3469 |
02 Nov 09 |
olle |
125 |
public void setInSharedProjectsFolder(boolean inSharedProjectsFolder) |
3469 |
02 Nov 09 |
olle |
126 |
{ |
3469 |
02 Nov 09 |
olle |
127 |
this.inSharedProjectsFolder = inSharedProjectsFolder; |
3469 |
02 Nov 09 |
olle |
128 |
} |
3469 |
02 Nov 09 |
olle |
129 |
|
3469 |
02 Nov 09 |
olle |
130 |
|
3469 |
02 Nov 09 |
olle |
131 |
/** |
4047 |
01 Dec 10 |
olle |
* Get flag indicating a text-based FTP client type. |
4047 |
01 Dec 10 |
olle |
133 |
* |
4047 |
01 Dec 10 |
olle |
* @return textBasedFTPClientType boolean Flag indicating a text-based FTP client type. |
4047 |
01 Dec 10 |
olle |
135 |
*/ |
4047 |
01 Dec 10 |
olle |
136 |
public boolean isTextBasedFTPClientType() |
4047 |
01 Dec 10 |
olle |
137 |
{ |
4047 |
01 Dec 10 |
olle |
138 |
return this.textBasedFTPClientType; |
4047 |
01 Dec 10 |
olle |
139 |
} |
4047 |
01 Dec 10 |
olle |
140 |
|
4047 |
01 Dec 10 |
olle |
141 |
|
4047 |
01 Dec 10 |
olle |
142 |
/** |
4047 |
01 Dec 10 |
olle |
* Set flag indicating a text-based FTP client type. |
4047 |
01 Dec 10 |
olle |
144 |
* |
4047 |
01 Dec 10 |
olle |
* @param textBasedFTPClientType boolean Flag to set indicating a text-based FTP client type. |
4047 |
01 Dec 10 |
olle |
146 |
*/ |
4047 |
01 Dec 10 |
olle |
147 |
public void setTextBasedFTPClientType(boolean textBasedFTPClientType) |
4047 |
01 Dec 10 |
olle |
148 |
{ |
4047 |
01 Dec 10 |
olle |
149 |
this.textBasedFTPClientType = textBasedFTPClientType; |
4047 |
01 Dec 10 |
olle |
150 |
} |
4047 |
01 Dec 10 |
olle |
151 |
|
4047 |
01 Dec 10 |
olle |
152 |
|
4047 |
01 Dec 10 |
olle |
153 |
/** |
1676 |
25 May 07 |
olle |
* Get the SessionControl object. |
1676 |
25 May 07 |
olle |
155 |
* |
1676 |
25 May 07 |
olle |
* @return the SessionControl object |
1676 |
25 May 07 |
olle |
157 |
*/ |
1676 |
25 May 07 |
olle |
158 |
public SessionControl getSessionControl() { |
1676 |
25 May 07 |
olle |
159 |
return this.sc; |
1676 |
25 May 07 |
olle |
160 |
} |
1676 |
25 May 07 |
olle |
161 |
|
1676 |
25 May 07 |
olle |
162 |
|
1676 |
25 May 07 |
olle |
163 |
/** |
1676 |
25 May 07 |
olle |
* Set the SessionControl object. |
1676 |
25 May 07 |
olle |
165 |
* |
1676 |
25 May 07 |
olle |
* @param sc the SessionControl object to set. |
1676 |
25 May 07 |
olle |
167 |
*/ |
1676 |
25 May 07 |
olle |
168 |
public void setSessionControl(SessionControl sc) { |
1676 |
25 May 07 |
olle |
169 |
this.sc = sc; |
1676 |
25 May 07 |
olle |
170 |
} |
1676 |
25 May 07 |
olle |
171 |
|
1676 |
25 May 07 |
olle |
172 |
|
4047 |
01 Dec 10 |
olle |
173 |
public MyLS(String argPath, SessionControl newSc, boolean textBasedFTPClientTypeInput) |
1656 |
22 May 07 |
gregory |
174 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
3469 |
02 Nov 09 |
olle |
176 |
log.info("MyLS::MyLS(): Start - argPath = \"" + argPath + "\" isInSharedProjectsFolder() = " + isInSharedProjectsFolder()); |
3469 |
02 Nov 09 |
olle |
// Check if path corresponds to shared projects folder |
3469 |
02 Nov 09 |
olle |
178 |
if (pathIsSharedProjectsFolder(argPath)) |
3469 |
02 Nov 09 |
olle |
179 |
{ |
3469 |
02 Nov 09 |
olle |
180 |
setInSharedProjectsFolder(true); |
3469 |
02 Nov 09 |
olle |
181 |
argPath = fetchHomeDirectoryPath(argPath); |
3469 |
02 Nov 09 |
olle |
182 |
} |
3469 |
02 Nov 09 |
olle |
183 |
log.info("MyLS::MyLS(): argPath = \"" + argPath + "\""); |
1652 |
22 May 07 |
gregory |
184 |
s_path = argPath; |
4047 |
01 Dec 10 |
olle |
185 |
setTextBasedFTPClientType(textBasedFTPClientTypeInput); |
4047 |
01 Dec 10 |
olle |
186 |
log.info("MyLS::MyLS(): isTextBasedFTPClientType() = " + isTextBasedFTPClientType()); |
1676 |
25 May 07 |
olle |
187 |
setSessionControl(newSc); |
1652 |
22 May 07 |
gregory |
// f_folder=new File(s_path); |
1652 |
22 May 07 |
gregory |
// if (f_folder.isDirectory()) |
1652 |
22 May 07 |
gregory |
// isValidDirectory=true; |
790 |
23 Oct 06 |
olle |
191 |
boolean pathIsValidCoreDirectory = false; |
931 |
16 Nov 06 |
olle |
192 |
/* |
1652 |
22 May 07 |
gregory |
* When checking for a valid core directory in the constructor, we |
1652 |
22 May 07 |
gregory |
* ignore if the directory is tagged as removed. |
931 |
16 Nov 06 |
olle |
195 |
*/ |
1680 |
25 May 07 |
olle |
196 |
DbControl dc = getSessionControl().newDbControl(); |
1656 |
22 May 07 |
gregory |
197 |
ItemFactory factory = new ItemFactory(dc); |
931 |
16 Nov 06 |
olle |
198 |
pathIsValidCoreDirectory = isValidCoreDirectory(s_path, true); |
1656 |
22 May 07 |
gregory |
199 |
log |
1656 |
22 May 07 |
gregory |
200 |
.info("MyLS::MyLS(): pathIsValidCoreDirectory = " + pathIsValidCoreDirectory); |
1656 |
22 May 07 |
gregory |
201 |
if (pathIsValidCoreDirectory) |
1656 |
22 May 07 |
gregory |
202 |
{ |
790 |
23 Oct 06 |
olle |
203 |
/* |
790 |
23 Oct 06 |
olle |
* Path equals directory. |
790 |
23 Oct 06 |
olle |
205 |
*/ |
1652 |
22 May 07 |
gregory |
206 |
org.proteios.core.Path coreDirPath = new org.proteios.core.Path( |
1656 |
22 May 07 |
gregory |
207 |
s_path, Type.DIRECTORY); |
1656 |
22 May 07 |
gregory |
208 |
try |
1656 |
22 May 07 |
gregory |
209 |
{ |
1656 |
22 May 07 |
gregory |
210 |
coreDir = factory.getByPath(coreDirPath); |
790 |
23 Oct 06 |
olle |
211 |
/* |
790 |
23 Oct 06 |
olle |
* If no exceptions, core directory is valid. |
790 |
23 Oct 06 |
olle |
213 |
*/ |
790 |
23 Oct 06 |
olle |
214 |
isValidDirectory = true; |
2845 |
12 Sep 08 |
olle |
215 |
|
2845 |
12 Sep 08 |
olle |
216 |
/* |
2845 |
12 Sep 08 |
olle |
* If core directory is the home directory, deactivate any active project |
2845 |
12 Sep 08 |
olle |
218 |
*/ |
2845 |
12 Sep 08 |
olle |
219 |
log |
2845 |
12 Sep 08 |
olle |
220 |
.info("MyLS::MyLS(): coreDir.isHomeDirectory() = " + coreDir.isHomeDirectory()); |
2845 |
12 Sep 08 |
olle |
221 |
if (coreDir.isHomeDirectory()) |
2845 |
12 Sep 08 |
olle |
222 |
{ |
4047 |
01 Dec 10 |
olle |
223 |
log.info("MyLS::MyLS(): isTextBasedFTPClientType() = " + isTextBasedFTPClientType()); |
4047 |
01 Dec 10 |
olle |
224 |
if (isTextBasedFTPClientType()) |
4047 |
01 Dec 10 |
olle |
225 |
{ |
4047 |
01 Dec 10 |
olle |
226 |
getSessionControl().setActiveProject(null); |
4047 |
01 Dec 10 |
olle |
227 |
log.info("MyLS::MyLS(): getSessionControl().setActiveProject(null)"); |
4047 |
01 Dec 10 |
olle |
228 |
} |
2845 |
12 Sep 08 |
olle |
229 |
} |
2845 |
12 Sep 08 |
olle |
230 |
|
2845 |
12 Sep 08 |
olle |
231 |
/* |
2845 |
12 Sep 08 |
olle |
* If core directory is a project directory, make project active |
2845 |
12 Sep 08 |
olle |
233 |
*/ |
2845 |
12 Sep 08 |
olle |
234 |
log |
2845 |
12 Sep 08 |
olle |
235 |
.info("MyLS::MyLS(): coreDir.isProjectDirectory() = " + coreDir.isProjectDirectory()); |
2845 |
12 Sep 08 |
olle |
236 |
if (coreDir.isProjectDirectory()) |
2845 |
12 Sep 08 |
olle |
237 |
{ |
2845 |
12 Sep 08 |
olle |
238 |
org.proteios.core.Project project = coreDir.getProjectDirectoryProject(); |
2845 |
12 Sep 08 |
olle |
239 |
if (project != null) |
2845 |
12 Sep 08 |
olle |
240 |
{ |
2845 |
12 Sep 08 |
olle |
241 |
getSessionControl().setActiveProject(project); |
4046 |
01 Dec 10 |
olle |
242 |
log.info("MyLS::MyLS(): getSessionControl().setActiveProject(project id = " + project.getId() + ")"); |
2845 |
12 Sep 08 |
olle |
243 |
} |
2845 |
12 Sep 08 |
olle |
244 |
log |
2845 |
12 Sep 08 |
olle |
245 |
.info("MyLS::MyLS(): project = " + project); |
2845 |
12 Sep 08 |
olle |
246 |
} |
1656 |
22 May 07 |
gregory |
247 |
} |
1656 |
22 May 07 |
gregory |
248 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
249 |
{ |
1652 |
22 May 07 |
gregory |
250 |
log |
1656 |
22 May 07 |
gregory |
251 |
.info("MyLS::MyLS(): Exception when trying to get coreDir from path: " + e); |
790 |
23 Oct 06 |
olle |
252 |
} |
1656 |
22 May 07 |
gregory |
253 |
log |
1656 |
22 May 07 |
gregory |
254 |
.info("MyLS::MyLS(): coreDir.getName() = \"" + coreDir |
1656 |
22 May 07 |
gregory |
255 |
.getName() + "\""); |
2845 |
12 Sep 08 |
olle |
256 |
log |
2845 |
12 Sep 08 |
olle |
257 |
.info("MyLS::MyLS(): getSessionControl().getActiveProjectId() = " + getSessionControl().getActiveProjectId()); |
1656 |
22 May 07 |
gregory |
258 |
} |
1656 |
22 May 07 |
gregory |
259 |
else |
1656 |
22 May 07 |
gregory |
260 |
{ |
790 |
23 Oct 06 |
olle |
261 |
/* |
790 |
23 Oct 06 |
olle |
* Path equals file. |
790 |
23 Oct 06 |
olle |
263 |
*/ |
790 |
23 Oct 06 |
olle |
264 |
log.info("MyLS::MyLS(): Trying to get coreFilePath"); |
1652 |
22 May 07 |
gregory |
265 |
org.proteios.core.Path coreFilePath = new org.proteios.core.Path( |
1656 |
22 May 07 |
gregory |
266 |
s_path, Type.FILE); |
1656 |
22 May 07 |
gregory |
267 |
log |
1656 |
22 May 07 |
gregory |
268 |
.info("MyLS::MyLS(): coreFilePath.toString() = \"" + coreFilePath |
1656 |
22 May 07 |
gregory |
269 |
.toString() + "\""); |
1656 |
22 May 07 |
gregory |
270 |
try |
1656 |
22 May 07 |
gregory |
271 |
{ |
790 |
23 Oct 06 |
olle |
272 |
log.info("MyLS::MyLS(): Trying to get coreFile"); |
1656 |
22 May 07 |
gregory |
273 |
coreFile = factory.getByPath(coreFilePath, false); |
1656 |
22 May 07 |
gregory |
274 |
log.info("MyLS::MyLS(): coreFile.toString() = \"" + coreFile |
1656 |
22 May 07 |
gregory |
275 |
.toString() + "\""); |
790 |
23 Oct 06 |
olle |
276 |
/* |
790 |
23 Oct 06 |
olle |
* If no exceptions, core file is valid. |
790 |
23 Oct 06 |
olle |
278 |
*/ |
790 |
23 Oct 06 |
olle |
279 |
isValidDirectory = false; |
1656 |
22 May 07 |
gregory |
280 |
} |
1656 |
22 May 07 |
gregory |
281 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
282 |
{ |
1652 |
22 May 07 |
gregory |
283 |
log |
1656 |
22 May 07 |
gregory |
284 |
.info("MyLS::MyLS(): Exception when trying to get coreFile from path: " + e); |
790 |
23 Oct 06 |
olle |
285 |
} |
3464 |
26 Oct 09 |
olle |
286 |
if (coreFile != null) |
3464 |
26 Oct 09 |
olle |
287 |
{ |
3464 |
26 Oct 09 |
olle |
288 |
log.info("MyLS::MyLS(): coreFile.getName() = \"" + coreFile |
3464 |
26 Oct 09 |
olle |
289 |
.getName() + "\""); |
3464 |
26 Oct 09 |
olle |
290 |
} |
3469 |
02 Nov 09 |
olle |
291 |
else |
3469 |
02 Nov 09 |
olle |
292 |
{ |
3469 |
02 Nov 09 |
olle |
293 |
log.info("MyLS::MyLS(): Unable to get either valid core directory or core file from path \"" + s_path + "\""); |
3469 |
02 Nov 09 |
olle |
// Try to get home directory path |
3469 |
02 Nov 09 |
olle |
295 |
String homePath = fetchHomeDirectoryPath(s_path); |
3469 |
02 Nov 09 |
olle |
296 |
log.info("MyLS::MyLS(): s_path = \"" + s_path + "\" homePath = \"" + homePath + "\""); |
3469 |
02 Nov 09 |
olle |
297 |
if (homePath != null) |
3469 |
02 Nov 09 |
olle |
298 |
{ |
3469 |
02 Nov 09 |
olle |
// Try to get home directory from path |
3469 |
02 Nov 09 |
olle |
300 |
try |
3469 |
02 Nov 09 |
olle |
301 |
{ |
3469 |
02 Nov 09 |
olle |
302 |
org.proteios.core.Path coreDirPath = new org.proteios.core.Path( |
3469 |
02 Nov 09 |
olle |
303 |
homePath, Type.DIRECTORY); |
3469 |
02 Nov 09 |
olle |
304 |
coreDir = factory.getByPath(coreDirPath); |
3469 |
02 Nov 09 |
olle |
305 |
log.info("MyLS::MyLS(): homePath = \"" + homePath + "\" coreDir = " + coreDir); |
3469 |
02 Nov 09 |
olle |
// If core directory is the home directory, deactivate any active project |
3469 |
02 Nov 09 |
olle |
307 |
log.info("MyLS::MyLS(): coreDir.isHomeDirectory() = " + coreDir.isHomeDirectory()); |
3469 |
02 Nov 09 |
olle |
308 |
if (coreDir.isHomeDirectory()) |
3469 |
02 Nov 09 |
olle |
309 |
{ |
4047 |
01 Dec 10 |
olle |
310 |
log.info("MyLS::MyLS(): isTextBasedFTPClientType() = " + isTextBasedFTPClientType()); |
4047 |
01 Dec 10 |
olle |
311 |
if (isTextBasedFTPClientType()) |
4047 |
01 Dec 10 |
olle |
312 |
{ |
4047 |
01 Dec 10 |
olle |
313 |
getSessionControl().setActiveProject(null); |
4047 |
01 Dec 10 |
olle |
314 |
log.info("MyLS::MyLS(): getSessionControl().setActiveProject(null)"); |
4047 |
01 Dec 10 |
olle |
315 |
} |
3469 |
02 Nov 09 |
olle |
316 |
} |
3469 |
02 Nov 09 |
olle |
317 |
} |
3469 |
02 Nov 09 |
olle |
318 |
catch (Exception e) |
3469 |
02 Nov 09 |
olle |
319 |
{ |
3469 |
02 Nov 09 |
olle |
320 |
log.info("MyLS::MyLS(): Exception when trying to get coreDir from path \"" + homePath + "\" : " + e); |
3469 |
02 Nov 09 |
olle |
321 |
} |
3469 |
02 Nov 09 |
olle |
322 |
} |
3469 |
02 Nov 09 |
olle |
323 |
} |
790 |
23 Oct 06 |
olle |
324 |
} |
1680 |
25 May 07 |
olle |
325 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
327 |
*/ |
1680 |
25 May 07 |
olle |
328 |
dc.close(); |
741 |
10 Oct 06 |
olle |
329 |
} |
741 |
10 Oct 06 |
olle |
330 |
|
1656 |
22 May 07 |
gregory |
331 |
|
790 |
23 Oct 06 |
olle |
332 |
/** |
3469 |
02 Nov 09 |
olle |
* Convenience method that checks if path |
3469 |
02 Nov 09 |
olle |
* corresponds to shared projects folder. |
3469 |
02 Nov 09 |
olle |
* Method not part of original Xerver code. |
3469 |
02 Nov 09 |
olle |
336 |
* |
3469 |
02 Nov 09 |
olle |
* @param path String The path string to check. |
3469 |
02 Nov 09 |
olle |
* return boolean True if path corresponds to shared projects folder, else false. |
3469 |
02 Nov 09 |
olle |
339 |
*/ |
3469 |
02 Nov 09 |
olle |
340 |
private boolean pathIsSharedProjectsFolder(String path) |
3469 |
02 Nov 09 |
olle |
341 |
{ |
3469 |
02 Nov 09 |
olle |
342 |
log.info("MyLS::pathIsSharedProjectsFolder(): path = \"" + path + "\""); |
3469 |
02 Nov 09 |
olle |
343 |
boolean result = false; |
3469 |
02 Nov 09 |
olle |
344 |
if (path != null && !path.equals("")) |
3469 |
02 Nov 09 |
olle |
345 |
{ |
3469 |
02 Nov 09 |
olle |
346 |
String tmpPath = new String(path); |
3469 |
02 Nov 09 |
olle |
// Remove ending core separator |
3469 |
02 Nov 09 |
olle |
348 |
if (path.endsWith(coreSeparator)) |
3469 |
02 Nov 09 |
olle |
349 |
{ |
3469 |
02 Nov 09 |
olle |
350 |
tmpPath = tmpPath.substring(0, tmpPath.length() - 1); |
3469 |
02 Nov 09 |
olle |
351 |
} |
3469 |
02 Nov 09 |
olle |
352 |
log.info("MyLS::pathIsSharedProjectsFolder(): tmpPath = \"" + tmpPath + "\""); |
3469 |
02 Nov 09 |
olle |
353 |
if (tmpPath.endsWith(sharedProjectsFolderName)) |
3469 |
02 Nov 09 |
olle |
354 |
{ |
3469 |
02 Nov 09 |
olle |
355 |
result = true; |
3469 |
02 Nov 09 |
olle |
356 |
} |
3469 |
02 Nov 09 |
olle |
357 |
} |
3469 |
02 Nov 09 |
olle |
358 |
log.info("MyLS::pathIsSharedProjectsFolder(): result = " + result); |
3469 |
02 Nov 09 |
olle |
359 |
return result; |
3469 |
02 Nov 09 |
olle |
360 |
} |
3469 |
02 Nov 09 |
olle |
361 |
|
3469 |
02 Nov 09 |
olle |
362 |
|
3469 |
02 Nov 09 |
olle |
363 |
/** |
3469 |
02 Nov 09 |
olle |
* Convenience method that fetches the home |
3469 |
02 Nov 09 |
olle |
* directory path from an absolute path. |
3469 |
02 Nov 09 |
olle |
* Method not part of original Xerver code. |
3469 |
02 Nov 09 |
olle |
367 |
* |
3469 |
02 Nov 09 |
olle |
* @param path String The absolute path string to process. |
3469 |
02 Nov 09 |
olle |
* return String The home directory path, or null if it could not be obtained. |
3469 |
02 Nov 09 |
olle |
370 |
*/ |
3469 |
02 Nov 09 |
olle |
371 |
private String fetchHomeDirectoryPath(String path) |
3469 |
02 Nov 09 |
olle |
372 |
{ |
3469 |
02 Nov 09 |
olle |
373 |
log.info("MyLS::fetchHomeDirectoryPath(): path = \"" + path + "\""); |
3469 |
02 Nov 09 |
olle |
374 |
String homePath = null; |
3469 |
02 Nov 09 |
olle |
375 |
if (path != null && !path.equals("")) |
3469 |
02 Nov 09 |
olle |
376 |
{ |
3469 |
02 Nov 09 |
olle |
377 |
String testStr = coreSeparator + "home" + coreSeparator; |
3469 |
02 Nov 09 |
olle |
378 |
if (path.startsWith(testStr)) |
3469 |
02 Nov 09 |
olle |
379 |
{ |
3469 |
02 Nov 09 |
olle |
// Remove /home/ from start of path |
3469 |
02 Nov 09 |
olle |
381 |
String tmpPath = path.substring(testStr.length()); |
3469 |
02 Nov 09 |
olle |
382 |
log.info("MyLS::fetchHomeDirectoryPath(): path \"" + path + "\" tmpPath = \"" + tmpPath + "\""); |
3469 |
02 Nov 09 |
olle |
383 |
if (tmpPath != null) |
3469 |
02 Nov 09 |
olle |
384 |
{ |
3469 |
02 Nov 09 |
olle |
// Find location of first separator |
3469 |
02 Nov 09 |
olle |
386 |
int separatorIndex = tmpPath.indexOf(coreSeparator); |
3469 |
02 Nov 09 |
olle |
387 |
if (separatorIndex >= 0) |
3469 |
02 Nov 09 |
olle |
388 |
{ |
3469 |
02 Nov 09 |
olle |
// Remove part after first separator |
3469 |
02 Nov 09 |
olle |
390 |
tmpPath = tmpPath.substring(0, separatorIndex); |
3469 |
02 Nov 09 |
olle |
391 |
log.info("MyLS::fetchHomeDirectoryPath(): path \"" + path + "\" tmpPath = \"" + tmpPath + "\""); |
3469 |
02 Nov 09 |
olle |
392 |
if (tmpPath != null) |
3469 |
02 Nov 09 |
olle |
393 |
{ |
3469 |
02 Nov 09 |
olle |
// Construct path for home directory |
3469 |
02 Nov 09 |
olle |
395 |
homePath = coreSeparator + "home" + coreSeparator + tmpPath; |
3469 |
02 Nov 09 |
olle |
396 |
} |
3469 |
02 Nov 09 |
olle |
397 |
} |
3469 |
02 Nov 09 |
olle |
398 |
} |
3469 |
02 Nov 09 |
olle |
399 |
} |
3469 |
02 Nov 09 |
olle |
400 |
} |
3469 |
02 Nov 09 |
olle |
401 |
log.info("MyLS::fetchHomeDirectoryPath(): homePath = \"" + homePath + "\""); |
3469 |
02 Nov 09 |
olle |
402 |
return homePath; |
3469 |
02 Nov 09 |
olle |
403 |
} |
3469 |
02 Nov 09 |
olle |
404 |
|
3469 |
02 Nov 09 |
olle |
405 |
|
3469 |
02 Nov 09 |
olle |
406 |
/** |
1652 |
22 May 07 |
gregory |
* Convenience method not part of original Xerver code. Does not include |
1652 |
22 May 07 |
gregory |
* removed core directories. |
790 |
23 Oct 06 |
olle |
409 |
* |
1656 |
22 May 07 |
gregory |
* @param path String path to check if it represents a core directory. |
790 |
23 Oct 06 |
olle |
* @return boolean true if path represents a core directory, else false. |
790 |
23 Oct 06 |
olle |
412 |
*/ |
1676 |
25 May 07 |
olle |
413 |
public boolean isValidCoreDirectory(String path) |
1656 |
22 May 07 |
gregory |
414 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
416 |
log |
1656 |
22 May 07 |
gregory |
417 |
.info("MyLS::isValidCoreDirectory(): Start - path = \"" + path + "\""); |
931 |
16 Nov 06 |
olle |
418 |
boolean includeRemoved = false; |
931 |
16 Nov 06 |
olle |
419 |
return isValidCoreDirectory(path, includeRemoved); |
931 |
16 Nov 06 |
olle |
420 |
} |
931 |
16 Nov 06 |
olle |
421 |
|
1656 |
22 May 07 |
gregory |
422 |
|
931 |
16 Nov 06 |
olle |
423 |
/** |
931 |
16 Nov 06 |
olle |
* Convenience method not part of original Xerver code. |
931 |
16 Nov 06 |
olle |
425 |
* |
1656 |
22 May 07 |
gregory |
* @param path String path to check if it represents a core directory. |
1656 |
22 May 07 |
gregory |
* @param includeRemoved boolean flag indicating if removed core directories |
1656 |
22 May 07 |
gregory |
* should be included. |
931 |
16 Nov 06 |
olle |
* @return boolean true if path represents a core directory, else false. |
931 |
16 Nov 06 |
olle |
430 |
*/ |
1676 |
25 May 07 |
olle |
431 |
public boolean isValidCoreDirectory(String path, |
1656 |
22 May 07 |
gregory |
432 |
boolean includeRemoved) |
1656 |
22 May 07 |
gregory |
433 |
{ |
931 |
16 Nov 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
435 |
log |
1656 |
22 May 07 |
gregory |
436 |
.info("MyLS::isValidCoreDirectory(): Start - path = \"" + path + "\" includeRemoved = " + includeRemoved); |
790 |
23 Oct 06 |
olle |
437 |
boolean pathIsValidCoreDirectory = false; |
1676 |
25 May 07 |
olle |
438 |
DbControl dc = getSessionControl().newDbControl(); |
1656 |
22 May 07 |
gregory |
439 |
ItemFactory factory = new ItemFactory(dc); |
790 |
23 Oct 06 |
olle |
440 |
/* |
790 |
23 Oct 06 |
olle |
* Check if path is a valid core directory. |
790 |
23 Oct 06 |
olle |
442 |
*/ |
1656 |
22 May 07 |
gregory |
443 |
try |
1656 |
22 May 07 |
gregory |
444 |
{ |
1652 |
22 May 07 |
gregory |
445 |
org.proteios.core.Path testCoreDirPath = new org.proteios.core.Path( |
1656 |
22 May 07 |
gregory |
446 |
path, Type.DIRECTORY); |
1656 |
22 May 07 |
gregory |
447 |
org.proteios.core.Directory testCoreDir = factory |
1656 |
22 May 07 |
gregory |
448 |
.getByPath(testCoreDirPath); |
790 |
23 Oct 06 |
olle |
449 |
/* |
931 |
16 Nov 06 |
olle |
* If no exceptions, core directory may be valid. |
790 |
23 Oct 06 |
olle |
451 |
*/ |
790 |
23 Oct 06 |
olle |
452 |
pathIsValidCoreDirectory = true; |
1656 |
22 May 07 |
gregory |
453 |
if (!includeRemoved) |
1656 |
22 May 07 |
gregory |
454 |
{ |
931 |
16 Nov 06 |
olle |
455 |
/* |
1652 |
22 May 07 |
gregory |
* Core directories only counted as valid, if not tagged as |
1652 |
22 May 07 |
gregory |
* removed. |
931 |
16 Nov 06 |
olle |
458 |
*/ |
1656 |
22 May 07 |
gregory |
459 |
if (testCoreDir.isRemoved()) |
1656 |
22 May 07 |
gregory |
460 |
{ |
931 |
16 Nov 06 |
olle |
461 |
pathIsValidCoreDirectory = false; |
931 |
16 Nov 06 |
olle |
462 |
} |
931 |
16 Nov 06 |
olle |
463 |
} |
1656 |
22 May 07 |
gregory |
464 |
} |
1656 |
22 May 07 |
gregory |
465 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
466 |
{ |
790 |
23 Oct 06 |
olle |
467 |
/* |
937 |
20 Nov 06 |
olle |
* Exception was thrown, path is not a valid core directory. |
790 |
23 Oct 06 |
olle |
469 |
*/ |
790 |
23 Oct 06 |
olle |
470 |
pathIsValidCoreDirectory = false; |
790 |
23 Oct 06 |
olle |
471 |
} |
1680 |
25 May 07 |
olle |
472 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
474 |
*/ |
1680 |
25 May 07 |
olle |
475 |
dc.close(); |
790 |
23 Oct 06 |
olle |
476 |
return pathIsValidCoreDirectory; |
790 |
23 Oct 06 |
olle |
477 |
} |
790 |
23 Oct 06 |
olle |
478 |
|
1656 |
22 May 07 |
gregory |
479 |
|
1656 |
22 May 07 |
gregory |
480 |
public boolean isValidDirectory() |
1656 |
22 May 07 |
gregory |
481 |
{ |
741 |
10 Oct 06 |
olle |
482 |
return isValidDirectory; |
741 |
10 Oct 06 |
olle |
483 |
} |
741 |
10 Oct 06 |
olle |
484 |
|
1656 |
22 May 07 |
gregory |
485 |
|
741 |
10 Oct 06 |
olle |
486 |
/** |
3464 |
26 Oct 09 |
olle |
* Convenience method not part of original Xerver code. Does not include |
3464 |
26 Oct 09 |
olle |
* removed core files. |
3464 |
26 Oct 09 |
olle |
489 |
* |
3464 |
26 Oct 09 |
olle |
* @param path String path to check if it represents a core file. |
3464 |
26 Oct 09 |
olle |
* @return boolean true if path represents a core file, else false. |
3464 |
26 Oct 09 |
olle |
492 |
*/ |
3464 |
26 Oct 09 |
olle |
493 |
public boolean isValidCoreFile(String path) |
3464 |
26 Oct 09 |
olle |
494 |
{ |
3464 |
26 Oct 09 |
olle |
// *** Debug Info |
3464 |
26 Oct 09 |
olle |
496 |
log |
3464 |
26 Oct 09 |
olle |
497 |
.info("MyLS::isValidCoreFile(): Start - path = \"" + path + "\""); |
3464 |
26 Oct 09 |
olle |
498 |
boolean includeRemoved = false; |
3464 |
26 Oct 09 |
olle |
499 |
return isValidCoreFile(path, includeRemoved); |
3464 |
26 Oct 09 |
olle |
500 |
} |
3464 |
26 Oct 09 |
olle |
501 |
|
3464 |
26 Oct 09 |
olle |
502 |
|
3464 |
26 Oct 09 |
olle |
503 |
/** |
3464 |
26 Oct 09 |
olle |
* Convenience method not part of original Xerver code. |
3464 |
26 Oct 09 |
olle |
505 |
* |
3464 |
26 Oct 09 |
olle |
* @param path String path to check if it represents a core file. |
3464 |
26 Oct 09 |
olle |
* @param includeRemoved boolean flag indicating if removed core files |
3464 |
26 Oct 09 |
olle |
* should be included. |
3464 |
26 Oct 09 |
olle |
* @return boolean true if path represents a core file, else false. |
3464 |
26 Oct 09 |
olle |
510 |
*/ |
3464 |
26 Oct 09 |
olle |
511 |
public boolean isValidCoreFile(String path, |
3464 |
26 Oct 09 |
olle |
512 |
boolean includeRemoved) |
3464 |
26 Oct 09 |
olle |
513 |
{ |
3464 |
26 Oct 09 |
olle |
// *** Debug Info |
3464 |
26 Oct 09 |
olle |
515 |
log |
3464 |
26 Oct 09 |
olle |
516 |
.info("MyLS::isValidCoreFile(): Start - path = \"" + path + "\" includeRemoved = " + includeRemoved); |
3464 |
26 Oct 09 |
olle |
517 |
boolean pathIsValidCoreFile = false; |
3464 |
26 Oct 09 |
olle |
518 |
DbControl dc = getSessionControl().newDbControl(); |
3464 |
26 Oct 09 |
olle |
519 |
ItemFactory factory = new ItemFactory(dc); |
3464 |
26 Oct 09 |
olle |
520 |
/* |
3464 |
26 Oct 09 |
olle |
* Check if path is a valid core file. |
3464 |
26 Oct 09 |
olle |
522 |
*/ |
3464 |
26 Oct 09 |
olle |
523 |
try |
3464 |
26 Oct 09 |
olle |
524 |
{ |
3464 |
26 Oct 09 |
olle |
525 |
org.proteios.core.Path testCoreFilePath = new org.proteios.core.Path( |
3464 |
26 Oct 09 |
olle |
526 |
path, Type.FILE); |
3464 |
26 Oct 09 |
olle |
527 |
org.proteios.core.File testCoreFile = factory |
3464 |
26 Oct 09 |
olle |
528 |
.getByPath(testCoreFilePath, false); |
3464 |
26 Oct 09 |
olle |
529 |
/* |
3464 |
26 Oct 09 |
olle |
* If no exceptions, core file may be valid. |
3464 |
26 Oct 09 |
olle |
531 |
*/ |
3464 |
26 Oct 09 |
olle |
532 |
pathIsValidCoreFile = true; |
3464 |
26 Oct 09 |
olle |
533 |
if (!includeRemoved) |
3464 |
26 Oct 09 |
olle |
534 |
{ |
3464 |
26 Oct 09 |
olle |
535 |
/* |
3464 |
26 Oct 09 |
olle |
* Core files only counted as valid, if not tagged as |
3464 |
26 Oct 09 |
olle |
* removed. |
3464 |
26 Oct 09 |
olle |
538 |
*/ |
3464 |
26 Oct 09 |
olle |
539 |
if (testCoreFile.isRemoved()) |
3464 |
26 Oct 09 |
olle |
540 |
{ |
3464 |
26 Oct 09 |
olle |
541 |
pathIsValidCoreFile = false; |
3464 |
26 Oct 09 |
olle |
542 |
} |
3464 |
26 Oct 09 |
olle |
543 |
} |
3464 |
26 Oct 09 |
olle |
544 |
} |
3464 |
26 Oct 09 |
olle |
545 |
catch (Exception e) |
3464 |
26 Oct 09 |
olle |
546 |
{ |
3464 |
26 Oct 09 |
olle |
547 |
/* |
3464 |
26 Oct 09 |
olle |
* Exception was thrown, path is not a valid core file. |
3464 |
26 Oct 09 |
olle |
549 |
*/ |
3464 |
26 Oct 09 |
olle |
550 |
pathIsValidCoreFile = false; |
3464 |
26 Oct 09 |
olle |
551 |
} |
3464 |
26 Oct 09 |
olle |
552 |
/* |
3464 |
26 Oct 09 |
olle |
* Close DbControl. |
3464 |
26 Oct 09 |
olle |
554 |
*/ |
3464 |
26 Oct 09 |
olle |
555 |
dc.close(); |
3464 |
26 Oct 09 |
olle |
556 |
return pathIsValidCoreFile; |
3464 |
26 Oct 09 |
olle |
557 |
} |
3464 |
26 Oct 09 |
olle |
558 |
|
3464 |
26 Oct 09 |
olle |
559 |
|
3464 |
26 Oct 09 |
olle |
560 |
/** |
1652 |
22 May 07 |
gregory |
* Send the line that is related to this file when we do a normal folder |
1652 |
22 May 07 |
gregory |
* listing. Does not include removed core files. |
931 |
16 Nov 06 |
olle |
563 |
* |
1656 |
22 May 07 |
gregory |
* @param bos DataOutputStream data output stream to send listing to. |
931 |
16 Nov 06 |
olle |
565 |
*/ |
1656 |
22 May 07 |
gregory |
566 |
public void sendFileInfo(DataOutputStream bos) |
1656 |
22 May 07 |
gregory |
567 |
throws Exception |
1656 |
22 May 07 |
gregory |
568 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
790 |
23 Oct 06 |
olle |
570 |
log.info("MyLS::sendFileInfo(): Start"); |
931 |
16 Nov 06 |
olle |
571 |
boolean includeRemoved = false; |
931 |
16 Nov 06 |
olle |
572 |
sendFileInfo(bos, includeRemoved); |
931 |
16 Nov 06 |
olle |
573 |
} |
1652 |
22 May 07 |
gregory |
574 |
|
1656 |
22 May 07 |
gregory |
575 |
|
931 |
16 Nov 06 |
olle |
576 |
/** |
1652 |
22 May 07 |
gregory |
* Send the line that is related to this file when we do a normal folder |
1652 |
22 May 07 |
gregory |
* listing. |
931 |
16 Nov 06 |
olle |
579 |
* |
1656 |
22 May 07 |
gregory |
* @param bos DataOutputStream data output stream to send listing to. |
1656 |
22 May 07 |
gregory |
* @param includeRemoved boolean flag indicating if removed core files |
1656 |
22 May 07 |
gregory |
* should be included. |
931 |
16 Nov 06 |
olle |
583 |
*/ |
1652 |
22 May 07 |
gregory |
584 |
public void sendFileInfo(DataOutputStream bos, boolean includeRemoved) |
1656 |
22 May 07 |
gregory |
585 |
throws Exception |
1656 |
22 May 07 |
gregory |
586 |
{ |
931 |
16 Nov 06 |
olle |
// *** Debug Info |
1652 |
22 May 07 |
gregory |
588 |
log |
1656 |
22 May 07 |
gregory |
589 |
.info("MyLS::sendFileInfo(): Start - includeRemoved = " + includeRemoved); |
1656 |
22 May 07 |
gregory |
590 |
log |
1656 |
22 May 07 |
gregory |
591 |
.info("MyLS::sendFileInfo(): isValidDirectory = " + isValidDirectory); |
1656 |
22 May 07 |
gregory |
592 |
if (isValidDirectory) |
1656 |
22 May 07 |
gregory |
593 |
{ |
931 |
16 Nov 06 |
olle |
594 |
/* |
1652 |
22 May 07 |
gregory |
* If the argument gave a folder, list the content of the folder |
931 |
16 Nov 06 |
olle |
596 |
*/ |
931 |
16 Nov 06 |
olle |
597 |
sendListing(bos, includeRemoved, null); |
1656 |
22 May 07 |
gregory |
598 |
} |
1656 |
22 May 07 |
gregory |
599 |
else |
1656 |
22 May 07 |
gregory |
600 |
{ |
1652 |
22 May 07 |
gregory |
601 |
MyGregorianCalendar tmpDate = new MyGregorianCalendar(); |
741 |
10 Oct 06 |
olle |
602 |
int hour, minute, sec, year, day, month, length, am_pm; |
741 |
10 Oct 06 |
olle |
603 |
String tmpStr; |
741 |
10 Oct 06 |
olle |
604 |
StringBuffer sb_tmpStr; |
741 |
10 Oct 06 |
olle |
605 |
String tmpLengthAsString; |
790 |
23 Oct 06 |
olle |
606 |
/* |
1652 |
22 May 07 |
gregory |
* The date and time format has been modified to the YYYY-MM-DD |
1652 |
22 May 07 |
gregory |
* hh:mm format (using 24-hour time format). |
790 |
23 Oct 06 |
olle |
609 |
*/ |
1652 |
22 May 07 |
gregory |
610 |
sb_tmpStr = new StringBuffer(70); // Example, "06-06-01 04:51AM 84 |
1656 |
22 May 07 |
gregory |
// MYFILE1.TXT" is 50 chars |
1652 |
22 May 07 |
gregory |
// tmpDate.mySetTimeInMillis(f_folder.lastModified()); |
790 |
23 Oct 06 |
olle |
613 |
tmpDate.mySetTimeInMillis(coreFile.getCreated().getTime()); |
1652 |
22 May 07 |
gregory |
614 |
hour = tmpDate.get(GregorianCalendar.HOUR); |
1652 |
22 May 07 |
gregory |
615 |
minute = tmpDate.get(GregorianCalendar.MINUTE); |
1652 |
22 May 07 |
gregory |
616 |
day = tmpDate.get(GregorianCalendar.DAY_OF_MONTH); |
1652 |
22 May 07 |
gregory |
617 |
month = tmpDate.get(GregorianCalendar.MONTH); |
1652 |
22 May 07 |
gregory |
618 |
year = tmpDate.get(GregorianCalendar.YEAR); |
1652 |
22 May 07 |
gregory |
619 |
am_pm = tmpDate.get(GregorianCalendar.AM_PM); |
1652 |
22 May 07 |
gregory |
// year=year%100; |
1652 |
22 May 07 |
gregory |
621 |
sb_tmpStr.append(year + "-"); |
741 |
10 Oct 06 |
olle |
622 |
month++; |
1652 |
22 May 07 |
gregory |
623 |
if (month < 10) |
741 |
10 Oct 06 |
olle |
624 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
625 |
sb_tmpStr.append(month + "-"); |
1652 |
22 May 07 |
gregory |
626 |
if (day < 10) |
741 |
10 Oct 06 |
olle |
627 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(day+"-"); |
1652 |
22 May 07 |
gregory |
629 |
sb_tmpStr.append(day + " "); |
1652 |
22 May 07 |
gregory |
// if (year<10) |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(year+" "); |
1656 |
22 May 07 |
gregory |
633 |
if (hour < 12 && am_pm == GregorianCalendar.PM) |
1656 |
22 May 07 |
gregory |
634 |
{ |
790 |
23 Oct 06 |
olle |
635 |
hour = hour + 12; |
790 |
23 Oct 06 |
olle |
636 |
} |
1652 |
22 May 07 |
gregory |
637 |
if (hour < 10) |
741 |
10 Oct 06 |
olle |
638 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
639 |
sb_tmpStr.append(hour + ":"); |
1652 |
22 May 07 |
gregory |
640 |
if (minute < 10) |
741 |
10 Oct 06 |
olle |
641 |
sb_tmpStr.append(0); |
741 |
10 Oct 06 |
olle |
642 |
sb_tmpStr.append(minute); |
1652 |
22 May 07 |
gregory |
// if (am_pm==GregorianCalendar.PM) |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append("PM "); |
1652 |
22 May 07 |
gregory |
// else |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append("AM "); |
1652 |
22 May 07 |
gregory |
// Note, here we know that f_folder is a file, not a directory... |
1652 |
22 May 07 |
gregory |
// tmpLengthAsString=""+f_folder.length(); |
1652 |
22 May 07 |
gregory |
// tmpLengthAsString=""+coreFile.getBytes(); |
790 |
23 Oct 06 |
olle |
650 |
/* |
790 |
23 Oct 06 |
olle |
* Fill in blanks at left to right-align size value. |
790 |
23 Oct 06 |
olle |
652 |
*/ |
1652 |
22 May 07 |
gregory |
// int timesToLoop=14-tmpLengthAsString.length(); |
1652 |
22 May 07 |
gregory |
// for (int j=0; j<timesToLoop; j++) |
1652 |
22 May 07 |
gregory |
655 |
// { |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(" "); |
1652 |
22 May 07 |
gregory |
657 |
// } |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(tmpLengthAsString+" "); |
1656 |
22 May 07 |
gregory |
659 |
if (!coreFile.isRemoved()) |
1656 |
22 May 07 |
gregory |
660 |
{ |
1652 |
22 May 07 |
gregory |
// tmpLengthAsString=""+f_folder.length(); |
2444 |
10 Dec 07 |
gregory |
662 |
tmpLengthAsString = "" + coreFile.getSizeInBytes(); |
931 |
16 Nov 06 |
olle |
663 |
/* |
931 |
16 Nov 06 |
olle |
* Fill in blanks at left to right-align size value. |
931 |
16 Nov 06 |
olle |
665 |
*/ |
1652 |
22 May 07 |
gregory |
666 |
int timesToLoop = 14 - tmpLengthAsString.length(); |
1656 |
22 May 07 |
gregory |
667 |
for (int j = 0; j < timesToLoop; j++) |
1656 |
22 May 07 |
gregory |
668 |
{ |
931 |
16 Nov 06 |
olle |
669 |
sb_tmpStr.append(" "); |
931 |
16 Nov 06 |
olle |
670 |
} |
1652 |
22 May 07 |
gregory |
671 |
sb_tmpStr.append(tmpLengthAsString + " "); |
1656 |
22 May 07 |
gregory |
672 |
} |
1656 |
22 May 07 |
gregory |
673 |
else |
1656 |
22 May 07 |
gregory |
674 |
{ |
1652 |
22 May 07 |
gregory |
675 |
sb_tmpStr.append(" <REMOVED> "); |
741 |
10 Oct 06 |
olle |
676 |
} |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(f_folder.getName()); |
790 |
23 Oct 06 |
olle |
678 |
sb_tmpStr.append(coreFile.getName()); |
1652 |
22 May 07 |
gregory |
679 |
bos.writeBytes(sb_tmpStr.toString() + "\r\n"); |
741 |
10 Oct 06 |
olle |
680 |
} |
790 |
23 Oct 06 |
olle |
681 |
/* |
1652 |
22 May 07 |
gregory |
* Added flush of output stream to original Xerver code, in accordance |
1652 |
22 May 07 |
gregory |
* with code for sendListing(DataOutputStream bos). |
790 |
23 Oct 06 |
olle |
684 |
*/ |
790 |
23 Oct 06 |
olle |
685 |
bos.flush(); |
741 |
10 Oct 06 |
olle |
686 |
} |
741 |
10 Oct 06 |
olle |
687 |
|
1656 |
22 May 07 |
gregory |
688 |
|
741 |
10 Oct 06 |
olle |
689 |
/** |
1652 |
22 May 07 |
gregory |
* Send the directory listing to bos. Does not include removed core files. |
931 |
16 Nov 06 |
olle |
691 |
* |
1656 |
22 May 07 |
gregory |
* @param bos DataOutputStream data output stream to send listing to. |
931 |
16 Nov 06 |
olle |
693 |
*/ |
1656 |
22 May 07 |
gregory |
694 |
public void sendListing(DataOutputStream bos) |
1656 |
22 May 07 |
gregory |
695 |
throws Exception |
1656 |
22 May 07 |
gregory |
696 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
790 |
23 Oct 06 |
olle |
698 |
log.info("MyLS::sendListing(): Start"); |
931 |
16 Nov 06 |
olle |
699 |
boolean includeRemoved = false; |
931 |
16 Nov 06 |
olle |
700 |
sendListing(bos, includeRemoved, null); |
931 |
16 Nov 06 |
olle |
701 |
} |
931 |
16 Nov 06 |
olle |
702 |
|
1656 |
22 May 07 |
gregory |
703 |
|
931 |
16 Nov 06 |
olle |
704 |
/** |
931 |
16 Nov 06 |
olle |
* Send the directory listing to bos. |
931 |
16 Nov 06 |
olle |
706 |
* |
1656 |
22 May 07 |
gregory |
* @param bos DataOutputStream data output stream to send listing to. |
1656 |
22 May 07 |
gregory |
* @param includeRemoved boolean flag indicating if removed files should be |
1656 |
22 May 07 |
gregory |
* included. |
1656 |
22 May 07 |
gregory |
* @param prefix String optional prefix string at start of response string. |
931 |
16 Nov 06 |
olle |
711 |
*/ |
1652 |
22 May 07 |
gregory |
712 |
public void sendListing(DataOutputStream bos, boolean includeRemoved, |
1656 |
22 May 07 |
gregory |
713 |
String prefix) |
1656 |
22 May 07 |
gregory |
714 |
throws Exception |
1656 |
22 May 07 |
gregory |
715 |
{ |
931 |
16 Nov 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
717 |
log |
3469 |
02 Nov 09 |
olle |
718 |
.info("MyLS::sendListing(): Start - includeRemoved = " + includeRemoved + " prefix = \"" + prefix + "\" isInSharedProjectsFolder() = " + isInSharedProjectsFolder()); |
1680 |
25 May 07 |
olle |
719 |
DbControl dc = getSessionControl().newDbControl(); |
790 |
23 Oct 06 |
olle |
720 |
/* |
790 |
23 Oct 06 |
olle |
* First list all subdirectories in current core directory. |
790 |
23 Oct 06 |
olle |
722 |
*/ |
1652 |
22 May 07 |
gregory |
// writeDirListing(bos); |
3469 |
02 Nov 09 |
olle |
//writeDirListing(bos, includeRemoved, prefix); |
3469 |
02 Nov 09 |
olle |
// If in shared projects folder, write shared projects directories |
3469 |
02 Nov 09 |
olle |
726 |
if (isInSharedProjectsFolder()) |
3469 |
02 Nov 09 |
olle |
727 |
{ |
3469 |
02 Nov 09 |
olle |
728 |
writeSharedProjectsDirListing(bos, includeRemoved, prefix); |
3469 |
02 Nov 09 |
olle |
729 |
} |
3469 |
02 Nov 09 |
olle |
730 |
else |
3469 |
02 Nov 09 |
olle |
731 |
{ |
3469 |
02 Nov 09 |
olle |
732 |
writeDirListing(bos, includeRemoved, prefix); |
3469 |
02 Nov 09 |
olle |
733 |
} |
1652 |
22 May 07 |
gregory |
// try { |
1652 |
22 May 07 |
gregory |
735 |
String[] as_allFilesAndFolders; |
741 |
10 Oct 06 |
olle |
736 |
int i_numberOfFiles; |
790 |
23 Oct 06 |
olle |
737 |
/* |
790 |
23 Oct 06 |
olle |
* Get ItemQuery for core files in core directory |
790 |
23 Oct 06 |
olle |
739 |
*/ |
790 |
23 Oct 06 |
olle |
740 |
ItemQuery fileQuery = coreDir.getFileQuery(); |
1656 |
22 May 07 |
gregory |
741 |
if (includeRemoved) |
1656 |
22 May 07 |
gregory |
742 |
{ |
931 |
16 Nov 06 |
olle |
743 |
fileQuery.include(Include.REMOVED, Include.NOT_REMOVED); |
931 |
16 Nov 06 |
olle |
744 |
} |
790 |
23 Oct 06 |
olle |
745 |
int nFiles = fileQuery.count(dc); |
790 |
23 Oct 06 |
olle |
746 |
log.info("MyLS::sendListing(): fileQuery.count(dc) = " + nFiles); |
931 |
16 Nov 06 |
olle |
747 |
/* |
931 |
16 Nov 06 |
olle |
* The ItemResultList may exclude some items. |
931 |
16 Nov 06 |
olle |
749 |
*/ |
931 |
16 Nov 06 |
olle |
750 |
ItemResultList fileList = fileQuery.list(dc); |
931 |
16 Nov 06 |
olle |
751 |
log.info("MyLS::sendListing(): fileList.size() = " + fileList.size()); |
931 |
16 Nov 06 |
olle |
752 |
nFiles = fileList.size(); |
3469 |
02 Nov 09 |
olle |
753 |
// |
3469 |
02 Nov 09 |
olle |
// If in shared projects folder, reset number of files to zero to prevent file listing |
3469 |
02 Nov 09 |
olle |
755 |
if (isInSharedProjectsFolder()) |
3469 |
02 Nov 09 |
olle |
756 |
{ |
3469 |
02 Nov 09 |
olle |
757 |
nFiles = 0; |
3469 |
02 Nov 09 |
olle |
758 |
} |
790 |
23 Oct 06 |
olle |
759 |
as_allFilesAndFolders = new String[nFiles]; |
1656 |
22 May 07 |
gregory |
760 |
for (int i = 0; i < nFiles; i++) |
1656 |
22 May 07 |
gregory |
761 |
{ |
1652 |
22 May 07 |
gregory |
762 |
org.proteios.core.File tmpCoreFile = (org.proteios.core.File) fileList |
1656 |
22 May 07 |
gregory |
763 |
.get(i); |
790 |
23 Oct 06 |
olle |
764 |
as_allFilesAndFolders[i] = tmpCoreFile.getName(); |
1656 |
22 May 07 |
gregory |
765 |
log |
1656 |
22 May 07 |
gregory |
766 |
.info("MyLS::sendListing(): as_allFilesAndFolders[" + i + "] = \"" + as_allFilesAndFolders[i] + "\" + isRemoved = " + tmpCoreFile |
1656 |
22 May 07 |
gregory |
767 |
.isRemoved()); |
790 |
23 Oct 06 |
olle |
768 |
} |
1652 |
22 May 07 |
gregory |
// as_allFilesAndFolders=f_folder.list(); |
1652 |
22 May 07 |
gregory |
770 |
i_numberOfFiles = as_allFilesAndFolders.length; |
790 |
23 Oct 06 |
olle |
771 |
log.info("MyLS::sendListing(): i_numberOfFiles = " + i_numberOfFiles); |
1652 |
22 May 07 |
gregory |
// If we had wanted to sort: Arrays.sort(allFilesAndFolders, new |
1652 |
22 May 07 |
gregory |
// ComparatorIgnoreCase()); |
1652 |
22 May 07 |
gregory |
// File tmpFile; |
1652 |
22 May 07 |
gregory |
775 |
MyGregorianCalendar tmpDate = new MyGregorianCalendar(); |
741 |
10 Oct 06 |
olle |
776 |
int hour, minute, sec, year, day, month, length, am_pm; |
741 |
10 Oct 06 |
olle |
777 |
String tmpStr; |
741 |
10 Oct 06 |
olle |
778 |
StringBuffer sb_tmpStr; |
741 |
10 Oct 06 |
olle |
779 |
String tmpLengthAsString; |
1656 |
22 May 07 |
gregory |
780 |
for (int i = 0; i < i_numberOfFiles; i++) |
1656 |
22 May 07 |
gregory |
781 |
{ |
1652 |
22 May 07 |
gregory |
// Example, "-rw-r--r-- 84 2006-06-01 16:51 MYFILE1.TXT" is 54 chars |
1652 |
22 May 07 |
gregory |
783 |
sb_tmpStr = new StringBuffer(81); |
1650 |
21 May 07 |
olle |
// Standard output for normal file |
1650 |
21 May 07 |
olle |
785 |
sb_tmpStr.append("-rw-r--r-- "); |
1650 |
21 May 07 |
olle |
// Standard output links, user, group for normal file |
1650 |
21 May 07 |
olle |
787 |
sb_tmpStr.append("1 100 100 "); |
1650 |
21 May 07 |
olle |
// Size (dummy value for directory listing) |
1652 |
22 May 07 |
gregory |
789 |
org.proteios.core.File tmpCoreFile = (org.proteios.core.File) fileList |
1656 |
22 May 07 |
gregory |
790 |
.get(i); |
2444 |
10 Dec 07 |
gregory |
791 |
tmpLengthAsString = "" + tmpCoreFile.getSizeInBytes(); |
790 |
23 Oct 06 |
olle |
792 |
/* |
1650 |
21 May 07 |
olle |
* Fill in blanks at left to right-align size value. |
1650 |
21 May 07 |
olle |
794 |
*/ |
1652 |
22 May 07 |
gregory |
795 |
int timesToLoop = 14 - tmpLengthAsString.length(); |
1656 |
22 May 07 |
gregory |
796 |
for (int j = 0; j < timesToLoop; j++) |
1656 |
22 May 07 |
gregory |
797 |
{ |
1650 |
21 May 07 |
olle |
798 |
sb_tmpStr.append(" "); |
1650 |
21 May 07 |
olle |
799 |
} |
1652 |
22 May 07 |
gregory |
800 |
sb_tmpStr.append(tmpLengthAsString + " "); |
1650 |
21 May 07 |
olle |
801 |
/* |
1652 |
22 May 07 |
gregory |
* The date and time format has been modified to the YYYY-MM-DD |
1652 |
22 May 07 |
gregory |
* hh:mm format (using 24-hour time format). |
790 |
23 Oct 06 |
olle |
804 |
*/ |
1652 |
22 May 07 |
gregory |
// sb_tmpStr=new StringBuffer(70); //Example, "06-06-01 04:51AM 84 |
1652 |
22 May 07 |
gregory |
// MYFILE1.TXT" is 50 chars |
1652 |
22 May 07 |
gregory |
// tmpFile=new File(s_path+as_allFilesAndFolders[i]); |
1652 |
22 May 07 |
gregory |
// org.proteios.core.File tmpCoreFile = (org.proteios.core.File) |
1652 |
22 May 07 |
gregory |
// fileList.get(i); |
1652 |
22 May 07 |
gregory |
// tmpDate.mySetTimeInMillis(tmpFile.lastModified()); |
790 |
23 Oct 06 |
olle |
811 |
tmpDate.mySetTimeInMillis(tmpCoreFile.getCreated().getTime()); |
1652 |
22 May 07 |
gregory |
812 |
hour = tmpDate.get(GregorianCalendar.HOUR); |
1652 |
22 May 07 |
gregory |
813 |
minute = tmpDate.get(GregorianCalendar.MINUTE); |
1652 |
22 May 07 |
gregory |
814 |
day = tmpDate.get(GregorianCalendar.DAY_OF_MONTH); |
1652 |
22 May 07 |
gregory |
815 |
month = tmpDate.get(GregorianCalendar.MONTH); |
1652 |
22 May 07 |
gregory |
816 |
year = tmpDate.get(GregorianCalendar.YEAR); |
1652 |
22 May 07 |
gregory |
817 |
am_pm = tmpDate.get(GregorianCalendar.AM_PM); |
1652 |
22 May 07 |
gregory |
// year=year%100; |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(year+"-"); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(year+" "); |
741 |
10 Oct 06 |
olle |
821 |
month++; |
1652 |
22 May 07 |
gregory |
// if (month<10) |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(month+"-"); |
1652 |
22 May 07 |
gregory |
825 |
sb_tmpStr.append(monthAbbr(month) + " "); |
1652 |
22 May 07 |
gregory |
826 |
if (day < 10) |
741 |
10 Oct 06 |
olle |
827 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(day+"-"); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(day+" "); |
1652 |
22 May 07 |
gregory |
830 |
sb_tmpStr.append(day + " "); |
1652 |
22 May 07 |
gregory |
// if (year<10) |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(year+" "); |
1656 |
22 May 07 |
gregory |
834 |
if (hour < 12 && am_pm == GregorianCalendar.PM) |
1656 |
22 May 07 |
gregory |
835 |
{ |
790 |
23 Oct 06 |
olle |
836 |
hour = hour + 12; |
790 |
23 Oct 06 |
olle |
837 |
} |
1656 |
22 May 07 |
gregory |
838 |
if (!isYearOld(tmpCoreFile.getCreated())) |
1656 |
22 May 07 |
gregory |
839 |
{ |
1652 |
22 May 07 |
gregory |
840 |
if (hour < 10) |
1650 |
21 May 07 |
olle |
841 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
842 |
sb_tmpStr.append(hour + ":"); |
1652 |
22 May 07 |
gregory |
843 |
if (minute < 10) |
1650 |
21 May 07 |
olle |
844 |
sb_tmpStr.append(0); |
1650 |
21 May 07 |
olle |
845 |
sb_tmpStr.append(minute); |
1656 |
22 May 07 |
gregory |
846 |
} |
1656 |
22 May 07 |
gregory |
847 |
else |
1656 |
22 May 07 |
gregory |
848 |
{ |
1650 |
21 May 07 |
olle |
849 |
sb_tmpStr.append(year); |
1650 |
21 May 07 |
olle |
850 |
} |
1650 |
21 May 07 |
olle |
851 |
/* |
1656 |
22 May 07 |
gregory |
* if (hour<10) sb_tmpStr.append(0); sb_tmpStr.append(hour+":"); if |
1656 |
22 May 07 |
gregory |
* (minute<10) sb_tmpStr.append(0); sb_tmpStr.append(minute); |
1652 |
22 May 07 |
gregory |
854 |
*/ |
1652 |
22 May 07 |
gregory |
// if (am_pm==GregorianCalendar.PM) |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append("PM "); |
1652 |
22 May 07 |
gregory |
// else |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append("AM "); |
1650 |
21 May 07 |
olle |
859 |
sb_tmpStr.append(" "); |
1652 |
22 May 07 |
gregory |
// if (tmpFile.isDirectory()) |
1656 |
22 May 07 |
gregory |
861 |
if (false) |
1656 |
22 May 07 |
gregory |
862 |
{ |
741 |
10 Oct 06 |
olle |
863 |
sb_tmpStr.append("<DIR> "); |
1656 |
22 May 07 |
gregory |
864 |
} |
1656 |
22 May 07 |
gregory |
865 |
else |
1656 |
22 May 07 |
gregory |
866 |
{ |
1656 |
22 May 07 |
gregory |
867 |
if (!tmpCoreFile.isRemoved()) |
1656 |
22 May 07 |
gregory |
868 |
{ |
1652 |
22 May 07 |
gregory |
// tmpLengthAsString=""+tmpFile.length(); |
1652 |
22 May 07 |
gregory |
// tmpLengthAsString=""+tmpCoreFile.getBytes(); |
931 |
16 Nov 06 |
olle |
871 |
/* |
931 |
16 Nov 06 |
olle |
* Fill in blanks at left to right-align size value. |
931 |
16 Nov 06 |
olle |
873 |
*/ |
1650 |
21 May 07 |
olle |
874 |
/* |
1652 |
22 May 07 |
gregory |
* int timesToLoop=14-tmpLengthAsString.length(); for (int |
1652 |
22 May 07 |
gregory |
* j=0; j<timesToLoop; j++) { sb_tmpStr.append(" "); } |
1652 |
22 May 07 |
gregory |
* sb_tmpStr.append(tmpLengthAsString+" "); |
1652 |
22 May 07 |
gregory |
878 |
*/ |
1656 |
22 May 07 |
gregory |
879 |
} |
1656 |
22 May 07 |
gregory |
880 |
else |
1656 |
22 May 07 |
gregory |
881 |
{ |
1652 |
22 May 07 |
gregory |
882 |
sb_tmpStr.append(" <REMOVED> "); |
741 |
10 Oct 06 |
olle |
883 |
} |
741 |
10 Oct 06 |
olle |
884 |
} |
741 |
10 Oct 06 |
olle |
885 |
sb_tmpStr.append(as_allFilesAndFolders[i]); |
931 |
16 Nov 06 |
olle |
886 |
/* |
1652 |
22 May 07 |
gregory |
* Start response string with optional prefix. Example: prefix = |
1652 |
22 May 07 |
gregory |
* "213-". |
931 |
16 Nov 06 |
olle |
889 |
*/ |
1656 |
22 May 07 |
gregory |
890 |
if (prefix != null) |
1656 |
22 May 07 |
gregory |
891 |
{ |
1652 |
22 May 07 |
gregory |
892 |
bos.writeBytes(prefix + sb_tmpStr.toString() + "\r\n"); |
1656 |
22 May 07 |
gregory |
893 |
} |
1656 |
22 May 07 |
gregory |
894 |
else |
1656 |
22 May 07 |
gregory |
895 |
{ |
1652 |
22 May 07 |
gregory |
896 |
bos.writeBytes(sb_tmpStr.toString() + "\r\n"); |
931 |
16 Nov 06 |
olle |
897 |
} |
1652 |
22 May 07 |
gregory |
// bos.writeBytes("+s1234,\t"+as_allFilesAndFolders[i]+"\r\n"); |
741 |
10 Oct 06 |
olle |
899 |
} |
1652 |
22 May 07 |
gregory |
// } catch (Exception e) {if (b_showErrors)System.out.println("Error @ |
1652 |
22 May 07 |
gregory |
// sendListing:\n"+e);} |
741 |
10 Oct 06 |
olle |
902 |
bos.flush(); |
1680 |
25 May 07 |
olle |
903 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
905 |
*/ |
1680 |
25 May 07 |
olle |
906 |
dc.close(); |
741 |
10 Oct 06 |
olle |
907 |
} |
741 |
10 Oct 06 |
olle |
908 |
|
1656 |
22 May 07 |
gregory |
909 |
|
790 |
23 Oct 06 |
olle |
910 |
/** |
1652 |
22 May 07 |
gregory |
* Write the listing of subdirectories to bos, but do not flush it. Does not |
1652 |
22 May 07 |
gregory |
* include removed core directories. Method not in the original Xerver code. |
931 |
16 Nov 06 |
olle |
913 |
* |
1656 |
22 May 07 |
gregory |
* @param bos DataOutputStream data output stream to write list to. |
931 |
16 Nov 06 |
olle |
915 |
*/ |
1656 |
22 May 07 |
gregory |
916 |
public void writeDirListing(DataOutputStream bos) |
1656 |
22 May 07 |
gregory |
917 |
throws Exception |
1656 |
22 May 07 |
gregory |
918 |
{ |
790 |
23 Oct 06 |
olle |
// *** Debug Info |
790 |
23 Oct 06 |
olle |
920 |
log.info("MyLS::writeDirListing(): Start"); |
931 |
16 Nov 06 |
olle |
921 |
boolean includeRemoved = false; |
931 |
16 Nov 06 |
olle |
922 |
writeDirListing(bos, includeRemoved, null); |
931 |
16 Nov 06 |
olle |
923 |
} |
931 |
16 Nov 06 |
olle |
924 |
|
1656 |
22 May 07 |
gregory |
925 |
|
931 |
16 Nov 06 |
olle |
926 |
/** |
1652 |
22 May 07 |
gregory |
* Write the listing of subdirectories to bos, but do not flush it. Method |
1652 |
22 May 07 |
gregory |
* not in the original Xerver code. |
931 |
16 Nov 06 |
olle |
929 |
* |
1656 |
22 May 07 |
gregory |
* @param bos DataOutputStream data output stream to write list to. |
1656 |
22 May 07 |
gregory |
* @param includeRemoved boolean flag indicating if removed files should be |
1656 |
22 May 07 |
gregory |
* included. |
1656 |
22 May 07 |
gregory |
* @param prefix String optional prefix string at start of response string. |
931 |
16 Nov 06 |
olle |
934 |
*/ |
1652 |
22 May 07 |
gregory |
935 |
public void writeDirListing(DataOutputStream bos, boolean includeRemoved, |
1656 |
22 May 07 |
gregory |
936 |
String prefix) |
1656 |
22 May 07 |
gregory |
937 |
throws Exception |
1656 |
22 May 07 |
gregory |
938 |
{ |
931 |
16 Nov 06 |
olle |
// *** Debug Info |
1656 |
22 May 07 |
gregory |
940 |
log |
3469 |
02 Nov 09 |
olle |
941 |
.info("MyLS::writeDirListing(): Start - includeRemoved = " + includeRemoved + " prefix = \"" + prefix + "\" + isInSharedProjectsFolder() = " + isInSharedProjectsFolder()); |
3469 |
02 Nov 09 |
olle |
942 |
// |
3469 |
02 Nov 09 |
olle |
// Add "Shared Projects" entry if home directory |
3469 |
02 Nov 09 |
olle |
944 |
if (coreDir.isHomeDirectory()) |
3469 |
02 Nov 09 |
olle |
945 |
{ |
3469 |
02 Nov 09 |
olle |
946 |
String dirEntryStr = fetchDirectoryEntry(sharedProjectsFolderName, new Date()); |
3469 |
02 Nov 09 |
olle |
947 |
/* |
3469 |
02 Nov 09 |
olle |
* Start response string with optional prefix. Example: prefix = |
3469 |
02 Nov 09 |
olle |
* "213-". |
3469 |
02 Nov 09 |
olle |
950 |
*/ |
3469 |
02 Nov 09 |
olle |
951 |
if (prefix != null) |
3469 |
02 Nov 09 |
olle |
952 |
{ |
3469 |
02 Nov 09 |
olle |
953 |
bos.writeBytes(prefix + dirEntryStr + "\r\n"); |
3469 |
02 Nov 09 |
olle |
954 |
} |
3469 |
02 Nov 09 |
olle |
955 |
else |
3469 |
02 Nov 09 |
olle |
956 |
{ |
3469 |
02 Nov 09 |
olle |
957 |
bos.writeBytes(dirEntryStr + "\r\n"); |
3469 |
02 Nov 09 |
olle |
958 |
} |
3469 |
02 Nov 09 |
olle |
959 |
} |
1652 |
22 May 07 |
gregory |
// try { |
1652 |
22 May 07 |
gregory |
961 |
String[] as_allFolders; |
790 |
23 Oct 06 |
olle |
962 |
int i_numberOfDirs; |
1680 |
25 May 07 |
olle |
963 |
DbControl dc = getSessionControl().newDbControl(); |
3458 |
23 Oct 09 |
olle |
964 |
log.info("MyLS::writeDirListing(): coreDir = " + coreDir); |
3458 |
23 Oct 09 |
olle |
965 |
// |
3458 |
23 Oct 09 |
olle |
// Get list of own sub-directories in input directory |
3458 |
23 Oct 09 |
olle |
967 |
List<org.proteios.core.Directory> ownDirList = fetchOwnDirList(dc, coreDir, includeRemoved); |
3458 |
23 Oct 09 |
olle |
968 |
int nOwnDirs = ownDirList.size(); |
3458 |
23 Oct 09 |
olle |
969 |
log.info("MyLS::writeDirListing(): nOwnDirs = " + nOwnDirs); |
3458 |
23 Oct 09 |
olle |
970 |
// |
3458 |
23 Oct 09 |
olle |
// Get list of directories shared to input directory |
3466 |
28 Oct 09 |
olle |
972 |
List<org.proteios.core.Directory> sharedDirList = fetchSharedDirList(dc, coreDir, ownDirList); |
3458 |
23 Oct 09 |
olle |
973 |
int nSharedDirs = sharedDirList.size(); |
3458 |
23 Oct 09 |
olle |
974 |
log.info("MyLS::writeDirListing(): nSharedDirs = " + nSharedDirs); |
3458 |
23 Oct 09 |
olle |
975 |
// |
3458 |
23 Oct 09 |
olle |
// Prepare full directory list, including shared, for input directory. |
3458 |
23 Oct 09 |
olle |
977 |
List<org.proteios.core.Directory> dirList = new ArrayList<org.proteios.core.Directory>(0); |
3458 |
23 Oct 09 |
olle |
978 |
int nDirs = nOwnDirs + nSharedDirs; |
3458 |
23 Oct 09 |
olle |
979 |
log.info("MyLS::writeDirListing(): nDirs = " + nDirs); |
3458 |
23 Oct 09 |
olle |
980 |
// |
3458 |
23 Oct 09 |
olle |
// Allocate size of directory string array |
3467 |
28 Oct 09 |
olle |
982 |
as_allFolders = new String[nDirs]; |
3458 |
23 Oct 09 |
olle |
983 |
// |
3458 |
23 Oct 09 |
olle |
// Add own sub-directories in input directory |
3458 |
23 Oct 09 |
olle |
985 |
for (int i = 0; i < nOwnDirs; i++) |
1656 |
22 May 07 |
gregory |
986 |
{ |
3458 |
23 Oct 09 |
olle |
987 |
org.proteios.core.Directory tmpCoreDir = |
3458 |
23 Oct 09 |
olle |
988 |
(org.proteios.core.Directory) ownDirList.get(i); |
3458 |
23 Oct 09 |
olle |
// Specify own sub-directory by name |
3458 |
23 Oct 09 |
olle |
990 |
String ownDirName = tmpCoreDir.getName(); |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::writeDirListing(): tmpCoreDir = " + tmpCoreDir + " ownDirName = " + ownDirName); |
3458 |
23 Oct 09 |
olle |
992 |
as_allFolders[i] = ownDirName; |
3458 |
23 Oct 09 |
olle |
993 |
log |
3458 |
23 Oct 09 |
olle |
994 |
.info("MyLS::writeDirListing(): as_allFolders[" + i + "] = \"" + as_allFolders[i] + "\" isRemoved = " + tmpCoreDir |
3458 |
23 Oct 09 |
olle |
995 |
.isRemoved()); |
3458 |
23 Oct 09 |
olle |
// Add directory to full directory list |
3458 |
23 Oct 09 |
olle |
997 |
dirList.add(tmpCoreDir); |
931 |
16 Nov 06 |
olle |
998 |
} |
3458 |
23 Oct 09 |
olle |
999 |
i_numberOfDirs = as_allFolders.length; |
3458 |
23 Oct 09 |
olle |
1000 |
log.info("MyLS::writeDirListing(): i_numberOfDirs = " + i_numberOfDirs); |
3458 |
23 Oct 09 |
olle |
1001 |
// |
3458 |
23 Oct 09 |
olle |
// Add shared directories in input directory |
3458 |
23 Oct 09 |
olle |
1003 |
for (int i = 0; i < nSharedDirs; i++) |
1656 |
22 May 07 |
gregory |
1004 |
{ |
3458 |
23 Oct 09 |
olle |
1005 |
org.proteios.core.Directory tmpCoreDir = |
3458 |
23 Oct 09 |
olle |
1006 |
(org.proteios.core.Directory) sharedDirList.get(i); |
3458 |
23 Oct 09 |
olle |
// Specify shared directory by absolute path |
3458 |
23 Oct 09 |
olle |
1008 |
String sharedDirPath = tmpCoreDir.getPath().toString(); |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::writeDirListing(): tmpCoreDir = " + tmpCoreDir + " sharedDirPath = " + sharedDirPath); |
3458 |
23 Oct 09 |
olle |
1010 |
as_allFolders[nOwnDirs + i] = sharedDirPath; |
1656 |
22 May 07 |
gregory |
1011 |
log |
3458 |
23 Oct 09 |
olle |
1012 |
.info("MyLS::writeDirListing(): as_allFolders[" + (nOwnDirs + i) + "] = \"" + as_allFolders[nOwnDirs + i] + "\" isRemoved = " + tmpCoreDir |
1656 |
22 May 07 |
gregory |
1013 |
.isRemoved()); |
3458 |
23 Oct 09 |
olle |
// Add directory to full directory list |
3458 |
23 Oct 09 |
olle |
1015 |
dirList.add(tmpCoreDir); |
790 |
23 Oct 06 |
olle |
1016 |
} |
1652 |
22 May 07 |
gregory |
1017 |
i_numberOfDirs = as_allFolders.length; |
790 |
23 Oct 06 |
olle |
1018 |
log.info("MyLS::writeDirListing(): i_numberOfDirs = " + i_numberOfDirs); |
3458 |
23 Oct 09 |
olle |
1019 |
// |
1652 |
22 May 07 |
gregory |
// If we had wanted to sort: Arrays.sort(allFolders, new |
1652 |
22 May 07 |
gregory |
// ComparatorIgnoreCase()); |
1652 |
22 May 07 |
gregory |
1022 |
MyGregorianCalendar tmpDate = new MyGregorianCalendar(); |
790 |
23 Oct 06 |
olle |
1023 |
int hour, minute, sec, year, day, month, length, am_pm; |
790 |
23 Oct 06 |
olle |
1024 |
String tmpStr; |
790 |
23 Oct 06 |
olle |
1025 |
StringBuffer sb_tmpStr; |
790 |
23 Oct 06 |
olle |
1026 |
String tmpLengthAsString; |
3467 |
28 Oct 09 |
olle |
1027 |
for (int i = 0; i < nDirs; i++) |
1656 |
22 May 07 |
gregory |
1028 |
{ |
1652 |
22 May 07 |
gregory |
// Example, "-rw-r--r-- 84 2006-06-01 16:51 MYFILE1.TXT" is 54 chars |
3458 |
23 Oct 09 |
olle |
1030 |
sb_tmpStr = new StringBuffer(255); |
1650 |
21 May 07 |
olle |
// Standard output for directory |
1650 |
21 May 07 |
olle |
1032 |
sb_tmpStr.append("drwxr-xr-x "); |
1650 |
21 May 07 |
olle |
// Standard output links, user, group for directory |
1650 |
21 May 07 |
olle |
1034 |
sb_tmpStr.append("2 100 100 "); |
1650 |
21 May 07 |
olle |
// Size (dummy value for directory listing) |
1652 |
22 May 07 |
gregory |
1036 |
tmpLengthAsString = "4096"; |
1650 |
21 May 07 |
olle |
// Fill in blanks at left to right-align size value. |
1652 |
22 May 07 |
gregory |
1038 |
int timesToLoop = 14 - tmpLengthAsString.length(); |
1656 |
22 May 07 |
gregory |
1039 |
for (int j = 0; j < timesToLoop; j++) |
1656 |
22 May 07 |
gregory |
1040 |
{ |
1650 |
21 May 07 |
olle |
1041 |
sb_tmpStr.append(" "); |
1650 |
21 May 07 |
olle |
1042 |
} |
1652 |
22 May 07 |
gregory |
1043 |
sb_tmpStr.append(tmpLengthAsString + " "); |
790 |
23 Oct 06 |
olle |
1044 |
/* |
1652 |
22 May 07 |
gregory |
* The date and time format has been modified to the YYYY-MM-DD |
1652 |
22 May 07 |
gregory |
* hh:mm format (using 24-hour time format). |
790 |
23 Oct 06 |
olle |
1047 |
*/ |
1652 |
22 May 07 |
gregory |
// sb_tmpStr=new StringBuffer(70); //Example, "06-06-01 04:51AM 84 |
1652 |
22 May 07 |
gregory |
// MYFILE1.TXT" is 50 chars |
1652 |
22 May 07 |
gregory |
// tmpFile=new File(s_path+as_allFilesAndFolders[i]); |
1652 |
22 May 07 |
gregory |
1051 |
org.proteios.core.Directory tmpCoreDir = (org.proteios.core.Directory) dirList |
1656 |
22 May 07 |
gregory |
1052 |
.get(i); |
1652 |
22 May 07 |
gregory |
// tmpDate.mySetTimeInMillis(tmpFile.lastModified()); |
790 |
23 Oct 06 |
olle |
1054 |
tmpDate.mySetTimeInMillis(tmpCoreDir.getCreated().getTime()); |
1652 |
22 May 07 |
gregory |
1055 |
hour = tmpDate.get(GregorianCalendar.HOUR); |
1652 |
22 May 07 |
gregory |
1056 |
minute = tmpDate.get(GregorianCalendar.MINUTE); |
1652 |
22 May 07 |
gregory |
1057 |
day = tmpDate.get(GregorianCalendar.DAY_OF_MONTH); |
1652 |
22 May 07 |
gregory |
1058 |
month = tmpDate.get(GregorianCalendar.MONTH); |
1652 |
22 May 07 |
gregory |
1059 |
year = tmpDate.get(GregorianCalendar.YEAR); |
1652 |
22 May 07 |
gregory |
1060 |
am_pm = tmpDate.get(GregorianCalendar.AM_PM); |
1652 |
22 May 07 |
gregory |
// year=year%100; |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(year+"-"); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(year+" "); |
790 |
23 Oct 06 |
olle |
1064 |
month++; |
1652 |
22 May 07 |
gregory |
// if (month<10) |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(month+"-"); |
1652 |
22 May 07 |
gregory |
1068 |
sb_tmpStr.append(monthAbbr(month) + " "); |
1652 |
22 May 07 |
gregory |
1069 |
if (day < 10) |
790 |
23 Oct 06 |
olle |
1070 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(day+"-"); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(day+" "); |
1652 |
22 May 07 |
gregory |
1073 |
sb_tmpStr.append(day + " "); |
1652 |
22 May 07 |
gregory |
// if (year<10) |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(year+" "); |
1656 |
22 May 07 |
gregory |
1077 |
if (hour < 12 && am_pm == GregorianCalendar.PM) |
1656 |
22 May 07 |
gregory |
1078 |
{ |
790 |
23 Oct 06 |
olle |
1079 |
hour = hour + 12; |
790 |
23 Oct 06 |
olle |
1080 |
} |
1656 |
22 May 07 |
gregory |
1081 |
if (!isYearOld(tmpCoreDir.getCreated())) |
1656 |
22 May 07 |
gregory |
1082 |
{ |
1652 |
22 May 07 |
gregory |
1083 |
if (hour < 10) |
1650 |
21 May 07 |
olle |
1084 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
1085 |
sb_tmpStr.append(hour + ":"); |
1652 |
22 May 07 |
gregory |
1086 |
if (minute < 10) |
1650 |
21 May 07 |
olle |
1087 |
sb_tmpStr.append(0); |
1650 |
21 May 07 |
olle |
1088 |
sb_tmpStr.append(minute); |
1656 |
22 May 07 |
gregory |
1089 |
} |
1656 |
22 May 07 |
gregory |
1090 |
else |
1656 |
22 May 07 |
gregory |
1091 |
{ |
1650 |
21 May 07 |
olle |
1092 |
sb_tmpStr.append(year); |
1650 |
21 May 07 |
olle |
1093 |
} |
1650 |
21 May 07 |
olle |
1094 |
/* |
1656 |
22 May 07 |
gregory |
* if (hour<10) sb_tmpStr.append(0); sb_tmpStr.append(hour+":"); if |
1656 |
22 May 07 |
gregory |
* (minute<10) sb_tmpStr.append(0); sb_tmpStr.append(minute); |
1652 |
22 May 07 |
gregory |
1097 |
*/ |
1652 |
22 May 07 |
gregory |
// if (am_pm==GregorianCalendar.PM) |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append("PM "); |
1652 |
22 May 07 |
gregory |
// else |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append("AM "); |
1650 |
21 May 07 |
olle |
1102 |
sb_tmpStr.append(" "); |
1652 |
22 May 07 |
gregory |
// if (tmpFile.isDirectory()) |
1656 |
22 May 07 |
gregory |
1104 |
if (false) |
1656 |
22 May 07 |
gregory |
1105 |
{ |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append("<DIR> "); |
1656 |
22 May 07 |
gregory |
1107 |
if (!tmpCoreDir.isRemoved()) |
1656 |
22 May 07 |
gregory |
1108 |
{ |
1652 |
22 May 07 |
gregory |
1109 |
sb_tmpStr.append("<DIR> "); |
1656 |
22 May 07 |
gregory |
1110 |
} |
1656 |
22 May 07 |
gregory |
1111 |
else |
1656 |
22 May 07 |
gregory |
1112 |
{ |
1652 |
22 May 07 |
gregory |
1113 |
sb_tmpStr.append("<DIR><REMOVED> "); |
931 |
16 Nov 06 |
olle |
1114 |
} |
1656 |
22 May 07 |
gregory |
1115 |
} |
1656 |
22 May 07 |
gregory |
1116 |
else |
1656 |
22 May 07 |
gregory |
1117 |
{ |
1652 |
22 May 07 |
gregory |
// tmpLengthAsString=""+tmpFile.length(); |
1652 |
22 May 07 |
gregory |
// tmpLengthAsString=""+tmpCoreFile.getBytes(); |
790 |
23 Oct 06 |
olle |
1120 |
/* |
790 |
23 Oct 06 |
olle |
* Fill in blanks at left to right-align size value. |
790 |
23 Oct 06 |
olle |
1122 |
*/ |
1650 |
21 May 07 |
olle |
1123 |
/* |
1652 |
22 May 07 |
gregory |
* int timesToLoop=14-tmpLengthAsString.length(); for (int j=0; |
1652 |
22 May 07 |
gregory |
* j<timesToLoop; j++) { sb_tmpStr.append(" "); } |
1652 |
22 May 07 |
gregory |
* sb_tmpStr.append(tmpLengthAsString+" "); |
1652 |
22 May 07 |
gregory |
1127 |
*/ |
790 |
23 Oct 06 |
olle |
1128 |
} |
1652 |
22 May 07 |
gregory |
// sb_tmpStr.append(as_allFolders[i]); |
1656 |
22 May 07 |
gregory |
1130 |
if (as_allFolders[i] != null) |
1656 |
22 May 07 |
gregory |
1131 |
{ |
931 |
16 Nov 06 |
olle |
1132 |
sb_tmpStr.append(as_allFolders[i]); |
1656 |
22 May 07 |
gregory |
1133 |
} |
1656 |
22 May 07 |
gregory |
1134 |
else |
1656 |
22 May 07 |
gregory |
1135 |
{ |
1656 |
22 May 07 |
gregory |
1136 |
if (tmpCoreDir.getName() != null) |
1656 |
22 May 07 |
gregory |
1137 |
{ |
931 |
16 Nov 06 |
olle |
1138 |
sb_tmpStr.append(tmpCoreDir.getName() + " = (null)"); |
1656 |
22 May 07 |
gregory |
1139 |
} |
1656 |
22 May 07 |
gregory |
1140 |
else |
1656 |
22 May 07 |
gregory |
1141 |
{ |
931 |
16 Nov 06 |
olle |
1142 |
sb_tmpStr.append("(null)"); |
931 |
16 Nov 06 |
olle |
1143 |
} |
931 |
16 Nov 06 |
olle |
1144 |
} |
931 |
16 Nov 06 |
olle |
1145 |
/* |
1652 |
22 May 07 |
gregory |
* Start response string with optional prefix. Example: prefix = |
1652 |
22 May 07 |
gregory |
* "213-". |
931 |
16 Nov 06 |
olle |
1148 |
*/ |
1656 |
22 May 07 |
gregory |
1149 |
if (prefix != null) |
1656 |
22 May 07 |
gregory |
1150 |
{ |
1652 |
22 May 07 |
gregory |
1151 |
bos.writeBytes(prefix + sb_tmpStr.toString() + "\r\n"); |
1656 |
22 May 07 |
gregory |
1152 |
} |
1656 |
22 May 07 |
gregory |
1153 |
else |
1656 |
22 May 07 |
gregory |
1154 |
{ |
1652 |
22 May 07 |
gregory |
1155 |
bos.writeBytes(sb_tmpStr.toString() + "\r\n"); |
931 |
16 Nov 06 |
olle |
1156 |
} |
1652 |
22 May 07 |
gregory |
// bos.writeBytes("+s1234,\t"+as_allFilesAndFolders[i]+"\r\n"); |
790 |
23 Oct 06 |
olle |
1158 |
} |
1652 |
22 May 07 |
gregory |
// bos.flush(); |
1680 |
25 May 07 |
olle |
1160 |
/* |
1680 |
25 May 07 |
olle |
* Close DbControl. |
1680 |
25 May 07 |
olle |
1162 |
*/ |
1680 |
25 May 07 |
olle |
1163 |
dc.close(); |
790 |
23 Oct 06 |
olle |
1164 |
} |
790 |
23 Oct 06 |
olle |
1165 |
|
1656 |
22 May 07 |
gregory |
1166 |
|
3458 |
23 Oct 09 |
olle |
1167 |
/** |
3469 |
02 Nov 09 |
olle |
* Write the listing of project directories for shared projects to bos, but do not flush it. |
3469 |
02 Nov 09 |
olle |
* Only includes projects owned by other users than current directory. |
3469 |
02 Nov 09 |
olle |
* Method not in the original Xerver code. |
3469 |
02 Nov 09 |
olle |
1171 |
* |
3469 |
02 Nov 09 |
olle |
* @param bos DataOutputStream data output stream to write list to. |
3469 |
02 Nov 09 |
olle |
* @param includeRemoved boolean flag indicating if removed files should be |
3469 |
02 Nov 09 |
olle |
* included. |
3469 |
02 Nov 09 |
olle |
* @param prefix String optional prefix string at start of response string. |
3469 |
02 Nov 09 |
olle |
1176 |
*/ |
3469 |
02 Nov 09 |
olle |
1177 |
private void writeSharedProjectsDirListing(DataOutputStream bos, boolean includeRemoved, |
3469 |
02 Nov 09 |
olle |
1178 |
String prefix) |
3469 |
02 Nov 09 |
olle |
1179 |
throws Exception |
3469 |
02 Nov 09 |
olle |
1180 |
{ |
3469 |
02 Nov 09 |
olle |
// *** Debug Info |
3469 |
02 Nov 09 |
olle |
1182 |
log |
3469 |
02 Nov 09 |
olle |
1183 |
.info("MyLS::writeSharedProjectsDirListing(): Start - includeRemoved = " + includeRemoved + " prefix = \"" + prefix + "\" + isInSharedProjectsFolder() = " + isInSharedProjectsFolder()); |
3469 |
02 Nov 09 |
olle |
// try { |
3469 |
02 Nov 09 |
olle |
1185 |
String[] as_allFolders; |
3469 |
02 Nov 09 |
olle |
1186 |
int i_numberOfDirs; |
3469 |
02 Nov 09 |
olle |
1187 |
DbControl dc = getSessionControl().newDbControl(); |
3469 |
02 Nov 09 |
olle |
1188 |
log.info("MyLS::writeSharedProjectsDirListing(): coreDir = " + coreDir); |
3469 |
02 Nov 09 |
olle |
1189 |
// |
3469 |
02 Nov 09 |
olle |
// Get list of project directories for shared projects |
3469 |
02 Nov 09 |
olle |
1191 |
List<org.proteios.core.Directory> sharedProjectsDirList = fetchSharedProjectsDirList(dc, coreDir); |
3469 |
02 Nov 09 |
olle |
1192 |
int nDirs = sharedProjectsDirList.size(); |
3469 |
02 Nov 09 |
olle |
1193 |
log.info("MyLS::writeSharedProjectsDirListing(): nDirs = " + nDirs); |
3469 |
02 Nov 09 |
olle |
1194 |
// |
3469 |
02 Nov 09 |
olle |
1195 |
for (int i = 0; i < nDirs; i++) |
3469 |
02 Nov 09 |
olle |
1196 |
{ |
3469 |
02 Nov 09 |
olle |
1197 |
org.proteios.core.Directory tmpCoreDir = (org.proteios.core.Directory) sharedProjectsDirList |
3469 |
02 Nov 09 |
olle |
1198 |
.get(i); |
3469 |
02 Nov 09 |
olle |
//String dirName = tmpCoreDir.getName(); |
3469 |
02 Nov 09 |
olle |
// Specify shared directory by absolute path |
3469 |
02 Nov 09 |
olle |
1201 |
String sharedDirPath = tmpCoreDir.getPath().toString(); |
3469 |
02 Nov 09 |
olle |
1202 |
Date timeCreated = tmpCoreDir.getCreated(); |
3469 |
02 Nov 09 |
olle |
1203 |
String dirEntryStr = fetchDirectoryEntry(sharedDirPath, timeCreated); |
3469 |
02 Nov 09 |
olle |
1204 |
if (prefix != null) |
3469 |
02 Nov 09 |
olle |
1205 |
{ |
3469 |
02 Nov 09 |
olle |
1206 |
bos.writeBytes(prefix + dirEntryStr + "\r\n"); |
3469 |
02 Nov 09 |
olle |
1207 |
} |
3469 |
02 Nov 09 |
olle |
1208 |
else |
3469 |
02 Nov 09 |
olle |
1209 |
{ |
3469 |
02 Nov 09 |
olle |
1210 |
bos.writeBytes(dirEntryStr + "\r\n"); |
3469 |
02 Nov 09 |
olle |
1211 |
} |
3469 |
02 Nov 09 |
olle |
1212 |
} |
3469 |
02 Nov 09 |
olle |
// bos.flush(); |
3469 |
02 Nov 09 |
olle |
1214 |
/* |
3469 |
02 Nov 09 |
olle |
* Close DbControl. |
3469 |
02 Nov 09 |
olle |
1216 |
*/ |
3469 |
02 Nov 09 |
olle |
1217 |
dc.close(); |
3469 |
02 Nov 09 |
olle |
1218 |
} |
3469 |
02 Nov 09 |
olle |
1219 |
|
3469 |
02 Nov 09 |
olle |
1220 |
|
3469 |
02 Nov 09 |
olle |
1221 |
/** |
3469 |
02 Nov 09 |
olle |
* Fetches a directory entry for use in a directory listing. |
3469 |
02 Nov 09 |
olle |
1223 |
* |
3469 |
02 Nov 09 |
olle |
* @return String A directory entry for use in a directory listing. |
3469 |
02 Nov 09 |
olle |
1225 |
*/ |
3469 |
02 Nov 09 |
olle |
1226 |
private String fetchDirectoryEntry(String dirName, Date timeCreated) |
3469 |
02 Nov 09 |
olle |
1227 |
{ |
3469 |
02 Nov 09 |
olle |
1228 |
log.info("MyLS::fetchDirectoryEntry(): dirName = \"" + dirName + "\" timeCreated = " + timeCreated); |
3469 |
02 Nov 09 |
olle |
1229 |
MyGregorianCalendar tmpDate = new MyGregorianCalendar(); |
3469 |
02 Nov 09 |
olle |
1230 |
int hour, minute, sec, year, day, month, length, am_pm; |
3469 |
02 Nov 09 |
olle |
1231 |
StringBuffer sb_tmpStr; |
3469 |
02 Nov 09 |
olle |
1232 |
String tmpLengthAsString; |
3469 |
02 Nov 09 |
olle |
1233 |
// |
3469 |
02 Nov 09 |
olle |
// If no create time given, use current time |
3469 |
02 Nov 09 |
olle |
1235 |
if (timeCreated == null) |
3469 |
02 Nov 09 |
olle |
1236 |
{ |
3469 |
02 Nov 09 |
olle |
1237 |
timeCreated = new Date(); |
3469 |
02 Nov 09 |
olle |
1238 |
} |
3469 |
02 Nov 09 |
olle |
// Example, "drwxr-xr-x 2 100 100 4096 2006-06-01 16:51 myDir" is 57 chars |
3469 |
02 Nov 09 |
olle |
1240 |
sb_tmpStr = new StringBuffer(255); |
3469 |
02 Nov 09 |
olle |
// Standard output for directory |
3469 |
02 Nov 09 |
olle |
1242 |
sb_tmpStr.append("drwxr-xr-x "); |
3469 |
02 Nov 09 |
olle |
// Standard output links, user, group for directory |
3469 |
02 Nov 09 |
olle |
1244 |
sb_tmpStr.append("2 100 100 "); |
3469 |
02 Nov 09 |
olle |
// Size (dummy value for directory listing) |
3469 |
02 Nov 09 |
olle |
1246 |
tmpLengthAsString = "4096"; |
3469 |
02 Nov 09 |
olle |
// Fill in blanks at left to right-align size value. |
3469 |
02 Nov 09 |
olle |
1248 |
int timesToLoop = 14 - tmpLengthAsString.length(); |
3469 |
02 Nov 09 |
olle |
1249 |
for (int j = 0; j < timesToLoop; j++) |
3469 |
02 Nov 09 |
olle |
1250 |
{ |
3469 |
02 Nov 09 |
olle |
1251 |
sb_tmpStr.append(" "); |
3469 |
02 Nov 09 |
olle |
1252 |
} |
3469 |
02 Nov 09 |
olle |
1253 |
sb_tmpStr.append(tmpLengthAsString + " "); |
3469 |
02 Nov 09 |
olle |
1254 |
/* |
3469 |
02 Nov 09 |
olle |
* The date and time format has been modified to the YYYY-MM-DD |
3469 |
02 Nov 09 |
olle |
* hh:mm format (using 24-hour time format). |
3469 |
02 Nov 09 |
olle |
1257 |
*/ |
3469 |
02 Nov 09 |
olle |
1258 |
tmpDate.mySetTimeInMillis(timeCreated.getTime()); |
3469 |
02 Nov 09 |
olle |
1259 |
hour = tmpDate.get(GregorianCalendar.HOUR); |
3469 |
02 Nov 09 |
olle |
1260 |
minute = tmpDate.get(GregorianCalendar.MINUTE); |
3469 |
02 Nov 09 |
olle |
1261 |
day = tmpDate.get(GregorianCalendar.DAY_OF_MONTH); |
3469 |
02 Nov 09 |
olle |
1262 |
month = tmpDate.get(GregorianCalendar.MONTH); |
3469 |
02 Nov 09 |
olle |
1263 |
year = tmpDate.get(GregorianCalendar.YEAR); |
3469 |
02 Nov 09 |
olle |
1264 |
am_pm = tmpDate.get(GregorianCalendar.AM_PM); |
3469 |
02 Nov 09 |
olle |
// year=year%100; |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(year+"-"); |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(year+" "); |
3469 |
02 Nov 09 |
olle |
1268 |
month++; |
3469 |
02 Nov 09 |
olle |
// if (month<10) |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(0); |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(month+"-"); |
3469 |
02 Nov 09 |
olle |
1272 |
sb_tmpStr.append(monthAbbr(month) + " "); |
3469 |
02 Nov 09 |
olle |
1273 |
if (day < 10) |
3469 |
02 Nov 09 |
olle |
1274 |
sb_tmpStr.append(0); |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(day+"-"); |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(day+" "); |
3469 |
02 Nov 09 |
olle |
1277 |
sb_tmpStr.append(day + " "); |
3469 |
02 Nov 09 |
olle |
// if (year<10) |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(0); |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(year+" "); |
3469 |
02 Nov 09 |
olle |
1281 |
if (hour < 12 && am_pm == GregorianCalendar.PM) |
3469 |
02 Nov 09 |
olle |
1282 |
{ |
3469 |
02 Nov 09 |
olle |
1283 |
hour = hour + 12; |
3469 |
02 Nov 09 |
olle |
1284 |
} |
3469 |
02 Nov 09 |
olle |
1285 |
if (!isYearOld(timeCreated)) |
3469 |
02 Nov 09 |
olle |
1286 |
{ |
3469 |
02 Nov 09 |
olle |
1287 |
if (hour < 10) |
3469 |
02 Nov 09 |
olle |
1288 |
sb_tmpStr.append(0); |
3469 |
02 Nov 09 |
olle |
1289 |
sb_tmpStr.append(hour + ":"); |
3469 |
02 Nov 09 |
olle |
1290 |
if (minute < 10) |
3469 |
02 Nov 09 |
olle |
1291 |
sb_tmpStr.append(0); |
3469 |
02 Nov 09 |
olle |
1292 |
sb_tmpStr.append(minute); |
3469 |
02 Nov 09 |
olle |
1293 |
} |
3469 |
02 Nov 09 |
olle |
1294 |
else |
3469 |
02 Nov 09 |
olle |
1295 |
{ |
3469 |
02 Nov 09 |
olle |
1296 |
sb_tmpStr.append(year); |
3469 |
02 Nov 09 |
olle |
1297 |
} |
3469 |
02 Nov 09 |
olle |
1298 |
/* |
3469 |
02 Nov 09 |
olle |
* if (hour<10) sb_tmpStr.append(0); sb_tmpStr.append(hour+":"); if |
3469 |
02 Nov 09 |
olle |
* (minute<10) sb_tmpStr.append(0); sb_tmpStr.append(minute); |
3469 |
02 Nov 09 |
olle |
1301 |
*/ |
3469 |
02 Nov 09 |
olle |
// if (am_pm==GregorianCalendar.PM) |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append("PM "); |
3469 |
02 Nov 09 |
olle |
// else |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append("AM "); |
3469 |
02 Nov 09 |
olle |
1306 |
sb_tmpStr.append(" "); |
3469 |
02 Nov 09 |
olle |
// sb_tmpStr.append(as_allFolders[i]); |
3469 |
02 Nov 09 |
olle |
1308 |
if (dirName != null) |
3469 |
02 Nov 09 |
olle |
1309 |
{ |
3469 |
02 Nov 09 |
olle |
1310 |
sb_tmpStr.append(dirName); |
3469 |
02 Nov 09 |
olle |
1311 |
} |
3469 |
02 Nov 09 |
olle |
1312 |
else |
3469 |
02 Nov 09 |
olle |
1313 |
{ |
3469 |
02 Nov 09 |
olle |
1314 |
sb_tmpStr.append("(null)"); |
3469 |
02 Nov 09 |
olle |
1315 |
} |
3469 |
02 Nov 09 |
olle |
1316 |
log.info("MyLS::fetchDirectoryEntry(): return = \"" + sb_tmpStr.toString() + "\""); |
3469 |
02 Nov 09 |
olle |
1317 |
return sb_tmpStr.toString(); |
3469 |
02 Nov 09 |
olle |
1318 |
} |
3469 |
02 Nov 09 |
olle |
1319 |
|
3469 |
02 Nov 09 |
olle |
1320 |
|
3469 |
02 Nov 09 |
olle |
1321 |
/** |
3458 |
23 Oct 09 |
olle |
* Fetch list of sub-directories, excluding shared, to a parent directory. |
3458 |
23 Oct 09 |
olle |
* Method not in the original Xerver code. |
3458 |
23 Oct 09 |
olle |
1324 |
* |
3458 |
23 Oct 09 |
olle |
* @param dc DbControl The DbControl to use. |
3458 |
23 Oct 09 |
olle |
* @param dir org.proteios.core.Directory The directory to get sub-directories for. |
3458 |
23 Oct 09 |
olle |
* @param includeRemoved boolean Flag indicating if removed files should be included. |
3458 |
23 Oct 09 |
olle |
* @return List<org.proteios.core.Directory> A list of core sub-directories in input directory. |
3458 |
23 Oct 09 |
olle |
1329 |
*/ |
3458 |
23 Oct 09 |
olle |
1330 |
private List<org.proteios.core.Directory> fetchOwnDirList(DbControl dc, org.proteios.core.Directory dir, boolean includeRemoved) |
3458 |
23 Oct 09 |
olle |
1331 |
{ |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchOwnDirList(): Start - includeRemoved = " + includeRemoved); |
3458 |
23 Oct 09 |
olle |
// Get ItemQuery for core subdirectories in core directory |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchOwnDirList(): dir = " + dir); |
3518 |
09 Dec 09 |
olle |
1335 |
ItemQuery<org.proteios.core.Directory> dirQuery = dir.getSubDirectories(); |
3458 |
23 Oct 09 |
olle |
1336 |
if (includeRemoved) |
3458 |
23 Oct 09 |
olle |
1337 |
{ |
3458 |
23 Oct 09 |
olle |
1338 |
dirQuery.include(Include.REMOVED, Include.NOT_REMOVED); |
3458 |
23 Oct 09 |
olle |
1339 |
} |
3458 |
23 Oct 09 |
olle |
1340 |
int nDirs = dirQuery.count(dc); |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchOwnDirList(): dirQuery.count(dc) = " + nDirs); |
3458 |
23 Oct 09 |
olle |
// The list may exclude some items. |
3458 |
23 Oct 09 |
olle |
1343 |
List<org.proteios.core.Directory> tmpDirList = dirQuery.list(dc); |
3458 |
23 Oct 09 |
olle |
1344 |
List<org.proteios.core.Directory> dirList = new ArrayList<org.proteios.core.Directory>(0); |
3458 |
23 Oct 09 |
olle |
1345 |
for (int i=0; i < nDirs; i++) |
3458 |
23 Oct 09 |
olle |
1346 |
{ |
3458 |
23 Oct 09 |
olle |
1347 |
org.proteios.core.Directory tmpCoreDir = |
3458 |
23 Oct 09 |
olle |
1348 |
(org.proteios.core.Directory) tmpDirList.get(i); |
3458 |
23 Oct 09 |
olle |
1349 |
try |
3458 |
23 Oct 09 |
olle |
1350 |
{ |
3458 |
23 Oct 09 |
olle |
1351 |
dirList.add(tmpCoreDir); |
3458 |
23 Oct 09 |
olle |
1352 |
} |
3458 |
23 Oct 09 |
olle |
1353 |
catch (Exception e) |
3458 |
23 Oct 09 |
olle |
1354 |
{ |
3458 |
23 Oct 09 |
olle |
1355 |
log.info("MyLS::fetchOwnDirList(): Exception when trying to execute dirList.add(tmpCoreDir): " + e); |
3458 |
23 Oct 09 |
olle |
1356 |
} |
3458 |
23 Oct 09 |
olle |
1357 |
} |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchOwnDirList(): (0) dirList.size() = " + dirList.size()); |
3458 |
23 Oct 09 |
olle |
1359 |
return dirList; |
3458 |
23 Oct 09 |
olle |
1360 |
} |
3458 |
23 Oct 09 |
olle |
1361 |
|
3458 |
23 Oct 09 |
olle |
1362 |
|
3458 |
23 Oct 09 |
olle |
1363 |
/** |
3458 |
23 Oct 09 |
olle |
* Fetch list of directories shared to a parent directory. |
3466 |
28 Oct 09 |
olle |
* Excludes a shared directory equal to the input parent |
3466 |
28 Oct 09 |
olle |
* directory or any sub-directory of the latter. |
3458 |
23 Oct 09 |
olle |
* Method not in the original Xerver code. |
3458 |
23 Oct 09 |
olle |
1368 |
* |
3458 |
23 Oct 09 |
olle |
* @param dc DbControl The DbControl to use. |
3458 |
23 Oct 09 |
olle |
* @param dir org.proteios.core.Directory The directory to get shared directories for. |
3458 |
23 Oct 09 |
olle |
* @return List<org.proteios.core.Directory> A list of shared core directories in input directory. |
3458 |
23 Oct 09 |
olle |
1372 |
*/ |
3458 |
23 Oct 09 |
olle |
1373 |
private List<org.proteios.core.Directory> fetchSharedDirList(DbControl dc, org.proteios.core.Directory dir) |
3458 |
23 Oct 09 |
olle |
1374 |
{ |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirList(): dir = " + dir); |
3466 |
28 Oct 09 |
olle |
1376 |
boolean includeRemoved = false; |
3466 |
28 Oct 09 |
olle |
1377 |
List<org.proteios.core.Directory> ownDirList = fetchOwnDirList(dc, dir, includeRemoved); |
3466 |
28 Oct 09 |
olle |
1378 |
List<org.proteios.core.Directory> dirList = fetchSharedDirList(dc, dir, ownDirList); |
3466 |
28 Oct 09 |
olle |
1379 |
return dirList; |
3466 |
28 Oct 09 |
olle |
1380 |
} |
3466 |
28 Oct 09 |
olle |
1381 |
|
3466 |
28 Oct 09 |
olle |
1382 |
|
3466 |
28 Oct 09 |
olle |
1383 |
/** |
3466 |
28 Oct 09 |
olle |
* Fetch list of directories shared to a parent directory. |
3466 |
28 Oct 09 |
olle |
* Excludes a shared directory equal to the input parent |
3466 |
28 Oct 09 |
olle |
* directory or any sub-directory of the latter. |
3466 |
28 Oct 09 |
olle |
* Method not in the original Xerver code. |
3466 |
28 Oct 09 |
olle |
1388 |
* |
3466 |
28 Oct 09 |
olle |
* @param dc DbControl The DbControl to use. |
3466 |
28 Oct 09 |
olle |
* @param dir org.proteios.core.Directory The directory to get shared directories for. |
3466 |
28 Oct 09 |
olle |
* @param ownDirList List<org.proteios.core.Directory> A list of own sub-directories to input directory. |
3466 |
28 Oct 09 |
olle |
* @return List<org.proteios.core.Directory> A list of shared core directories in input directory. |
3466 |
28 Oct 09 |
olle |
1393 |
*/ |
3466 |
28 Oct 09 |
olle |
1394 |
private List<org.proteios.core.Directory> fetchSharedDirList(DbControl dc, org.proteios.core.Directory dir, |
3466 |
28 Oct 09 |
olle |
1395 |
List<org.proteios.core.Directory> ownDirList) |
3466 |
28 Oct 09 |
olle |
1396 |
{ |
3466 |
28 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirList(): dir = " + dir); |
3458 |
23 Oct 09 |
olle |
1398 |
List<org.proteios.core.Directory> dirList = new ArrayList<org.proteios.core.Directory>(0); |
3458 |
23 Oct 09 |
olle |
// Get ItemQuery for core shared directories in core directory |
3518 |
09 Dec 09 |
olle |
1400 |
ItemQuery<org.proteios.core.Directory> sharedDirQuery = fetchSharedDirectoryQuery(dc, dir); |
3458 |
23 Oct 09 |
olle |
1401 |
if (sharedDirQuery != null) |
3458 |
23 Oct 09 |
olle |
1402 |
{ |
3458 |
23 Oct 09 |
olle |
1403 |
List<org.proteios.core.Directory> sharedDirList = sharedDirQuery.list(dc); |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirList(): sharedDirList.size() = " + sharedDirList.size()); |
3458 |
23 Oct 09 |
olle |
1405 |
int nSharedDirs = sharedDirList.size(); |
3458 |
23 Oct 09 |
olle |
1406 |
if (nSharedDirs > 0) |
3458 |
23 Oct 09 |
olle |
1407 |
{ |
3458 |
23 Oct 09 |
olle |
1408 |
for (int i=0; i < nSharedDirs; i++) |
3458 |
23 Oct 09 |
olle |
1409 |
{ |
3458 |
23 Oct 09 |
olle |
1410 |
org.proteios.core.Directory tmpCoreDir = |
3458 |
23 Oct 09 |
olle |
1411 |
(org.proteios.core.Directory) sharedDirList.get(i); |
3466 |
28 Oct 09 |
olle |
// Check if shared directory should be used |
3466 |
28 Oct 09 |
olle |
1413 |
boolean useSharedDirectory = true; |
3466 |
28 Oct 09 |
olle |
// Exclude shared directory equal to input directory |
3466 |
28 Oct 09 |
olle |
1415 |
if (tmpCoreDir.getId() == dir.getId()) |
3458 |
23 Oct 09 |
olle |
1416 |
{ |
3466 |
28 Oct 09 |
olle |
1417 |
useSharedDirectory = false; |
3458 |
23 Oct 09 |
olle |
1418 |
} |
3466 |
28 Oct 09 |
olle |
// Exclude shared directory equal to sub-directory of input directory |
3466 |
28 Oct 09 |
olle |
1420 |
if (ownDirList != null) |
3458 |
23 Oct 09 |
olle |
1421 |
{ |
3466 |
28 Oct 09 |
olle |
1422 |
for (int j=0; j < ownDirList.size(); j++) |
3466 |
28 Oct 09 |
olle |
1423 |
{ |
3466 |
28 Oct 09 |
olle |
1424 |
org.proteios.core.Directory subDir = |
3466 |
28 Oct 09 |
olle |
1425 |
(org.proteios.core.Directory) ownDirList.get(j); |
3466 |
28 Oct 09 |
olle |
1426 |
if (tmpCoreDir.getId() == subDir.getId()) |
3466 |
28 Oct 09 |
olle |
1427 |
{ |
3466 |
28 Oct 09 |
olle |
1428 |
useSharedDirectory = false; |
3466 |
28 Oct 09 |
olle |
1429 |
} |
3466 |
28 Oct 09 |
olle |
1430 |
} |
3458 |
23 Oct 09 |
olle |
1431 |
} |
3466 |
28 Oct 09 |
olle |
1432 |
// |
3466 |
28 Oct 09 |
olle |
1433 |
if (useSharedDirectory) |
3466 |
28 Oct 09 |
olle |
1434 |
{ |
3466 |
28 Oct 09 |
olle |
// Add shared directory to list |
3466 |
28 Oct 09 |
olle |
1436 |
try |
3466 |
28 Oct 09 |
olle |
1437 |
{ |
3466 |
28 Oct 09 |
olle |
1438 |
dirList.add(tmpCoreDir); |
3466 |
28 Oct 09 |
olle |
1439 |
} |
3466 |
28 Oct 09 |
olle |
1440 |
catch (Exception e) |
3466 |
28 Oct 09 |
olle |
1441 |
{ |
3466 |
28 Oct 09 |
olle |
1442 |
log.info("MyLS::fetchSharedDirList(): Exception when trying to execute dirList.add(tmpCoreDir): " + e); |
3466 |
28 Oct 09 |
olle |
1443 |
} |
3466 |
28 Oct 09 |
olle |
1444 |
} |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirList(): (1) dirList.size() = " + dirList.size()); |
3458 |
23 Oct 09 |
olle |
1446 |
} |
3458 |
23 Oct 09 |
olle |
1447 |
} |
3458 |
23 Oct 09 |
olle |
1448 |
} |
3458 |
23 Oct 09 |
olle |
1449 |
else |
3458 |
23 Oct 09 |
olle |
1450 |
{ |
3458 |
23 Oct 09 |
olle |
1451 |
log.info("MyLS::fetchSharedDirList(): sharedDirQuery = null"); |
3458 |
23 Oct 09 |
olle |
1452 |
} |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirList(): dirList.size() = " + dirList.size()); |
3458 |
23 Oct 09 |
olle |
1454 |
return dirList; |
3458 |
23 Oct 09 |
olle |
1455 |
} |
3458 |
23 Oct 09 |
olle |
1456 |
|
3458 |
23 Oct 09 |
olle |
1457 |
|
3458 |
23 Oct 09 |
olle |
1458 |
/** |
3469 |
02 Nov 09 |
olle |
* Fetch list of project directories for shared projects. |
3469 |
02 Nov 09 |
olle |
* Excludes a project owned by the owner of the input directory. |
3469 |
02 Nov 09 |
olle |
* Method not in the original Xerver code. |
3469 |
02 Nov 09 |
olle |
1462 |
* |
3469 |
02 Nov 09 |
olle |
* @param dc DbControl The DbControl to use. |
3469 |
02 Nov 09 |
olle |
* @param dir org.proteios.core.Directory The directory to get shared project directories for. |
3469 |
02 Nov 09 |
olle |
* @return List<org.proteios.core.Directory> A list of shared project directories. |
3469 |
02 Nov 09 |
olle |
1466 |
*/ |
3469 |
02 Nov 09 |
olle |
1467 |
private List<org.proteios.core.Directory> fetchSharedProjectsDirList(DbControl dc, org.proteios.core.Directory dir) |
3469 |
02 Nov 09 |
olle |
1468 |
{ |
3469 |
02 Nov 09 |
olle |
1469 |
log.info("MyLS::fetchSharedProjectsDirList(): dir = " + dir); |
3469 |
02 Nov 09 |
olle |
1470 |
DbControl tmpDc = null; |
3469 |
02 Nov 09 |
olle |
1471 |
try |
3469 |
02 Nov 09 |
olle |
1472 |
{ |
3469 |
02 Nov 09 |
olle |
1473 |
tmpDc = dir.getDbControl(); |
3469 |
02 Nov 09 |
olle |
1474 |
} |
3469 |
02 Nov 09 |
olle |
1475 |
catch (Exception e) |
3469 |
02 Nov 09 |
olle |
1476 |
{ |
3469 |
02 Nov 09 |
olle |
1477 |
log.info("MyLS::fetchSharedProjectsDirList(): Exception when calling dir.getDbControl() : " + e); |
3469 |
02 Nov 09 |
olle |
1478 |
} |
3469 |
02 Nov 09 |
olle |
1479 |
if (tmpDc == null || tmpDc.isClosed() || !tmpDc.isConnected()) |
3469 |
02 Nov 09 |
olle |
1480 |
{ |
3469 |
02 Nov 09 |
olle |
// Create new instance of directory |
3469 |
02 Nov 09 |
olle |
1482 |
tmpDc = getSessionControl().newDbControl(); |
3469 |
02 Nov 09 |
olle |
1483 |
int dirId = dir.getId(); |
3469 |
02 Nov 09 |
olle |
1484 |
log.info("MyLS::fetchSharedProjectsDirList(): dirId = " + dirId); |
3469 |
02 Nov 09 |
olle |
1485 |
ItemFactory factory = new ItemFactory(tmpDc); |
3469 |
02 Nov 09 |
olle |
1486 |
dir = factory.getById(org.proteios.core.Directory.class, dirId); |
3469 |
02 Nov 09 |
olle |
1487 |
} |
3469 |
02 Nov 09 |
olle |
1488 |
List<org.proteios.core.Directory> dirList = new ArrayList<org.proteios.core.Directory>(0); |
3469 |
02 Nov 09 |
olle |
// Get ItemQuery for shared projects |
3469 |
02 Nov 09 |
olle |
1490 |
ItemQuery<Project> projectQuery = Project.getQuery(); |
3469 |
02 Nov 09 |
olle |
1491 |
projectQuery.include(Include.SHARED); |
3469 |
02 Nov 09 |
olle |
1492 |
projectQuery.include(Include.MINE); |
3469 |
02 Nov 09 |
olle |
1493 |
projectQuery.restrict(Restrictions.neq(Hql.property("closed"), |
3469 |
02 Nov 09 |
olle |
1494 |
Expressions.parameter("closed"))); |
3469 |
02 Nov 09 |
olle |
1495 |
projectQuery.setParameter("closed", true, null); |
3469 |
02 Nov 09 |
olle |
1496 |
// |
3469 |
02 Nov 09 |
olle |
1497 |
List<Project> sharedProjectsList = projectQuery.list(tmpDc); |
3469 |
02 Nov 09 |
olle |
1498 |
int nSharedProjects = sharedProjectsList.size(); |
3469 |
02 Nov 09 |
olle |
1499 |
log.info("MyLS::fetchSharedProjectsDirList(): nSharedProjects = " + nSharedProjects); |
3469 |
02 Nov 09 |
olle |
1500 |
if (nSharedProjects > 0) |
3469 |
02 Nov 09 |
olle |
1501 |
{ |
3469 |
02 Nov 09 |
olle |
1502 |
int dirOwnerId = 0; |
3469 |
02 Nov 09 |
olle |
1503 |
try |
3469 |
02 Nov 09 |
olle |
1504 |
{ |
3469 |
02 Nov 09 |
olle |
1505 |
if (dir != null) |
3469 |
02 Nov 09 |
olle |
1506 |
{ |
3469 |
02 Nov 09 |
olle |
1507 |
dirOwnerId = dir.getOwner().getId(); |
3469 |
02 Nov 09 |
olle |
1508 |
} |
3469 |
02 Nov 09 |
olle |
1509 |
} |
3469 |
02 Nov 09 |
olle |
1510 |
catch (Exception e) |
3469 |
02 Nov 09 |
olle |
1511 |
{ |
3469 |
02 Nov 09 |
olle |
1512 |
log.info("MyLS::fetchSharedProjectsDirList(): Exception when trying to get owner id for dir = " + dir + " : " + e); |
3469 |
02 Nov 09 |
olle |
1513 |
} |
3469 |
02 Nov 09 |
olle |
1514 |
log.info("MyLS::fetchSharedProjectsDirList(): dir = " + dir + " dirOwnerId = " + dirOwnerId); |
3469 |
02 Nov 09 |
olle |
1515 |
for (int i=0; i < nSharedProjects; i++) |
3469 |
02 Nov 09 |
olle |
1516 |
{ |
3469 |
02 Nov 09 |
olle |
1517 |
Project tmpProject = (Project) sharedProjectsList.get(i); |
3469 |
02 Nov 09 |
olle |
1518 |
org.proteios.core.Directory tmpCoreDir = tmpProject.getProjectDirectory(); |
3469 |
02 Nov 09 |
olle |
//log.info("MyLS::fetchSharedProjectsDirList(): tmpCoreDir = " + tmpCoreDir); |
3469 |
02 Nov 09 |
olle |
1520 |
boolean useSharedDirectory = true; |
3469 |
02 Nov 09 |
olle |
// Exclude shared directory equal to input directory |
3469 |
02 Nov 09 |
olle |
1522 |
int tmpCoreDirOwnerId = 0; |
3469 |
02 Nov 09 |
olle |
1523 |
try |
3469 |
02 Nov 09 |
olle |
1524 |
{ |
3469 |
02 Nov 09 |
olle |
1525 |
if (tmpCoreDir != null) |
3469 |
02 Nov 09 |
olle |
1526 |
{ |
3469 |
02 Nov 09 |
olle |
1527 |
tmpCoreDirOwnerId = tmpCoreDir.getOwner().getId(); |
3469 |
02 Nov 09 |
olle |
1528 |
} |
3469 |
02 Nov 09 |
olle |
1529 |
} |
3469 |
02 Nov 09 |
olle |
1530 |
catch (Exception e) |
3469 |
02 Nov 09 |
olle |
1531 |
{ |
3469 |
02 Nov 09 |
olle |
1532 |
log.info("MyLS::fetchSharedProjectsDirList(): Exception when trying to get owner id for tmpCoreDir = " + tmpCoreDir + " : " + e); |
3469 |
02 Nov 09 |
olle |
1533 |
useSharedDirectory = false; |
3469 |
02 Nov 09 |
olle |
1534 |
} |
3469 |
02 Nov 09 |
olle |
//log.info("MyLS::fetchSharedProjectsDirList(): tmpCoreDir = " + tmpCoreDir + " tmpCoreDirOwnerId = " + tmpCoreDirOwnerId); |
3469 |
02 Nov 09 |
olle |
1536 |
if (dirOwnerId > 0 && tmpCoreDirOwnerId > 0 && tmpCoreDirOwnerId == dirOwnerId) |
3469 |
02 Nov 09 |
olle |
1537 |
{ |
3469 |
02 Nov 09 |
olle |
1538 |
useSharedDirectory = false; |
3469 |
02 Nov 09 |
olle |
1539 |
} |
3469 |
02 Nov 09 |
olle |
//log.info("MyLS::fetchSharedProjectsDirList(): tmpCoreDir = " + tmpCoreDir + " useSharedDirectory = " + useSharedDirectory); |
3469 |
02 Nov 09 |
olle |
1541 |
// |
3469 |
02 Nov 09 |
olle |
1542 |
if (useSharedDirectory) |
3469 |
02 Nov 09 |
olle |
1543 |
{ |
3469 |
02 Nov 09 |
olle |
// Add shared directory to list |
3469 |
02 Nov 09 |
olle |
1545 |
try |
3469 |
02 Nov 09 |
olle |
1546 |
{ |
3469 |
02 Nov 09 |
olle |
1547 |
dirList.add(tmpCoreDir); |
3469 |
02 Nov 09 |
olle |
1548 |
} |
3469 |
02 Nov 09 |
olle |
1549 |
catch (Exception e) |
3469 |
02 Nov 09 |
olle |
1550 |
{ |
3469 |
02 Nov 09 |
olle |
1551 |
log.info("MyLS::fetchSharedProjectsDirList(): Exception when trying to execute dirList.add(tmpCoreDir): " + e); |
3469 |
02 Nov 09 |
olle |
1552 |
} |
3469 |
02 Nov 09 |
olle |
1553 |
} |
3469 |
02 Nov 09 |
olle |
//log.info("MyLS::fetchSharedProjectsDirList(): (1) dirList.size() = " + dirList.size()); |
3469 |
02 Nov 09 |
olle |
1555 |
} |
3469 |
02 Nov 09 |
olle |
1556 |
} |
3469 |
02 Nov 09 |
olle |
1557 |
log.info("MyLS::fetchSharedProjectsDirList(): dirList.size() = " + dirList.size()); |
3469 |
02 Nov 09 |
olle |
1558 |
return dirList; |
3469 |
02 Nov 09 |
olle |
1559 |
} |
3469 |
02 Nov 09 |
olle |
1560 |
|
3469 |
02 Nov 09 |
olle |
1561 |
|
3469 |
02 Nov 09 |
olle |
1562 |
/** |
3469 |
02 Nov 09 |
olle |
* Fetches the absolute path of shared projects directory |
3469 |
02 Nov 09 |
olle |
* given the input directory path. |
3469 |
02 Nov 09 |
olle |
* Method not in the original Xerver code. |
3469 |
02 Nov 09 |
olle |
1566 |
* |
3469 |
02 Nov 09 |
olle |
* @param inputDirPath String The path of the shared projects directory to find absolute path for. |
3469 |
02 Nov 09 |
olle |
* @return String The absolute path of the input shared projects directory, or null if not found. |
3469 |
02 Nov 09 |
olle |
1569 |
*/ |
3469 |
02 Nov 09 |
olle |
1570 |
public String fetchSharedProjectsDirectoryPath(String inputDirPath) |
3469 |
02 Nov 09 |
olle |
1571 |
{ |
3469 |
02 Nov 09 |
olle |
// *** Debug Info |
3469 |
02 Nov 09 |
olle |
1573 |
log.info("MyLS::fetchSharedProjectsDirectoryPath(): Start - inputDirPath = \"" + inputDirPath + "\" isInSharedProjectsFolder() = " + isInSharedProjectsFolder()); |
3469 |
02 Nov 09 |
olle |
1574 |
/* |
3469 |
02 Nov 09 |
olle |
* Note: Input path might be e.g. |
3469 |
02 Nov 09 |
olle |
* "Demo2_Shared_Directory1", |
3469 |
02 Nov 09 |
olle |
* "/_Shared_Projects/Demo2_Shared_Directory1", |
3469 |
02 Nov 09 |
olle |
* "/_Shared_Projects/Demo2_Shared_Directory1/Cool_Stuff", |
3469 |
02 Nov 09 |
olle |
* where "Demo2_Shared_Directory1" is a project directory |
3469 |
02 Nov 09 |
olle |
* for another user than the current one corresponding |
3469 |
02 Nov 09 |
olle |
* to the shared projects directory. |
3469 |
02 Nov 09 |
olle |
1582 |
*/ |
3469 |
02 Nov 09 |
olle |
1583 |
if (inputDirPath == null) |
3469 |
02 Nov 09 |
olle |
1584 |
{ |
3469 |
02 Nov 09 |
olle |
1585 |
return null; |
3469 |
02 Nov 09 |
olle |
1586 |
} |
3469 |
02 Nov 09 |
olle |
1587 |
String dirPath = new String(inputDirPath); |
3469 |
02 Nov 09 |
olle |
// Remove ending separator from directory path |
3469 |
02 Nov 09 |
olle |
1589 |
if (dirPath.endsWith(coreSeparator)) |
3469 |
02 Nov 09 |
olle |
1590 |
{ |
3469 |
02 Nov 09 |
olle |
1591 |
dirPath = dirPath.substring(0, dirPath.length() - 1); |
3469 |
02 Nov 09 |
olle |
1592 |
} |
3469 |
02 Nov 09 |
olle |
1593 |
log.info("MyLS::fetchSharedProjectsDirectoryPath(): dirPath = \"" + dirPath + "\""); |
3469 |
02 Nov 09 |
olle |
// Remove starting shared projects folder from directory path |
3469 |
02 Nov 09 |
olle |
1595 |
String sharedProjectsTestStr = new String(sharedProjectsFolderName + coreSeparator); |
3469 |
02 Nov 09 |
olle |
1596 |
int sharedProjectsIndex = dirPath.indexOf(sharedProjectsTestStr); |
3469 |
02 Nov 09 |
olle |
1597 |
if (sharedProjectsIndex >= 0) |
3469 |
02 Nov 09 |
olle |
1598 |
{ |
3469 |
02 Nov 09 |
olle |
1599 |
dirPath = dirPath.substring(sharedProjectsIndex + sharedProjectsTestStr.length()); |
3469 |
02 Nov 09 |
olle |
1600 |
} |
3469 |
02 Nov 09 |
olle |
1601 |
log.info("MyLS::fetchSharedProjectsDirectoryPath(): dirPath = \"" + dirPath + "\""); |
3469 |
02 Nov 09 |
olle |
// Get project directory name |
3469 |
02 Nov 09 |
olle |
1603 |
String dirName = new String(dirPath); |
3469 |
02 Nov 09 |
olle |
1604 |
String subDirPath = null; |
3469 |
02 Nov 09 |
olle |
1605 |
int separatorIndex = dirName.indexOf(coreSeparator); |
3469 |
02 Nov 09 |
olle |
1606 |
if (separatorIndex >= 0) |
3469 |
02 Nov 09 |
olle |
1607 |
{ |
3469 |
02 Nov 09 |
olle |
1608 |
dirName = dirPath.substring(0, separatorIndex); |
3469 |
02 Nov 09 |
olle |
1609 |
subDirPath = dirPath.substring(separatorIndex); |
3469 |
02 Nov 09 |
olle |
1610 |
} |
3469 |
02 Nov 09 |
olle |
1611 |
log.info("MyLS::fetchSharedProjectsDirectoryPath(): dirPath = \"" + dirPath + "\" dirName = \"" + dirName + "\" subDirPath = \"" + subDirPath + "\""); |
3469 |
02 Nov 09 |
olle |
1612 |
// |
3469 |
02 Nov 09 |
olle |
1613 |
DbControl dc = getSessionControl().newDbControl(); |
3469 |
02 Nov 09 |
olle |
1614 |
log.info("MyLS::fetchSharedProjectsDirectoryPath(): coreDir = " + coreDir); |
3469 |
02 Nov 09 |
olle |
1615 |
// |
3469 |
02 Nov 09 |
olle |
// Get list of project directories for shared projects |
3469 |
02 Nov 09 |
olle |
1617 |
List<org.proteios.core.Directory> sharedProjectsDirList = fetchSharedProjectsDirList(dc, coreDir); |
3469 |
02 Nov 09 |
olle |
1618 |
int nDirs = sharedProjectsDirList.size(); |
3469 |
02 Nov 09 |
olle |
1619 |
log.info("MyLS::fetchSharedProjectsDirectoryPath(): nDirs = " + nDirs); |
3469 |
02 Nov 09 |
olle |
1620 |
String sharedProjectsDirPath = null; |
3469 |
02 Nov 09 |
olle |
1621 |
// |
3469 |
02 Nov 09 |
olle |
1622 |
for (int i = 0; i < nDirs; i++) |
3469 |
02 Nov 09 |
olle |
1623 |
{ |
3469 |
02 Nov 09 |
olle |
1624 |
org.proteios.core.Directory tmpCoreDir = (org.proteios.core.Directory) sharedProjectsDirList |
3469 |
02 Nov 09 |
olle |
1625 |
.get(i); |
3469 |
02 Nov 09 |
olle |
1626 |
if (dirName != null && tmpCoreDir != null && dirName.equals(tmpCoreDir.getName())) |
3469 |
02 Nov 09 |
olle |
1627 |
{ |
3469 |
02 Nov 09 |
olle |
1628 |
sharedProjectsDirPath = tmpCoreDir.getPath().toString(); |
3469 |
02 Nov 09 |
olle |
1629 |
break; |
3469 |
02 Nov 09 |
olle |
1630 |
} |
3469 |
02 Nov 09 |
olle |
1631 |
} |
3469 |
02 Nov 09 |
olle |
1632 |
log.info("MyLS::fetchSharedProjectsDirectoryPath(): dirPath = \"" + dirPath + "\" dirName = \"" + dirName + "\" subDirPath = \"" + subDirPath + "\" sharedProjectsDirPath = \"" + sharedProjectsDirPath + "\""); |
3469 |
02 Nov 09 |
olle |
// Add optional sub-directory path |
3469 |
02 Nov 09 |
olle |
1634 |
if (sharedProjectsDirPath != null && subDirPath != null) |
3469 |
02 Nov 09 |
olle |
1635 |
{ |
3469 |
02 Nov 09 |
olle |
1636 |
sharedProjectsDirPath = sharedProjectsDirPath + subDirPath; |
3469 |
02 Nov 09 |
olle |
1637 |
} |
3469 |
02 Nov 09 |
olle |
// Close DbControl. |
3469 |
02 Nov 09 |
olle |
1639 |
dc.close(); |
3469 |
02 Nov 09 |
olle |
1640 |
// |
3469 |
02 Nov 09 |
olle |
1641 |
log.info("MyLS::fetchSharedProjectsDirectoryPath(): dirPath = \"" + dirPath + "\" dirName = \"" + dirName + "\" subDirPath = \"" + subDirPath + "\" sharedProjectsDirPath = \"" + sharedProjectsDirPath + "\""); |
3469 |
02 Nov 09 |
olle |
1642 |
return sharedProjectsDirPath; |
3469 |
02 Nov 09 |
olle |
1643 |
} |
3469 |
02 Nov 09 |
olle |
1644 |
|
3469 |
02 Nov 09 |
olle |
1645 |
|
3469 |
02 Nov 09 |
olle |
1646 |
/** |
3458 |
23 Oct 09 |
olle |
* Fetch full list of directories, including shared, to a parent directory. |
3458 |
23 Oct 09 |
olle |
* Method not in the original Xerver code. |
3458 |
23 Oct 09 |
olle |
1649 |
* |
3458 |
23 Oct 09 |
olle |
* @param dc DbControl The DbControl to use. |
3458 |
23 Oct 09 |
olle |
* @param dir org.proteios.core.Directory The directory to get sub-directories and shared directories for. |
3458 |
23 Oct 09 |
olle |
* @param includeRemoved boolean Flag indicating if removed files should be included. |
3458 |
23 Oct 09 |
olle |
* @return List<org.proteios.core.Directory> A list of core directories in input directory. |
3458 |
23 Oct 09 |
olle |
1654 |
*/ |
3458 |
23 Oct 09 |
olle |
1655 |
private List<org.proteios.core.Directory> fetchFullDirList(DbControl dc, org.proteios.core.Directory dir, boolean includeRemoved) |
3458 |
23 Oct 09 |
olle |
1656 |
{ |
3458 |
23 Oct 09 |
olle |
1657 |
log.info("MyLS::fetchFullDirList(): Start - dir = " + dir + " includeRemoved = " + includeRemoved); |
3458 |
23 Oct 09 |
olle |
1658 |
List<org.proteios.core.Directory> dirList = fetchOwnDirList(dc, dir, includeRemoved); |
3466 |
28 Oct 09 |
olle |
1659 |
List<org.proteios.core.Directory> sharedDirList = fetchSharedDirList(dc, dir, dirList); |
3458 |
23 Oct 09 |
olle |
1660 |
log.info("MyLS::fetchFullDirList(): (1) dirList.size() = " + dirList.size()); |
3458 |
23 Oct 09 |
olle |
1661 |
log.info("MyLS::fetchFullDirList(): (1) sharedDirList.size() = " + sharedDirList.size()); |
3458 |
23 Oct 09 |
olle |
1662 |
for (int i=0; i < sharedDirList.size(); i++) |
3458 |
23 Oct 09 |
olle |
1663 |
{ |
3458 |
23 Oct 09 |
olle |
1664 |
org.proteios.core.Directory tmpCoreDir = |
3458 |
23 Oct 09 |
olle |
1665 |
(org.proteios.core.Directory) sharedDirList.get(i); |
3458 |
23 Oct 09 |
olle |
1666 |
try |
3458 |
23 Oct 09 |
olle |
1667 |
{ |
3458 |
23 Oct 09 |
olle |
1668 |
dirList.add(tmpCoreDir); |
3458 |
23 Oct 09 |
olle |
1669 |
} |
3458 |
23 Oct 09 |
olle |
1670 |
catch (Exception e) |
3458 |
23 Oct 09 |
olle |
1671 |
{ |
3458 |
23 Oct 09 |
olle |
1672 |
log.info("MyLS::fetchFullDirList(): Exception when trying to execute dirList.add(tmpCoreDir): " + e); |
3458 |
23 Oct 09 |
olle |
1673 |
} |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchFullDirList(): (1) dirList.size() = " + dirList.size()); |
3458 |
23 Oct 09 |
olle |
1675 |
} |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchFullDirList(): dirList.size() = " + dirList.size()); |
3458 |
23 Oct 09 |
olle |
1677 |
return dirList; |
3458 |
23 Oct 09 |
olle |
1678 |
} |
3458 |
23 Oct 09 |
olle |
1679 |
|
3458 |
23 Oct 09 |
olle |
1680 |
|
3458 |
23 Oct 09 |
olle |
1681 |
/** |
3458 |
23 Oct 09 |
olle |
* Fetches an ItemQuery for obtaining directories |
3458 |
23 Oct 09 |
olle |
* shared to an input directory. |
3458 |
23 Oct 09 |
olle |
* Method not in the original Xerver code. |
3458 |
23 Oct 09 |
olle |
1685 |
* |
3458 |
23 Oct 09 |
olle |
* @param dc DbControl The DbControl to use. |
3458 |
23 Oct 09 |
olle |
* @param dir org.proteios.core.Directory The directory to get sub-directories and shared directories for. |
3518 |
09 Dec 09 |
olle |
* @return ItemQuery<org.proteios.core.Directory> A query for obtaining directories shared to the input directory. |
3458 |
23 Oct 09 |
olle |
1689 |
*/ |
3518 |
09 Dec 09 |
olle |
1690 |
private ItemQuery<org.proteios.core.Directory> fetchSharedDirectoryQuery(DbControl dc, org.proteios.core.Directory dir) |
3458 |
23 Oct 09 |
olle |
1691 |
{ |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirectoryQuery(): dir = " + dir); |
3458 |
23 Oct 09 |
olle |
1693 |
if (dc == null || dir == null) |
3458 |
23 Oct 09 |
olle |
1694 |
{ |
3458 |
23 Oct 09 |
olle |
1695 |
return null; |
3458 |
23 Oct 09 |
olle |
1696 |
} |
3458 |
23 Oct 09 |
olle |
// DbControl used to create directory may have been closed |
3458 |
23 Oct 09 |
olle |
1698 |
try |
3458 |
23 Oct 09 |
olle |
1699 |
{ |
3458 |
23 Oct 09 |
olle |
1700 |
DbControl tmpDc = dir.getDbControl(); |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirectoryQuery(): dir.getDbControl() = " + tmpDc); |
3458 |
23 Oct 09 |
olle |
1702 |
} |
3458 |
23 Oct 09 |
olle |
1703 |
catch (Exception e) |
3458 |
23 Oct 09 |
olle |
1704 |
{ |
3458 |
23 Oct 09 |
olle |
// Create new instance of directory |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirectoryQuery(): Exception when executing dir.getDbControl(): " + e); |
3458 |
23 Oct 09 |
olle |
1707 |
int dirId = dir.getId(); |
3458 |
23 Oct 09 |
olle |
//log.info("MyLS::fetchSharedDirectoryQuery(): dirId = " + dirId); |
3458 |
23 Oct 09 |
olle |
1709 |
ItemFactory factory = new ItemFactory(dc); |
3458 |
23 Oct 09 |
olle |
1710 |
dir = factory.getById(org.proteios.core.Directory.class, dirId); |
3458 |
23 Oct 09 |
olle |
1711 |
} |
3458 |
23 Oct 09 |
olle |
1712 |
// |
3458 |
23 Oct 09 |
olle |
1713 |
ItemQuery<org.proteios.core.Directory> query = null; |
3467 |
28 Oct 09 |
olle |
1714 |
boolean directoryIsProjectDirectory = directoryIsProjectDirectory(dir); |
3467 |
28 Oct 09 |
olle |
1715 |
if (directoryIsProjectDirectory) |
3458 |
23 Oct 09 |
olle |
1716 |
{ |
3458 |
23 Oct 09 |
olle |
1717 |
dir.getProjectKey(); |
3458 |
23 Oct 09 |
olle |
1718 |
QueryFactory qf = new QueryFactory(); |
3458 |
23 Oct 09 |
olle |
1719 |
query = qf.select(org.proteios.core.Directory.class); |
3458 |
23 Oct 09 |
olle |
1720 |
query.exclude(Include.MINE); |
3458 |
23 Oct 09 |
olle |
1721 |
query.include(Include.IN_PROJECT); |
3458 |
23 Oct 09 |
olle |
1722 |
List<org.proteios.core.Directory> allDirs = query.list(dc); |
3458 |
23 Oct 09 |
olle |
1723 |
List<Integer> excludeDirs = new ArrayList<Integer>(); |
3458 |
23 Oct 09 |
olle |
1724 |
boolean use = false; |
3458 |
23 Oct 09 |
olle |
// Only list the top directories, do not include the |
3458 |
23 Oct 09 |
olle |
// current directory or directories with it as parent. |
3458 |
23 Oct 09 |
olle |
1727 |
for (org.proteios.core.Directory currentDir : allDirs) |
3458 |
23 Oct 09 |
olle |
1728 |
{ |
3458 |
23 Oct 09 |
olle |
1729 |
if (!allDirs.contains(currentDir.getParent()) && |
3458 |
23 Oct 09 |
olle |
1730 |
!currentDir.equals(dir) && !currentDir.getParent().equals(dir)) |
3458 |
23 Oct 09 |
olle |
1731 |
{ |
3458 |
23 Oct 09 |
olle |
//log.debug("Included dir: " + currentDir.getName()); |
3458 |
23 Oct 09 |
olle |
1733 |
use = true; |
3458 |
23 Oct 09 |
olle |
1734 |
} |
3458 |
23 Oct 09 |
olle |
1735 |
else |
3458 |
23 Oct 09 |
olle |
1736 |
{ |
3458 |
23 Oct 09 |
olle |
1737 |
excludeDirs.add(currentDir.getId()); |
3458 |
23 Oct 09 |
olle |
//log.debug("Excluded dir: " + currentDir.getName()); |
3458 |
23 Oct 09 |
olle |
1739 |
} |
3458 |
23 Oct 09 |
olle |
1740 |
} |
3458 |
23 Oct 09 |
olle |
1741 |
query.reset(); |
3458 |
23 Oct 09 |
olle |
// Add directories if there are any |
3458 |
23 Oct 09 |
olle |
1743 |
if (use) |
3458 |
23 Oct 09 |
olle |
1744 |
{ |
3458 |
23 Oct 09 |
olle |
1745 |
for (Integer id : excludeDirs) |
3458 |
23 Oct 09 |
olle |
1746 |
{ |
3458 |
23 Oct 09 |
olle |
1747 |
query.restrict(Restrictions.neq(Hql.property("id"), |
3458 |
23 Oct 09 |
olle |
1748 |
Expressions.integer(id.intValue()))); |
3458 |
23 Oct 09 |
olle |
1749 |
} |
3458 |
23 Oct 09 |
olle |
1750 |
} |
3458 |
23 Oct 09 |
olle |
1751 |
} |
3458 |
23 Oct 09 |
olle |
1752 |
return query; |
3458 |
23 Oct 09 |
olle |
1753 |
} |
3458 |
23 Oct 09 |
olle |
1754 |
|
3458 |
23 Oct 09 |
olle |
1755 |
|
3464 |
26 Oct 09 |
olle |
1756 |
/** |
3467 |
28 Oct 09 |
olle |
* Checks if core directory is project directory. |
3467 |
28 Oct 09 |
olle |
1758 |
* |
3467 |
28 Oct 09 |
olle |
* @param dir org.proteios.core.Directory The core directory to check. |
3467 |
28 Oct 09 |
olle |
* @return boolean Returns true if the core directory is a project directory, else false. |
3467 |
28 Oct 09 |
olle |
1761 |
*/ |
3467 |
28 Oct 09 |
olle |
1762 |
private boolean directoryIsProjectDirectory(org.proteios.core.Directory dir) |
3467 |
28 Oct 09 |
olle |
1763 |
{ |
3467 |
28 Oct 09 |
olle |
1764 |
boolean directoryIsProjectDirectoryFlag = false; |
3467 |
28 Oct 09 |
olle |
// DbControl used to create directory may have been closed |
3467 |
28 Oct 09 |
olle |
1766 |
try |
3467 |
28 Oct 09 |
olle |
1767 |
{ |
3467 |
28 Oct 09 |
olle |
1768 |
directoryIsProjectDirectoryFlag = dir.isProjectDirectory(); |
3467 |
28 Oct 09 |
olle |
//log.info("MyLS::directoryIsProjectDirectory(): dir.isProjectDirectory() = " + directoryIsProjectDirectoryFlag); |
3467 |
28 Oct 09 |
olle |
1770 |
} |
3467 |
28 Oct 09 |
olle |
1771 |
catch (Exception e) |
3467 |
28 Oct 09 |
olle |
1772 |
{ |
3467 |
28 Oct 09 |
olle |
//log.info("MyLS::directoryIsProjectDirectory(): Exception when executing dir.isProjectDirectory(): " + e); |
3467 |
28 Oct 09 |
olle |
1774 |
} |
3467 |
28 Oct 09 |
olle |
1775 |
return directoryIsProjectDirectoryFlag; |
3467 |
28 Oct 09 |
olle |
1776 |
} |
3467 |
28 Oct 09 |
olle |
1777 |
|
3467 |
28 Oct 09 |
olle |
1778 |
|
3467 |
28 Oct 09 |
olle |
1779 |
/** |
3464 |
26 Oct 09 |
olle |
* Checks if a directory name corresponds to a shared |
3464 |
26 Oct 09 |
olle |
* directory for an input project directory, and if so, |
3464 |
26 Oct 09 |
olle |
* returns the absolute core path of the shared directory, else null. |
3464 |
26 Oct 09 |
olle |
* Method not in the original Xerver code. |
3464 |
26 Oct 09 |
olle |
1784 |
* |
3464 |
26 Oct 09 |
olle |
* @param parentDirPath String Path to directory to which a directory may be shared. |
3464 |
26 Oct 09 |
olle |
* @param sharedDirName String Name of potential shared directory. |
3464 |
26 Oct 09 |
olle |
* @return String Return the absolute core path of a shared directory. |
3464 |
26 Oct 09 |
olle |
1788 |
*/ |
3464 |
26 Oct 09 |
olle |
1789 |
public String fetchSharedDirectoryAbsoluteCorePath(String parentDirPath, String sharedDirName) |
3464 |
26 Oct 09 |
olle |
1790 |
{ |
3464 |
26 Oct 09 |
olle |
// *** Debug Info |
3464 |
26 Oct 09 |
olle |
1792 |
log.info("MyLS::fetchSharedDirectoryAbsoluteCorePath(): Start - parentDirPath = \"" + parentDirPath + "\" sharedDirName = \"" + sharedDirName + "\""); |
3464 |
26 Oct 09 |
olle |
1793 |
if (!isValidCoreDirectory(parentDirPath)) |
3464 |
26 Oct 09 |
olle |
1794 |
{ |
3464 |
26 Oct 09 |
olle |
// Path is not valid core directory, return null |
3464 |
26 Oct 09 |
olle |
1796 |
return null; |
3464 |
26 Oct 09 |
olle |
1797 |
} |
3464 |
26 Oct 09 |
olle |
1798 |
if (sharedDirName == null || sharedDirName.equals("")) |
3464 |
26 Oct 09 |
olle |
1799 |
{ |
3464 |
26 Oct 09 |
olle |
1800 |
return null; |
3464 |
26 Oct 09 |
olle |
1801 |
} |
3464 |
26 Oct 09 |
olle |
1802 |
DbControl dc = getSessionControl().newDbControl(); |
3464 |
26 Oct 09 |
olle |
1803 |
ItemFactory factory = new ItemFactory(dc); |
3464 |
26 Oct 09 |
olle |
1804 |
org.proteios.core.Directory parentCoreDir = null; |
3464 |
26 Oct 09 |
olle |
1805 |
try |
3464 |
26 Oct 09 |
olle |
1806 |
{ |
3464 |
26 Oct 09 |
olle |
1807 |
org.proteios.core.Path parentCoreDirPath = new org.proteios.core.Path( |
3464 |
26 Oct 09 |
olle |
1808 |
parentDirPath, Type.DIRECTORY); |
3464 |
26 Oct 09 |
olle |
1809 |
parentCoreDir = factory.getByPath(parentCoreDirPath); |
3464 |
26 Oct 09 |
olle |
1810 |
if (parentCoreDir.isRemoved()) |
3464 |
26 Oct 09 |
olle |
1811 |
{ |
3464 |
26 Oct 09 |
olle |
1812 |
log.info("MyLS::fetchSharedDirectoryAbsoluteCorePath(): Directory for path \"" + parentDirPath + "\" is removed."); |
3464 |
26 Oct 09 |
olle |
1813 |
parentCoreDir = null; |
3464 |
26 Oct 09 |
olle |
1814 |
} |
3464 |
26 Oct 09 |
olle |
1815 |
} |
3464 |
26 Oct 09 |
olle |
1816 |
catch (Exception e) |
3464 |
26 Oct 09 |
olle |
1817 |
{ |
3464 |
26 Oct 09 |
olle |
1818 |
log.info("MyLS::fetchSharedDirectoryAbsoluteCorePath(): Exception when trying to get directory for path \"" + parentDirPath + "\": " + e); |
3464 |
26 Oct 09 |
olle |
1819 |
} |
3464 |
26 Oct 09 |
olle |
1820 |
if (parentCoreDir == null) |
3464 |
26 Oct 09 |
olle |
1821 |
{ |
3464 |
26 Oct 09 |
olle |
1822 |
return null; |
3464 |
26 Oct 09 |
olle |
1823 |
} |
3464 |
26 Oct 09 |
olle |
1824 |
log.info("MyLS::fetchSharedDirectoryAbsoluteCorePath(): parentCoreDir = " + parentCoreDir); |
3464 |
26 Oct 09 |
olle |
1825 |
// |
3464 |
26 Oct 09 |
olle |
// Get list of directories shared to input directory |
3464 |
26 Oct 09 |
olle |
1827 |
List<org.proteios.core.Directory> sharedDirList = fetchSharedDirList(dc, parentCoreDir); |
3464 |
26 Oct 09 |
olle |
1828 |
int nSharedDirs = sharedDirList.size(); |
3464 |
26 Oct 09 |
olle |
1829 |
log.info("MyLS::fetchSharedDirectoryAbsoluteCorePath(): nSharedDirs = " + nSharedDirs); |
3464 |
26 Oct 09 |
olle |
1830 |
// |
3464 |
26 Oct 09 |
olle |
// Check if input directory name is in list of shared directories |
3464 |
26 Oct 09 |
olle |
1832 |
String sharedDirPath = null; |
3464 |
26 Oct 09 |
olle |
1833 |
for (int i = 0; i < nSharedDirs; i++) |
3464 |
26 Oct 09 |
olle |
1834 |
{ |
3464 |
26 Oct 09 |
olle |
1835 |
org.proteios.core.Directory tmpCoreDir = |
3464 |
26 Oct 09 |
olle |
1836 |
(org.proteios.core.Directory) sharedDirList.get(i); |
3464 |
26 Oct 09 |
olle |
1837 |
log.info("MyLS::fetchSharedDirectoryAbsoluteCorePath(): tmpCoreDir = " + tmpCoreDir); |
3464 |
26 Oct 09 |
olle |
1838 |
if (tmpCoreDir.getName().equals(sharedDirName)) |
3464 |
26 Oct 09 |
olle |
1839 |
{ |
3464 |
26 Oct 09 |
olle |
1840 |
sharedDirPath = tmpCoreDir.getPath().toString(); |
3464 |
26 Oct 09 |
olle |
1841 |
break; |
3464 |
26 Oct 09 |
olle |
1842 |
} |
3464 |
26 Oct 09 |
olle |
1843 |
} |
3464 |
26 Oct 09 |
olle |
1844 |
log.info("MyLS::fetchSharedDirectoryAbsoluteCorePath(): sharedDirPath = \"" + sharedDirPath + "\""); |
3464 |
26 Oct 09 |
olle |
1845 |
return sharedDirPath; |
3464 |
26 Oct 09 |
olle |
1846 |
} |
3464 |
26 Oct 09 |
olle |
1847 |
|
3464 |
26 Oct 09 |
olle |
1848 |
|
1656 |
22 May 07 |
gregory |
1849 |
public String monthAbbr(int m) |
1656 |
22 May 07 |
gregory |
1850 |
{ |
1650 |
21 May 07 |
olle |
1851 |
String result = null; |
1656 |
22 May 07 |
gregory |
1852 |
if (m == 1) |
1656 |
22 May 07 |
gregory |
1853 |
{ |
1650 |
21 May 07 |
olle |
1854 |
result = new String("Jan"); |
1656 |
22 May 07 |
gregory |
1855 |
} |
1656 |
22 May 07 |
gregory |
1856 |
else if (m == 2) |
1656 |
22 May 07 |
gregory |
1857 |
{ |
1650 |
21 May 07 |
olle |
1858 |
result = new String("Feb"); |
1656 |
22 May 07 |
gregory |
1859 |
} |
1656 |
22 May 07 |
gregory |
1860 |
else if (m == 3) |
1656 |
22 May 07 |
gregory |
1861 |
{ |
1650 |
21 May 07 |
olle |
1862 |
result = new String("Mar"); |
1656 |
22 May 07 |
gregory |
1863 |
} |
1656 |
22 May 07 |
gregory |
1864 |
else if (m == 4) |
1656 |
22 May 07 |
gregory |
1865 |
{ |
1650 |
21 May 07 |
olle |
1866 |
result = new String("Apr"); |
1656 |
22 May 07 |
gregory |
1867 |
} |
1656 |
22 May 07 |
gregory |
1868 |
else if (m == 5) |
1656 |
22 May 07 |
gregory |
1869 |
{ |
1650 |
21 May 07 |
olle |
1870 |
result = new String("May"); |
1656 |
22 May 07 |
gregory |
1871 |
} |
1656 |
22 May 07 |
gregory |
1872 |
else if (m == 6) |
1656 |
22 May 07 |
gregory |
1873 |
{ |
1650 |
21 May 07 |
olle |
1874 |
result = new String("Jun"); |
1656 |
22 May 07 |
gregory |
1875 |
} |
1656 |
22 May 07 |
gregory |
1876 |
else if (m == 7) |
1656 |
22 May 07 |
gregory |
1877 |
{ |
1650 |
21 May 07 |
olle |
1878 |
result = new String("Jul"); |
1656 |
22 May 07 |
gregory |
1879 |
} |
1656 |
22 May 07 |
gregory |
1880 |
else if (m == 8) |
1656 |
22 May 07 |
gregory |
1881 |
{ |
1650 |
21 May 07 |
olle |
1882 |
result = new String("Aug"); |
1656 |
22 May 07 |
gregory |
1883 |
} |
1656 |
22 May 07 |
gregory |
1884 |
else if (m == 9) |
1656 |
22 May 07 |
gregory |
1885 |
{ |
1650 |
21 May 07 |
olle |
1886 |
result = new String("Sep"); |
1656 |
22 May 07 |
gregory |
1887 |
} |
1656 |
22 May 07 |
gregory |
1888 |
else if (m == 10) |
1656 |
22 May 07 |
gregory |
1889 |
{ |
1650 |
21 May 07 |
olle |
1890 |
result = new String("Oct"); |
1656 |
22 May 07 |
gregory |
1891 |
} |
1656 |
22 May 07 |
gregory |
1892 |
else if (m == 11) |
1656 |
22 May 07 |
gregory |
1893 |
{ |
1650 |
21 May 07 |
olle |
1894 |
result = new String("Nov"); |
1656 |
22 May 07 |
gregory |
1895 |
} |
1656 |
22 May 07 |
gregory |
1896 |
else if (m == 12) |
1656 |
22 May 07 |
gregory |
1897 |
{ |
1650 |
21 May 07 |
olle |
1898 |
result = new String("Dec"); |
1650 |
21 May 07 |
olle |
1899 |
} |
1650 |
21 May 07 |
olle |
1900 |
return result; |
1650 |
21 May 07 |
olle |
1901 |
} |
1652 |
22 May 07 |
gregory |
1902 |
|
1656 |
22 May 07 |
gregory |
1903 |
|
1656 |
22 May 07 |
gregory |
1904 |
public boolean isYearOld(Date date) |
1656 |
22 May 07 |
gregory |
1905 |
{ |
1650 |
21 May 07 |
olle |
1906 |
MyGregorianCalendar tmpDate = new MyGregorianCalendar(); |
1650 |
21 May 07 |
olle |
1907 |
int hour_today, min_today, sec_today, year_today, day_today, mon_today, am_pm_today; |
1650 |
21 May 07 |
olle |
1908 |
int hour, minute, sec, year, day, month, length, am_pm; |
1650 |
21 May 07 |
olle |
1909 |
boolean result = false; |
1650 |
21 May 07 |
olle |
1910 |
/* |
1650 |
21 May 07 |
olle |
* Get today's date |
1650 |
21 May 07 |
olle |
1912 |
*/ |
1650 |
21 May 07 |
olle |
1913 |
Date today = new Date(); |
1650 |
21 May 07 |
olle |
1914 |
tmpDate.mySetTimeInMillis(today.getTime()); |
1650 |
21 May 07 |
olle |
1915 |
hour_today = tmpDate.get(GregorianCalendar.HOUR); |
1650 |
21 May 07 |
olle |
1916 |
min_today = tmpDate.get(GregorianCalendar.MINUTE); |
1650 |
21 May 07 |
olle |
1917 |
day_today = tmpDate.get(GregorianCalendar.DAY_OF_MONTH); |
1650 |
21 May 07 |
olle |
1918 |
mon_today = tmpDate.get(GregorianCalendar.MONTH); |
1650 |
21 May 07 |
olle |
1919 |
year_today = tmpDate.get(GregorianCalendar.YEAR); |
1650 |
21 May 07 |
olle |
1920 |
am_pm_today = tmpDate.get(GregorianCalendar.AM_PM); |
1650 |
21 May 07 |
olle |
1921 |
mon_today++; |
1656 |
22 May 07 |
gregory |
1922 |
if (hour_today < 12 && am_pm_today == GregorianCalendar.PM) |
1656 |
22 May 07 |
gregory |
1923 |
{ |
1650 |
21 May 07 |
olle |
1924 |
hour_today = hour_today + 12; |
1650 |
21 May 07 |
olle |
1925 |
} |
1650 |
21 May 07 |
olle |
1926 |
/* |
1650 |
21 May 07 |
olle |
* Parse comparison date |
1650 |
21 May 07 |
olle |
1928 |
*/ |
1650 |
21 May 07 |
olle |
1929 |
tmpDate.mySetTimeInMillis(date.getTime()); |
1650 |
21 May 07 |
olle |
1930 |
hour = tmpDate.get(GregorianCalendar.HOUR); |
1650 |
21 May 07 |
olle |
1931 |
minute = tmpDate.get(GregorianCalendar.MINUTE); |
1650 |
21 May 07 |
olle |
1932 |
day = tmpDate.get(GregorianCalendar.DAY_OF_MONTH); |
1650 |
21 May 07 |
olle |
1933 |
month = tmpDate.get(GregorianCalendar.MONTH); |
1650 |
21 May 07 |
olle |
1934 |
year = tmpDate.get(GregorianCalendar.YEAR); |
1650 |
21 May 07 |
olle |
1935 |
am_pm = tmpDate.get(GregorianCalendar.AM_PM); |
1650 |
21 May 07 |
olle |
1936 |
month++; |
1656 |
22 May 07 |
gregory |
1937 |
if (hour < 12 && am_pm == GregorianCalendar.PM) |
1656 |
22 May 07 |
gregory |
1938 |
{ |
1650 |
21 May 07 |
olle |
1939 |
hour = hour + 12; |
1650 |
21 May 07 |
olle |
1940 |
} |
1650 |
21 May 07 |
olle |
1941 |
/* |
1650 |
21 May 07 |
olle |
* Check if date is a year old |
1650 |
21 May 07 |
olle |
1943 |
*/ |
1690 |
29 May 07 |
olle |
//log |
1690 |
29 May 07 |
olle |
// .debug("MyLS::isYearOld(): Today: year = " + year_today + " mon = " + mon_today + " day = " + day_today + " hour = " + hour_today + " min = " + min_today); |
1690 |
29 May 07 |
olle |
//log |
1690 |
29 May 07 |
olle |
// .debug("MyLS::isYearOld(): Input: year = " + year + " mon = " + month + " day = " + day + " hour = " + hour + " min = " + minute); |
1656 |
22 May 07 |
gregory |
1948 |
if (year_today - year == 0) |
1656 |
22 May 07 |
gregory |
1949 |
{ |
1650 |
21 May 07 |
olle |
1950 |
result = false; |
1656 |
22 May 07 |
gregory |
1951 |
} |
1656 |
22 May 07 |
gregory |
1952 |
else if (year_today - year > 1) |
1656 |
22 May 07 |
gregory |
1953 |
{ |
1650 |
21 May 07 |
olle |
1954 |
result = true; |
1656 |
22 May 07 |
gregory |
1955 |
} |
1656 |
22 May 07 |
gregory |
1956 |
else if (mon_today - month > 0) |
1656 |
22 May 07 |
gregory |
1957 |
{ |
1650 |
21 May 07 |
olle |
1958 |
result = true; |
1656 |
22 May 07 |
gregory |
1959 |
} |
1656 |
22 May 07 |
gregory |
1960 |
else if (day_today - day > 0) |
1656 |
22 May 07 |
gregory |
1961 |
{ |
1650 |
21 May 07 |
olle |
1962 |
result = true; |
1656 |
22 May 07 |
gregory |
1963 |
} |
1656 |
22 May 07 |
gregory |
1964 |
else if (hour_today - hour > 0) |
1656 |
22 May 07 |
gregory |
1965 |
{ |
1650 |
21 May 07 |
olle |
1966 |
result = true; |
1656 |
22 May 07 |
gregory |
1967 |
} |
1656 |
22 May 07 |
gregory |
1968 |
else if (min_today - minute >= 0) |
1656 |
22 May 07 |
gregory |
1969 |
{ |
1650 |
21 May 07 |
olle |
1970 |
result = true; |
1650 |
21 May 07 |
olle |
1971 |
} |
1690 |
29 May 07 |
olle |
//log.debug("MyLS::isYearOld(): return " + result); |
1650 |
21 May 07 |
olle |
1973 |
return result; |
1650 |
21 May 07 |
olle |
1974 |
} |
1652 |
22 May 07 |
gregory |
1975 |
|
1656 |
22 May 07 |
gregory |
1976 |
|
741 |
10 Oct 06 |
olle |
1977 |
/** |
931 |
16 Nov 06 |
olle |
* Send the directory listing to bos. However, each line starts with "213-". |
931 |
16 Nov 06 |
olle |
1979 |
* |
1656 |
22 May 07 |
gregory |
* @param bos DataOutputStream data output stream to write list to. |
1656 |
22 May 07 |
gregory |
* @param includeRemoved boolean flag indicating if removed files should be |
1656 |
22 May 07 |
gregory |
* included. |
931 |
16 Nov 06 |
olle |
1983 |
*/ |
1652 |
22 May 07 |
gregory |
1984 |
public void sendListingAsResponseFormat(DataOutputStream bos, |
1656 |
22 May 07 |
gregory |
1985 |
boolean includeRemoved) |
1656 |
22 May 07 |
gregory |
1986 |
throws Exception |
1656 |
22 May 07 |
gregory |
1987 |
{ |
931 |
16 Nov 06 |
olle |
// *** Debug Info |
1652 |
22 May 07 |
gregory |
1989 |
log |
1656 |
22 May 07 |
gregory |
1990 |
.info("MyLS::sendListingAsResponseFormat(): Start - includeRemoved = " + includeRemoved); |
931 |
16 Nov 06 |
olle |
1991 |
/* |
931 |
16 Nov 06 |
olle |
* Send response strings beginning with prefix "213-". |
931 |
16 Nov 06 |
olle |
1993 |
*/ |
931 |
16 Nov 06 |
olle |
1994 |
bos.writeBytes("213-STAT directory listing:\r\n"); |
931 |
16 Nov 06 |
olle |
1995 |
sendListing(bos, includeRemoved, "213-"); |
931 |
16 Nov 06 |
olle |
1996 |
} |
931 |
16 Nov 06 |
olle |
1997 |
|
1656 |
22 May 07 |
gregory |
1998 |
|
931 |
16 Nov 06 |
olle |
1999 |
/** |
931 |
16 Nov 06 |
olle |
* Send the directory listing to bos. However, each line starts with "213-". |
931 |
16 Nov 06 |
olle |
2001 |
* |
1656 |
22 May 07 |
gregory |
* @param bos DataOutputStream data output stream to write list to. |
931 |
16 Nov 06 |
olle |
2003 |
*/ |
1652 |
22 May 07 |
gregory |
2004 |
public void sendListingAsResponseFormat(DataOutputStream bos) |
1656 |
22 May 07 |
gregory |
2005 |
throws Exception |
1656 |
22 May 07 |
gregory |
2006 |
{ |
931 |
16 Nov 06 |
olle |
// *** Debug Info |
931 |
16 Nov 06 |
olle |
2008 |
log.info("MyLS::sendListingAsResponseFormat(): Start"); |
1652 |
22 May 07 |
gregory |
// try { |
1652 |
22 May 07 |
gregory |
2010 |
String[] as_allFilesAndFolders; |
741 |
10 Oct 06 |
olle |
2011 |
int i_numberOfFiles; |
1652 |
22 May 07 |
gregory |
2012 |
as_allFilesAndFolders = f_folder.list(); |
1652 |
22 May 07 |
gregory |
2013 |
i_numberOfFiles = as_allFilesAndFolders.length; |
1652 |
22 May 07 |
gregory |
// If we had wanted to sort: Arrays.sort(allFilesAndFolders, new |
1652 |
22 May 07 |
gregory |
// ComparatorIgnoreCase()); |
741 |
10 Oct 06 |
olle |
2016 |
bos.writeBytes("213-STAT directory listing:\r\n"); |
741 |
10 Oct 06 |
olle |
2017 |
File tmpFile; |
1652 |
22 May 07 |
gregory |
2018 |
MyGregorianCalendar tmpDate = new MyGregorianCalendar(); |
741 |
10 Oct 06 |
olle |
2019 |
int hour, minute, sec, year, day, month, length, am_pm; |
741 |
10 Oct 06 |
olle |
2020 |
String tmpStr; |
741 |
10 Oct 06 |
olle |
2021 |
StringBuffer sb_tmpStr; |
741 |
10 Oct 06 |
olle |
2022 |
String tmpLengthAsString; |
1656 |
22 May 07 |
gregory |
2023 |
for (int i = 0; i < i_numberOfFiles; i++) |
1656 |
22 May 07 |
gregory |
2024 |
{ |
1652 |
22 May 07 |
gregory |
2025 |
sb_tmpStr = new StringBuffer(70); // Example, "06-06-01 04:51AM 84 |
1656 |
22 May 07 |
gregory |
// MYFILE1.TXT" is 50 chars |
1652 |
22 May 07 |
gregory |
2027 |
tmpFile = new File(s_path + as_allFilesAndFolders[i]); |
741 |
10 Oct 06 |
olle |
2028 |
tmpDate.mySetTimeInMillis(tmpFile.lastModified()); |
1652 |
22 May 07 |
gregory |
2029 |
hour = tmpDate.get(GregorianCalendar.HOUR); |
1652 |
22 May 07 |
gregory |
2030 |
minute = tmpDate.get(GregorianCalendar.MINUTE); |
1652 |
22 May 07 |
gregory |
2031 |
day = tmpDate.get(GregorianCalendar.DAY_OF_MONTH); |
1652 |
22 May 07 |
gregory |
2032 |
month = tmpDate.get(GregorianCalendar.MONTH); |
1652 |
22 May 07 |
gregory |
2033 |
year = tmpDate.get(GregorianCalendar.YEAR); |
1652 |
22 May 07 |
gregory |
2034 |
am_pm = tmpDate.get(GregorianCalendar.AM_PM); |
1652 |
22 May 07 |
gregory |
2035 |
year = year % 100; |
741 |
10 Oct 06 |
olle |
2036 |
month++; |
1652 |
22 May 07 |
gregory |
2037 |
if (month < 10) |
741 |
10 Oct 06 |
olle |
2038 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
2039 |
sb_tmpStr.append(month + "-"); |
1652 |
22 May 07 |
gregory |
2040 |
if (day < 10) |
741 |
10 Oct 06 |
olle |
2041 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
2042 |
sb_tmpStr.append(day + "-"); |
1652 |
22 May 07 |
gregory |
2043 |
if (year < 10) |
741 |
10 Oct 06 |
olle |
2044 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
2045 |
sb_tmpStr.append(year + " "); |
1652 |
22 May 07 |
gregory |
2046 |
if (hour < 10) |
741 |
10 Oct 06 |
olle |
2047 |
sb_tmpStr.append(0); |
1652 |
22 May 07 |
gregory |
2048 |
sb_tmpStr.append(hour + ":"); |
1652 |
22 May 07 |
gregory |
2049 |
if (minute < 10) |
741 |
10 Oct 06 |
olle |
2050 |
sb_tmpStr.append(0); |
741 |
10 Oct 06 |
olle |
2051 |
sb_tmpStr.append(minute); |
1652 |
22 May 07 |
gregory |
2052 |
if (am_pm == GregorianCalendar.PM) |
741 |
10 Oct 06 |
olle |
2053 |
sb_tmpStr.append("PM "); |
741 |
10 Oct 06 |
olle |
2054 |
else |
741 |
10 Oct 06 |
olle |
2055 |
sb_tmpStr.append("AM "); |
1656 |
22 May 07 |
gregory |
2056 |
if (tmpFile.isDirectory()) |
1656 |
22 May 07 |
gregory |
2057 |
{ |
741 |
10 Oct 06 |
olle |
2058 |
sb_tmpStr.append("<DIR> "); |
1656 |
22 May 07 |
gregory |
2059 |
} |
1656 |
22 May 07 |
gregory |
2060 |
else |
1656 |
22 May 07 |
gregory |
2061 |
{ |
1652 |
22 May 07 |
gregory |
2062 |
tmpLengthAsString = "" + tmpFile.length(); |
1652 |
22 May 07 |
gregory |
2063 |
int timesToLoop = 14 - tmpLengthAsString.length(); |
1656 |
22 May 07 |
gregory |
2064 |
for (int j = 0; j < timesToLoop; j++) |
1656 |
22 May 07 |
gregory |
2065 |
{ |
741 |
10 Oct 06 |
olle |
2066 |
sb_tmpStr.append(" "); |
741 |
10 Oct 06 |
olle |
2067 |
} |
1652 |
22 May 07 |
gregory |
2068 |
sb_tmpStr.append(tmpLengthAsString + " "); |
741 |
10 Oct 06 |
olle |
2069 |
} |
741 |
10 Oct 06 |
olle |
2070 |
sb_tmpStr.append(as_allFilesAndFolders[i]); |
1652 |
22 May 07 |
gregory |
2071 |
bos.writeBytes("213-" + sb_tmpStr.toString() + "\r\n"); |
1652 |
22 May 07 |
gregory |
// bos.writeBytes("+s1234,\t"+as_allFilesAndFolders[i]+"\r\n"); |
741 |
10 Oct 06 |
olle |
2073 |
} |
1652 |
22 May 07 |
gregory |
// } catch (Exception e) {if (b_showErrors)System.out.println("Error @ |
1652 |
22 May 07 |
gregory |
// sendListingAsResponseFormat:\n"+e);} |
741 |
10 Oct 06 |
olle |
2076 |
bos.flush(); |
741 |
10 Oct 06 |
olle |
2077 |
} |
741 |
10 Oct 06 |
olle |
2078 |
|
1656 |
22 May 07 |
gregory |
2079 |
|
741 |
10 Oct 06 |
olle |
2080 |
/** |
1652 |
22 May 07 |
gregory |
* Send a alias listing as if the aliases where directories. |
1652 |
22 May 07 |
gregory |
2082 |
*/ |
1652 |
22 May 07 |
gregory |
2083 |
static public void sendAliaslisting(DataOutputStream bos, String[] aliases) |
1656 |
22 May 07 |
gregory |
2084 |
throws Exception |
1656 |
22 May 07 |
gregory |
2085 |
{ |
741 |
10 Oct 06 |
olle |
2086 |
String tmpAlias; |
1656 |
22 May 07 |
gregory |
2087 |
for (int i = 0; i < aliases.length; i++) |
1656 |
22 May 07 |
gregory |
2088 |
{ |
1652 |
22 May 07 |
gregory |
2089 |
tmpAlias = aliases[i]; |
1656 |
22 May 07 |
gregory |
2090 |
bos |
1656 |
22 May 07 |
gregory |
2091 |
.writeBytes("01-01-01 01:01AM <DIR> " + tmpAlias + "\r\n"); |
741 |
10 Oct 06 |
olle |
2092 |
} |
741 |
10 Oct 06 |
olle |
2093 |
bos.flush(); |
741 |
10 Oct 06 |
olle |
2094 |
} |
741 |
10 Oct 06 |
olle |
2095 |
|
1656 |
22 May 07 |
gregory |
2096 |
|
741 |
10 Oct 06 |
olle |
2097 |
/** |
1652 |
22 May 07 |
gregory |
* Send a alias listing as if the aliases where directories. However, each |
1652 |
22 May 07 |
gregory |
* line starts with "213-". |
1652 |
22 May 07 |
gregory |
2100 |
*/ |
1652 |
22 May 07 |
gregory |
2101 |
static public void sendAliaslistingAsResponseFormat(DataOutputStream bos, |
1656 |
22 May 07 |
gregory |
2102 |
String[] aliases) |
1656 |
22 May 07 |
gregory |
2103 |
throws Exception |
1656 |
22 May 07 |
gregory |
2104 |
{ |
741 |
10 Oct 06 |
olle |
2105 |
String tmpAlias; |
1656 |
22 May 07 |
gregory |
2106 |
for (int i = 0; i < aliases.length; i++) |
1656 |
22 May 07 |
gregory |
2107 |
{ |
1652 |
22 May 07 |
gregory |
2108 |
tmpAlias = aliases[i]; |
1656 |
22 May 07 |
gregory |
2109 |
bos |
1656 |
22 May 07 |
gregory |
2110 |
.writeBytes("213-01-01-01 01:01AM <DIR> " + tmpAlias + "\r\n"); |
741 |
10 Oct 06 |
olle |
2111 |
} |
741 |
10 Oct 06 |
olle |
2112 |
} |
741 |
10 Oct 06 |
olle |
2113 |
|
1656 |
22 May 07 |
gregory |
2114 |
|
741 |
10 Oct 06 |
olle |
2115 |
/** |
1652 |
22 May 07 |
gregory |
* Send a HTML-page where you can choose a folder located at <CODE>argPath</CODE>. |
1652 |
22 May 07 |
gregory |
2117 |
*/ |
1656 |
22 May 07 |
gregory |
2118 |
static public void showChooseDirectory(DataOutputStream os, String argPath) |
1656 |
22 May 07 |
gregory |
2119 |
{ |
1656 |
22 May 07 |
gregory |
2120 |
try |
1656 |
22 May 07 |
gregory |
2121 |
{ |
1652 |
22 May 07 |
gregory |
2122 |
String s_path = argPath; |
1652 |
22 May 07 |
gregory |
2123 |
PathInfo PI_path = new PathInfo(s_path); |
1652 |
22 May 07 |
gregory |
2124 |
File f_currentFolder = PI_path.getCurrentFolder(); // This is null |
1656 |
22 May 07 |
gregory |
// if "argPath" |
1656 |
22 May 07 |
gregory |
// given to the |
1656 |
22 May 07 |
gregory |
// constructor |
1656 |
22 May 07 |
gregory |
// is (1) null, |
1656 |
22 May 07 |
gregory |
// (2) "", (3) |
1656 |
22 May 07 |
gregory |
// an invalid |
1656 |
22 May 07 |
gregory |
// path or (4) |
1656 |
22 May 07 |
gregory |
// an unreadable |
1656 |
22 May 07 |
gregory |
// path, such as |
1656 |
22 May 07 |
gregory |
// A: without a |
1656 |
22 May 07 |
gregory |
// floppy disk. |
1652 |
22 May 07 |
gregory |
2136 |
File[] af_allFiles = PI_path.getAllFiles(); |
1652 |
22 May 07 |
gregory |
2137 |
boolean directoryIsValid = PI_path.getDirectoryIsValid(); |
1652 |
22 May 07 |
gregory |
2138 |
os |
1656 |
22 May 07 |
gregory |
2139 |
.writeBytes("<HTML><HEAD>" + "<TITLE>Choose directory!</TITLE>" + "<SCRIPT LANGUAGE=javascript>" + "function chooseDir(path)" + "{" + " if (opener==null || opener==\"undefined\")" + " {" + " alert(\"An error has occured: Please close the \\\"Choose a directory\\\" window and re-open again before you can choose a directory.\");" + " }" + " else" + " {" + " if (path.substring(path.length-1,path.length)!=\"/\" && path.substring(path.length-1,path.length)!=\"\\\\\")" + // Path |
1656 |
22 May 07 |
gregory |
// is a |
1656 |
22 May 07 |
gregory |
// normal |
1656 |
22 May 07 |
gregory |
// folder, |
1656 |
22 May 07 |
gregory |
// not |
1656 |
22 May 07 |
gregory |
// a |
1656 |
22 May 07 |
gregory |
// root... |
1656 |
22 May 07 |
gregory |
// //If |
1656 |
22 May 07 |
gregory |
// path is a root path already has an / (or \) |
1656 |
22 May 07 |
gregory |
// in the end, but if path is just a normal |
1656 |
22 May 07 |
gregory |
// folder there is no / (or \) in path |
1656 |
22 May 07 |
gregory |
2150 |
" {" + " path+=\"\\" + File.separator + "\";" + // Will |
1656 |
22 May 07 |
gregory |
// result |
1656 |
22 May 07 |
gregory |
// in: |
1656 |
22 May 07 |
gregory |
// path+="\\"; |
1656 |
22 May 07 |
gregory |
// or |
1656 |
22 May 07 |
gregory |
// path+="\/"; |
1656 |
22 May 07 |
gregory |
2156 |
" }" + " opener.dirChoosen(path);" + " top.close();" + " }" + "}" + "" + "" + "function replace(str,oldChar,newChar)" + "{" + " for (i=0;i<str.length; i++)" + " {" + " if (str.substring(i,i+1)==oldChar)" + " str=str.substring(0,i)+newChar+str.substring(i+1,str.length);" + " }" + "" + " return str;" + "}" + "" + "</SCRIPT>" + "</HEAD><BODY>" + "<FONT FACE=\"tahoma, arial, verdana\">" + "<H2>Choose a directory"); |
1652 |
22 May 07 |
gregory |
2157 |
if (f_currentFolder != null && directoryIsValid) |
1652 |
22 May 07 |
gregory |
2158 |
os.writeBytes(" [ " + f_currentFolder.toString() + " ]"); |
1652 |
22 May 07 |
gregory |
2159 |
os.writeBytes("</H2>"); |
1656 |
22 May 07 |
gregory |
2160 |
if (!directoryIsValid) |
1656 |
22 May 07 |
gregory |
2161 |
{ |
1656 |
22 May 07 |
gregory |
2162 |
os |
1656 |
22 May 07 |
gregory |
2163 |
.writeBytes("Xerver had problems try to find or read <B>" + s_path + "</B>." + "<BR>" + "Listing your roots instead!" + "<P>"); |
1652 |
22 May 07 |
gregory |
2164 |
} |
1656 |
22 May 07 |
gregory |
2165 |
os |
1656 |
22 May 07 |
gregory |
2166 |
.writeBytes("Choose a directory by pressing the Choose-button." + "<BR>" + "Browse a directory by pressing the directory name." + "</FONT>" + "<P>" + "<PRE>"); |
1652 |
22 May 07 |
gregory |
2167 |
if (f_currentFolder != null) // If [All roots are NOT being |
1656 |
22 May 07 |
gregory |
// listed]... |
1652 |
22 May 07 |
gregory |
2169 |
{ |
1652 |
22 May 07 |
gregory |
2170 |
os |
1656 |
22 May 07 |
gregory |
2171 |
.writeBytes("<B>[<A HREF=\"javascript:chooseDir(\'" + MyString |
1656 |
22 May 07 |
gregory |
2172 |
.searchAndReplace(MyString.searchAndReplace( |
1656 |
22 May 07 |
gregory |
2173 |
f_currentFolder.toString(), "\\", "\\\\"), "'", |
1656 |
22 May 07 |
gregory |
2174 |
"\\'") + "\');\" STYLE=\"text-decoration: none;\">Choose this folder</A>] " + f_currentFolder |
1656 |
22 May 07 |
gregory |
2175 |
.toString() + "</B>\r\n"); |
1652 |
22 May 07 |
gregory |
2176 |
os.writeBytes("\r\n"); |
1652 |
22 May 07 |
gregory |
2177 |
File f_oneLevelUp = f_currentFolder.getParentFile(); |
1652 |
22 May 07 |
gregory |
2178 |
if (f_oneLevelUp != null) // This is NOT root level, so show a |
1656 |
22 May 07 |
gregory |
// ".." link |
1652 |
22 May 07 |
gregory |
2180 |
os |
1656 |
22 May 07 |
gregory |
2181 |
.writeBytes(" <A HREF=\"#\" onClick=\"location='/?action=chooseDirectory¤tPath='+replace(escape('" + MyString |
1656 |
22 May 07 |
gregory |
2182 |
.searchAndReplace(MyString.searchAndReplace( |
1656 |
22 May 07 |
gregory |
2183 |
f_oneLevelUp.toString(), "\\", "\\\\"), "'", |
1656 |
22 May 07 |
gregory |
2184 |
"\\'") + "'),'+','%2B')\" STYLE=\"text-decoration: none;\">../</A>\r\n"); |
1652 |
22 May 07 |
gregory |
2185 |
else |
1652 |
22 May 07 |
gregory |
// This is the root letter, press ".." to show all drives |
1652 |
22 May 07 |
gregory |
2187 |
os |
1656 |
22 May 07 |
gregory |
2188 |
.writeBytes(" <A HREF='/?action=chooseDirectory' STYLE=\"text-decoration: none;\">../</A>\r\n"); |
1652 |
22 May 07 |
gregory |
2189 |
} |
1652 |
22 May 07 |
gregory |
2190 |
Arrays.sort(af_allFiles); |
1652 |
22 May 07 |
gregory |
2191 |
boolean tmpFoldersShown = false; |
1656 |
22 May 07 |
gregory |
2192 |
for (int i = 0, allFilesLength = af_allFiles.length; i < allFilesLength; i++) |
1656 |
22 May 07 |
gregory |
2193 |
{ |
1652 |
22 May 07 |
gregory |
2194 |
File tmpFile = af_allFiles[i]; |
1652 |
22 May 07 |
gregory |
2195 |
if (f_currentFolder == null || tmpFile.isDirectory()) // If |
1656 |
22 May 07 |
gregory |
// [it's |
1656 |
22 May 07 |
gregory |
// a |
1656 |
22 May 07 |
gregory |
// directory] |
1656 |
22 May 07 |
gregory |
// OR |
1656 |
22 May 07 |
gregory |
// [All |
1656 |
22 May 07 |
gregory |
// roots |
1656 |
22 May 07 |
gregory |
// are |
1656 |
22 May 07 |
gregory |
// being |
1656 |
22 May 07 |
gregory |
// listed]... |
1652 |
22 May 07 |
gregory |
2205 |
{ |
1652 |
22 May 07 |
gregory |
2206 |
tmpFoldersShown = true; |
1652 |
22 May 07 |
gregory |
2207 |
os |
1656 |
22 May 07 |
gregory |
2208 |
.writeBytes("[<A HREF=\"javascript:chooseDir(\'" + MyString |
1656 |
22 May 07 |
gregory |
2209 |
.searchAndReplace(MyString.searchAndReplace(tmpFile |
1656 |
22 May 07 |
gregory |
2210 |
.toString(), "\\", "\\\\"), "'", "\\'") + "\');\" STYLE=\"text-decoration: none;\">Choose</A>] <A HREF=\"#\" onClick=\"location='/?action=chooseDirectory¤tPath='+replace(escape('" + MyString |
1656 |
22 May 07 |
gregory |
2211 |
.searchAndReplace(MyString.searchAndReplace(tmpFile |
1656 |
22 May 07 |
gregory |
2212 |
.toString(), "\\", "\\\\"), "'", "\\'") + "'),'+','%2B')\" STYLE=\"text-decoration: none;\">" + tmpFile + "</A>\r\n"); |
1652 |
22 May 07 |
gregory |
2213 |
} |
741 |
10 Oct 06 |
olle |
2214 |
} |
1656 |
22 May 07 |
gregory |
2215 |
if (!tmpFoldersShown) |
1656 |
22 May 07 |
gregory |
2216 |
{ |
1652 |
22 May 07 |
gregory |
2217 |
os |
1656 |
22 May 07 |
gregory |
2218 |
.writeBytes(" No folders exists in\r\n <B>" + s_path + "</B>"); |
1652 |
22 May 07 |
gregory |
2219 |
} |
1652 |
22 May 07 |
gregory |
2220 |
os.writeBytes("</PRE>"); |
1652 |
22 May 07 |
gregory |
2221 |
os.writeBytes("</BODY>"); |
1652 |
22 May 07 |
gregory |
2222 |
os.writeBytes("</HTML>"); |
1656 |
22 May 07 |
gregory |
2223 |
} |
1656 |
22 May 07 |
gregory |
2224 |
catch (Exception e) |
1656 |
22 May 07 |
gregory |
2225 |
{ |
1652 |
22 May 07 |
gregory |
2226 |
if (b_showErrors) |
1652 |
22 May 07 |
gregory |
2227 |
System.out |
1656 |
22 May 07 |
gregory |
2228 |
.println("An error has occured @ showChooseDirectory:\n" + e); |
741 |
10 Oct 06 |
olle |
2229 |
} |
741 |
10 Oct 06 |
olle |
2230 |
} |
741 |
10 Oct 06 |
olle |
2231 |
} |