package com.norteksoft.mms.module.service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.norteksoft.mms.module.dao.ButtonDao;
import com.norteksoft.mms.module.dao.ModulePageDao;
import com.norteksoft.mms.module.entity.Button;
import com.norteksoft.mms.module.entity.ModulePage;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.util.ContextUtils;
import com.norteksoft.product.util.JsonParser;
@Service
@Transactional(readOnly=true)
public class ButtonManager {
private static final String COLUMN_ID="columnId";
private static final String CODE="code";
private static final String NAME="name";
private static final String DISPLAY_ORDER="displayOrder";
private static final String TO_PAGE_ID="toPageId";
private static final String EVENT="event";
private ButtonDao buttonDao;
private ModulePageDao modulePageDao;
@Autowired
public void setButtonDao(ButtonDao buttonDao) {
this.buttonDao = buttonDao;
}
@Autowired
public void setModulePageDao(ModulePageDao modulePageDao) {
this.modulePageDao = modulePageDao;
}
public void getButtonPages(Page<Button> page){
buttonDao.getButtonPages(page);
}
@Transactional(readOnly=false)
public void save(Long pageId){
List<Object> list=JsonParser.getFormTableDatas(Button.class);
for(Object obj:list){
Button button=(Button)obj;
button.setCompanyId(ContextUtils.getCompanyId());
button.setModulePage(modulePageDao.get(pageId));
buttonDao.save(button);
}
}
@Transactional(readOnly=false)
public void save(Map<String,String[]> parameterMap,Long pageId){
String[] ids=parameterMap.get(COLUMN_ID);
String[] codes=parameterMap.get(CODE);
String[] names=parameterMap.get(NAME);
String[] orders=parameterMap.get(DISPLAY_ORDER);
String[] toPageIds=parameterMap.get(TO_PAGE_ID);
String[] events=parameterMap.get(EVENT);
List<Long> list=buttonDao.getButtonIdsByPageId(pageId);
if(codes!=null){
for(int i=0;i<codes.length;i++){
Button button=null;
if(ids[i]==null || "".equals(ids[i])){
button=new Button();
button.setCompanyId(ContextUtils.getCompanyId());
button.setCode(codes[i]);
button.setName(names[i]);
button.setDisplayOrder(Integer.parseInt(orders[i]));
if(toPageIds[i]!=null && !"".equals(toPageIds[i]))button.setToPage(modulePageDao.get(Long.parseLong(toPageIds[i])));
button.setEvent(events[i]);
button.setModulePage(modulePageDao.get(pageId));
}else{
for(int j=0;j<list.size();j++){
if(list.get(j).equals(Long.parseLong(ids[i]))){
list.remove(j);
break;
}
}
button=buttonDao.get(Long.parseLong(ids[i]));
button.setCode(codes[i]);
button.setName(names[i]);
button.setDisplayOrder(Integer.parseInt(orders[i]));
if(toPageIds[i]!=null&& !"".equals(toPageIds[i]))button.setToPage(modulePageDao.get(Long.parseLong(toPageIds[i])));
button.setEvent(events[i]);
}
buttonDao.save(button);
}
}
for(Long id:list){
buttonDao.delete(id);
}
}
public Button getButton(Long id){
return buttonDao.get(id);
}
/**
* 编号是否存在,存在返回true,否则返回false
* @param button
* @return
*/
public Boolean isCodeExist(String code,Long pageId){
List<Button> buttons=buttonDao.getButtonsByCode(code,pageId);
if(buttons.size()>0){
return true;
}else{
return false;
}
}
/**
* 按钮是否存在,存在返回false,否则返回true
* @param button
* @return
*/
public Boolean isButtonExist(Long pageId){
List<Button> buttons=buttonDao.getButtonsByPageId(pageId);
if(buttons.size()>0){
return false;
}else{
return true;
}
}
public List<Button> getButtons(Long pageId){
return buttonDao.getButtonsByPageId(pageId);
}
public void getButtonsPage(Page<Button> buttonsPage , Long pageId){
buttonDao.getButtonsPageByPageId(buttonsPage,pageId);
}
@Transactional(readOnly=false)
public void deleteButton(Long buttonId){
buttonDao.delete(buttonId);
}
@Transactional(readOnly=false)
public void saveCustom(Button button,Long viewId,Long toViewId){
if(toViewId!=null)
button.setToPage(modulePageDao.get(toViewId));
button.setModulePage(modulePageDao.get(viewId));
button.setCompanyId(ContextUtils.getCompanyId());
buttonDao.save(button);
}
/**
* 创建默认的列表按钮
*/
@Transactional(readOnly=false)
public List<Button> createDefaultListButton(Long pageId){
List<Button> buttons = new ArrayList<Button>();
ModulePage modulePage = modulePageDao.get(pageId);
Button button = null;
button = new Button();
button.setCode("query");
button.setCompanyId(ContextUtils.getCompanyId());
//button.setDisplayOrder(displayOrder);
button.setEvent("execute: toQuery");
button.setModulePage(modulePage);
button.setName("查询");
buttons.add(button);
button = new Button();
button.setCode("create");
button.setCompanyId(ContextUtils.getCompanyId());
//button.setDisplayOrder(displayOrder);
button.setEvent("execute: toCreateFrom");
button.setModulePage(modulePage);
button.setName("新增");
buttons.add(button);
button = new Button();
button.setCode("update");
button.setCompanyId(ContextUtils.getCompanyId());
//button.setDisplayOrder(displayOrder);
button.setEvent("execute: toUpdateForm");
button.setModulePage(modulePage);
button.setName("修改");
buttons.add(button);
button = new Button();
button.setCode("delete");
button.setCompanyId(ContextUtils.getCompanyId());
//button.setDisplayOrder(displayOrder);
button.setEvent("execute: deleteList");
button.setModulePage(modulePage);
button.setName("删除");
buttons.add(button);
return buttons;
}
/**
* 创建默认的表单按钮
*/
@Transactional(readOnly=false)
public List<Button> createDefaultFormButton(Long pageId){
List<Button> buttons = new ArrayList<Button>();
ModulePage modulePage = modulePageDao.get(pageId);
Button button = null;
button = new Button();
button.setCode("save");
button.setCompanyId(ContextUtils.getCompanyId());
//button.setDisplayOrder(displayOrder);
button.setEvent("execute: saveForm");
button.setModulePage(modulePage);
button.setName("保存");
buttons.add(button);
button = new Button();
button.setCode("back");
button.setCompanyId(ContextUtils.getCompanyId());
//button.setDisplayOrder(displayOrder);
button.setEvent("execute: toListPage");
button.setModulePage(modulePage);
button.setName("返回");
buttons.add(button);
return buttons;
}
/**
* 保存默认的列表按钮
*/
@Transactional(readOnly=false)
public void saveDefaultListButton(Long pageId){
ModulePage modulePage = modulePageDao.get(pageId);
Button button = null;
button = new Button();
button.setCode("query");
button.setCompanyId(ContextUtils.getCompanyId());
button.setDisplayOrder(1);
button.setEvent("execute: toQuery");
button.setModulePage(modulePage);
button.setName("查询");
buttonDao.save(button);
button = new Button();
button.setCode("create");
button.setCompanyId(ContextUtils.getCompanyId());
button.setDisplayOrder(2);
button.setEvent("execute: toCreateFrom");
button.setModulePage(modulePage);
button.setName("新增");
buttonDao.save(button);
button = new Button();
button.setCode("update");
button.setCompanyId(ContextUtils.getCompanyId());
button.setDisplayOrder(3);
button.setEvent("execute: toUpdateForm");
button.setModulePage(modulePage);
button.setName("修改");
buttonDao.save(button);
button = new Button();
button.setCode("delete");
button.setCompanyId(ContextUtils.getCompanyId());
button.setDisplayOrder(4);
button.setEvent("execute: deleteList");
button.setModulePage(modulePage);
button.setName("删除");
buttonDao.save(button);
}
/**
* 保存默认的表单按钮
*/
@Transactional(readOnly=false)
public void saveDefaultFormButton(Long pageId){
ModulePage modulePage = modulePageDao.get(pageId);
Button button = null;
button = new Button();
button.setCode("save");
button.setCompanyId(ContextUtils.getCompanyId());
button.setDisplayOrder(1);
button.setEvent("execute: saveForm");
button.setModulePage(modulePage);
button.setName("保存");
buttonDao.save(button);
button = new Button();
button.setCode("back");
button.setCompanyId(ContextUtils.getCompanyId());
button.setDisplayOrder(2);
button.setEvent("execute: toListPage");
button.setModulePage(modulePage);
button.setName("返回");
buttonDao.save(button);
}
}