package com.hqyg.disjob.console.web.controller; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.quartz.JobKey; 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 com.hqyg.disjob.common.util.StringHandleUtil; import com.hqyg.disjob.console.cron.CronResult; import com.hqyg.disjob.console.cron.CronTransferUtil; import com.hqyg.disjob.console.cron.YearFactor; import com.hqyg.disjob.console.cron.factors.DayOfMonthFactor; import com.hqyg.disjob.console.cron.factors.DayOfWeekFactor; import com.hqyg.disjob.console.cron.factors.MonthFactor; import com.hqyg.disjob.console.cron.factors.TimeFactor; import com.hqyg.disjob.register.domain.EjobServerInfo; import com.hqyg.disjob.register.job.EjobServerService; import com.google.gson.Gson; import com.hqyg.disjob.monitor.db.domain.PageResult; /** * <pre> * * File: ServiceBasicController.java * * Copyright (c) 2016, globalegrow.com All Rights Reserved. * * Description: * 基础服务控制器实现类 * * Revision History * * Date: 2016年6月6日 * Author: Disjob * * </pre> */ @Controller @RequestMapping("/service/ser/basic") public class ServiceInfoController extends BaseController { @Resource EjobServerService service; @RequestMapping("/list") @ResponseBody public PageResult list(@RequestParam(value="name", required=true) String name, @RequestParam(value="limit", required=true) int pageSize, @RequestParam(value="offset", required=true) int offset) { List<EjobServerInfo> infos = service.getServerInfos(); int total = 0; if(infos != null){ total = infos.size(); if(total >= offset+pageSize){//如果有足够的数据,则取页面大小的数量 infos = infos.subList(offset, offset+pageSize); }else{//否则取完剩下的 infos = infos.subList(offset, total); } } return new PageResult().setTotal(total).setRows(infos); } @RequestMapping("/subJob") @ResponseBody public PageResult subJob(@RequestParam(value="ip", required=true) String ip, @RequestParam(value="limit", required=true) int pageSize, @RequestParam(value="offset", required=true) int offset) { List<JobKey> result = new LinkedList<JobKey>(); int total = 0; if(StringHandleUtil.isNoneEmpty(ip)){ Map<String, List<String>> infos = service.getServerJob(new EjobServerInfo(ip)); if(infos != null){ Iterator<String> itor = null; for(String gName: infos.keySet()){ itor = infos.get(gName).iterator(); while(itor.hasNext()){ result.add(new JobKey(itor.next(), gName)); } } } total = result.size(); if(total >= offset+pageSize){//如果有足够的数据,则取页面大小的数量 result = result.subList(offset, offset+pageSize); }else{//否则取完剩下的 result = result.subList(offset, total); } } return new PageResult().setTotal(total).setRows(result);//封装返回 } @RequestMapping("/transfer") @ResponseBody public CronResult transfer(@RequestParam(value="crontab", required=true) String crontab) { return CronTransferUtil.fromCrontabToQuartz(crontab); } @RequestMapping("/transferBatch") @ResponseBody public List<CronResult> transferBatch(@RequestParam(value="crontabs", required=true) String crontabs) { String[] crontabsArray = new Gson().fromJson(crontabs,String[].class); return CronTransferUtil.fromCrontabToQuartz(crontabsArray); } @RequestMapping("/generateCron") @ResponseBody public String generateCron(@RequestParam(value = "second", required = true) String second, @RequestParam(value = "minute", required = true) String minute, @RequestParam(value = "hour", required = true) String hour, @RequestParam(value = "dayOfMonth", required = true) String dayOfMonth, @RequestParam(value = "month", required = true) String month, @RequestParam(value = "weekOfMonth", required = true) String week, @RequestParam(value = "year", required = false) String year) { TimeFactor secondFactor = new Gson().fromJson(second,TimeFactor.class); TimeFactor minuteFactor = new Gson().fromJson(minute,TimeFactor.class); TimeFactor hourFactor = new Gson().fromJson(hour,TimeFactor.class); DayOfMonthFactor dayOfMonthFactor = new Gson().fromJson(dayOfMonth,DayOfMonthFactor.class).setDefaultValue("*"); MonthFactor monthFactor = new Gson().fromJson(month,MonthFactor.class).setDefaultValue("*"); DayOfWeekFactor weekOfMonthFactor = new Gson().fromJson(week,DayOfWeekFactor.class).setDefaultValue("*"); YearFactor yearFactor = new Gson().fromJson(year,YearFactor.class).setDefaultValue("*"); return CronTransferUtil.generateCron(secondFactor, minuteFactor, hourFactor, dayOfMonthFactor, monthFactor, weekOfMonthFactor, yearFactor); } }