/*L * Copyright Washington University in St.Louis * Copyright Information Management Services, Inc. * Copyright Sapient * Copyright Booz Allen Hamilton * * Distributed under the OSI-approved BSD 3-Clause License. * See http://ncip.github.com/common-biorepository-model/LICENSE.txt for details. */ package org.cagrid.CBM.test.query; import gov.nih.nci.cagrid.cqlquery.CQLQuery; import org.cagrid.CBM.test.CbmObject; import org.cagrid.CBM.test.CbmTest; public abstract class QueryBuilder { private final QueryType type; public enum QueryType { CQL, API; } public QueryBuilder(QueryType queryType) { type = queryType; } public QueryBuilder() { type = CbmTest.DEFAULT_QUERY_TYPE; } public QueryType getType() { return type; } protected abstract void checkArgs(String... args) throws IllegalArgumentException; public CQLQuery getQuery(CbmObject object, String... args) throws Exception { QueryType queryType = getType(); CQLQuery query = getQuery(queryType, object, args); return query; } public CQLQuery getQuery(QueryType theType, CbmObject object, String... args) throws Exception { checkArgs(args); CQLQuery query = null; switch (theType) { case CQL: query = getQueryFromCql(object, args); break; case API: query = getQueryFromApi(object, args); break; default: throw new RuntimeException("Unsupported query type: " + type); } return query; } protected abstract CQLQuery getQueryFromCql(CbmObject object, String... strings) throws Exception; protected abstract CQLQuery getQueryFromApi(CbmObject object, String... strings) throws Exception; }