Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package controllers; import data.entity.BaseParam; import data.entity.Scene; import data.entity.Sequence; import data.entity.SequenceValueRange; import data.services.BaseParamService; import data.services.SceneService; import data.services.SequenceService; import data.services.SequenceValueRangeService; import java.io.File; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import logic.AStrategy1; import logic.AStrategy2; import logic.BStrategy1; import logic.BStrategy2; import logic.MoneyAllowance; import logic.ResourceProfitability; import logic.ResourceStaticType; import logic.ToxicParamType; import logic.ToxicValueType; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import support.StringAdapter; /** * * @author bezdatiuzer */ @Controller @RequestMapping("/Sequence") public class SequenceController { @Autowired private SequenceService sequenceService; @Autowired private SceneService sceneService; @Autowired private SequenceValueRangeService sequenceValueRangeService; @Autowired private BaseParamService baseParamService; @ModelAttribute public void setInfo(Map<String, Object> model) { //model.put("stratAfter", StrategyAfterStatic.values()); //model.put("stratBefore", StrategyBeforeStatic.values()); model.put("stratA1", AStrategy1.values()); model.put("stratB1", BStrategy1.values()); model.put("toxicValueTypes", ToxicValueType.values()); model.put("toxicParamTypes", ToxicParamType.values()); model.put("resourseProfitabilities", ResourceProfitability.values()); model.put("resourseStaticTypes", ResourceStaticType.values()); model.put("allowances", MoneyAllowance.getAllowances()); model.put("stratA2", AStrategy2.values()); model.put("stratB2", BStrategy2.values()); model.put("scenes", sceneService.getScenes()); } @RequestMapping("/show") public String show(Map<String, Object> model) throws Exception { List<Sequence> seqList = sequenceService.getSequences(); model.put("seqList", seqList); model.put("sequence", new Sequence()); return "SequenceShow"; } @RequestMapping(value = "/add") public String addScene(Map<String, Object> model, @ModelAttribute("sequence") Sequence seq, BindingResult result, HttpServletRequest request, RedirectAttributes ras) throws Exception { sequenceService.create(seq); ras.addFlashAttribute("error", sequenceService.getResult().getErrors()); return "redirect:/Sequence/show"; } @RequestMapping(value = "/delete") public String delete(Map<String, Object> model, @RequestParam("sequenceId") Long sequenceId, RedirectAttributes ras) throws Exception { sequenceService.delete(sequenceId); ras.addFlashAttribute("error", sequenceService.getResult().getErrors()); return "redirect:/Sequence/show"; } @RequestMapping("/showOne") public String showOne(Map<String, Object> model, @RequestParam("sequenceId") Long sequenceId) throws Exception { Sequence seq = sequenceService.find(sequenceId); model.put("baseParamsList", baseParamService.getParams()); model.put("sequence", seq); return "SequenceShowOne"; } @RequestMapping("/addScene") public String showOne(Map<String, Object> model, @RequestParam("sequenceId") Long sequenceId, @RequestParam("sceneId") Long sceneId, RedirectAttributes ras) throws Exception { Sequence seq = sequenceService.find(sequenceId); Scene scene = sceneService.find(sceneId); if (seq != null && scene != null) { sequenceService.updateSequenceByScene(seq, scene); ras.addFlashAttribute("error", sequenceService.getResult().getErrors()); } return "redirect:/Sequence/showOne?sequenceId=" + sequenceId; } @RequestMapping("/deleteScene") public String deleteScene(Map<String, Object> model, @RequestParam("sequenceId") Long sequenceId, @RequestParam("sceneId") Long sceneId, RedirectAttributes ras) throws Exception { Sequence seq = sequenceService.find(sequenceId); Scene scene = sceneService.find(sceneId); if (seq != null && scene != null) { sequenceService.deleteSequenceByScene(seq, scene); ras.addFlashAttribute("error", sequenceService.getResult().getErrors()); } return "redirect:/Sequence/showOne?sequenceId=" + sequenceId; } @RequestMapping("/addParam") public String addParam(Map<String, Object> model, @RequestParam("sequenceId") Long sequenceId, @RequestParam("uid") String uid, @RequestParam("vmin") Long vmin, @RequestParam("vmax") Long vmax, @RequestParam("amin") Long amin, @RequestParam("amax") Long amax, RedirectAttributes ras) throws Exception { List<BaseParam> bpList = baseParamService.getParams(); BaseParam bp = baseParamService.getBaseParam(bpList, uid); SequenceValueRange svr = new SequenceValueRange(); svr.setSequence(sequenceService.find(sequenceId)); svr.setUid(uid); svr.setName(bp.getName()); svr.setValueMin(vmin); svr.setValueMax(vmax); svr.setAmin(amin); svr.setAmax(amax); sequenceValueRangeService.create(svr); ras.addAttribute("sequenceId", sequenceId); //ras.addFlashAttribute("baseParamsList", bpList); return "redirect:/Sequence/showOne"; } @RequestMapping("/deleteParam") public String deleteParam(Map<String, Object> model, @RequestParam("paramId") Long paramId, @RequestParam("sequenceId") Long sequenceId, RedirectAttributes ras) throws Exception { sequenceValueRangeService.delete(paramId); ras.addAttribute("sequenceId", sequenceId); return "redirect:/Sequence/showOne"; } @RequestMapping("/getXls") public void getXls(Map<String, Object> model, HttpServletResponse response, @RequestParam(value = "sequenceId", required = true) Long sequenceId, RedirectAttributes ras) throws Exception { response.setContentType("application/octet-stream"); Sequence seq = sequenceService.find(sequenceId); response.setHeader("Content-Disposition", "attachment; filename=seq_" + seq.getRadCore() + "_" + sequenceId + ".xls"); sequenceService.getXls(sequenceId).write(response.getOutputStream()); } @RequestMapping("/updateFromXml") public String updateFromXml(Map<String, Object> model, @RequestParam(value = "xlsFile", required = false) MultipartFile file, @RequestParam(value = "sequenceId", required = true) Long sequenceId, RedirectAttributes ras) { if (file == null || file.isEmpty()) { ras.addFlashAttribute("error", "File not found"); } else { File newFile = new File("/usr/local/etc/sceneParamsList"); if (newFile.exists()) { newFile.delete(); } try { FileUtils.writeByteArrayToFile(newFile, file.getBytes()); sequenceService.updateFromXml(newFile, sequenceId); ras.addFlashAttribute("error", sequenceService.getResult().getErrors()); } catch (Exception e) { ras.addFlashAttribute("error", "updateFromXml" + StringAdapter.getStackTraceException(e)/*e.getMessage()*/); } if (newFile.exists()) { newFile.delete(); } } ras.addAttribute("sequenceId", sequenceId); return "redirect:/Sequence/showOne"; } }