1 /***
2 Copyright (C) 2005 The Java Community
3
4 This program is free software; you can redistribute it and/or modify it under
5 the terms of the GNU General Public License as published by the Free Software
6 Foundation; either version 2 of the License, or (at your option) any later
7 version.
8
9 This program is distributed in the hope that it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
15 Place, Suite 330, Boston, MA 02111-1307 USA.
16
17 */
18 package org.bejug.javacareers.jobs.view.jsf.action;
19
20 import java.io.IOException;
21 import java.util.Iterator;
22 import java.util.List;
23
24 import javax.faces.context.ExternalContext;
25 import javax.faces.context.FacesContext;
26 import javax.faces.event.ActionEvent;
27
28 import org.apache.commons.logging.Log;
29 import org.apache.commons.logging.LogFactory;
30 import org.bejug.javacareers.common.ajax.CompletionResult;
31 import org.bejug.javacareers.common.search.SearchCriteria;
32 import org.bejug.javacareers.jobs.model.Resume;
33 import org.bejug.javacareers.jobs.model.User;
34 import org.bejug.javacareers.jobs.search.lucene.PdfException;
35 import org.bejug.javacareers.jobs.search.lucene.SearchResult;
36 import org.bejug.javacareers.jobs.service.LucenePdfService;
37 import org.bejug.javacareers.jobs.view.jsf.forms.SearchResumeForm;
38 import org.bejug.javacareers.jobs.view.jsf.model.CurrentItem;
39 import org.bejug.javacareers.jobs.view.jsf.model.PdfListData;
40 import org.bejug.javacareers.jobs.view.jsf.model.PdfSearchResultData;
41 import org.bejug.javacareers.jobs.view.jsf.util.Utils;
42 import org.bejug.javacareers.project.properties.JavaCareersConfig;
43 import org.springframework.context.ApplicationContext;
44 import org.springframework.web.jsf.FacesContextUtils;
45
46 /***
47 * @author Peter Symoens (Last modified by $Author: shally $)
48 * @version $Revision: 1.34 $ - $Date: 2005/12/20 15:36:47 $
49 */
50 public class ResumeAction extends BaseAction {
51
52 /***
53 * The ManageResume CommentAction logger.
54 */
55 private static final Log LOG = LogFactory.getLog(ResumeAction.class);
56
57
58 /***
59 * Todo: a web controller should not use the pdf service directly
60 * the ResumeService should use this instead
61 * The Job Service reference, injected by Spring container.
62 */
63 private LucenePdfService lucenePdfService;
64
65 /***
66 * The user tracker, injected.
67 */
68 private CurrentItem currentItem ;
69
70 /***
71 * Set lucenePdfService via Springs IoC injection.
72 *
73 * @param lucenePdfService JobService
74 */
75
76 public void setLucenePdfService(LucenePdfService lucenePdfService) {
77 this.lucenePdfService = lucenePdfService;
78 }
79
80 /***
81 * Process the resume upload.
82 *
83 * @param event the JSF action event.
84 *
85 public void processUploadResume(ActionEvent event) {
86 LOG.info("Debug: --executing processUploadResume");
87 PostResumeForm form = getUploadresumeForm();
88 User user = userTracker.getCurrentUser();
89 LOG.info("Debug: user = " + user);
90 String path = getFilePath(user);
91 form.getResume().setPublicationDate(form.getResume().getCreationDate());
92 //for some reason hibertnate does not delete the resume if you just override the users resume
93 if (user.getResume() != null){
94 user.getResume().setPublicationDate(form.getResume().getPublicationDate());
95 user.getResume().setTitle(form.getResume().getTitle());
96 }else{
97 user.setResume(form.getResume());
98 }
99 LOG.info("Debug: loading resume: " + path);
100 try {
101 File file = getUploadedFile(path);
102 if (file != null) {
103 user.setCvAvailable(true);
104 try {
105 adminService.storeUser(user);
106 } catch (DuplicateUserNameException e) {
107 LOG.error(e);
108 } catch (LastAdminException e) {
109 LOG.error(e);
110 }
111
112 //TODO update user, create update method
113 form.setInfoMessage("label_uploaded_ok");
114 form.setRenderInfoMessage(true);
115 LOG.info("Debug: Delegating to luceneIndexer: "
116 + file.getAbsolutePath());
117 lucenePdfService.addToIndex(file.getAbsolutePath(), user.getUserName());
118 } else {
119 LOG.error("error loading resume: " + path);
120 LOG.error("error loading resume: " + path + " as internal "
121 + file.getAbsolutePath());
122 }
123 } catch (IOException e) {
124 LOG.error("FileNotFoundException caught : " + path);
125 } catch (PdfException e) {
126 LOG.info("Debug: LuceneException caught");
127 }
128
129 }
130
131 /**
132 * List all posted resumes
133 */
134 public void listAllResumes(ActionEvent event) {
135 LOG.info("Debug: --executing listAllResumes");
136 SearchCriteria criteria;
137 criteria = searchCriteriaFactory.createSearchCriteria(User.class);
138 LOG.info("Debug: searchCriteria = " + criteria);
139 criteria.addEqualsCriterium("cvAvailable", Boolean.TRUE);
140
141 LOG.info("Debug: searchCriteriaService = " + searchCriteriaService);
142 List pdfUsersList = searchCriteriaService.executeQuery(criteria);
143 LOG.info("Debug: pdfUsersList = " + pdfUsersList);
144 User user = null;
145 for (Iterator iterator = pdfUsersList.iterator(); iterator.hasNext();) {
146 user = (User) iterator.next();
147 String baseUrl = getProjectProperties().getUrl()+getProjectProperties().getAppname();
148 String url = baseUrl.concat(getResumeUrl(user));
149 user.setPdfUrl(url);
150 }
151 PdfListData.setPdfUsersList(pdfUsersList);
152 LOG.info("Debug: exiting listAllResumes");
153
154 }
155
156 /***
157 * Process the display resume action
158 *
159 * @param event the JSF action event.
160 */
161 public void displayResume(ActionEvent event) {
162 LOG.info("Debug: --executing displayResume");
163 Resume resume =currentItem.getResume();
164 User user = resume.getUser();
165 LOG.info("Debug: user = " + user.getUserName());
166 FacesContext context = FacesContext.getCurrentInstance();
167 ExternalContext externalContext = context.getExternalContext();
168
169 try {
170 System.out.println(externalContext
171 .encodeResourceURL(externalContext.getRequestContextPath()
172 + getResumeUrl(user)));
173 externalContext.redirect(externalContext
174 .encodeResourceURL(externalContext.getRequestContextPath()
175 + getResumeUrl(user)));
176
177 } catch (IOException e) {
178 LOG.error(e);
179 }
180 }
181
182 /***
183 * @param user User
184 * @return ResumeUrl
185 */
186 private String getResumeUrl(User user) {
187
188 StringBuffer buffer = new StringBuffer(200);
189 LOG.info("Debug: Upload path = " + getProjectProperties().getUploadPath());
190 buffer.append(getProjectProperties().getUploadPath());
191 buffer.append("/");
192 buffer.append("resume_");
193 buffer.append(user.getId());
194 buffer.append(".pdf");
195 return buffer.toString();
196 }
197
198 /***
199 * Process delete resume.
200 *
201 * @param context the JSF context
202 * @param prefix a String containing the prefix.
203 * @param result the completionresult of the ajax search.
204 */
205 public void processAjaxSearch(FacesContext context, String prefix,
206 CompletionResult result) {
207 LOG.info("Debug: --> executing processAjaxSearch");
208
209 LOG.info("Debug: criteria: " + prefix);
210
211 try {
212
213 lucenePdfService.setHighlightTags("", "");
214 List results = lucenePdfService.getSearchResultList(prefix,20);
215 convertFileUrls(results);
216 result.addItem("- Results preview:");
217
218
219 for (int i = 0; i < results.size(); i++) {
220 SearchResult searchResult = (SearchResult) results.get(i);
221
222 LOG.info("Debug: Added result: " + searchResult.getFile());
223 LOG.info("Debug: For hit on: " + searchResult.getContext());
224
225
226 List matchResult = searchResult.getContext();
227 for (int j = 0; j < matchResult.size() && j < 3; j++) {
228 String contextMatch = (String) matchResult.get(j);
229
230 contextMatch = contextMatch + " from "+searchResult.getUser();
231 contextMatch = contextMatch.replace(',',';');
232 contextMatch = contextMatch +"," + searchResult.getFile();
233 LOG.info("Debug: Added: "+contextMatch);
234 result.addItem(contextMatch);
235 }
236 }
237 LOG.info("Debug: Results processed");
238 if (result.getItems().size() == 1) {
239 result.addItem("- None");
240 }
241 LOG.info("Debug: Send back: "+results);
242 LOG.info("Debug: Using" +result.getItems());
243
244 } catch (PdfException e) {
245 LOG.error(e);
246 }
247
248
249 }
250
251 /***
252 * Process the simple cv search action.
253 *
254 * @param actionEvent the JSF action event.
255 */
256 public void processSimpleSearch(ActionEvent actionEvent) {
257 LOG.info("Debug: --> executing processSimpleSearch");
258
259 SearchResumeForm form = (SearchResumeForm) Utils.getVariableResolver().resolveVariable(
260 FacesContext.getCurrentInstance(), "searchResumeForm");
261 if (form.getCriteria().trim().equals(Utils.getMessage("label_search"))) {
262 outcome = null;
263 } else {
264 LOG.info("Debug: criteria: " + form.getCriteria());
265 List results = null;
266 try {
267
268 lucenePdfService.setHighlightTags("<i><b>", "</b></i>");
269 results = lucenePdfService.getSearchResultList(form
270 .getCriteria());
271 } catch (PdfException e) {
272 LOG.error(e);
273 }
274
275 if (results.size() > 0) {
276
277 convertFileUrls(results);
278
279 PdfSearchResultData.setSearchResults(results);
280
281 form.setRenderPdfSearchResult(true);
282 LOG.info("Debug: data found");
283
284
285 } else {
286 LOG.info("Debug: no data found");
287 form.setInfoMessage(Utils.getMessage("label_noDataFound"));
288 form.setRenderInfoMessage(true);
289 }
290
291 outcome = "go_cvsearch";
292 }
293
294 }
295
296 //**************utility methods*************
297
298 /**
299 * @param results List
300 */
301 private void convertFileUrls(List results) {
302
303 for (Iterator iterator = results.iterator(); iterator.hasNext();) {
304 SearchResult pdfSearchResult = (SearchResult) iterator.next();
305 String file = pdfSearchResult.getFile();
306
307 pdfSearchResult.setFile(convertFilePathToUrl(file));
308 }
309 }
310
311 /***
312 * @param filePath String
313 * @return url String
314 */
315 private String convertFilePathToUrl(String filePath) {
316 LOG.info("Debug: FilePath= " + filePath);
317 filePath = filePath.replaceAll("////", "/");
318 LOG.info("Debug: FilePathreplaced= " + filePath);
319 LOG.info("Debug: uploadPath = " + getProjectProperties().getUploadPath());
320
321 int index = filePath.indexOf(getProjectProperties().getUploadPath());
322
323 String localPath = filePath.substring(index + 1);
324 LOG.info("Debug: localPath = " + localPath);
325 String baseUrl = getProjectProperties().getUrl()+getProjectProperties().getAppname()+"/";
326 LOG.info("Debug: baseUrl= " + baseUrl );
327 String url = baseUrl.concat(localPath);
328 LOG.info("Debug: url = " + url);
329 return url;
330
331 }
332
333 /***
334 * Get the Project Properties
335 *
336 * @return JavaCareersConfig
337 */
338
339 private JavaCareersConfig getProjectProperties() {
340 ApplicationContext ctx = FacesContextUtils
341 .getWebApplicationContext(FacesContext.getCurrentInstance());
342 return (JavaCareersConfig) ctx.getBean("config");
343
344 }
345
346
347
348 /***
349 * @param currentItem The currentItem to set.
350 */
351 public void setCurrentItem(CurrentItem currentItem) {
352 this.currentItem = currentItem;
353 }
354 }
355
356 /***
357 * $Log: ResumeAction.java,v $
358 * Revision 1.34 2005/12/20 15:36:47 shally
359 * CheckStyle and PMD changes.
360 *
361 * Revision 1.33 2005/12/09 10:46:57 shally
362 * Opkuis voor checkstyle en PMD
363 *
364 * Revision 1.32 2005/12/08 14:53:46 shally
365 * Opkuis voor checkstyle.
366 *
367 * Revision 1.31 2005/09/30 14:38:07 bavo_jcs
368 * Fixed URL
369 *
370 * Revision 1.30 2005/09/24 17:30:15 schauwvliege
371 * delete content, refactory of resume
372 *
373 * Revision 1.29 2005/09/05 12:25:15 schauwvliege
374 * JAVACAREERS-316
375 *
376 * Revision 1.28 2005/08/29 15:09:34 schauwvliege
377 * Style update
378 *
379 * Revision 1.27 2005/08/26 13:57:20 schauwvliege
380 * introduction of resume view
381 *
382 * Revision 1.26 2005/08/26 07:58:37 ge0ffrey
383 * split up the sources in service, serviceimpl and webclient
384 *
385 * Revision 1.25 2005/08/25 09:14:55 bavo_jcs
386 * URL to PDF fix
387 *
388 * Revision 1.24 2005/08/24 16:29:59 schauwvliege
389 * introduction of mixed list of all items
390 *
391 * Revision 1.23 2005/08/24 12:32:12 psong09
392 * Added spinner component and renamed commentAction
393 *
394 * Revision 1.22 2005/08/23 11:58:26 schauwvliege
395 * Intruduction of Resume
396 *
397 * Revision 1.21 2005/08/23 08:50:38 ge0ffrey
398 * JAVACAREERS-284 part 3: resolver
399 *
400 * Revision 1.20 2005/08/22 15:25:05 ge0ffrey
401 * JAVACAREERS-284
402 *
403 * Revision 1.19 2005/08/11 13:31:35 bavo_jcs
404 * LastAdmin Fix
405 *
406 * Revision 1.18 2005/08/10 12:02:47 bme_jcs
407 * changed add in store
408 *
409 * Revision 1.16 2005/08/09 12:59:56 bavo_jcs
410 * Optimized imports
411 *
412 * Revision 1.15 2005/08/08 12:31:51 bme_jcs
413 * resolved PMD errors
414 *
415 * Revision 1.14 2005/08/08 09:38:22 bme_jcs
416 * resolved checkstyle errors
417 *
418 * Revision 1.13 2005/08/01 15:34:33 bavo_jcs
419 * URL fix
420 *
421 * Revision 1.12 2005/07/29 15:44:33 bavo_jcs
422 * Fixed URL to file
423 *
424 * Revision 1.11 2005/07/26 10:55:13 psong09
425 * Added more user details in the display table of the resumes page and fixed the table header (was not rendered).
426 * Modified the url of the pdf's to fix a bug when deploying on Tomcat
427 * Modified ajax script to open the pdf in a new window.
428 *
429 * Revision 1.10 2005/07/13 11:16:59 bavo_jcs
430 * Moved Ajax files
431 *
432 * Revision 1.9 2005/07/12 10:42:40 bavo_jcs
433 * PDF Ajax integration, added user info
434 *
435 * Revision 1.8 2005/07/12 10:02:42 bavo_jcs
436 * PDF Ajax integration
437 *
438 * Revision 1.7 2005/07/11 15:01:42 bavo_jcs
439 * PDF Ajax integration
440 *
441 * Revision 1.6 2005/07/08 14:02:55 bavo_jcs
442 * PDF Ajax integration
443 *
444 * Revision 1.5 2005/07/08 08:37:34 bavo_jcs
445 * PDF Ajax integration
446 *
447 * Revision 1.4 2005/06/20 10:00:00 psong09
448 * fixed search context highlighting.
449 *
450 * Revision 1.3 2005/06/14 12:05:53 schauwvliege
451 * CheckStyle and fixing tests
452 *
453 * Revision 1.2 2005/06/09 08:18:53 bejug_cc
454 * Fix initial import
455 *
456 * Revision 1.24 2005/06/07 15:16:32 PSONG09
457 * update listAllResumes
458 * Revision 1.23 2005/06/07 09:36:10 PSONG09 update
459 * listAllResumes
460 *
461 * Revision 1.22 2005/06/06 15:13:03 PSONG09 implemented listAllResumes
462 *
463 * Revision 1.21 2005/06/03 15:41:43 PSONG09 addded listResumes
464 *
465 * Revision 1.20 2005/06/02 07:26:35 PSONG09 added convertFilePathToUrl method
466 *
467 * Revision 1.19 2005/06/01 09:13:50 PSONG09 added infomessages
468 *
469 * Revision 1.18 2005/05/31 15:07:36 PSONG09 update upload and delete resume
470 *
471 * Revision 1.17 2005/05/31 08:47:16 bbr lucene fix
472 *
473 * Revision 1.16 2005/05/30 15:11:15 PSONG09 changed absolute upload path to
474 * relative one. Now loading project properties from application context instead
475 * of servletcontext.
476 *
477 *
478 * Revision 1.14 2005/05/26 16:02:52 PSONG09 updated searchResume
479 *
480 * Revision 1.13 2005/05/26 15:46:12 PSONG09 updated viewResume
481 *
482 * Revision 1.12 2005/05/25 14:32:18 bbr lucene bean
483 *
484 * Revision 1.11 2005/05/25 13:56:36 bbr lucene bean
485 *
486 * Revision 1.10 2005/05/25 13:54:34 bbr lucene bean
487 *
488 * Revision 1.9 2005/05/25 07:21:18 PSONG09 added javacareers url property
489 *
490 * Revision 1.8 2005/05/23 17:51:10 sja Code cleanup.
491 *
492 * Revision 1.7 2005/05/23 15:42:00 bbr added weight to lucene
493 *
494 * Revision 1.6 2005/05/23 15:33:12 bbr added weight to lucene
495 *
496 * Revision 1.5 2005/05/23 15:11:53 PSONG09 integration pdf indexing update
497 *
498 * Revision 1.4 2005/05/23 09:55:37 PSONG09 integration pdf indexing
499 *
500 * Revision 1.3 2005/05/23 08:08:05 PSONG09 outcommented feeder calls
501 *
502 * Revision 1.2 2005/05/20 13:41:24 PSONG09 update upload component
503 *
504 * Revision 1.1 2005/05/19 13:55:24 PSONG09 update resume component +
505 * refactoring cv to resume
506 *
507 * Revision 1.8 2005/05/18 15:00:19 PSONG09 added mime type check
508 *
509 * Revision 1.7 2005/05/18 08:08:06 PSONG09 moved doOutcome to BaseAction
510 *
511 * Revision 1.5 2005/05/17 14:22:17 ssc checkstyle
512 *
513 * Revision 1.4 2005/05/17 06:52:54 PSONG09 update upload functionality Revision
514 * 1.2 2005/05/11 15:14:00 sja Added copyright and CVS tags.
515 *
516 * $Log: ResumeAction.java,v $
517 * Revision 1.34 2005/12/20 15:36:47 shally
518 * CheckStyle and PMD changes.
519 *
520 * Revision 1.33 2005/12/09 10:46:57 shally
521 * Opkuis voor checkstyle en PMD
522 *
523 * Revision 1.32 2005/12/08 14:53:46 shally
524 * Opkuis voor checkstyle.
525 *
526 * Revision 1.31 2005/09/30 14:38:07 bavo_jcs
527 * Fixed URL
528 *
529 * Revision 1.30 2005/09/24 17:30:15 schauwvliege
530 * delete content, refactory of resume
531 *
532 * Revision 1.29 2005/09/05 12:25:15 schauwvliege
533 * JAVACAREERS-316
534 *
535 * Revision 1.28 2005/08/29 15:09:34 schauwvliege
536 * Style update
537 *
538 * Revision 1.27 2005/08/26 13:57:20 schauwvliege
539 * introduction of resume view
540 *
541 * Revision 1.26 2005/08/26 07:58:37 ge0ffrey
542 * split up the sources in service, serviceimpl and webclient
543 *
544 * Revision 1.25 2005/08/25 09:14:55 bavo_jcs
545 * URL to PDF fix
546 *
547 * Revision 1.24 2005/08/24 16:29:59 schauwvliege
548 * introduction of mixed list of all items
549 *
550 * Revision 1.23 2005/08/24 12:32:12 psong09
551 * Added spinner component and renamed commentAction
552 *
553 * Revision 1.22 2005/08/23 11:58:26 schauwvliege
554 * Intruduction of Resume
555 *
556 * Revision 1.21 2005/08/23 08:50:38 ge0ffrey
557 * JAVACAREERS-284 part 3: resolver
558 *
559 * Revision 1.20 2005/08/22 15:25:05 ge0ffrey
560 * JAVACAREERS-284
561 *
562 * Revision 1.19 2005/08/11 13:31:35 bavo_jcs
563 * LastAdmin Fix
564 *
565 * Revision 1.18 2005/08/10 12:02:47 bme_jcs
566 * changed add in store
567 *
568 * Revision 1.16 2005/08/09 12:59:56 bavo_jcs
569 * Optimized imports
570 *
571 * Revision 1.15 2005/08/08 12:31:51 bme_jcs
572 * resolved PMD errors
573 *
574 * Revision 1.14 2005/08/08 09:38:22 bme_jcs
575 * resolved checkstyle errors
576 *
577 * Revision 1.13 2005/08/01 15:34:33 bavo_jcs
578 * URL fix
579 *
580 * Revision 1.12 2005/07/29 15:44:33 bavo_jcs
581 * Fixed URL to file
582 *
583 * Revision 1.11 2005/07/26 10:55:13 psong09
584 * Added more user details in the display table of the resumes page and fixed the table header (was not rendered).
585 * Modified the url of the pdf's to fix a bug when deploying on Tomcat
586 * Modified ajax script to open the pdf in a new window.
587 *
588 * Revision 1.10 2005/07/13 11:16:59 bavo_jcs
589 * Moved Ajax files
590 *
591 * Revision 1.9 2005/07/12 10:42:40 bavo_jcs
592 * PDF Ajax integration, added user info
593 *
594 * Revision 1.8 2005/07/12 10:02:42 bavo_jcs
595 * PDF Ajax integration
596 *
597 * Revision 1.7 2005/07/11 15:01:42 bavo_jcs
598 * PDF Ajax integration
599 *
600 * Revision 1.6 2005/07/08 14:02:55 bavo_jcs
601 * PDF Ajax integration
602 *
603 * Revision 1.5 2005/07/08 08:37:34 bavo_jcs
604 * PDF Ajax integration
605 *
606 * Revision 1.4 2005/06/20 10:00:00 psong09
607 * fixed search context highlighting.
608 *
609 * Revision 1.3 2005/06/14 12:05:53 schauwvliege
610 * CheckStyle and fixing tests
611 *
612 * Revision 1.2 2005/06/09 08:18:53 bejug_cc
613 * Fix initial import
614 *
615 * Revision 1.24 2005/06/07 15:16:32 PSONG09
616 * update listAllResumes
617 * Revision 1.23 2005/06/07 09:36:10 PSONG09 update
618 * listAllResumes
619 *
620 * Revision 1.22 2005/06/06 15:13:03 PSONG09 implemented listAllResumes
621 *
622 * Revision 1.21 2005/06/03 15:41:43 PSONG09 addded listResumes
623 *
624 * Revision 1.20 2005/06/02 07:26:35 PSONG09 added convertFilePathToUrl method
625 *
626 * Revision 1.19 2005/06/01 09:13:50 PSONG09 added infomessages
627 *
628 * Revision 1.18 2005/05/31 15:07:36 PSONG09 update upload and delete resume
629 *
630 * Revision 1.17 2005/05/31 08:47:16 bbr lucene fix
631 *
632 * Revision 1.16 2005/05/30 15:11:15 PSONG09 changed absolute upload path to
633 * relative one. Now loading project properties from application context instead
634 * of servletcontext.
635 *
636 * Revision 1.15 2005/05/30 11:44:23 PSONG09 changed absolute upload path to
637 * relative one. Now loading project properties from application context instead
638 * of servletcontext.
639 *
640 * Revision 1.14 2005/05/26 16:02:52 PSONG09 updated searchResume
641 *
642 * Revision 1.13 2005/05/26 15:46:12 PSONG09 updated viewResume
643 *
644 * Revision 1.12 2005/05/25 14:32:18 bbr lucene bean
645 *
646 * Revision 1.11 2005/05/25 13:56:36 bbr lucene bean
647 *
648 * Revision 1.10 2005/05/25 13:54:34 bbr lucene bean
649 *
650 * Revision 1.9 2005/05/25 07:21:18 PSONG09 added javacareers url property
651 *
652 * Revision 1.8 2005/05/23 17:51:10 sja Code cleanup.
653 *
654 * Revision 1.7 2005/05/23 15:42:00 bbr added weight to lucene
655 *
656 * Revision 1.6 2005/05/23 15:33:12 bbr added weight to lucene
657 *
658 * Revision 1.5 2005/05/23 15:11:53 PSONG09 integration pdf indexing update
659 *
660 * Revision 1.4 2005/05/23 09:55:37 PSONG09 integration pdf indexing
661 *
662 * Revision 1.3 2005/05/23 08:08:05 PSONG09 outcommented feeder calls
663 *
664 * Revision 1.2 2005/05/20 13:41:24 PSONG09 update upload component
665 *
666 * Revision 1.1 2005/05/19 13:55:24 PSONG09 update resume component +
667 * refactoring cv to resume
668 *
669 * Revision 1.8 2005/05/18 15:00:19 PSONG09 added mime type check
670 *
671 * Revision 1.7 2005/05/18 08:08:06 PSONG09 moved doOutcome to BaseAction
672 *
673 * Revision 1.5 2005/05/17 14:22:17 ssc checkstyle
674 *
675 * Revision 1.4 2005/05/17 06:52:54 PSONG09 update upload functionality
676 *
677 * Revision 1.3 2005/05/12 08:23:55 ssc Checkstyle errors
678 *
679 * Revision 1.2 2005/05/11 15:14:00 sja Added copyright and CVS tags.
680 *
681 */