com.dangdang.ddframe.job.lite.console.restful.JobOperationRestfulApi Maven / Gradle / Ivy
The newest version!
/*
* Copyright 1999-2015 dangdang.com.
*
* 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.
*
*/
package com.dangdang.ddframe.job.lite.console.restful;
import com.dangdang.ddframe.job.lite.console.service.JobAPIService;
import com.dangdang.ddframe.job.lite.console.service.impl.JobAPIServiceImpl;
import com.dangdang.ddframe.job.lite.lifecycle.domain.ShardingInfo;
import com.dangdang.ddframe.job.lite.lifecycle.domain.JobBriefInfo;
import com.google.common.base.Optional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.Collection;
/**
* 作业维度操作的RESTful API.
*
* @author caohao
*/
@Path("/jobs")
public final class JobOperationRestfulApi {
private JobAPIService jobAPIService = new JobAPIServiceImpl();
/**
* 获取作业总数.
*
* @return 作业总数
*/
@GET
@Path("/count")
public int getJobsTotalCount() {
return jobAPIService.getJobStatisticsAPI().getJobsTotalCount();
}
/**
* 获取作业详情.
*
* @return 作业详情集合
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
public Collection getAllJobsBriefInfo() {
return jobAPIService.getJobStatisticsAPI().getAllJobsBriefInfo();
}
/**
* 触发作业.
*
* @param jobName 作业名称
*/
@POST
@Path("/{jobName}/trigger")
public void triggerJob(@PathParam("jobName") final String jobName) {
jobAPIService.getJobOperatorAPI().trigger(Optional.of(jobName), Optional.absent());
}
/**
* 禁用作业.
*
* @param jobName 作业名称
*/
@POST
@Path("/{jobName}/disable")
@Consumes(MediaType.APPLICATION_JSON)
public void disableJob(@PathParam("jobName") final String jobName) {
jobAPIService.getJobOperatorAPI().disable(Optional.of(jobName), Optional.absent());
}
/**
* 启用作业.
*
* @param jobName 作业名称
*/
@DELETE
@Path("/{jobName}/disable")
@Consumes(MediaType.APPLICATION_JSON)
public void enableJob(@PathParam("jobName") final String jobName) {
jobAPIService.getJobOperatorAPI().enable(Optional.of(jobName), Optional.absent());
}
/**
* 终止作业.
*
* @param jobName 作业名称
*/
@POST
@Path("/{jobName}/shutdown")
@Consumes(MediaType.APPLICATION_JSON)
public void shutdownJob(@PathParam("jobName") final String jobName) {
jobAPIService.getJobOperatorAPI().shutdown(Optional.of(jobName), Optional.absent());
}
/**
* 获取分片信息.
*
* @param jobName 作业名称
* @return 分片信息集合
*/
@GET
@Path("/{jobName}/sharding")
@Produces(MediaType.APPLICATION_JSON)
public Collection getShardingInfo(@PathParam("jobName") final String jobName) {
return jobAPIService.getShardingStatisticsAPI().getShardingInfo(jobName);
}
@POST
@Path("/{jobName}/sharding/{item}/disable")
@Consumes(MediaType.APPLICATION_JSON)
public void disableSharding(@PathParam("jobName") final String jobName, @PathParam("item") final String item) {
jobAPIService.getShardingOperateAPI().disable(jobName, item);
}
@DELETE
@Path("/{jobName}/sharding/{item}/disable")
@Consumes(MediaType.APPLICATION_JSON)
public void enableSharding(@PathParam("jobName") final String jobName, @PathParam("item") final String item) {
jobAPIService.getShardingOperateAPI().enable(jobName, item);
}
}