View Javadoc

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             //workaround for not rendered html tags in search context
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                 //result.addItem(searchResult.getFile());
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                 //set the html tags to highlight the search context
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                 // form.setInfoMessage(Utils.getMessage("label_foundData"));
284                 //form.setRenderInfoMessage(true);
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     //TODO this should be injected in the Utils class and retrieved from there 
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  */