package com.chickling.controllers; import com.facebook.presto.hive.$internal.org.apache.commons.lang3.exception.ExceptionUtils; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; import com.google.gson.reflect.TypeToken; import com.chickling.models.MessageFactory; import com.chickling.util.ScheduleCRUDUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.lang.reflect.Type; import java.sql.SQLException; import java.util.Map; /** * Created by ey67 on 2015/12/10. */ @Path("/schedule") public class Schedule { /*Log4J*/ Logger log = LogManager.getLogger(Schedule.class); /** * Add schedule * @param json * @param token * @return [message success?] */ @POST @Path("/manage/add/") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response addSchedule(String json,@HeaderParam("AUTHORIZATION") String token){ Type type = new TypeToken<Map>() {}.getType(); Gson gson = new Gson(); try { Map datas = gson.fromJson(json, type); return Response.ok(ScheduleCRUDUtils.addSchedule(datas, token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); } catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "value can not be null", "")).build(); } catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "Json Class Cast Exception", "")).build(); } } /** * Update schedule * @param json * @param scheduleId * @param token * @return [message success?] */ @POST @Path("/manage/update/{scheduleid}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response updateSchrdule(String json, @PathParam("scheduleid")int scheduleId, @HeaderParam("AUTHORIZATION") String token){ Type type = new TypeToken<Map>() {}.getType(); Gson gson = new Gson(); try { Map datas = gson.fromJson(json, type); return Response.ok(ScheduleCRUDUtils.updateSchedule(datas, scheduleId, token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (NullPointerException e) { log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "Json Class Cast Exception", "")).build(); } } /** * Get schedule info * @param scheduleId * @param token * @return [schedule info] */ @GET @Path("/manage/get/{scheduleid}") @Produces(MediaType.APPLICATION_JSON) public Response getScheduleInfo(@PathParam("scheduleid")int scheduleId, @HeaderParam("AUTHORIZATION") String token){ try { return Response.ok(ScheduleCRUDUtils.getScheduleInfo(scheduleId, token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "Json Class Cast Exception", "")).build(); } catch (SQLException e) { log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.message("error", "Sql error")).build(); } } /** * Delete schedule * @param scheduleId * @param token * @return [message success?] */ @GET @Path("/manage/delete/{scheduleid}") @Produces(MediaType.APPLICATION_JSON) public Response deleteSchedule( @PathParam("scheduleid")int scheduleId, @HeaderParam("AUTHORIZATION") String token){ try { return Response.ok(ScheduleCRUDUtils.deleteSchedule(scheduleId, token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "Json Class Cast Exception", "")).build(); } } /** * Get schedule list * @param token * @return [schedule list] */ @GET @Path("/manage/list/") @Produces(MediaType.APPLICATION_JSON) public Response getScheduleList(@HeaderParam("AUTHORIZATION") String token) { try { return Response.ok(ScheduleCRUDUtils.getScheduleList(token)).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "Json Class Cast Exception", "")).build(); } } /** * Get schedule list (limit) * @param limit * @param token * @return [schedule list] */ @GET @Path("/manage/run/list/{limit}") @Produces(MediaType.APPLICATION_JSON) public Response getScheduleStatusList(@PathParam("limit") String limit,@HeaderParam("AUTHORIZATION") String token){ Type type = new TypeToken<Map>() {}.getType(); Gson gson = new Gson(); try { return Response.ok(ScheduleCRUDUtils.getScheduleStatusList(limit, token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ return Response.ok(MessageFactory.rtnJobMessage("error", "", "Json Class Cast Exception", "")).build(); } } /** * Get schedule run history (start~stop schedule id) * @param start * @param stop * @param scheduleId * @param token * @return [schedule history list] */ @GET @Path("/manage/run/history/range/{start}/{stop}/{scheduleid}") @Produces(MediaType.APPLICATION_JSON) public Response getScheduleHistoryList(@PathParam("start")String start, @PathParam("stop") String stop,@PathParam("scheduleid") String scheduleId,@HeaderParam("AUTHORIZATION") String token){ try { return Response.ok(ScheduleCRUDUtils.getScheduleHistoryList(start, stop, scheduleId, token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); } } /** * Get schedule run history (start~stop) * @param start * @param stop * @param token * @return [schedule history lsit] */ @GET @Path("/manage/run/history/range/{start}/{stop}/") @Produces(MediaType.APPLICATION_JSON) public Response getScheduleHistoryList(@PathParam("start")String start, @PathParam("stop") String stop,@HeaderParam("AUTHORIZATION") String token){ try { return Response.ok(ScheduleCRUDUtils.getScheduleHistoryList(start, stop, "", token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); } } /** * Get schedule run history (schedule id) * @param scheduleId * @param token * @return [schedule histroy list] */ @GET @Path("/manage/run/history/range/{scheduleid}") @Produces(MediaType.APPLICATION_JSON) public Response getScheduleHistoryList(@PathParam("scheduleid")String scheduleId,@HeaderParam("AUTHORIZATION") String token){ try { return Response.ok(ScheduleCRUDUtils.getScheduleHistoryList("","",scheduleId, token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnJobMessage("error", "", e.getMessage(), "")).build(); } } }