01: package com.technoetic.xplanner.tags;
02:
03: import java.util.List;
04: import javax.servlet.jsp.JspException;
05:
06: import com.technoetic.xplanner.security.AuthenticationException;
07: import com.technoetic.xplanner.security.auth.Authorizer;
08: import net.sf.hibernate.HibernateException;
09: import net.sf.hibernate.Session;
10:
11: public abstract class OptionsTag extends
12: org.apache.struts.taglib.html.OptionsTag {
13: public final String DEFAULT_LABEL_PROPERTY = "name";
14: public final String DEFAULT_PROPERTY = "id";
15: protected ContextInitiator contextInitiator;
16:
17: public int doStartTag() throws JspException {
18: createContextInitiator();
19: return super .doStartTag();
20: }
21:
22: private void createContextInitiator() {
23: contextInitiator = new ContextInitiator(pageContext);
24: contextInitiator.initStaticContext();
25: }
26:
27: public int doEndTag() throws JspException {
28: try {
29: List selectedBeans = getOptions();
30:
31: if (getProperty() == null) {
32: setProperty(DEFAULT_PROPERTY);
33: }
34: if (getLabelProperty() == null) {
35: setLabelProperty(DEFAULT_LABEL_PROPERTY);
36: }
37: pageContext.setAttribute(ContextInitiator.COLLECTION_KEY,
38: selectedBeans);
39: setCollection(ContextInitiator.COLLECTION_KEY);
40: return super .doEndTag();
41: } catch (JspException e) {
42: throw e;
43: } catch (Exception e) {
44: throw new JspException(e);
45: }
46: }
47:
48: protected abstract List getOptions() throws HibernateException,
49: AuthenticationException;
50:
51: public Session getSession() {
52: return contextInitiator.getSession();
53: }
54:
55: public Authorizer getAuthorizer() {
56: return contextInitiator.getAuthorizer();
57: }
58:
59: public int getLoggedInUserId() {
60: return contextInitiator.getLoggedInUserId();
61: }
62:
63: public void setSession(Session session) {
64: if (contextInitiator == null)
65: createContextInitiator();
66: contextInitiator.setSession(session);
67: }
68:
69: public void setAuthorizer(Authorizer authorizer) {
70: if (contextInitiator == null)
71: createContextInitiator();
72: contextInitiator.setAuthorizer(authorizer);
73: }
74:
75: public void setLoggedInUserId(int loggedInUserId) {
76: if (contextInitiator == null)
77: createContextInitiator();
78: contextInitiator.setLoggedInUserId(loggedInUserId);
79: }
80: }
|