package com.norteksoft.wf.engine.service;
import java.io.File;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.norteksoft.product.orm.Page;
import com.norteksoft.wf.engine.dao.WorkflowDefinitionTemplateDao;
import com.norteksoft.wf.engine.dao.WorkflowDefinitionTemplateFileDao;
import com.norteksoft.wf.engine.entity.WorkflowDefinitionTemplate;
import com.norteksoft.wf.engine.entity.WorkflowDefinitionTemplateFile;
@Service
@Transactional
public class WorkflowDefinitionTemplateManager {
@Autowired
private WorkflowDefinitionTemplateDao workflowDefinitionTemplateDao;
@Autowired
private WorkflowDefinitionTemplateFileDao workflowDefinitionTemplateFileDao;
/**
* 根据ID获得流程定义模板
* @param id
* @return
*/
public WorkflowDefinitionTemplate getWorkflowDefinitionTemplate(Long id) {
return workflowDefinitionTemplateDao.get(id);
}
/**
* 获得所有的流程定义模板
* @param page
*/
public void getTemplate(Page<WorkflowDefinitionTemplate> page) {
workflowDefinitionTemplateDao.getTemplateXml(page);
}
/**
* 根据流程类型获得流程定义模板
* @param page
* @param typeId2
*/
public void getTemplate(Page<WorkflowDefinitionTemplate> page, Long typeId) {
workflowDefinitionTemplateDao.getTemplateXml(page,typeId);
}
/**
* 保存流程定义模板
* @param workflowDefinitionTemplate
*/
public void save(WorkflowDefinitionTemplate workflowDefinitionTemplate) {
workflowDefinitionTemplateDao.save(workflowDefinitionTemplate);
}
/**
* 删除流程定义模板
* @param ids
*/
public void delete(String ids) {
String[] str=ids.split(",");
for(String id:str){
WorkflowDefinitionTemplate wdt=getWorkflowDefinitionTemplate(Long.valueOf(id));
if(StringUtils.isNotEmpty(wdt.getPreviewImage())){
String[] fileName = wdt.getPreviewImage().split("/");
File wdtFile = new File(getLocalPath()+fileName[fileName.length-1]);//把文件路径替换成本地路径
wdtFile.delete();
}
workflowDefinitionTemplateFileDao.deleteTemplateFile(Long.valueOf(id));
workflowDefinitionTemplateDao.delete(Long.valueOf(id));
}
}
/**
* 获取本地路径,用于保存图片和删除
* @return
*/
public String getLocalPath() {
String localPath = ServletActionContext.getServletContext().getRealPath("/");
return localPath+"wf/images/";
}
/**
* 根据模板ID获得模板文件
* @param id
* @return
*/
public WorkflowDefinitionTemplateFile getWorkflowDefinitionTemplateFileByTemplateId(
Long templateId) {
return workflowDefinitionTemplateFileDao.getWorkflowDefinitionTemplateFileByTemplateId(templateId);
}
/**
* 保存流程定义模板和流程定义模板文件
* @param workflowDefinitionTemplate
* @param workflowDefinitionTemplateFile
*/
public void save(WorkflowDefinitionTemplate workflowDefinitionTemplate,
WorkflowDefinitionTemplateFile workflowDefinitionTemplateFile) {
workflowDefinitionTemplateFileDao.save(workflowDefinitionTemplateFile);
workflowDefinitionTemplateDao.save(workflowDefinitionTemplate);
}
}