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.Auth; import com.chickling.models.MessageFactory; import com.chickling.util.ChartCRUDUtils; import com.chickling.util.DrawUtils; 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.ArrayList; import java.util.Map; /** * Created by jw6v on 2017/1/20. */ @Path("/chart") public class Chart { /*Log4J*/ Logger log = LogManager.getLogger(Chart.class); @POST @Path("/manage/add/") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response addChart(String json, @HeaderParam("AUTHORIZATION") String token){ Type type = new TypeToken<Map>() {}.getType(); Gson gson = new Gson(); Auth au=new Auth(); try { if(!au.checkChartBuilder(token)){ return Response.ok(MessageFactory.rtnChartMessage("error", "", "You are not a chart builder", "")).build(); } else { Map<String, String> datas = gson.fromJson(json, type); String rtn = ChartCRUDUtils.addChart(datas, token); return Response.ok(rtn).build(); } }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", e.toString(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", "Json Class Cast Exception", "")).build(); }catch (NumberFormatException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "","Lost data:"+ e.toString(), "")).build(); }catch(SQLException sqle){ return Response.ok(MessageFactory.rtnChartMessage("error", "", sqle.toString(), "")).build(); } } @POST @Path("/manage/update/{chartid}/{jobID}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response updateChart(String json, @PathParam("chartid")int chartID,@PathParam("jobid")int jobID, @HeaderParam("AUTHORIZATION") String token){ Auth au=new Auth(); Type type = new TypeToken<Map>() {}.getType(); Gson gson = new Gson(); try { if(!au.checkChartBuilder(token)){ return Response.ok(MessageFactory.rtnChartMessage("error", "", "You are not a chart builder", "")).build(); } else { Map<String,String> datas = gson.fromJson(json, type); String rtn=ChartCRUDUtils.updateChart(datas, jobID, token); return Response.ok(rtn).build(); } }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", e.toString(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", "value can not be null", "")).build(); } catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", "Json Class Cast Exception", "")).build(); }catch(SQLException sqle){ return Response.ok(MessageFactory.rtnChartMessage("error", "", sqle.toString(), "")).build(); } } @GET @Path("/manage/get/{chartid}") @Produces(MediaType.APPLICATION_JSON) public Response getChartInfo(@PathParam("chartid")int chartid, @HeaderParam("AUTHORIZATION") String token){ Auth au=new Auth(); try { return Response.ok(ChartCRUDUtils.readChart(chartid, token)).build(); }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", e.toString(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", "Json Class Cast Exception", "")).build(); } } @GET @Path("/manage/delete/{chartid}/{jobID}") @Produces(MediaType.APPLICATION_JSON) public Response deleteChart( @PathParam("chartid")int chartid,@PathParam("jobid")int jobID, @HeaderParam("AUTHORIZATION") String token){ Gson gson=new Gson(); Type type = new TypeToken<Map>() {}.getType(); Auth au=new Auth(); try { if(!au.checkChartBuilder(token)){ return Response.ok(MessageFactory.rtnChartMessage("failed", "", "You are not a chart builder", "")).build(); } else { String rtn = ChartCRUDUtils.deleteChart(chartid, jobID, token); return Response.ok(rtn).build(); } }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", e.toString(), "")).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", "value can not be null", "")).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartMessage("error", "", "Json Class Cast Exception", "")).build(); }catch(SQLException sqle){ return Response.ok(MessageFactory.rtnChartMessage("error", "", sqle.toString(), "")).build(); } } @GET @Path("/manage/list/{jobID}") @Produces(MediaType.APPLICATION_JSON) public Response getChartList(@HeaderParam("AUTHORIZATION") String token,@PathParam("jobID")int jobID){ //todo Auth au=new Auth(); try { if(!au.checkChartBuilder(token)){ return Response.ok(MessageFactory.rtnChartListMessage("failed", "", "You are not a chart builder", "", new ArrayList<>())).build(); }else{ return Response.ok(ChartCRUDUtils.readChartbyJobID(jobID,token)).build(); } }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartListMessage("error", "",e.toString(), "", new ArrayList<>())).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartListMessage("error", "", "value can not be null", "", new ArrayList<>())).build(); }catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnChartListMessage("error", "", "Json Class Cast Exception", "", new ArrayList<>())).build(); }catch(SQLException sqle){ return Response.ok(MessageFactory.rtnChartMessage("error", "", sqle.toString(), "")).build(); } } @POST @Path("/draw/{jobhistoryid}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response drawByJHID(String json, @PathParam("jobhistoryid")int jobhistoryid, @HeaderParam("AUTHORIZATION") String token){ Type type = new TypeToken<Map>() {}.getType(); Gson gson = new Gson(); Auth au=new Auth(); try { Map<String, String> datas = gson.fromJson(json, type); DrawUtils dr = new DrawUtils(); String table = dr.getResultTable(jobhistoryid); if (table.equals("")) { return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "sucess", "No execution record")).build(); } else { if (!(Boolean) au.verify(token).get(4)) {//check login return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", "Permission Denied")).build(); } else if ((au.groupMatchwithJHid(token, jobhistoryid)) || ((Integer) au.verify(token).get(0) == 2)) { String rtn = dr.draw(datas, table); return Response.ok(rtn).build(); } else { return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", "Permission Denied")).build(); } } }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", e.toString())).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", e.toString())).build(); } catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", e.toString())).build(); } catch(SQLException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", e.toString())).build(); } } @POST @Path("/manage/update/{jobid}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response drawByJobID(String json,@PathParam("jobid")int jobID, @HeaderParam("AUTHORIZATION") String token){ Type type = new TypeToken<Map>() {}.getType(); Gson gson = new Gson(); Auth au=new Auth(); try { if(!au.checkChartBuilder(token)){ return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed","You are not a chart builder")).build(); }else{ Map datas = gson.fromJson(json, type); DrawUtils dr=new DrawUtils(); String table=dr.getLastResult(jobID); if(table.endsWith("")){ return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "sucess", "No execution record")).build(); }else{ if (!(Boolean) au.verify(token).get(4)) {//check login return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed","Permission Denied")).build(); } else if ((au.groupMatch(token, jobID)) || ((Integer) au.verify(token).get(0) == 2)) { String rtn=dr.draw(datas,table); return Response.ok(rtn).build(); } else { return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed","Permission Denied")).build(); } } } }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed",e.toString())).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", e.toString())).build(); } catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", e.toString())).build(); }catch(SQLException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnDrawMessage(null, 0, "failed", e.toString())).build(); } } @POST @Path("/draw/pie/{jobhistoryid}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response drawPieByJHID(String json, @PathParam("jobhistoryid")int jobhistoryid, @HeaderParam("AUTHORIZATION") String token){ //Todo permission check Type type = new TypeToken<Map>() {}.getType(); Gson gson = new Gson(); Auth au=new Auth(); try { Map<String,String> datas = gson.fromJson(json, type); DrawUtils dr=new DrawUtils(); String table=dr.getResultTable(jobhistoryid); if(table.equals("")){ return Response.ok(MessageFactory.rtnPieMessage(null,"sucess", "No execution record")).build(); }else{ if (!(Boolean) au.verify(token).get(4)) {//check login return Response.ok(MessageFactory.rtnPieMessage(null, "failed","Permission Denied")).build(); } else if ((au.groupMatchwithJHid(token, jobhistoryid)) || ((Integer) au.verify(token).get(0) == 2)) { String rtn=dr.drawPie(datas,table); return Response.ok(rtn).build(); } else { return Response.ok(MessageFactory.rtnPieMessage(null, "failed","Permission Denied")).build(); } } }catch (JsonSyntaxException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnPieMessage(null,"failed", e.toString())).build(); }catch (NullPointerException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnPieMessage(null,"failed", e.toString())).build(); } catch (ClassCastException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnPieMessage(null,"failed", e.toString())).build(); } catch(SQLException e){ log.warn(ExceptionUtils.getStackTrace(e)); return Response.ok(MessageFactory.rtnPieMessage(null,"failed", e.toString())).build(); } } }