package com.breeze.query; import com.breeze.metadata.IEntityType; import com.breeze.metadata.Metadata; /** * Abstract base class for all query processing logic. * @author IdeaBlade * */ public abstract class QueryProcessor { protected Metadata _metadata; protected QueryProcessor(Metadata metadata) { _metadata = metadata; } public QueryResult executeQuery(String resourceName, String json) { EntityQuery entityQuery = new EntityQuery(json); return executeQuery(resourceName, entityQuery); } public QueryResult executeQuery(Class clazz, String json) { EntityQuery entityQuery = new EntityQuery(json); return executeQuery(clazz, entityQuery); } public QueryResult executeQuery(EntityQuery entityQuery) { String resourceName = entityQuery.getResourceName(); if (resourceName == null) return null; return executeQuery(resourceName, entityQuery); } public QueryResult executeQuery(String resourceName, EntityQuery entityQuery) { IEntityType entityType = _metadata.getEntityTypeForResourceName(resourceName); return executeQuery(entityType, entityQuery); } public QueryResult executeQuery(Class clazz, EntityQuery entityQuery) { IEntityType entityType = _metadata.getEntityTypeForClass(clazz); return executeQuery(entityType, entityQuery); } protected abstract QueryResult executeQuery(IEntityType entityType, EntityQuery entityQuery); }