All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cloud.task.controller.EventTraceHistoryController Maven / Gradle / Ivy

package com.cloud.task.controller;

import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.cloud.task.model.JobExecutionQueryInfo;
import com.dangdang.ddframe.job.event.JobEventConfiguration;
import com.dangdang.ddframe.job.event.rdb.JobEventRdbSearch;
import com.dangdang.ddframe.job.event.type.JobExecutionEvent;
import com.dangdang.ddframe.job.event.type.JobStatusTraceEvent;

/**
 *〈EventTraceHistoryController〉
* * @author number68 * @date 2019/4/28 * @since 0.1 */ @RestController @RequestMapping("/api/event-trace") public class EventTraceHistoryController { private final Logger log = LoggerFactory.getLogger(this.getClass()); @Autowired @Qualifier("defaultJobEventConfiguration") private JobEventConfiguration jobEventConfiguration; /** * 查询作业执行事件. * * @param queryParams 查询条件 * @return 运行痕迹事件结果集 * @throws ParseException 解析异常 */ @PostMapping(value = "/execution") public JobEventRdbSearch.Result findJobExecutionEvents( @RequestBody(required = false) final JobExecutionQueryInfo queryParams) throws ParseException { if (null == queryParams) { return null; } DataSource dataSource = null; if( jobEventConfiguration instanceof com.cloud.task.config.JobEventRdbConfiguration) { dataSource = ((com.cloud.task.config.JobEventRdbConfiguration) jobEventConfiguration).getDataSource(); } JobEventRdbSearch jobEventRdbSearch = new JobEventRdbSearch(dataSource); return jobEventRdbSearch .findJobExecutionEvents(buildCondition(queryParams, new String[] {"jobName", "ip", "isSuccess"})); } /** * 查询作业状态事件. * * @param queryParams 查询条件 * @return 运行痕迹事件结果集 * @throws ParseException 解析异常 */ @PostMapping("/status") public JobEventRdbSearch.Result findJobStatusTraceEvents( @RequestBody(required = false) final JobExecutionQueryInfo queryParams) throws ParseException { if (null == queryParams) { return null; } DataSource dataSource = null; if( jobEventConfiguration instanceof com.cloud.task.config.JobEventRdbConfiguration) { dataSource = ((com.cloud.task.config.JobEventRdbConfiguration) jobEventConfiguration).getDataSource(); } JobEventRdbSearch jobEventRdbSearch = new JobEventRdbSearch(dataSource); return jobEventRdbSearch.findJobStatusTraceEvents( buildCondition(queryParams, new String[] {"jobName", "source", "executionType", "state"})); } private JobEventRdbSearch.Condition buildCondition(final JobExecutionQueryInfo info, final String[] params) throws ParseException { int perPage = 10; int page = 1; if (StringUtils.hasLength(info.getPerPage())) { perPage = Integer.parseInt(info.getPerPage()); } if (StringUtils.hasLength(info.getPage())) { page = Integer.parseInt(info.getPage()); } String sort = info.getSort(); String order = info.getOrder(); Date startTime = null; Date endTime = null; Map fields = getQueryParameters(info, params); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (StringUtils.hasLength(info.getStartTime())) { startTime = simpleDateFormat.parse(info.getStartTime()); } if (StringUtils.hasLength(info.getEndTime())) { endTime = simpleDateFormat.parse(info.getEndTime()); } return new JobEventRdbSearch.Condition(perPage, page, sort, order, startTime, endTime, fields); } private Map getQueryParameters(final JobExecutionQueryInfo info, final String[] params) { final Map result = new HashMap<>(); for (String each : params) { try { Field field = JobExecutionQueryInfo.class.getDeclaredField(each); field.setAccessible(true); String value = (String)field.get(info); if (StringUtils.hasLength(value)) { result.put(each, value); } } catch (NoSuchFieldException | IllegalAccessException e) { log.warn("JobExecutionQueryInfo has no field:{}", each); continue; } } return result; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy