Guest User

Untitled

a guest
Apr 20th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.38 KB | None | 0 0
  1. package rest;
  2.  
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import java.util.List;
  7.  
  8. import javax.ws.rs.Consumes;
  9. import javax.ws.rs.DELETE;
  10. import javax.ws.rs.GET;
  11. import javax.ws.rs.POST;
  12. import javax.ws.rs.PUT;
  13. import javax.ws.rs.Path;
  14. import javax.ws.rs.PathParam;
  15. import javax.ws.rs.Produces;
  16. import javax.ws.rs.QueryParam;
  17. import javax.ws.rs.FormParam;
  18. import javax.ws.rs.core.MediaType;
  19. import javax.ws.rs.core.Response;
  20. import javax.ws.rs.core.Response.ResponseBuilder;
  21.  
  22. import com.google.appengine.api.quota.QuotaService;
  23. import com.google.appengine.api.quota.QuotaServiceFactory;
  24.  
  25. import Entity.Kurt;
  26. import Entity.Rezervace;
  27. import Entity.Osoba;
  28. import Extra.JQueryDate;
  29. import SystemFacade.SystemFacade;
  30. import converter.ReservationConverter;
  31. import converter.ReservationsConverter;
  32. import java.util.regex.*;
  33.  
  34.  
  35. @Path("/reservation")
  36. public class ReservationResource {
  37.    
  38.     SystemFacade facade = new SystemFacade();
  39.  
  40.     @GET
  41.     @Produces(MediaType.APPLICATION_XML)
  42.     public Response getReservations(@QueryParam("all") boolean all) {
  43.        
  44.         if(all == true){
  45.             ResponseBuilder builder = Response.status(Response.Status.OK);
  46.             List<Rezervace> res = facade.getAllReservations();
  47.             ReservationsConverter resOutput = new ReservationsConverter(res, true);
  48.             builder.entity(resOutput);
  49.             return builder.build();
  50.         }else{
  51.             ResponseBuilder builder = Response.status(Response.Status.OK);
  52.             List<Rezervace> res = facade.getAllReservations();
  53.             ReservationsConverter resOutput = new ReservationsConverter(res, false);
  54.             builder.entity(resOutput);
  55.             return builder.build();
  56.         }
  57.     }
  58.    
  59.     @GET
  60.     @Produces(MediaType.APPLICATION_XML)
  61.     @Path("/{id}")
  62.     public Response getReservation(@PathParam("id") String id) {
  63.         ResponseBuilder builder = Response.status(Response.Status.OK);
  64.         Rezervace reservation = null;
  65.         try {
  66.             Long idvalue = new Long(id).longValue();
  67.             reservation = facade.getRezervaceByID(idvalue);
  68.         } catch (Exception e) {}
  69.        
  70.         if (reservation == null) {
  71.             return Response.status(Response.Status.NOT_FOUND).entity("Dana rezervace neexistuje!").type(MediaType.TEXT_PLAIN).build();
  72.         }
  73.      
  74.         ReservationConverter reservationOutput = new ReservationConverter(reservation);
  75.         builder.entity(reservationOutput);
  76.         return builder.build();
  77.     }
  78.  
  79.    
  80.     @POST
  81.     @Produces(MediaType.TEXT_PLAIN)
  82.     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
  83.     @Path("/")
  84.     public Response createReservation(@FormParam("username") String username, @FormParam("password") String password, @FormParam("from") String fromDate, @FormParam("to") String toDate) {
  85.        
  86.         if(username == null || password == null){
  87.             return Response.status(Response.Status.BAD_REQUEST).entity("Nebyly zadane prihlasovaci udaje").type(MediaType.TEXT_PLAIN).build();
  88.         }else if(fromDate == null || toDate == null){
  89.             return Response.status(Response.Status.BAD_REQUEST).entity("Spatne zadane parametry").type(MediaType.TEXT_PLAIN).build();
  90.         }else{
  91.            
  92.             Osoba user = facade.getUserDetailByName(username);
  93.            
  94.             if(user == null){
  95.                 return Response.status(Response.Status.FORBIDDEN).entity("Prihlaseni se nezdarilo").type(MediaType.TEXT_PLAIN).build();
  96.             }
  97.        
  98.             if( (user.getPassword().equals(password))){
  99.                
  100.                 String regDate = "(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)-([01]?[0-9]|2[0-3]):[0-5][0-9]";
  101.                 Pattern pattern = Pattern.compile(regDate);
  102.                 Pattern pattern2 = Pattern.compile(regDate);
  103.                 Matcher matcherFrom = pattern.matcher(fromDate);
  104.                 Matcher matcherTo = pattern2.matcher(toDate);
  105.                 if (matcherFrom.find() && matcherTo.find()){
  106.    
  107.                     Date parsedFromDate = null;
  108.                     Date parsedToDate = null;
  109.                     Date todayDate = null;
  110.                     String stringParsedFromDate = null;
  111.                     String stringParsedToDate = null;
  112.                     String stringTodayDate = null;
  113.                     try {
  114.                         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy-HH:mm");
  115.                         String stoday = simpleDateFormat.format(new Date());
  116.                         parsedFromDate = simpleDateFormat.parse(fromDate);
  117.                         parsedToDate = simpleDateFormat.parse(toDate);
  118.                         todayDate = simpleDateFormat.parse(stoday);
  119.                         stringParsedFromDate = simpleDateFormat.format(parsedFromDate);
  120.                         stringParsedToDate = simpleDateFormat.format(parsedToDate);
  121.                         stringTodayDate = simpleDateFormat.format(todayDate);
  122.                     } catch (ParseException e) {
  123.                         e.printStackTrace();
  124.                     }
  125.                    
  126.                     if(parsedFromDate.before(todayDate) || parsedToDate.before(todayDate)){
  127.                         return Response.status(Response.Status.BAD_REQUEST).entity("Omlouvame se, ale rezervace nemuze byt vytvorena v minulosti").type(MediaType.TEXT_PLAIN).build();
  128.                     }else if(parsedToDate.before(parsedFromDate)){
  129.                         return Response.status(Response.Status.BAD_REQUEST).entity("Nespravne zadana data").type(MediaType.TEXT_PLAIN).build();
  130.                     }else {
  131.                         JQueryDate from = new JQueryDate();
  132.                         from.setJQUERY( stringParsedFromDate );
  133.                         JQueryDate to = new JQueryDate();
  134.                         to.setJQUERY( stringParsedToDate );        
  135.                         Kurt free = facade.getFreeCourt(from, to);
  136.                         facade.createCourtReservation(user.getID(), from, to, free.id);
  137.                         return Response.status(Response.Status.CREATED).entity("Rezervace uspesne vytvorena").type(MediaType.TEXT_PLAIN).build();
  138.                     }
  139.  
  140.                 }else{
  141.                     return Response.status(Response.Status.BAD_REQUEST).entity("Nespravne zadana data!").type(MediaType.TEXT_PLAIN).build();
  142.                 }
  143.                
  144.             }else{
  145.                 return Response.status(Response.Status.FORBIDDEN).entity("Zadane prihlasovaci udaje nesouhlasi").type(MediaType.TEXT_PLAIN).build();
  146.             }
  147.         }
  148.     }
  149.    
  150.    
  151.     @POST
  152.     @Produces(MediaType.TEXT_PLAIN)
  153.     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
  154.     @Path("/update/{id}")
  155.     public Response updateReservation(@PathParam("id") String id, @FormParam("username") String username, @FormParam("password") String password, @FormParam("from") String fromDate, @FormParam("to") String toDate) {
  156.        
  157.         if(username == null || password == null){
  158.             return Response.status(Response.Status.BAD_REQUEST).entity("Nebyly zadane prihlasovaci udaje").type(MediaType.TEXT_PLAIN).build();
  159.         }else if(fromDate == null || toDate == null){
  160.             return Response.status(Response.Status.BAD_REQUEST).entity("Spatne zadane parametry").type(MediaType.TEXT_PLAIN).build();
  161.         }else{
  162.            
  163.             Osoba user = facade.getUserDetailByName(username);
  164.            
  165.             if(user == null){
  166.                 return Response.status(Response.Status.FORBIDDEN).entity("Prihlaseni se nezdarilo").type(MediaType.TEXT_PLAIN).build();
  167.             }
  168.            
  169.             Rezervace reservation = null;
  170.             try {
  171.                 Long idvalue = new Long(id).longValue();
  172.                 reservation = facade.getRezervaceByID(idvalue);
  173.             } catch (Exception e) {}
  174.            
  175.             if(reservation == null){
  176.                 return Response.status(Response.Status.FORBIDDEN).entity("Rezervace nenalezena").type(MediaType.TEXT_PLAIN).build();
  177.             }
  178.            
  179.             if( (user.getPassword().equals(password))){
  180.                
  181.                 String regDate = "(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)-([01]?[0-9]|2[0-3]):[0-5][0-9]";
  182.                 Pattern pattern = Pattern.compile(regDate);
  183.                 Pattern pattern2 = Pattern.compile(regDate);
  184.                 Matcher matcherFrom = pattern.matcher(fromDate);
  185.                 Matcher matcherTo = pattern2.matcher(toDate);
  186.                 if (matcherFrom.find() && matcherTo.find()){
  187.    
  188.                     Date parsedFromDate = null;
  189.                     Date parsedToDate = null;
  190.                     Date todayDate = null;
  191.                     String stringParsedFromDate = null;
  192.                     String stringParsedToDate = null;
  193.                     String stringTodayDate = null;
  194.                     try {
  195.                         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy-HH:mm");
  196.                         String stoday = simpleDateFormat.format(new Date());
  197.                         parsedFromDate = simpleDateFormat.parse(fromDate);
  198.                         parsedToDate = simpleDateFormat.parse(toDate);
  199.                         todayDate = simpleDateFormat.parse(stoday);
  200.                         stringParsedFromDate = simpleDateFormat.format(parsedFromDate);
  201.                         stringParsedToDate = simpleDateFormat.format(parsedToDate);
  202.                         stringTodayDate = simpleDateFormat.format(todayDate);
  203.                     } catch (ParseException e) {
  204.                         e.printStackTrace();
  205.                     }
  206.                    
  207.                     if(parsedFromDate.before(todayDate) || parsedToDate.before(todayDate)){
  208.                         return Response.status(Response.Status.BAD_REQUEST).entity("Omlouvame se, ale rezervace nemuze byt vytvorena v minulosti").type(MediaType.TEXT_PLAIN).build();
  209.                     }else if(parsedToDate.before(parsedFromDate)){
  210.                         return Response.status(Response.Status.BAD_REQUEST).entity("Nespravne zadana data").type(MediaType.TEXT_PLAIN).build();
  211.                     }else {
  212.                         JQueryDate from = new JQueryDate();
  213.                         from.setJQUERY( stringParsedFromDate );
  214.                         JQueryDate to = new JQueryDate();
  215.                         to.setJQUERY( stringParsedToDate );        
  216.                         Long idvalue = new Long(id).longValue();
  217.                         facade.editCourtReservation(idvalue, from, to);
  218.                         return Response.status(Response.Status.CREATED).entity("Rezervace uspesne zmenena").type(MediaType.TEXT_PLAIN).build();
  219.                     }
  220.  
  221.                 }else{
  222.                     return Response.status(Response.Status.BAD_REQUEST).entity("Nespravne zadana data!").type(MediaType.TEXT_PLAIN).build();
  223.                 }
  224.                
  225.             }else{
  226.                 return Response.status(Response.Status.FORBIDDEN).entity("Zadane prihlasovaci udaje nesouhlasi").type(MediaType.TEXT_PLAIN).build();
  227.             }
  228.         }
  229.     }
  230.    
  231.    
  232.    
  233.    
  234.     @DELETE
  235.     @Produces(MediaType.TEXT_PLAIN)
  236.     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
  237.     @Path("/{id}")
  238.     public Response deleteReservation(@PathParam("id") String id, @FormParam("username") String username, @FormParam("password") String password) {
  239.          
  240.         if(username == null || password == null){
  241.             return Response.status(Response.Status.BAD_REQUEST).entity("Nebyly zadane prihlasovaci udaje").type(MediaType.TEXT_PLAIN).build();
  242.         }else{
  243.             Rezervace resByID = null;
  244.             Long idvalue = null;
  245.             try {
  246.                 idvalue = new Long(id).longValue();
  247.                 resByID = facade.getRezervaceByID(idvalue);
  248.             }catch (Exception e){}
  249.            
  250.             if(resByID == null){
  251.                 return Response.status(Response.Status.NOT_FOUND).entity("Dana rezervace neexistuje").type(MediaType.TEXT_PLAIN).build();
  252.             }
  253.            
  254.             Osoba resUser = facade.getUserDetail(resByID.getObjednavatel());
  255.             String recPass = "recepcni1";
  256.            
  257.             if( (resUser.getName().equals(username) && resUser.getPassword().equals(password)) || (username.equals(recPass) && password.equals(recPass)) ){
  258.                 ResponseBuilder builder;
  259.                 facade.deleteReservation(idvalue);
  260.                 builder = Response.status(Response.Status.OK).entity("Rezervace v poradku vymazana");
  261.                 return builder.build();
  262.                
  263.             }else{
  264.                 return Response.status(Response.Status.FORBIDDEN).entity("Zadane prihlasovaci udaje nesouhlasi").type(MediaType.TEXT_PLAIN).build();
  265.             }
  266.        
  267.         }
  268.     }
  269.    
  270.    
  271.    
  272.    
  273.     @GET
  274.     @Produces(MediaType.TEXT_PLAIN)
  275.     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
  276.     @Path("/fakto")
  277.     public Response faktorial() {
  278.         System.out.println("aaa");
  279.         QuotaService qs = QuotaServiceFactory.getQuotaService();
  280.         if (qs.supports(QuotaService.DataType.CPU_TIME_IN_MEGACYCLES)) {
  281.        
  282.            
  283.             long startAPI = qs.getApiTimeInMegaCycles();
  284.             long startCPU = qs.getCpuTimeInMegaCycles();
  285.             int ret = doSomethingExpensive( 3000 );
  286.             long endCPU = qs.getCpuTimeInMegaCycles();
  287.             long endAPI = qs.getApiTimeInMegaCycles();
  288.             double cpuSeconds = qs.convertMegacyclesToCpuSeconds(endCPU - startCPU);
  289.             double apiSeconds = qs.convertMegacyclesToCpuSeconds(endAPI - startAPI);
  290.             System.out.println("Scalability: cpu = " + cpuSeconds + ", api = " + apiSeconds + ", sum = " + (cpuSeconds + apiSeconds));
  291.            
  292.             }else{
  293.                long startCPU = System.currentTimeMillis();
  294.                int ret = doSomethingExpensive( 3 );
  295.                
  296.                long endCPU = System.currentTimeMillis();
  297.                double cpuSeconds = (endCPU - startCPU)/1000;
  298.                System.out.println("Scalability: cpu = " + cpuSeconds + ", api = " + ", sum = " + (cpuSeconds ));
  299.             }
  300.        
  301.        
  302.        
  303.         ResponseBuilder builder;
  304.         builder = Response.status(Response.Status.OK).entity("Rezervace v poradku vymazana");
  305.         return builder.build();
  306.        
  307.        
  308.     }
  309.  
  310.     private int doSomethingExpensive( int a ) {
  311.         int ret = 1;
  312.         for ( int ii = 1; ii < a; ii++ )
  313.         for ( int i = 1; i < a; i++ )
  314.             for (  int j = 0; j < a; j++ ) ret = i + j - ret;
  315.         return ret;
  316.        
  317.     }
  318.  
  319.  
  320. }
Add Comment
Please, Sign In to add comment