📄 sequencemanager.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 + -