View Javadoc
1   /******************************************************************************
2    * ImportPicsAjaxController.java - The Spring controller for the Import page AJAX calls
3    * 
4    * PicMan - The BuckoSoft Picture Manager in Java
5    * Copyright(c) 2008 - Dick Balaska
6    * 
7    */
8   package com.buckosoft.PicMan.web;
9   
10  import java.io.File;
11  import java.io.IOException;
12  import java.io.OutputStream;
13  import java.io.UnsupportedEncodingException;
14  import java.util.List;
15  
16  import javax.servlet.http.HttpServletRequest;
17  import javax.servlet.http.HttpServletResponse;
18  
19  import org.apache.commons.logging.Log;
20  import org.apache.commons.logging.LogFactory;
21  import org.dom4j.Document;
22  import org.dom4j.io.OutputFormat;
23  import org.dom4j.io.XMLWriter;
24  import org.springframework.web.servlet.ModelAndView;
25  import org.springframework.web.servlet.mvc.Controller;
26  
27  import com.buckosoft.BSAccount.web.BSAccountPageController;
28  import com.buckosoft.BSAccount.web.BSAccountUserWebSession;
29  import com.buckosoft.PicMan.business.PicManFacade;
30  import com.buckosoft.PicMan.dom.FilesInDirCountDom;
31  import com.buckosoft.PicMan.dom.ImportPicsDom;
32  import com.buckosoft.PicMan.dom.MosaicManDom;
33  import com.buckosoft.PicMan.domain.User;
34  
35   /** The Spring controller for the Import page AJAX calls
36   * @author Dick Balaska
37   * @since 2008/01/30
38   * @see <a href="http://cvs.buckosoft.com/Projects/java/PicMan/PicMan/src/com/buckosoft/PicMan/web/ImportPicsAjaxController.java">ImportPicsAjaxController.java</a>
39   */
40  public class ImportPicsAjaxController extends BSAccountPageController implements Controller {
41  	private static boolean DEBUG		= true;
42  	private final static boolean DEBUGLOTS	= true;
43  	protected final Log log = LogFactory.getLog(getClass());
44  
45  	private PicManFacade pmf;
46  	/** Set the reference to the PicMan API.
47  	 * @param pmf The PicManFacade
48  	 */
49  	public void setPicMan(PicManFacade pmf) { this.pmf = pmf; }
50  
51  	/** Enable debug logger output on this module
52  	 * @param debugFlag true == turn on debugging.
53  	 */
54  	public void setDEBUG(boolean debugFlag) {
55  		DEBUG = debugFlag;
56  	}
57  
58  	/** Spring standard http request handler.
59  	 * @param request The http request.
60  	 * @param response The http response.
61  	 * @return null to return just an http status because we pushed the DOM out the response.
62  	 */ 
63  	public ModelAndView handleRequest(HttpServletRequest request,
64  			HttpServletResponse response) {
65  		String v;
66  		String s;
67  		if (DEBUGLOTS)
68  			log.info("XML Import Pics Request");
69  
70  		response.setContentType("text/xml");
71  		response.addHeader("Cache-Control", "max-age=0");
72  		response.addHeader("Cache-Control", "no-cache");
73  		response.addHeader("expires", "0");
74  		response.addHeader("Expires", "Tue, 01 Jan 1980 1:00:00 GMT");
75  		response.addHeader("Pragma", "no-cache");
76  
77  		User user = null;
78  		BSAccountUserWebSession userWebSession = this.bsAccountMan.getUserWebSession(request);
79  		if (userWebSession != null) 
80  			user = (User)userWebSession.getUser();
81  		Document dom = null;
82  		String getPics = request.getParameter("getPics");
83  		if (getPics != null) {
84  			if (DEBUG)
85  				log.info("Determine Pics");
86  			List<File> list = pmf.getPicImporter().getPicNamesToImport();
87  			dom = ImportPicsDom.createDocument(list);
88  		}
89  		v = request.getParameter("getFilesInDirCount");
90  		if (v != null) {
91  			v = request.getParameter("rid");
92  			int rid = Integer.parseInt(v);
93  			v = request.getParameter("dir");
94  			dom = FilesInDirCountDom.createDocument(pmf, rid, v);
95  		}
96  		v = request.getParameter("ajaxImportOnePic");
97  		if (v != null) {
98  			v = request.getParameter("rid");
99  			int rid = Integer.parseInt(v);
100 			String odir = request.getParameter("odir");
101 			String iname = request.getParameter("iname");
102 			String oname = request.getParameter("oname");
103 			if (DEBUG)
104 				log.info("importOnePic rid=" + rid + " odir=" + odir + " iname=" + iname + " oname=" + oname);
105 			dom = pmf.getPicImporter().importPic(rid, odir, iname, oname);
106 		}
107 		v = request.getParameter("analyzeOnePic");
108 		if (v != null) {
109 			v = request.getParameter("fname");
110 			s = request.getParameter("customDate");
111 			dom = pmf.getPicImporter().analyzePic(v, s);
112 		}
113 		try {
114 			if (dom == null)
115 				dom = MosaicManDom.createDocument(pmf, user);
116 			OutputStream stream = response.getOutputStream();
117 			OutputFormat outformat = OutputFormat.createPrettyPrint();
118 			outformat.setEncoding("ISO-8859-1");
119 			XMLWriter writer = new XMLWriter(stream, outformat);
120 			writer.write(dom);
121 			writer.flush();
122 		} catch (UnsupportedEncodingException e) {
123 			log.info(e);
124 			pmf.addError(e);
125 		} catch (IOException e) {
126 			log.info(e);
127 			pmf.addError(e);
128 		}
129 		return null;
130 	}
131 
132 }