Java tutorial
/* * Copyright 2012-2017 qifu of copyright Chen Xin Nien * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ----------------------------------------------------------------------- * * author: Chen Xin Nien * contact: chen.xin.nien@gmail.com * */ package org.qifu.controller; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.qifu.base.controller.BaseController; import org.qifu.base.exception.AuthorityException; import org.qifu.base.exception.ControllerException; import org.qifu.base.exception.ServiceException; import org.qifu.base.model.ControllerMethodAuthority; import org.qifu.base.model.DefaultControllerJsonResultObj; import org.qifu.base.model.DefaultResult; import org.qifu.base.model.PageOf; import org.qifu.base.model.QueryControllerJsonResultObj; import org.qifu.base.model.QueryResult; import org.qifu.base.model.SearchValue; import org.qifu.model.MenuItemType; import org.qifu.po.TbSys; import org.qifu.po.TbSysIcon; import org.qifu.po.TbSysProg; import org.qifu.service.ISysIconService; import org.qifu.service.ISysProgService; import org.qifu.service.ISysService; import org.qifu.service.logic.ISystemProgramLogicService; import org.qifu.util.IconUtils; import org.qifu.util.SimpleUtils; import org.qifu.vo.SysIconVO; import org.qifu.vo.SysProgVO; import org.qifu.vo.SysVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Required; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @EnableWebMvc @Controller public class SystemProgramAction extends BaseController { private ISysProgService<SysProgVO, TbSysProg, String> sysProgService; private ISysService<SysVO, TbSys, String> sysService; private ISysIconService<SysIconVO, TbSysIcon, String> sysIconService; private ISystemProgramLogicService systemProgramLogicService; public ISysProgService<SysProgVO, TbSysProg, String> getSysProgService() { return sysProgService; } @Autowired @Resource(name = "core.service.SysProgService") @Required public void setSysProgService(ISysProgService<SysProgVO, TbSysProg, String> sysProgService) { this.sysProgService = sysProgService; } public ISysService<SysVO, TbSys, String> getSysService() { return sysService; } @Autowired @Resource(name = "core.service.SysService") @Required public void setSysService(ISysService<SysVO, TbSys, String> sysService) { this.sysService = sysService; } public ISysIconService<SysIconVO, TbSysIcon, String> getSysIconService() { return sysIconService; } @Autowired @Resource(name = "core.service.SysIconService") @Required public void setSysIconService(ISysIconService<SysIconVO, TbSysIcon, String> sysIconService) { this.sysIconService = sysIconService; } public ISystemProgramLogicService getSystemProgramLogicService() { return systemProgramLogicService; } @Autowired @Resource(name = "core.service.logic.SystemProgramLogicService") @Required public void setSystemProgramLogicService(ISystemProgramLogicService systemProgramLogicService) { this.systemProgramLogicService = systemProgramLogicService; } @ControllerMethodAuthority(check = true, programId = "CORE_PROG001D0002Q") @RequestMapping(value = "/core.sysProgramManagement.do") public ModelAndView queryPage(HttpServletRequest request) { String viewName = PAGE_SYS_ERROR; ModelAndView mv = this.getDefaultModelAndView("CORE_PROG001D0002Q"); try { // do some... viewName = "sys-program/sys-program-management"; } catch (AuthorityException e) { viewName = this.getAuthorityExceptionPage(e, request); } catch (ServiceException | ControllerException e) { viewName = this.getServiceOrControllerExceptionPage(e, request); } catch (Exception e) { this.getExceptionPage(e, request); } mv.setViewName(viewName); return mv; } @ControllerMethodAuthority(check = true, programId = "CORE_PROG001D0002Q") @RequestMapping(value = "/core.sysProgramQueryGridJson.do", produces = "application/json") public @ResponseBody QueryControllerJsonResultObj<List<SysProgVO>> queryGrid(SearchValue searchValue, PageOf pageOf) { QueryControllerJsonResultObj<List<SysProgVO>> result = this.getQueryJsonResult("CORE_PROG001D0002Q"); if (!this.isAuthorizeAndLoginFromControllerJsonResult(result)) { return result; } try { QueryResult<List<SysProgVO>> queryResult = this.sysProgService.findGridResult(searchValue, pageOf); this.setQueryGridJsonResult(result, queryResult, pageOf); } catch (AuthorityException | ServiceException | ControllerException e) { result.setMessage(e.getMessage().toString()); } catch (Exception e) { this.exceptionResult(result, e); } return result; } private void init(String type, HttpServletRequest request, ModelAndView mv) throws ServiceException, ControllerException, Exception { mv.addObject("sysMap", this.sysService.findSysMap(super.getBasePath(request), true)); mv.addObject("iconMap", IconUtils.getIconsSelectData()); } private void fetchData(SysProgVO sysProg, ModelAndView mv) throws ServiceException, ControllerException, Exception { DefaultResult<SysProgVO> result = this.sysProgService.findObjectByOid(sysProg); if (result.getValue() == null) { throw new ControllerException(result.getSystemMessage().getValue()); } sysProg = result.getValue(); mv.addObject("sysProg", sysProg); TbSysIcon sysIcon = new TbSysIcon(); sysIcon.setIconId(sysProg.getIcon()); DefaultResult<TbSysIcon> iconResult = this.sysIconService.findEntityByUK(sysIcon); if (iconResult.getValue() == null) { throw new ControllerException(iconResult.getSystemMessage().getValue()); } sysIcon = iconResult.getValue(); mv.addObject("iconSelectOid", sysIcon.getOid()); TbSys sys = new TbSys(); sys.setSysId(sysProg.getProgSystem()); DefaultResult<TbSys> sysResult = this.sysService.findEntityByUK(sys); if (sysResult.getValue() == null) { throw new ControllerException(sysResult.getSystemMessage().getValue()); } sys = sysResult.getValue(); mv.addObject("sysSelectOid", sys.getOid()); } @ControllerMethodAuthority(check = true, programId = "CORE_PROG001D0002A") @RequestMapping(value = "/core.sysProgramCreate.do") public ModelAndView createPage(HttpServletRequest request) { String viewName = PAGE_SYS_ERROR; ModelAndView mv = this.getDefaultModelAndView("CORE_PROG001D0002A"); try { this.init("createPage", request, mv); viewName = "sys-program/sys-program-create"; } catch (AuthorityException e) { viewName = this.getAuthorityExceptionPage(e, request); } catch (ServiceException | ControllerException e) { viewName = this.getServiceOrControllerExceptionPage(e, request); } catch (Exception e) { this.getExceptionPage(e, request); } mv.setViewName(viewName); return mv; } @ControllerMethodAuthority(check = true, programId = "CORE_PROG001D0002E") @RequestMapping(value = "/core.sysProgramEdit.do") public ModelAndView editPage(HttpServletRequest request, @RequestParam(name = "oid") String oid) { String viewName = PAGE_SYS_ERROR; ModelAndView mv = this.getDefaultModelAndView("CORE_PROG001D0002E"); try { SysProgVO sysProg = new SysProgVO(); sysProg.setOid(oid); this.init("editPage", request, mv); this.fetchData(sysProg, mv); viewName = "sys-program/sys-program-edit"; } catch (AuthorityException e) { viewName = this.getAuthorityExceptionPage(e, request); } catch (ServiceException | ControllerException e) { viewName = this.getServiceOrControllerExceptionPage(e, request); } catch (Exception e) { this.getExceptionPage(e, request); } mv.setViewName(viewName); return mv; } private void checkFields(DefaultControllerJsonResultObj<SysProgVO> result, SysProgVO sysProg, String sysOid, String iconOid, String w, String h) throws ControllerException, Exception { this.getCheckControllerFieldHandler(result) .testField("progSystemOid", (this.noSelect(sysOid)), "Please select system!") .testField("progId", sysProg, "@org.apache.commons.lang3.StringUtils@isBlank(progId)", "Id is blank!") .testField("progId", (this.noSelect(sysProg.getProgId())), "Please change Id value!") // PROG-ID ? "all" .testField("progId", (!SimpleUtils.checkBeTrueOf_azAZ09( super.defaultString(sysProg.getProgId()).replaceAll("-", "").replaceAll("_", ""))), "Id only normal character!") .testField("name", sysProg, "@org.apache.commons.lang3.StringUtils@isBlank(name)", "Name is blank!") .testField("url", ((MenuItemType.ITEM.equals(sysProg.getItemType()) && StringUtils.isBlank(sysProg.getUrl()))), "URL is blank!") .testField("itemType", (this.noSelect(sysProg.getItemType())), "Please select item-type!") .testField("iconOid", (this.noSelect(iconOid)), "Please select icon!") .testField("dialogWidth", ((YES.equals(sysProg.getIsDialog()) && !NumberUtils.isNumber(w))), "Please input dialog width!") .testField("dialogHeight", ((YES.equals(sysProg.getIsDialog()) && !NumberUtils.isNumber(h))), "Please input dialog height!") .throwMessage(); } private void save(DefaultControllerJsonResultObj<SysProgVO> result, SysProgVO sysProg, String sysOid, String iconOid, String w, String h) throws AuthorityException, ControllerException, ServiceException, Exception { this.checkFields(result, sysProg, sysOid, iconOid, w, h); sysProg.setDialogW(NumberUtils.toInt(w)); sysProg.setDialogH(NumberUtils.toInt(h)); DefaultResult<SysProgVO> progResult = this.systemProgramLogicService.create(sysProg, sysOid, iconOid); if (progResult.getValue() != null) { result.setValue(progResult.getValue()); result.setSuccess(YES); } result.setMessage(progResult.getSystemMessage().getValue()); } private void update(DefaultControllerJsonResultObj<SysProgVO> result, SysProgVO sysProg, String sysOid, String iconOid, String w, String h) throws AuthorityException, ControllerException, ServiceException, Exception { this.checkFields(result, sysProg, sysOid, iconOid, w, h); sysProg.setDialogW(NumberUtils.toInt(w)); sysProg.setDialogH(NumberUtils.toInt(h)); DefaultResult<SysProgVO> progResult = this.systemProgramLogicService.update(sysProg, sysOid, iconOid); if (progResult.getValue() != null) { result.setValue(progResult.getValue()); result.setSuccess(YES); } result.setMessage(progResult.getSystemMessage().getValue()); } private void delete(DefaultControllerJsonResultObj<Boolean> result, SysProgVO sysProg) throws AuthorityException, ControllerException, ServiceException, Exception { DefaultResult<Boolean> progResult = this.systemProgramLogicService.delete(sysProg); if (progResult.getValue() != null) { result.setValue(progResult.getValue()); result.setSuccess(YES); } result.setMessage(progResult.getSystemMessage().getValue()); } @ControllerMethodAuthority(check = true, programId = "CORE_PROG001D0002A") @RequestMapping(value = "/core.sysProgramSaveJson.do", produces = "application/json") public @ResponseBody DefaultControllerJsonResultObj<SysProgVO> doSave(HttpServletRequest request, SysProgVO sysProg) { DefaultControllerJsonResultObj<SysProgVO> result = this.getDefaultJsonResult("CORE_PROG001D0002A"); if (!this.isAuthorizeAndLoginFromControllerJsonResult(result)) { return result; } try { this.save(result, sysProg, request.getParameter("progSystemOid"), request.getParameter("iconOid"), request.getParameter("dialogWidth"), request.getParameter("dialogHeight")); } catch (AuthorityException | ServiceException | ControllerException e) { result.setMessage(e.getMessage().toString()); } catch (Exception e) { this.exceptionResult(result, e); } return result; } @ControllerMethodAuthority(check = true, programId = "CORE_PROG001D0002E") @RequestMapping(value = "/core.sysProgramUpdateJson.do", produces = "application/json") public @ResponseBody DefaultControllerJsonResultObj<SysProgVO> doUpdate(HttpServletRequest request, SysProgVO sysProg) { DefaultControllerJsonResultObj<SysProgVO> result = this.getDefaultJsonResult("CORE_PROG001D0002E"); if (!this.isAuthorizeAndLoginFromControllerJsonResult(result)) { return result; } try { this.update(result, sysProg, request.getParameter("progSystemOid"), request.getParameter("iconOid"), request.getParameter("dialogWidth"), request.getParameter("dialogHeight")); } catch (AuthorityException | ServiceException | ControllerException e) { result.setMessage(e.getMessage().toString()); } catch (Exception e) { this.exceptionResult(result, e); } return result; } @ControllerMethodAuthority(check = true, programId = "CORE_PROG001D0002D") @RequestMapping(value = "/core.sysProgramDeleteJson.do", produces = "application/json") public @ResponseBody DefaultControllerJsonResultObj<Boolean> doDelete(SysProgVO sysProg) { DefaultControllerJsonResultObj<Boolean> result = this.getDefaultJsonResult("CORE_PROG001D0002D"); if (!this.isAuthorizeAndLoginFromControllerJsonResult(result)) { return result; } try { this.delete(result, sysProg); } catch (AuthorityException | ServiceException | ControllerException e) { result.setMessage(e.getMessage().toString()); } catch (Exception e) { this.exceptionResult(result, e); } return result; } }