ktlili      2005/11/18 17:25:39 CET

  Modified files:
    .                    SQLPortlet.jpx 
    war                  project.xml 
    war/src/java/org/jahia/clipping/sql/bean QueryBean.java 
    war/src/java/org/jahia/clipping/sql/portlet QueryPortlet.java 
    war/src/webapp/WEB-INF portlet.xml web.xml 
    war/src/webapp/templates help.jsp view.jsp 
  Log:
  - add edit mode
  - add admin role
  
  Revision  Changes    Path
  1.2       +1 -0      sqlclip_portlet/SQLPortlet.jpx
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/sqlclip_portlet/SQLPortlet.jpx.diff?r1=1.1&r2=1.2&f=h
  1.3       +15 -8     sqlclip_portlet/war/project.xml
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/sqlclip_portlet/war/project.xml.diff?r1=1.2&r2=1.3&f=h
  1.3       +1 -0      
sqlclip_portlet/war/src/java/org/jahia/clipping/sql/bean/QueryBean.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/sqlclip_portlet/war/src/java/org/jahia/clipping/sql/bean/QueryBean.java.diff?r1=1.2&r2=1.3&f=h
  1.3       +300 -212  
sqlclip_portlet/war/src/java/org/jahia/clipping/sql/portlet/QueryPortlet.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/sqlclip_portlet/war/src/java/org/jahia/clipping/sql/portlet/QueryPortlet.java.diff?r1=1.2&r2=1.3&f=h
  1.3       +10 -1     sqlclip_portlet/war/src/webapp/WEB-INF/portlet.xml
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/sqlclip_portlet/war/src/webapp/WEB-INF/portlet.xml.diff?r1=1.2&r2=1.3&f=h
  1.2       +9 -9      sqlclip_portlet/war/src/webapp/WEB-INF/web.xml
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/sqlclip_portlet/war/src/webapp/WEB-INF/web.xml.diff?r1=1.1&r2=1.2&f=h
  1.2       +1 -2      sqlclip_portlet/war/src/webapp/templates/help.jsp
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/sqlclip_portlet/war/src/webapp/templates/help.jsp.diff?r1=1.1&r2=1.2&f=h
  1.3       +53 -48    sqlclip_portlet/war/src/webapp/templates/view.jsp
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/sqlclip_portlet/war/src/webapp/templates/view.jsp.diff?r1=1.2&r2=1.3&f=h
  
  
  
  Index: SQLPortlet.jpx
  ===================================================================
  RCS file: /home/cvs/repository/sqlclip_portlet/SQLPortlet.jpx,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SQLPortlet.jpx    1 Sep 2005 12:32:52 -0000       1.1
  +++ SQLPortlet.jpx    18 Nov 2005 16:25:37 -0000      1.2
  @@ -142,6 +142,7 @@
       <property category="directorynode" name="showSubdirectories" value="1"/>
       <property category="directorynode" name="url" value="war/src/webapp"/>
     </node>
  +  <file path="war/src/webapp/templates/edit.jsp"/>
     <file path="maven.xml"/>
     <file path="war/project.properties"/>
     <file path="project.properties"/>
  
  
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/repository/sqlclip_portlet/war/project.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- project.xml       8 Sep 2005 15:43:49 -0000       1.2
  +++ project.xml       18 Nov 2005 16:25:38 -0000      1.3
  @@ -5,10 +5,9 @@
   <project>
     <extend>${basedir}/../project.xml</extend>
     <pomVersion>3</pomVersion>
  -  <artifactId>queryPortlet</artifactId>
  +  <artifactId>sqlClipperPortletPattern</artifactId>
     <name>Portlet WAR module</name>
  -  &common-warsite;
  -  &common-warrepository;
  +
     <dependencies>
       <!-- commons-beanutils: inherited and updated to version 1.7 -->
       <dependency>
  @@ -17,7 +16,8 @@
         <version>1.7.0</version>
         <properties>
           <war.bundle>true</war.bundle>
  -        <war.shared.lib>true</war.shared.lib>
  +        <!--<war.bundle>false</war.bundle>
  +        <war.shared.lib>true</war.shared.lib>-->
         </properties>
       </dependency>
       <!-- commons-collections: inherited and updated to version 3.1 -->
  @@ -27,7 +27,8 @@
         <version>3.1</version>
         <properties>
           <war.bundle>true</war.bundle>
  -        <war.shared.lib>true</war.shared.lib>
  +        <!--<war.bundle>false</war.bundle>
  +        <war.shared.lib>true</war.shared.lib>-->
         </properties>
       </dependency>
       <!-- commons-digester: inherited and updated to version 3.1 -->
  @@ -37,7 +38,8 @@
         <version>1.5</version>
         <properties>
           <war.bundle>true</war.bundle>
  -        <war.shared.lib>true</war.shared.lib>
  +        <!--<war.bundle>false</war.bundle>
  +        <war.shared.lib>true</war.shared.lib>-->
         </properties>
       </dependency>
       <!-- common-logging: inherited -->
  @@ -47,7 +49,8 @@
         <version>1.0.4</version>
         <properties>
           <war.bundle>true</war.bundle>
  -        <war.shared.lib>true</war.shared.lib>
  +        <!--<war.bundle>false</war.bundle>
  +        <war.shared.lib>true</war.shared.lib>-->
         </properties>
       </dependency>
   
  @@ -58,6 +61,8 @@
         <version>3.1.7-bin</version>
         <properties>
           <war.bundle>true</war.bundle>
  +        <!--<war.bundle>false</war.bundle>
  +        <war.shared.lib>true</war.shared.lib>-->
         </properties>
       </dependency>
       <!-- hsqldb: inherited -->
  @@ -67,7 +72,8 @@
         <version>1.7.1</version>
         <properties>
           <war.bundle>true</war.bundle>
  -        <war.shared.lib>true</war.shared.lib>
  +        <!--<war.bundle>false</war.bundle>
  +        <war.shared.lib>true</war.shared.lib>-->
         </properties>
       </dependency>
       <!-- portlet -->
  @@ -77,6 +83,7 @@
         <version>1.0</version>
         <properties>
           <war.bundle>false</war.bundle>
  +        <war.shared.lib>true</war.shared.lib>
         </properties>
       </dependency>
     </dependencies>
  
  
  
  Index: QueryBean.java
  ===================================================================
  RCS file: 
/home/cvs/repository/sqlclip_portlet/war/src/java/org/jahia/clipping/sql/bean/QueryBean.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- QueryBean.java    8 Sep 2005 15:43:49 -0000       1.2
  +++ QueryBean.java    18 Nov 2005 16:25:38 -0000      1.3
  @@ -1,5 +1,6 @@
   package org.jahia.clipping.sql.bean;
   
  +
   /*
    *  QueryBean.java
    *
  
  
  
  Index: QueryPortlet.java
  ===================================================================
  RCS file: 
/home/cvs/repository/sqlclip_portlet/war/src/java/org/jahia/clipping/sql/portlet/QueryPortlet.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- QueryPortlet.java 8 Sep 2005 15:43:49 -0000       1.2
  +++ QueryPortlet.java 18 Nov 2005 16:25:38 -0000      1.3
  @@ -8,7 +8,6 @@
   import org.jahia.clipping.sql.bean.config.DbProps;
   import org.jahia.clipping.sql.bean.QueryBean;
   
  -
   /**
    *  QueryPortlet provides the methods neccessary to render a portlet that
    *  displays a database query for the user.
  @@ -19,215 +18,304 @@
   
   public class QueryPortlet extends GenericPortlet {
   
  -    /**
  -     *  Designated Logger for this class.
  -     */
  -    private final Log log = LogFactory.getLog(getClass().getName());
  -
  -    private String viewUrl;
  -    private String helpUrl;
  -
  -
  -    /**
  -     *  Executed one time, upon portlet initialization.
  -     *
  -     [EMAIL PROTECTED]  config                Description of Parameter
  -     [EMAIL PROTECTED]  PortletException  Description of Exception
  -     */
  -    public void init(PortletConfig config) throws PortletException {
  -        System.err.println("Call init Query portlet");
  -        try {
  -            log.info("Executing QueryPortlet's init method.");
  -
  -            super.init(config);
  -
  -            //init method of a portlet is a good place to perform
  -            //any necessary, 1x configurations.
  -            viewUrl = config.getInitParameter("view_url");
  -            helpUrl = config.getInitParameter("help_url");
  -
  -        } catch (Exception ex) {
  -            ex.printStackTrace();
  -        }
  -        System.err.println("End Call init Query portlet");
  -    }
  -
  -
  -    /**
  -     *  Executed in response to action on portlet, like submitting a form.
  -     *
  -     [EMAIL PROTECTED]  request               Description of Parameter
  -     [EMAIL PROTECTED]  response              Description of Parameter
  -     [EMAIL PROTECTED]  PortletException  Description of Exception
  -     [EMAIL PROTECTED]  IOException       Description of Exception
  -     */
  -    public void processAction(ActionRequest request, ActionResponse 
response) throws
  -            IOException, PortletException {
  -        try {
  -            log.info("Executing QueryPortlet's processAction method.");
  -
  -            if (request.getPortletMode().equals(PortletMode.EDIT)) {
  -                String errorMessage = null;
  -                boolean isValid = false;
  -
  -                //Reset old session attributes.
  -                PortletSession session = request.getPortletSession();
  -                session.setAttribute("title", null);
  -                session.setAttribute("queryColumns", null);
  -                session.setAttribute("queryData", null);
  -
  -                //Get our edit form's data...
  -                PortletPreferences preferences = request.getPreferences();
  -                String query = request.getParameter("query");
  -                String title = request.getParameter("title");
  -
  -                preferences.setValue("query", query);
  -                preferences.setValue("title", title);
  -                try {
  -                    //This will fire our PreferencesValidation validate 
method..
  -                    preferences.store();
  -                    isValid = true;
  -                } catch (ValidatorException ve) {
  -                    //Assign values from ActionResponse to RenderRequest for 
redisplay in form.
  -                    response.setRenderParameter("sql", 
request.getParameter("sql"));
  -                    
response.setRenderParameter("title",request.getParameter("title"));
  -                    errorMessage = "An error occurred processing your SQL.  
" +"Please check your input and try again.";
  -                    response.setRenderParameter("errorMessage",errorMessage);
  -                }
  -
  -                if (isValid) {
  -                    response.setPortletMode(PortletMode.VIEW);
  -                }
  -            }
  -        } catch (Exception ex) {
  -            ex.printStackTrace();
  -        }
  -    }
  -
  -
  -    /**
  -     *  Executed one time, prior to portlet being garbage collected.
  -     */
  -    public void destroy() {
  -        log.info("Executing QueryPortlet's destroy method.");
  -    }
  -
  -
  -    /**
  -     *  Called by render method to prepare markup for user display.
  -     *
  -     [EMAIL PROTECTED]  request   Description of Parameter
  -     [EMAIL PROTECTED]  response  Description of Parameter
  -     */
  -    public void doView(RenderRequest request, RenderResponse response) {
  -        try {
  -            log.info("Executing QueryPortlet's doView method.");
  -
  -            response.setContentType("text/html");
  -            PortletPreferences preferences = request.getPreferences();
  -
  -            // Database connection
  -            String driver = preferences.getValue("driver", 
"com.mysql.jdbc.Driver");
  -            String url = preferences.getValue("url", 
"jdbc:mysql://localhost:3306/test");
  -            String username = preferences.getValue("username", "root");
  -            String password = preferences.getValue("password", "root1234");
  -
  -            //SQL query
  -            String sql = preferences.getValue("query", "Select * from emp");
  -            String title = preferences.getValue("title", "Employer_Query");
  -            String tableSize = preferences.getValue("tableSize", "5");
  -
  -
  -            if (log.isDebugEnabled()) {
  -                log.debug("QueryPortlet's doView method. sql : " + sql);
  -            }
  -
  -            //If current query's results have not been cached, do so now.
  -            PortletSession session = request.getPortletSession();
  -            if ((session.getAttribute("queryColumns") == null) ||
  -                (session.getAttribute("queryData") == null)) {
  -                QueryBean qb = new QueryBean(new 
DbProps(driver,url,username,password));
  -                qb.executeQuery(sql);
  -
  -                //Get column headings/query results and assign them to 
request attributes.
  -                String[] queryColumns = (String[]) qb.getQueryColumns();
  -                List queryData = (List) qb.getQueryData();
  -                session.setAttribute("title", 
title,PortletSession.PORTLET_SCOPE);
  -                session.setAttribute("queryColumns", 
queryColumns,PortletSession.PORTLET_SCOPE);
  -                session.setAttribute("queryData", 
queryData,PortletSession.PORTLET_SCOPE);
  -                session.setAttribute("tableSize", 
tableSize,PortletSession.PORTLET_SCOPE);
  -            }
  -            PortletRequestDispatcher dispatcher = 
getPortletContext().getRequestDispatcher(viewUrl);
  -            dispatcher.include(request, response);
  -        } catch (Exception ex) {
  -            ex.printStackTrace();
  -        }
  -        System.err.println("Call do view Query portlet");
  -    }
  -
  -
  -    /**
  -     *  Executed when user requests to edit the portlet's settings. Also
  -     *  redisplayed upon failure to set portlet's settings correctly (to 
displays
  -     *  errors, etc.).
  -     *
  -     [EMAIL PROTECTED]  request   Description of Parameter
  -     [EMAIL PROTECTED]  response  Description of Parameter
  -     */
  -    /*public void doEdit(RenderRequest request, RenderResponse response) {
  -     try {
  -      log.info("Executing QueryPortlet's doEdit method.");
  -
  -      response.setContentType("text/html");
  -      PortletPreferences preferences = request.getPreferences();
  -
  -      String sql = preferences.getValue("sql", "BAD SQL");
  -      String title = preferences.getValue("title", "***");
  -
  -      //If any errors are encountered from previous edit attempt, provide 
them to request.
  -      String errorMessage = request.getParameter("errorMessage");
  -      if (errorMessage != null) {
  -       request.setAttribute("sql", request.getParameter("sql"));
  -       request.setAttribute("title",
  -         request.getParameter("title"));
  -       request.setAttribute("errorMessage", errorMessage);
  -      }
  -      else {
  -       //no errors. Set initial param values.
  -       request.setAttribute("sql", sql);
  -       request.setAttribute("title", title);
  -      }
  -
  -      PortletRequestDispatcher dispatcher = getPortletContext().
  -        getRequestDispatcher(editUrl);
  -      dispatcher.include(request, response);
  -     }
  -     catch (Exception ex) {
  -      ex.printStackTrace();
  -     }
  -      }*/
  -
  -
  -    /**
  -     *  Executed when user follows the 'help' link. Typically, describes what
  -     *  portlet is/does.
  -     *
  -     [EMAIL PROTECTED]  request               Description of Parameter
  -     [EMAIL PROTECTED]  response              Description of Parameter
  -     [EMAIL PROTECTED]  PortletException  Description of Exception
  -     [EMAIL PROTECTED]  IOException       Description of Exception
  -     */
  -    public void doHelp(RenderRequest request, RenderResponse response) throws
  -            IOException, PortletException {
  -        try {
  -            log.info("Executing QueryPortlet's doHelp method.");
  -
  -            response.setContentType("text/html");
  -            PortletRequestDispatcher dispatcher = getPortletContext().
  -                                                  
getRequestDispatcher(helpUrl);
  -            dispatcher.include(request, response);
  -        } catch (IOException ex) {
  -            ex.printStackTrace();
  -        }
  -    }
  +     /**
  +      *  Designated Logger for this class.
  +      */
  +     private final Log log = LogFactory.getLog(getClass().getName());
  +
  +     private String viewUrl;
  +     private String helpUrl;
  +     private String editUrl;
  +
  +
  +     /**
  +      *  Executed one time, upon portlet initialization.
  +      *
  +      [EMAIL PROTECTED]  config                Description of Parameter
  +      [EMAIL PROTECTED]  PortletException  Description of Exception
  +      */
  +     public void init(PortletConfig config) throws PortletException {
  +             log.debug("Call init Query portlet");
  +             //System.err.println("Call init Query portlet");
  +             try {
  +                     log.info("Executing QueryPortlet's init method.");
  +
  +                     super.init(config);
  +
  +                     //init method of a portlet is a good place to perform
  +                     //any necessary, 1x configurations.
  +                     viewUrl = config.getInitParameter("view_url");
  +                     helpUrl = config.getInitParameter("help_url");
  +                     editUrl = config.getInitParameter("edit_url");
  +             }
  +             catch (Exception ex) {
  +                     ex.printStackTrace();
  +             }
  +             log.debug("End Call init Query portlet");
  +     }
  +
  +
  +     /**
  +      *  Executed in response to action on portlet, like submitting a form.
  +      *
  +      [EMAIL PROTECTED]  request               Description of Parameter
  +      [EMAIL PROTECTED]  response              Description of Parameter
  +      [EMAIL PROTECTED]  PortletException  Description of Exception
  +      [EMAIL PROTECTED]  IOException       Description of Exception
  +      */
  +     public void processAction(ActionRequest request, ActionResponse 
response) throws
  +                     IOException, PortletException {
  +             try {
  +                     log.info("Executing QueryPortlet's processAction 
method.");
  +                     if (request.getPortletMode() == PortletMode.EDIT) {
  +                             boolean errorHasOccured = 
savePreferences(request);
  +                             if (!errorHasOccured) {
  +                                     
response.setPortletMode(PortletMode.VIEW);
  +                             }
  +                     }
  +             }
  +             catch (Exception ex) {
  +                     ex.printStackTrace();
  +             }
  +     }
  +
  +
  +     /**
  +      *  Executed one time, prior to portlet being garbage collected.
  +      */
  +     public void destroy() {
  +             log.info("Executing QueryPortlet's destroy method.");
  +     }
  +
  +
  +     /**
  +      *  Called by render method to prepare markup for user display.
  +      *
  +      [EMAIL PROTECTED]  request   Description of Parameter
  +      [EMAIL PROTECTED]  response  Description of Parameter
  +      */
  +     public void doView(RenderRequest request, RenderResponse response) {
  +             try {
  +                     log.info("Executing QueryPortlet's doView method.");
  +
  +                     response.setContentType("text/html");
  +                     PortletPreferences preferences = 
request.getPreferences();
  +
  +                     // Database connection
  +                     String driver = preferences.getValue("driver", 
"com.mysql.jdbc.Driver");
  +                     String url = preferences.getValue("url", 
"jdbc:mysql://localhost:3306/test");
  +                     String username = preferences.getValue("username", 
"root");
  +                     String password = preferences.getValue("userpassword", 
"root1234");
  +
  +                     //SQL query
  +                     String sql = preferences.getValue("query", "Select * 
from emp");
  +                     String title = preferences.getValue("title", 
"Employer_Query");
  +                     String tableSize = preferences.getValue("tableSize", 
"5");
  +
  +                     if (log.isDebugEnabled()) {
  +                             log.debug("QueryPortlet's doView method. sql : 
" + sql);
  +                     }
  +
  +                     //If current query's results have not been cached, do 
so now.
  +                     PortletSession session = request.getPortletSession();
  +                     if ((session.getAttribute("queryColumns") == null) || 
(session.getAttribute("queryData") == null)) {
  +                             QueryBean qb = new QueryBean(new 
DbProps(driver, url, username, password));
  +                             qb.executeQuery(sql);
  +
  +                             //Get column headings/query results and assign 
them to request attributes.
  +                             String[] queryColumns = (String[]) 
qb.getQueryColumns();
  +                             List queryData = (List) qb.getQueryData();
  +                             saveInSession(title, tableSize, session, 
queryColumns, queryData);
  +                     }
  +                     PortletRequestDispatcher dispatcher = 
getPortletContext().getRequestDispatcher(viewUrl);
  +                     dispatcher.include(request, response);
  +             }
  +             catch (Exception ex) {
  +                     request.getPortletSession().setAttribute("error", 
"Check paramters validity");
  +                     ex.printStackTrace();
  +             }
  +     }
  +
  +
  +     /**
  +      *  Executed when user requests to edit the portlet's settings. Also
  +      *  redisplayed upon failure to set portlet's settings correctly (to 
displays
  +      *  errors, etc.).
  +      *
  +      [EMAIL PROTECTED]  request   Description of Parameter
  +      [EMAIL PROTECTED]  response  Description of Parameter
  +      */
  +     public void doEdit(RenderRequest request, RenderResponse response) {
  +             try {
  +                     log.info("Executing QueryPortlet's doEdit method.");
  +                     response.setContentType("text/html");
  +                     // set parameter form preferences
  +                     setRequestParametersFromPreferences(request);
  +
  +                     //dispatch
  +                     PortletRequestDispatcher dispatcher = 
getPortletContext().getRequestDispatcher(editUrl);
  +                     dispatcher.include(request, response);
  +             }
  +             catch (Exception ex) {
  +                     ex.printStackTrace();
  +             }
  +     }
  +
  +
  +     /**
  +      *  Executed when user follows the 'help' link. Typically, describes 
what
  +      *  portlet is/does.
  +      *
  +      [EMAIL PROTECTED]  request               Description of Parameter
  +      [EMAIL PROTECTED]  response              Description of Parameter
  +      [EMAIL PROTECTED]  PortletException  Description of Exception
  +      [EMAIL PROTECTED]  IOException       Description of Exception
  +      */
  +     public void doHelp(RenderRequest request, RenderResponse response) 
throws
  +                     IOException, PortletException {
  +             try {
  +                     log.info("Executing QueryPortlet's doHelp method.");
  +
  +                     response.setContentType("text/html");
  +                     PortletRequestDispatcher dispatcher = 
getPortletContext().getRequestDispatcher(helpUrl);
  +                     dispatcher.include(request, response);
  +             }
  +             catch (IOException ex) {
  +                     ex.printStackTrace();
  +             }
  +     }
  +
  +
  +     /**
  +      *  Sets the RequestParametersFromPreferences attribute of the 
QueryPortlet
  +      *  object
  +      *
  +      [EMAIL PROTECTED]  request  The new RequestParametersFromPreferences 
value
  +      */
  +     private void setRequestParametersFromPreferences(RenderRequest request) 
{
  +             PortletPreferences preferences = request.getPreferences();
  +
  +             // Database connection
  +             String driver = preferences.getValue("driver", 
"com.mysql.jdbc.Driver");
  +             request.setAttribute("driver", driver);
  +
  +             String url = preferences.getValue("url", 
"jdbc:mysql://localhost:3306/test");
  +             request.setAttribute("url", url);
  +
  +             String username = preferences.getValue("username", "root");
  +             request.setAttribute("username", username);
  +
  +             String password = preferences.getValue("userpassword", 
"root1234");
  +             request.setAttribute("userpassword", password);
  +
  +             //SQL query
  +             String sql = preferences.getValue("query", "Select * from emp");
  +             request.setAttribute("query", sql);
  +
  +             String title = preferences.getValue("title", "Employer_Query");
  +             request.setAttribute("title", title);
  +
  +             String tableSize = preferences.getValue("tableSize", "5");
  +             request.setAttribute("tableSize", tableSize);
  +     }
  +
  +
  +     /**
  +      *  Description of the Method
  +      *
  +      [EMAIL PROTECTED]  title         Description of Parameter
  +      [EMAIL PROTECTED]  tableSize     Description of Parameter
  +      [EMAIL PROTECTED]  session       Description of Parameter
  +      [EMAIL PROTECTED]  queryColumns  Description of Parameter
  +      [EMAIL PROTECTED]  queryData     Description of Parameter
  +      */
  +     private void saveInSession(String title, String tableSize,
  +                     PortletSession session,
  +                     String[] queryColumns, List queryData) {
  +             session.setAttribute("title", title, 
PortletSession.PORTLET_SCOPE);
  +             session.setAttribute("queryColumns", queryColumns, 
PortletSession.PORTLET_SCOPE);
  +             session.setAttribute("queryData", queryData, 
PortletSession.PORTLET_SCOPE);
  +             session.setAttribute("tableSize", tableSize, 
PortletSession.PORTLET_SCOPE);
  +     }
  +
  +
  +     /**
  +      *  Description of the Method
  +      *
  +      [EMAIL PROTECTED]  session  Description of Parameter
  +      */
  +     private void resetSessionAttribut(PortletSession session) {
  +             session.removeAttribute("title");
  +             session.removeAttribute("queryColumns");
  +             session.removeAttribute("queryData");
  +             session.removeAttribute("tableSize");
  +                session.removeAttribute("error");
  +     }
  +
  +
  +
  +     /**
  +      *  Sets the RequestParametersFromPreferences attribute of the 
QueryPortlet
  +      *  object
  +      *
  +      [EMAIL PROTECTED]  request  The new RequestParametersFromPreferences 
value
  +      [EMAIL PROTECTED]          Description of the Returned Value
  +      */
  +     private boolean savePreferences(ActionRequest request) {
  +             try {
  +                     PortletPreferences preferences = 
request.getPreferences();
  +
  +                     // Database connection
  +                     String driver = (String) request.getParameter("driver");
  +                     preferences.setValue("driver", assertNotNull(driver));
  +
  +                     String url = (String) request.getParameter("url");
  +                     preferences.setValue("url", assertNotNull(url));
  +
  +                     String username = (String) 
request.getParameter("username");
  +                     preferences.setValue("username", 
assertNotNull(username));
  +
  +                     String password = (String) 
request.getParameter("userpassword");
  +                     preferences.setValue("userpassword", 
assertNotNull(password));
  +
  +                     //SQL query
  +                     String sql = (String) request.getParameter("query");
  +                     preferences.setValue("query", assertNotNull(sql));
  +
  +                     String title = (String) request.getParameter("title");
  +                     preferences.setValue("title", assertNotNull(title));
  +
  +                     String tableSize = (String) 
request.getParameter("tableSize");
  +                     preferences.setValue("tableSize", 
assertNotNull(tableSize));
  +
  +                     preferences.store();
  +                        resetSessionAttribut(request.getPortletSession());
  +
  +                     return false;
  +             }
  +             catch (ValidatorException ex) {
  +                     ex.printStackTrace();
  +                     return true;
  +             }
  +             catch (Exception ex) {
  +                     ex.printStackTrace();
  +                     return true;
  +             }
  +
  +     }
  +
  +
  +     /**
  +      *  Description of the Method
  +      *
  +      [EMAIL PROTECTED]  value  Description of Parameter
  +      [EMAIL PROTECTED]        Description of the Returned Value
  +      */
  +     private String assertNotNull(String value) {
  +             if (value == null) {
  +                     value = "";
  +             }
  +             return value;
  +     }
  +
   }
  
  
  
  Index: portlet.xml
  ===================================================================
  RCS file: 
/home/cvs/repository/sqlclip_portlet/war/src/webapp/WEB-INF/portlet.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- portlet.xml       8 Sep 2005 15:43:50 -0000       1.2
  +++ portlet.xml       18 Nov 2005 16:25:38 -0000      1.3
  @@ -13,11 +13,16 @@
         <name>help_url</name>
         <value>/templates/help.jsp</value>
       </init-param>
  +    <init-param>
  +      <name>edit_url</name>
  +      <value>/templates/edit.jsp</value>
  +    </init-param>
       <expiration-cache>-1</expiration-cache>
       <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>view</portlet-mode>
         <portlet-mode>help</portlet-mode>
  +      <portlet-mode>edit</portlet-mode>
       </supports>
       <supported-locale>en</supported-locale>
       <portlet-info>
  @@ -25,7 +30,11 @@
         <short-title>Query Portlet</short-title>
       </portlet-info>
       <portlet-preferences>
  -      
<preferences-validator>com.jahia.clipping.sql.portlet.QueryPreferencesValidator</preferences-validator>
  +      
<preferences-validator>org.jahia.clipping.sql.portlet.QueryPreferencesValidator</preferences-validator>
       </portlet-preferences>
  +     <security-role-ref>
  +      <role-name>Administrator</role-name>
  +      <role-link>admin</role-link>
  +    </security-role-ref>
     </portlet>
   </portlet-app>
  
  
  
  Index: web.xml
  ===================================================================
  RCS file: 
/home/cvs/repository/sqlclip_portlet/war/src/webapp/WEB-INF/web.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- web.xml   1 Sep 2005 12:32:54 -0000       1.1
  +++ web.xml   18 Nov 2005 16:25:38 -0000      1.2
  @@ -1,15 +1,15 @@
   <?xml version="1.0" encoding="ISO-8859-1"?>
  -
   <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd";>
  -
   <web-app>
  -     <display-name>query_portlet</display-name>
  -     <description>
  -        This is a simple portlet designed to display a database query. 
  -     </description>
  -     <welcome-file-list>
  -             <welcome-file>index.html</welcome-file>
  -     </welcome-file-list>
  +  <display-name>query_portlet</display-name>
  +  <description>This is a simple portlet designed to display a database 
query.</description>
  +  <welcome-file-list>
  +    <welcome-file>index.html</welcome-file>
  +  </welcome-file-list>
  +  <security-role>
  +    <description>The admin role</description>
  +    <role-name>admin</role-name>
  +  </security-role>
   </web-app>
  
  
  
  Index: help.jsp
  ===================================================================
  RCS file: 
/home/cvs/repository/sqlclip_portlet/war/src/webapp/templates/help.jsp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- help.jsp  1 Sep 2005 12:32:54 -0000       1.1
  +++ help.jsp  18 Nov 2005 16:25:39 -0000      1.2
  @@ -1,7 +1,6 @@
  -<[EMAIL PROTECTED]  file="header.jsp"%>
   
   <p align="left">
  -<b>QueryPortlet</b> displays the results of a query from the database.  You 
may 
  +<b>QueryPortlet</b> displays the results of a query from the database.  You 
may
   edit the preferences of the portlet to change the query and its title.
   </p>
   
  
  
  
  Index: view.jsp
  ===================================================================
  RCS file: 
/home/cvs/repository/sqlclip_portlet/war/src/webapp/templates/view.jsp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- view.jsp  8 Sep 2005 15:43:50 -0000       1.2
  +++ view.jsp  18 Nov 2005 16:25:39 -0000      1.3
  @@ -4,37 +4,35 @@
   <[EMAIL PROTECTED] uri="http://java.sun.com/portlet"; prefix="portlet"%>
   <portlet:defineObjects/>
   <%
  -    //Display the table data:
  -    List queryData = (List) 
renderRequest.getPortletSession().getAttribute("queryData");
  -    int resultSize = queryData.size();
  -
  -    //page
  -    int pageIndex = 0;
  -    String pageStrg = renderRequest.getParameter("page");
  -    if (pageStrg != null) {
  -      pageIndex = Integer.parseInt(pageStrg);
  -    }
  -    //max rows
  -    int maxRows = resultSize;
  -    String maxRowsStrg = (String) 
renderRequest.getPortletSession().getAttribute("tableSize");
  -    if (maxRowsStrg != null) {
  -      maxRows = Integer.parseInt(maxRowsStrg);
  -    }
  -
  -    // first and last index in the queryData List
  -    int firstIndex = pageIndex*maxRows;
  -    int lastIndex = firstIndex + maxRows;
  -    if (lastIndex > resultSize) {
  -      lastIndex = resultSize;
  -    }
  - %>
  -
  +  String nameSpace = renderResponse.getNamespace();
  +  //Display the table data:
  +  List queryData = (List) 
renderRequest.getPortletSession().getAttribute("queryData");
  +  int resultSize = queryData.size();
  +  //page
  +  int pageIndex = 0;
  +  String pageStrg = renderRequest.getParameter("page");
  +  if (pageStrg != null) {
  +    pageIndex = Integer.parseInt(pageStrg);
  +  }
  +  //max rows
  +  int maxRows = resultSize;
  +  String maxRowsStrg = (String) 
renderRequest.getPortletSession().getAttribute("tableSize");
  +  if (maxRowsStrg != null) {
  +    maxRows = Integer.parseInt(maxRowsStrg);
  +  }
  +  // first and last index in the queryData List
  +  int firstIndex = pageIndex*maxRows;
  +  int lastIndex = firstIndex + maxRows;
  +  if (lastIndex > resultSize) {
  +    lastIndex = resultSize;
  +  }
  +%>
   <script type="text/javascript" defer="defer">
  -function enableFilter(table)
  +function enableFilter<%=nameSpace%>()
   {
  -  if(document.getElementById("check").checked)
  +  if(document.getElementById("check<%=nameSpace%>").checked)
   {
  -  attachFilter(document.getElementById('tb'), 1);
  +  attachFilter(document.getElementById('tb<%=nameSpace%>'), 1);
   }
   else
   {
  @@ -130,10 +128,11 @@
        for(var i = this.filterRow + 1; i < this.rows.length; i++)
        {
                var row = this.rows[i];
  -             if(row.style.display != "none" && row.className != "noFilter")
  +             /*if(row.style.display != "none" && row.className != "noFilter")
                {
                        values.push(row.cells[col].innerHTML.toLowerCase());
  -             }
  +             }*/
  +                values.push(row.cells[col].innerHTML.toLowerCase());
        }
        values.sort();
   
  @@ -150,6 +149,7 @@
   
        opt.options.add(new Option("(all)", "(all)"), 0);
   
  +
        if(setValue != undefined)
                opt.value = setValue;
        else
  @@ -238,14 +238,14 @@
     <tr>
       <td>
         <P>
  -        <INPUT id="check" onclick="javascript:enableFilter('tb');" 
type=checkbox name=check>
  +        <INPUT id="check<%=nameSpace%>" 
onclick="javascript:enableFilter<%=nameSpace%>();" type=checkbox name=check>
           Enable Filter
   </P>
       </td>
     </tr>
   </table>
   <!-- table data-->
  -<table id="tb" align="center" width="80%" border="1" cellspacing="0" 
cellpadding="0">
  +<table id="tb<%=nameSpace%>" align="center" width="80%" border="1" 
cellspacing="0" cellpadding="0">
     <thead>
       <tr>
       <%
  @@ -255,7 +255,7 @@
         //Display column headings:
         for (int i = 0; i < queryColumns.length; i++) {
       %>
  -      <th>
  +      <th class="portlet-section-header">
           <b><%=queryColumns[i]%>        </b>
         </th>
       <%}    %>
  @@ -263,7 +263,6 @@
     </thead>
     <tbody>
     <%
  -
       // list of data to diplay
       List displayableData = queryData.subList(firstIndex, lastIndex);
       //begin populate table
  @@ -280,8 +279,14 @@
         }
     %>
       <tr style="display:<%=display%>">
  -    <%for (int i = 0; i < rec.length; i++) {    %>
  -      <td align="center"><%=rec[i]%>      </td>
  +    <%
  +      for (int i = 0; i < rec.length; i++) {
  +        String value = rec[i];
  +        if (value == null) {
  +          value = "-";
  +        }
  +    %>
  +      <td class="portlet-section-body" align="center"><%=value%>      </td>
       <%}    %>
       </tr>
     <%} //end while  %>
  @@ -296,28 +301,28 @@
     <tr>
     <%if (pageIndex > 0) {  %>
       <td>
  -      <%
  -      PortletURL pUrl = ((RenderResponse)renderResponse).createRenderURL();
  -      pUrl.setParameter("page",""+(pageIndex-1));
  -      %>
  +    <%
  +      PortletURL pUrl = ((RenderResponse) renderResponse).createRenderURL();
  +      pUrl.setParameter("page", "" + (pageIndex - 1));
  +    %>
         <a href="<%=pUrl.toString()%>">previous|</a>
       </td>
     <%}  %>
     <%for (int i = 0; i < nbLinks; i++) {  %>
       <td>
  -      <%
  -      PortletURL pUrl = ((RenderResponse)renderResponse).createRenderURL();
  -      pUrl.setParameter("page",""+i);
  -      %>
  +    <%
  +      PortletURL pUrl = ((RenderResponse) renderResponse).createRenderURL();
  +      pUrl.setParameter("page", "" + i);
  +    %>
         <a href="<%=pUrl.toString()%>"><%=i %>      </a>
       </td>
     <%}  %>
     <%if (pageIndex < nbLinks - 1) {  %>
       <td>
  -      <%
  -      PortletURL pUrl = ((RenderResponse)renderResponse).createRenderURL();
  -      pUrl.setParameter("page",""+(pageIndex+1));
  -      %>
  +    <%
  +      PortletURL pUrl = ((RenderResponse) renderResponse).createRenderURL();
  +      pUrl.setParameter("page", "" + (pageIndex + 1));
  +    %>
         <a href="<%=pUrl.toString()%>">|next</a>
       </td>
     </tr>
  

Reply via email to