/** * Copyright (c) 2004-2011 Wang Jinbao(Julian Wong), http://www.ralasafe.com * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php */ package org.ralasafe.servlet; import java.util.ArrayList; import java.util.Iterator; import java.util.Map; import org.ralasafe.EntityExistException; import org.ralasafe.db.sql.Query; import org.ralasafe.db.sql.QueryFactory; import org.ralasafe.db.sql.UserValue; import org.ralasafe.db.sql.Value; import org.ralasafe.db.sql.xml.QueryType; import org.ralasafe.entitle.QueryManager; import org.ralasafe.entitle.QueryResult; import org.ralasafe.user.User; import org.ralasafe.util.Util; public class QueryTestHandler { private final QueryType xmlQuery; private final Query sqlQuery; public QueryTestHandler( QueryType xmlQuery ) { this.xmlQuery=xmlQuery; this.sqlQuery=QueryFactory.getQuery( xmlQuery ); } public QueryType getQuery() { return xmlQuery; } public String getSql() { return sqlQuery.toSQL(); } public boolean isTestUserNeeded() { ArrayList values=sqlQuery.getValues(); for( Iterator iter=values.iterator(); iter.hasNext(); ) { Value v=(Value) iter.next(); if( v instanceof UserValue ) { return true; } } return false; } public String[] getTestContextFields() { ArrayList values=sqlQuery.getValues(); ArrayList result=new ArrayList( values.size() ); Util.extractContextValueFields( sqlQuery, result ); return (String[]) result.toArray( new String[0] ); } public QueryResult run( User testUser, Map testCtx, int first, int max ) { return sqlQuery.execute( testUser, testCtx, first, max ); } public String getManagePage() { return "./queryMng.rls"; } public void save( int id, QueryManager queryManager ) throws EntityExistException { queryManager.updateQuery( id, (org.ralasafe.db.sql.xml.Query) xmlQuery ); } }