head	1.2;
access;
symbols;
locks; strict;
comment	@# @;


1.2
date	2001.08.11.09.08.02;	author dlr;	state Exp;
branches;
next	1.1;

1.1
date	2001.08.02.22.47.42;	author leonardr;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Upgrading to Turbine 3.0-dev, Fulcrum 1.0, and Torque 1.0.
@
text
@/* ================================================================
 * Copyright (c) 2001 CollabNet.  All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * 3. The end-user documentation included with the redistribution, if
 * any, must include the following acknowlegement: "This product includes
 * software developed by CollabNet (http://www.collab.net/)."
 * Alternately, this acknowlegement may appear in the software itself, if
 * and wherever such third-party acknowlegements normally appear.
 * 
 * 4. The hosted project names must not be used to endorse or promote
 * products derived from this software without prior written
 * permission. For written permission, please contact info@@collab.net.
 * 
 * 5. Products derived from this software may not use the "Tigris" name
 * nor may "Tigris" appear in their names without prior written
 * permission of CollabNet.
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL COLLABNET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ====================================================================
 * 
 * This software consists of voluntary contributions made by many
 * individuals on behalf of CollabNet.
 */

package org.tigris.helm.host;

import java.sql.Connection;
import java.sql.PreparedStatement;

import java.util.Vector;

import org.apache.velocity.context.Context;

import org.apache.commons.util.FileUtils;
import org.apache.turbine.util.Log;
import org.apache.fulcrum.db.TurbineDB;
import org.apache.torque.pool.DBConnection;
import org.apache.commons.util.exception.NestableException;
import org.apache.fulcrum.TurbineServices;

import org.tigris.helm.security.RedirectException;

import org.tigris.helm.security.HelmServlet;
import org.tigris.helm.om.*;
import org.tigris.helm.tool.ContextAPI;
import org.tigris.helm.tool.cache.*;
import org.tigris.helm.tool.task.*;
import org.tigris.helm.tool.audit.AuditLog;

/**
 * Servlet for doing ad hoc SELECT queries against the database.
 *
 * @@author <a href="mailto:leonardr@@collab.net">Leonard Richardson</a>
 * @@version $Id: AdHocQuery.java,v 1.1 2001/08/02 22:47:42 leonardr Exp $
 */
public class AdHocQuery extends HelmServlet 
{
    private static final boolean DEBUG = true;

    /**
     * Name of pool with read-only access.
     */
    private static String READ_ONLY_POOL = "readOnly";

    /**
     * Button text for running query
     */
    private static String RUN_QUERY_ACTION = "Run Query";

    /**
     * Field containing query text.
     */
    private static String QUERY_FIELD_KEY = "query";

    /**
     * Field containing query text.
     */
    private static String RECORDS_CONTEXT_KEY = "records";

    /**
     *  Rebuild data structures and start/stop threads.
     */
    protected String processRequest(Context context)
        throws NestableException, RedirectException
    {
        String templateName = null;
        DBConnection conn = null;
        try 
        {
            templateName = super.processRequest(context);
            String action = getAction(context);
            String query = ContextAPI.processRequiredField
                (context, QUERY_FIELD_KEY, "Query to run");
            if (RUN_QUERY_ACTION.equals(action))
            {
                if (ContextAPI.isValidUserInput(context))
                {
                    conn = TurbineDB.getConnection(READ_ONLY_POOL);
                    Vector records = HelmPeer.executeQuery(query, false, conn);
                    context.put(RECORDS_CONTEXT_KEY, records);
                }
            }
        }
        catch (RedirectException e)
        {
            throw e;
        }
        catch (Exception e)
        {
            throw new NestableException(e);
        }
        finally
        {
            if (conn != null)
            {
                try
                {
                    TurbineDB.releaseConnection(conn);
                }
                catch (Exception e)
                {
                    throw new NestableException(e);
                }
            }
        }

        return templateName;  
    }
}
@


1.1
log
@New database user with read-only access to the Tigris database. Used to control access for the new ad hoc query feature and the XML-RPC handlers.
@
text
@d56 1
a56 1
import org.apache.turbine.util.FileUtils;
d58 4
a61 4
import org.apache.turbine.services.db.TurbineDB;
import org.apache.turbine.util.db.pool.DBConnection;
import org.apache.turbine.util.TurbineException;
import org.apache.turbine.services.TurbineServices;
d76 1
a76 1
 * @@version $Id: AdminUtils.java,v 1.24 2001/07/24 00:02:27 leonardr Exp $
d106 1
a106 1
        throws TurbineException, RedirectException
d132 1
a132 1
            throw new TurbineException(e);
d144 1
a144 1
                    throw new TurbineException(e);
@

