001: package dinamica.security;
002:
003: import dinamica.*;
004: import javax.sql.DataSource;
005: import java.sql.*;
006:
007: /**
008: * Loads menu titles and menu items. This transaction will
009: * be used by the output module dinamica.security.MenuOutput.
010: * It does provide the menu recordset and a method to retrieve
011: * a menu's items recordset.
012: * <br><br>
013: * (c) 2004 Martin Cordova<br>
014: * This code is released under the LGPL license<br>
015: * Dinamica Framework - http://www.martincordova.com
016: * @author Martin Cordova (dinamica@martincordova.com)
017: * */
018: public class GetMenu extends GenericTransaction {
019:
020: /* (non-Javadoc)
021: * @see dinamica.GenericTransaction#service(dinamica.Recordset)
022: */
023: public int service(Recordset inputParams) throws Throwable {
024: int rc = 0;
025:
026: //reuse superclass code
027: super .service(inputParams);
028:
029: //get security datasource
030: String jndiName = (String) getContext().getAttribute(
031: "dinamica.security.datasource");
032: if (jndiName == null)
033: throw new Throwable(
034: "Context attribute [dinamica.security.datasource] is null, check your security filter configuration.");
035:
036: //get datasource and DB connection
037: DataSource ds = Jndi.getDataSource(jndiName);
038: Connection conn = ds.getConnection();
039: this .setConnection(conn);
040:
041: try {
042:
043: //get db channel
044: Db db = getDb();
045:
046: //build sql
047: String sql = getSQL(getResource("query-master.sql"),
048: inputParams);
049:
050: //get menus
051: Recordset menu = db.get(sql);
052:
053: publish("menu", menu);
054:
055: } catch (Throwable e) {
056: throw e;
057: } finally {
058: if (conn != null)
059: conn.close();
060: }
061:
062: return rc;
063:
064: }
065:
066: public Recordset getMenuItems(Recordset menu) throws Throwable {
067: //get security datasource
068: String jndiName = (String) getContext().getAttribute(
069: "dinamica.security.datasource");
070: if (jndiName == null)
071: throw new Throwable(
072: "Context attribute [dinamica.security.datasource] is null, check your security filter configuration.");
073:
074: //get datasource and DB connection
075: DataSource ds = Jndi.getDataSource(jndiName);
076: Connection conn = ds.getConnection();
077: this .setConnection(conn);
078:
079: try {
080:
081: //get db channel
082: Db db = getDb();
083:
084: //build sql
085: String sql = getSQL(getResource("query-detail.sql"), menu);
086:
087: //get menu items
088: Recordset items = db.get(sql);
089:
090: return items;
091:
092: } catch (Throwable e) {
093: throw e;
094: } finally {
095: if (conn != null)
096: conn.close();
097: }
098:
099: }
100:
101: }
|