001 /* 002 * Cumulus4j - Securing your data in the cloud - http://cumulus4j.org 003 * Copyright (C) 2011 NightLabs Consulting GmbH 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 package org.cumulus4j.store.query; 019 020 import java.util.Collection; 021 import java.util.Map; 022 023 import org.cumulus4j.store.PersistenceManagerConnection; 024 import org.datanucleus.ClassLoaderResolver; 025 import org.datanucleus.query.compiler.QueryCompilation; 026 import org.datanucleus.store.query.Query; 027 028 /** 029 * JDO-specific sub-class of {@link QueryEvaluator} binding the JDO-agnostic query logic 030 * to the JDO API. 031 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de 032 */ 033 public class JDOQueryEvaluator extends QueryEvaluator { 034 035 public JDOQueryEvaluator(Query query, QueryCompilation compilation, Map<String, Object> parameterValues, 036 ClassLoaderResolver clr, PersistenceManagerConnection pmConn) 037 { 038 super("JDOQL", query, compilation, parameterValues, clr, pmConn); 039 } 040 041 @Override 042 protected Collection<Object> evaluateSubquery( 043 Query subquery, QueryCompilation compilation, Object outerCandidate 044 ) 045 { 046 JDOQueryEvaluator evaluator = new JDOQueryEvaluator(getQuery(), compilation, getParameterValues(), 047 getClassLoaderResolver(), getPersistenceManagerConnection()); 048 return evaluator.execute(); 049 } 050 }