View Javadoc
1   /******************************************************************************
2    * MosaicDisplayAjaxController.java - The Spring controller for the Mosaic Display page AJAX calls
3    * 
4    * PicMan - The BuckoSoft Picture Manager in Java
5    * Copyright(c) 2007 - Dick Balaska
6    * 
7    */
8   package com.buckosoft.PicMan.web;
9   
10  import java.io.IOException;
11  import java.io.OutputStream;
12  import java.io.UnsupportedEncodingException;
13  
14  import javax.servlet.http.HttpServletRequest;
15  import javax.servlet.http.HttpServletResponse;
16  
17  import org.apache.commons.logging.Log;
18  import org.apache.commons.logging.LogFactory;
19  import org.dom4j.Document;
20  import org.dom4j.io.OutputFormat;
21  import org.dom4j.io.XMLWriter;
22  import org.springframework.web.servlet.ModelAndView;
23  import org.springframework.web.servlet.mvc.Controller;
24  
25  import com.buckosoft.BSAccount.web.BSAccountPageController;
26  import com.buckosoft.BSAccount.web.BSAccountUserWebSession;
27  import com.buckosoft.PicMan.business.PicManFacade;
28  import com.buckosoft.PicMan.dom.MosaicManDom;
29  import com.buckosoft.PicMan.domain.User;
30  
31  /** The Spring controller for the Mosaic Display page AJAX calls
32   * @author Dick Balaska
33   * @since 2007/12/28
34   * @see <a href="http://cvs.buckosoft.com/Projects/java/PicMan/PicMan/src/com/buckosoft/PicMan/web/MosaicDisplayAjaxController.java">MosaicDisplayAjaxController.java</a>
35   */
36  public class MosaicDisplayAjaxController extends BSAccountPageController implements	Controller {
37  	private final static boolean DEBUG		= false;
38  	private final static boolean DEBUGLOTS	= false;
39  	protected final Log logger = LogFactory.getLog(getClass());
40  
41  	private PicManFacade pmf;
42  
43  	/** Set the reference to the PicMan API.
44  	 * @param pmf The PicManFacade
45  	 */
46  	public void setPicMan(PicManFacade pmf) { this.pmf = pmf; }
47  
48  
49  	/** Spring standard http request handler, outputs a {@link MosaicManDom}
50  	 * @param request The http request
51  	 * @param response The http response
52  	 * @return null
53  	 */ 
54  	public ModelAndView handleRequest(HttpServletRequest request,
55  			HttpServletResponse response) {
56  		if (DEBUGLOTS)
57  			logger.info("XML MosaicDisplay Request");
58  
59  		response.setContentType("text/xml");
60  		response.addHeader("Cache-Control", "max-age=0");
61  		response.addHeader("Cache-Control", "no-cache");
62  		response.addHeader("expires", "0");
63  		response.addHeader("Expires", "Tue, 01 Jan 1980 1:00:00 GMT");
64  		response.addHeader("Pragma", "no-cache");
65  
66  		User user = null;
67  		BSAccountUserWebSession userWebSession = this.bsAccountMan.getUserWebSession(request);
68  		if (userWebSession != null) 
69  			user = (User)userWebSession.getUser();
70  		String outputMosaic = request.getParameter("outputMosaic");
71  		if (outputMosaic != null) {
72  			if (DEBUG)
73  				logger.info("OutputMosaic");
74  			pmf.getMosaicMan().outputMosaicFile();
75  		}
76  		try {
77  			Document dom = MosaicManDom.createDocument(pmf, user);
78  			OutputStream stream = response.getOutputStream();
79  			OutputFormat outformat = OutputFormat.createPrettyPrint();
80  			outformat.setEncoding("ISO-8859-1");
81  			XMLWriter writer = new XMLWriter(stream, outformat);
82  			writer.write(dom);
83  			writer.flush();
84  		} catch (UnsupportedEncodingException e) {
85  			logger.warn(e);
86  		} catch (IOException e) {
87  			logger.warn(e);
88  		}
89  		return null;
90  	}
91  }
92