⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sequencemanager.java

📁 struts+spring+hibernate自创框架
💻 JAVA
字号:
package com.pegasus.framework.bo;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.pegasus.framework.pojo.IBusinessObject;
import com.pegasus.framework.pojo.vo.Sequence;
import com.pegasus.framework.service.BeanNames;
import com.pegasus.framework.service.ISequenceService;
import com.pegasus.framework.service.ServiceManager;

public class SequenceManager {
protected final Log logger = LogFactory.getLog(this.getClass());
	
	private static final Long DEFAULT_LASTID = new Long(100L);

	private static final Long DEFAULT_INCREASEID = new Long(1L);
	
	private ISequenceService sequenceService;
	
	/**
	 *
	 */
	public synchronized void init() {
	}

	/**
	 *
	 */
	public synchronized void destroy() {
		logger.warn("destroy");
	}

	/**
	 * @param tablename tablename
	 * @return id
	 */
	public synchronized Long getNextID(String tablename) {

		Sequence data;
		try {
			logger.info("tablename=" + tablename);
			data = (Sequence)sequenceService.load(tablename);
		}
		catch (Exception e) {
			e.printStackTrace();
			data = null;
		}
		
		if(data == null) {
			logger.info("new data");
			data = new Sequence();
			data.setTablename(tablename);
			data.setStartId(DEFAULT_LASTID);
			data.setLastId(DEFAULT_LASTID);
			data.setIncreaseId(DEFAULT_INCREASEID);
		}

		Long newid = new Long(data.getLastId().longValue() + data.getIncreaseId().longValue());
		data.setLastId(newid);
		try {
			
			sequenceService.saveOrUpdateObject((IBusinessObject)data);
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		return newid;
	}

	/**
	 * @param tablename .
	 * @param batchCount .
	 * @return .
	 */
	public synchronized Long[] getNextID(String tablename, Long batchCount) {
		logger.info("getNextIDs");
		Sequence data;
		
		try {
			logger.info("tablename=" + tablename);
			data = (Sequence)sequenceService.load(tablename);
		}
		catch (Exception e) {
			e.printStackTrace();
			data = null;
		}
		
		if(data == null) {
			logger.info("new data");
			data = new Sequence();
			data.setTablename(tablename);
			data.setLastId(DEFAULT_LASTID);
			data.setIncreaseId(DEFAULT_INCREASEID);
		}
		if (batchCount == null)
			batchCount = new Long(1);
		if (batchCount.longValue() < 1)
			throw new RuntimeException("cant getAttribute next id with " + batchCount);
		long increase = data.getIncreaseId().longValue() * batchCount.longValue();

		long start = data.getLastId().longValue() + data.getIncreaseId().longValue();
		Long[] array = new Long[batchCount.intValue()];
		for (int i = 0; i < array.length; i++) {
			array[i] = new Long(start + i * data.getIncreaseId().longValue());
		}
		Long newid = new Long(data.getLastId().longValue() + increase);
		data.setLastId(newid);
		try {
			sequenceService.saveOrUpdateObject((IBusinessObject)data);
		}
		catch (Exception e) {
			logger.error(e);
		}
		return array;
	}

	/**
	 * @return Returns the sequenceService.
	 */
	public ISequenceService getSequenceService() {
		return sequenceService;
	}

	/**
	 * @param sequenceService The sequenceService to set.
	 */
	public void setSequenceService(ISequenceService sequenceService) {
		this.sequenceService = sequenceService;
	}
}

⌨️ 快捷键说明

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