Package com.youtube.rest.inventory

Source Code of com.youtube.rest.inventory.V2_inventory

package com.youtube.rest.inventory;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jettison.json.JSONArray;

import com.youtube.dao.Schema308tube;

/**
* This class is used to manage computer parts inventory. It is a improvement
* to V1_inventory.java
*
* @author 308tube
*/
@Path("/v2/inventory")
public class V2_inventory {

  /**
   * This method will return the specific brand of PC parts the user is looking for. 
   * It uses a QueryParam bring in the data to the method.
   *
   * Example would be:
   * http://localhost:7001/com.youtube.rest/api/v2/inventory?brand=ASUS
   *
   * @param brand - product brand name
   * @return - json array results list from the database
   * @throws Exception
   */
  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public Response returnBrandParts(
        @QueryParam("brand") String brand)
        throws Exception {
   
    String returnString = null;
    JSONArray json = new JSONArray();
   
    try {
     
      //return a error is brand is missing from the url string
      if(brand == null) {
        return Response.status(400).entity("Error: please specify brand for this search").build();
      }
     
      Schema308tube dao = new Schema308tube();
     
      json = dao.queryReturnBrandParts(brand);
      returnString = json.toString();
     
    }
    catch (Exception e) {
      e.printStackTrace();
      return Response.status(500).entity("Server was not able to process your request").build();
    }
   
    return Response.ok(returnString).build();
  }
 
  /*
   * This method can be used if the method returnBrandParts is not used.
  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public Response returnErrorOnBrand() throws Exception {
   
    return Response.status(400).entity("Error: please specify brand for this search").build();
  }
  */
 
  /**
   * This method will return the specific brand of PC parts the user is looking for.
   * It is very similar to the method returnBrandParts except this method uses the
   * PathParam to bring in the data.
   *
   * Example would be:
   * http://localhost:7001/com.youtube.rest/api/v2/inventory/ASUS
   *
   * @param brand - product brand name
   * @return - json array results list from the database
   * @throws Exception
   */
  @Path("/{brand}")
  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public Response returnBrand(
        @PathParam("brand") String brand)
        throws Exception {
   
    String returnString = null;
   
    JSONArray json = new JSONArray();
   
    try {
     
      Schema308tube dao = new Schema308tube();
     
      json = dao.queryReturnBrandParts(brand);
      returnString = json.toString();
    }
    catch (Exception e) {
      e.printStackTrace();
      return Response.status(500).entity("Server was not able to process your request").build();
    }
   
    return Response.ok(returnString).build();
  }
 
  /**
   * This method does a search on both product and the product item number.
   * It uses PathParam to bring in both parameters.
   *
   * Example:
   * http://localhost:7001/com.youtube.rest/api/v2/inventory/ASUS/168131318
   *
   * @param brand - product brand name
   * @param item_number - product item number
   * @return - json array results list from the database
   * @throws Exception
   */
  @Path("/{brand}/{item_number}")
  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public Response returnSpecificBrandItem(
        @PathParam("brand") String brand,
        @PathParam("item_number") int item_number)
        throws Exception {
   
    String returnString = null;
   
    JSONArray json = new JSONArray();
   
    try {
     
      Schema308tube dao = new Schema308tube();
     
      json = dao.queryReturnBrandItemNumber(brand, item_number);
      returnString = json.toString();
    }
    catch (Exception e) {
      e.printStackTrace();
      return Response.status(500).entity("Server was not able to process your request").build();
    }
   
    return Response.ok(returnString).build();
  }
 
  /**
   * This method will allow you to insert data the PC_PARTS table. 
   * This is a example of using the Jackson Processor
   *
   * Note: If you look, this method addPcParts using the same URL as a GET method returnBrandParts.
   *       We can do this because we are using different HTTP methods for the same URL string.
   *
   * @param incomingData - must be in JSON format
   * @return String
   * @throws Exception
   */
  @POST
  @Consumes({MediaType.APPLICATION_FORM_URLENCODED,MediaType.APPLICATION_JSON})
  //@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
  @Produces(MediaType.APPLICATION_JSON)
  public Response addPcParts(String incomingData) throws Exception {
   
    String returnString = null;
    //JSONArray jsonArray = new JSONArray(); //not needed
    Schema308tube dao = new Schema308tube();
   
    try {
      System.out.println("incomingData: " + incomingData);
     
      /*
       * ObjectMapper is from Jackson Processor framework
       * http://jackson.codehaus.org/
       *
       * Using the readValue method, you can parse the json from the http request
       * and data bind it to a Java Class.
       */
      ObjectMapper mapper = new ObjectMapper()
      ItemEntry itemEntry = mapper.readValue(incomingData, ItemEntry.class);
     
      int http_code = dao.insertIntoPC_PARTS(itemEntry.PC_PARTS_TITLE,
                          itemEntry.PC_PARTS_CODE,
                          itemEntry.PC_PARTS_MAKER,
                          itemEntry.PC_PARTS_AVAIL,
                          itemEntry.PC_PARTS_DESC );
     
      if( http_code == 200 ) {
        //returnString = jsonArray.toString();
        returnString = "Item inserted";
      } else {
        return Response.status(500).entity("Unable to process Item").build();
      }
     
    } catch (Exception e) {
      e.printStackTrace();
      return Response.status(500).entity("Server was not able to process your request").build();
    }
   
    return Response.ok(returnString).build();
  }
}

/*
* This is a class used by the addPcParts method.
* Used by the Jackson Processor
*
* Note: for re-usability you should place this in its own package.
*/
class ItemEntry {
  public String PC_PARTS_TITLE;
  public String PC_PARTS_CODE;
  public String PC_PARTS_MAKER;
  public String PC_PARTS_AVAIL;
  public String PC_PARTS_DESC;
}
TOP

Related Classes of com.youtube.rest.inventory.V2_inventory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.