abstractquery.java

来自「羽量级数据持久层开发框架」· Java 代码 · 共 121 行

JAVA
121
字号
package org.speedframework.engine;

import org.apache.log4j.Logger;

import org.speedframework.action.IActionBuilderFactory;
import org.speedframework.action.IResultsAction;
import org.speedframework.action.ISelectAction;
import org.speedframework.application.IApplication;
import org.speedframework.connection.IConnectionAdaptor;
import org.speedframework.entity.Pagination;
import org.speedframework.entity.ParamEntity;
import org.speedframework.exception.SpeedFrameworkException;
import org.speedframework.message.IMessage;
import org.speedframework.message.SynchronousSaveMessage;
import org.speedframework.message.state.IState;

import java.util.List;

public abstract class AbstractQuery implements Query {
	
	protected int index = 0;

	protected int maxResults = 0;

	protected static final Logger log = Logger.getLogger(AbstractQuery.class);

	protected IApplication application = null;

	protected boolean useCache = true;

	protected IActionBuilderFactory actionFactory;

	protected IConnectionAdaptor connectionAdaptor;

	public AbstractQuery(IApplication application,
			IActionBuilderFactory actionFactory,
			IConnectionAdaptor connectionAdaptor) {
		this.application = application;
		this.actionFactory = actionFactory;
		this.connectionAdaptor = connectionAdaptor;
	}

	public int getMaxCount(String SQL, Object[] params)
			throws SpeedFrameworkException {
		Pagination pagination=new Pagination();
		pagination.setPage(1);
		this.getResults(SQL, params, null, pagination);
		return pagination.getTotalCount();
	}

	public List getResults(String SQL, Object[] params, Class vo)
			throws SpeedFrameworkException {
		IMessage message = new SynchronousSaveMessage();
		ISelectAction action = actionFactory.getSelectAction();
		IState state = null;

		message.setAction(action);
		message.setApplicationID(application.getApplicationID());
		message.setState(state);

		ParamEntity entity = new ParamEntity();
		entity.setMaxResults(this.maxResults);
		entity.setIndex(this.index);
		entity.setSQL(SQL);
		entity.setParam(params);
		entity.setLoadclass(vo);
		entity.setConnectionAdaptor(this.connectionAdaptor);
		entity.setUseCacheStatus(this.useCache);
		message.setParamEntity(entity);
		application.dealMessage(message);

		// if (state.getState() == IState.FINISH) {
		// return (IPOJO) ((List) message.getPojos()).get(0);
		// }
		return (List) message.getPojos();
	}

	public List getResults(String SQL, Object[] params, Class vo,
			Pagination pagination) throws SpeedFrameworkException {
		IMessage message = new SynchronousSaveMessage();
		IResultsAction action = actionFactory.getResultsAction();
		IState state = null;

		message.setAction(action);
		message.setApplicationID(application.getApplicationID());
		message.setState(state);

		ParamEntity entity = new ParamEntity();

		entity.setSQL(SQL);
		entity.setParam(params);
		entity.setLoadclass(vo);
		entity.setPagination(pagination);
		entity.setUseCacheStatus(this.useCache);
		message.setParamEntity(entity);
		entity.setConnectionAdaptor(this.connectionAdaptor);
		application.dealMessage(message);

		// if (state.getState() == IState.FINISH) {
		// return (IPOJO) ((List) message.getPojos()).get(0);
		// }
		return (List) message.getPojos();
	}

	public boolean getUseCacheStatus() {
		return this.useCache;
	}

	public void setIndex(int begin) {
		this.index=begin;
	}

	public void setMaxResults(int results) {
		this.maxResults=results;
	}

	public void setUseCacheStatus(boolean useCache) {
		this.useCache = useCache;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?