上一讲,主要是定义接口及接口方法,本讲解主要实现接口中的方法。见代码。
定义抽象类:
public abstract class AbstractDesignTimeProcessBean<E> implements IDesignTimeProcess<E> {
表结构如下:
ID N VARCHAR2(255) N
APPLICATIONID N VARCHAR2(255) Y
SORTID N VARCHAR2(255) Y
ACTIVITYXML N CLOB Y
RELATIONTEXT N CLOB Y
MAPPINGSTR N CLOB Y
ISOPENABLESCRIPT N CLOB Y
ISEDITABLESCRIPT N CLOB Y
VERSIONS N NUMBER(10) Y
MODULE N VARCHAR2(255) Y
NAME N VARCHAR2(255) Y
RELATIONNAME N VARCHAR2(255) Y
TYPE N NUMBER(10) Y
TEMPLATECONTEXT N CLOB Y
DISCRIPTION N CLOB Y
LASTMODIFIER N VARCHAR2(255) Y
LASTMODIFYTIME N DATE Y
STYLE N VARCHAR2(255) Y
SHOWLOG N NUMBER(1) Y
ONSAVESTARTFLOW N NUMBER(1) Y
DOC_SUMMARY_XML N CLOB Y
CHECKOUT N NUMBER(1) Y 0
CHECKOUTHANDLER N VARCHAR2(255) Y
ORDERNO N NUMBER(10) Y 10000
PERMISSION_TYPE N VARCHAR2(255) Y
SHOWWATERMARK N NUMBER(1) Y
WATERMARK_SCRIPT N CLOB Y
LAYOUT_TYPE N VARCHAR2(255) Y
/** 插入对象。开启事务,允许事务嵌套
*/
public void doCreate(ValueObject vaObject) throws Exception {
try {
insistonCommon.beginTransaction();
if (vaObject.getId() == null || vaObject.getId().trim().length() == 0) {
vaObject.setId(Sequence.getSequence());//生成主键guid()
}
if (vaObject.getSortId() == null || vaObject.getSortId().trim().length() == 0) {
vaObject.setSortId(Sequence.getTimeSequence());//生成时间戳,保证数据版本保持一致,防止重复提交
}
getDAO().create(vaObject);
insistonCommon.commitTransaction();
} catch (Exception e) {
insistonCommon.rollbackTransaction();
e.printStackTrace();
throw e;
}
}
/**
批量插入
/
public void doCreate(ValueObject[] vos) throws Exception {
try {
insistonCommon.beginTransaction();
if (vos != null)
for (int i = 0; i < vos.length; i++) {
ValueObject vo = vos[i];
if (vo.getId() == null || vo.getId().trim().length() == 0) {
vo.setId(Sequence.getSequence());
}
if (vo.getSortId() == null || vo.getSortId().trim().length() == 0) {
vo.setSortId(Sequence.getTimeSequence());
}
getDAO().create(vo);
}
insistonCommon.commitTransaction();
} catch (Exception e) {
e.printStackTrace();
insistonCommon.rollbackTransaction();
}
}
批量插入二:
public void doCreate(Collection<ValueObject> vos) throws Exception {
try {
insistonCommon.beginTransaction();
if (vos != null)
for (Iterator<ValueObject> iter = vos.iterator(); iter.hasNext();) {
ValueObject vo = (ValueObject) iter.next();
if (vo.getId() == null || vo.getId().trim().length() == 0) {
vo.setId(Sequence.getSequence());
}
if (vo.getSortId() == null || vo.getSortId().trim().length() == 0) {
vo.setSortId(Sequence.getTimeSequence());
}
getDAO().create(vo);
}
insistonCommon.commitTransaction();
} catch (Exception e) {
e.printStackTrace();
insistonCommon.rollbackTransaction();
}
}
删除数据
public void doRemove(String pk) throws Exception {
try {
insistonCommon.beginTransaction();
getDAO().remove(pk);
insistonCommon.commitTransaction();
} catch (Exception e) {
insistonCommon.rollbackTransaction();
throw e;
}
}
批量删除数据,此处应该把所以异常进行抛出,以便外层函数调用
public void doRemove(String[] pks) throws Exception {
try {
StringBuffer errorMsg = new StringBuffer();
if (pks != null && pks.length > 0) {
for (int i = 0; i < pks.length; i++) {
try {
doRemove(pks[i]);
}
catch (MFWValidateException e) {
throw new MFWValidateException(errorMsg.append(e.getValidateMessage() + ";").toString());
}catch (Exception e) {
errorMsg.append(e.getMessage() + ";");
}
}
if (errorMsg.lastIndexOf(";") != -1) {
errorMsg.deleteCharAt(errorMsg.lastIndexOf(";"));
}
if (errorMsg.length() > 0) {
throw new Exception(errorMsg.toString());
}
}
} catch (Exception e) {
throw e;
}
}
更新数据
public void doUpdate(ValueObject vo) throws Exception {
try {
insistonCommon.beginTransaction();//开启事务,主要采用hibernate事务的方式
ValueObject po = getDAO().find(vo.getId());
if (po != null) {
PropertyUtils.copyProperties(po, vo);//为对象每个属性进行赋值
getDAO().update(po);
} else {
getDAO().update(vo);
}
insistonCommon.commitTransaction();
} catch (Exception e) {
insistonCommon.rollbackTransaction();
e.printStackTrace();
throw e;
}
}
/**
* Get the relate data access object. 在抽象类里声明获取数据库连接方法,在具体实现类进行获取,
*
* @return The relate data access object.
* @throws Exception
*/
protected abstract IDesignTimeDAO<E> getDAO() throws Exception;
本平台实现了版本控制,类似svn。只有签出后方可进行编码
public void doCheckout(String id, WebUser user) throws Exception{
insistonCommon.beginTransaction();
this.getDAO().checkout(id, user);
insistonCommon.commitTransaction();
}
签入。
public void doCheckin(String id, WebUser user) throws Exception{
insistonCommon.beginTransaction();
this.getDAO().checkin(id, user);
insistonCommon.commitTransaction();
}
/**
* 通过hql语句获得数据总数
* @param hql
* @return
* @throws Exception
*/
public int doGetTotalLines(String hql) throws Exception{
return getDAO().getTotalLines(hql);
}
分页查询,返回数据集合
pagno:页码
pagesize:每页数量
public Collection<E> doQueryByHQL(String hql,int pageNo,int pageSize) throws Exception {
return this.getDAO().queryByHQL(hql,pageNo,pageSize);
}
}