All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.josql.contrib.JoSQLVelocityExecuteTool Maven / Gradle / Ivy

/*
 * Copyright 2004-2008 Gary Bentley 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may 
 * not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 *    http://www.apache.org/licenses/LICENSE-2.0 
 *
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License.
 */
package org.josql.contrib;

import java.util.Collection;
import java.util.List;
import java.util.Iterator;

//import org.apache.velocity.tools.config.ValidScope; 
//import org.apache.velocity.tools.config.DefaultKey; 

import org.josql.Query;

// Annotations to tell the Tools framework that the default key should be "josql" and that the tool
// should be in the "request" scope.
//@DefaultKey(value="josql")
//@ValidScope(value="request")

/**
 * A custom tool for use with Velocity.
 * 

* Usage: *

* A typical usage may be: *

*

 *   #foreach ($v in $josql.filter ("name LIKE '/opt/%' order by dir, name", $files))
 * 
*/ public class JoSQLVelocityExecuteTool { private Exception excep = null; public JoSQLVelocityExecuteTool () { } public Exception getException () { return this.excep; } public void clearException () { this.excep = null; } public List filter (String st, Collection items) { // Build up our statement. Iterator iter = items.iterator (); Object o = null; // Get the object, determine the class, build the query. while (iter.hasNext ()) { o = iter.next (); if (o != null) { break; } } // Default to object. Class c = Object.class; if (o != null) { c = o.getClass (); } String t = "SELECT * FROM " + c.getName (); String sst = st.trim ().toLowerCase (); if ((!sst.startsWith ("order by")) && (!sst.startsWith ("limit")) ) { t = " WHERE "; } t = t + st; Query q = new Query (); try { q.parse (t); } catch (Exception e) { this.excep = e; // As per the tool contract. return null; } try { return q.execute (items).getResults (); } catch (Exception e) { this.excep = e; // As per the tool contract. return null; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy