View Javadoc

1   
2   package net.sourceforge.barbecue;
3   
4   import javax.portlet.*;
5   
6   import java.io.*;
7   import java.util.*;
8   import net.sourceforge.barbecue.output.*;
9   
10  /**
11   * 
12   *  Barcode portlet
13   *
14   *  Note: this portlet uses features from  
15   *        the Portlet 2.0 specification (JSR-286).
16   *        This portlet will not run in a Portlet 1.0 container.
17   *        
18   *  @author Sean Sullivan
19   *
20   */
21  public class BarcodePortlet 
22  		extends GenericPortlet
23  		implements ResourceServingPortlet
24  		
25  {
26  	private static final String PARAM_BARCODE_DATA = "barcode_data";
27  	private static final String SESSION_KEY = "barcode_data";
28  
29  	protected java.lang.String getTitle(RenderRequest request)
30  	{
31  		return "Barcode portlet";
32  	}
33  	
34  	
35  	protected void doEdit(RenderRequest req, RenderResponse resp)
36  		throws PortletException, IOException
37  	{
38  		resp.setContentType("text/html");
39  		PrintWriter writer = resp.getWriter();
40  		PortletURL url = resp.createActionURL();
41  		writer.println("<form method=\"POST\" action=\"" + url + "\">");
42  		writer.println("Enter string: <input name=\"" + PARAM_BARCODE_DATA + "\" type=text size=30></input>");
43  		writer.println("<input type=submit value=\"Submit\"></input>");
44  		writer.println("</form>");
45  		
46  	}
47  	
48  	protected void doView(RenderRequest req, RenderResponse resp)
49  		throws PortletException, IOException
50  	{
51  		resp.setContentType("text/html");
52  		PrintWriter writer = resp.getWriter();
53  		ResourceURL url = resp.createResourceURL();
54  		writer.println("<img src=\"" + url + "\" />");
55  	}
56  
57  	protected void doHelp(RenderRequest req, RenderResponse resp)
58  		throws PortletException, IOException
59  	{
60  		resp.setContentType("text/html");
61  		PrintWriter writer = resp.getWriter();
62  		writer.println("<a target=\"_blank\" href=\"http://en.wikipedia.org/wiki/Barcode\">What is a barcode?</a>");
63  	}
64  
65  	public void processAction(ActionRequest req,
66  							ActionResponse resp)
67  		     throws PortletException,
68  		            java.io.IOException
69      {
70  			storeDataInSession(req);
71  	}
72  
73  	static private void storeDataInSession(PortletRequest req)
74  	{
75  		PortletSession session = req.getPortletSession(true);
76  		session.setAttribute(SESSION_KEY, req.getParameter(PARAM_BARCODE_DATA));
77  	}
78  	
79  	static private Barcode createBarcode(String data) 
80  	{
81  		if (data == null)
82  		{
83  			data = "Barcode";
84  		}
85  
86  		try
87  		{
88  			Barcode b = BarcodeFactory.createCode128(data);
89  			return b;
90  		}
91  		catch (BarcodeException ex)
92  		{
93  			throw new RuntimeException(ex);
94  		}
95  	}
96  	
97  	static private Barcode createBarcode(PortletRequest req)
98  	{
99  		PortletSession sess = req.getPortletSession(true);
100 		return createBarcode( (String) sess.getAttribute(SESSION_KEY));
101 	}
102 	
103 	
104 	public void serveResource(ResourceRequest req, ResourceResponse resp) 
105 				throws PortletException, IOException
106 	{
107 
108 		Barcode b = createBarcode(req);
109 		
110 		if (b == null)
111 		{
112 			b = createBarcode("Barcode");
113 		}
114 		
115 		resp.setContentType("image/png");
116 		OutputStream out = resp.getPortletOutputStream();
117 		try
118 		{
119 			BarcodeImageHandler.writePNG(b, out);
120 			out.flush();
121 		}
122 		catch (OutputException ex)
123 		{
124 			throw new PortletException(ex);
125 		}
126 		
127 		
128 	}
129 }