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.cumulus4j.store.crypto.CryptoContext; 025 import org.datanucleus.ClassLoaderResolver; 026 import org.datanucleus.query.compiler.QueryCompilation; 027 import org.datanucleus.store.query.Query; 028 029 /** 030 * JDO-specific sub-class of {@link QueryEvaluator} binding the JDO-agnostic query logic 031 * to the JDO API. 032 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de 033 */ 034 public class JDOQueryEvaluator extends QueryEvaluator { 035 036 public JDOQueryEvaluator(Query query, QueryCompilation compilation, Map<String, Object> parameterValues, 037 ClassLoaderResolver clr, PersistenceManagerConnection pmConn, CryptoContext cryptoContext) 038 { 039 super("JDOQL", query, compilation, parameterValues, clr, pmConn, cryptoContext); 040 } 041 042 @Override 043 protected Collection<Object> evaluateSubquery( 044 Query subquery, QueryCompilation compilation, Object outerCandidate 045 ) 046 { 047 JDOQueryEvaluator evaluator = new JDOQueryEvaluator(getQuery(), compilation, getParameterValues(), 048 getClassLoaderResolver(), getPersistenceManagerConnection(), getCryptoContext()); 049 return evaluator.execute(); 050 } 051 }