Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.products; import java.io.StringReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.json.Json; import javax.json.JsonObject; import javax.json.stream.JsonParser; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.PathParam; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.Produces; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PUT; import javax.ws.rs.core.MediaType; import org.json.simple.JSONArray; /** * REST Web Service * * @author c0654504 */ @Path("products") public class products { private static Connection getConnection() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException ex) { System.err.println("JDBC Driver Not Found: " + ex.getMessage()); } try { String jdbc = "jdbc:mysql://ipro.lambton.on.ca/inventory"; conn = DriverManager.getConnection(jdbc, "products", "products"); } catch (SQLException ex) { System.err.println("Failed to Connect: " + ex.getMessage()); } return conn; } products(int aInt, String string, String string0, int aInt0) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } products() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @GET @Produces("application/json") public String doGet() { return getResults("SELECT * FROM product"); } /** * Retrieves representation of an instance of com.products.products * @return an instance of java.lang.String */ @GET @Produces("application/json") @Path("{id}") public String doGet(@PathParam("id") String productID) { return getResults("SELECT * FROM product WHERE productID = ?", productID); } @POST @Consumes("application/json") public void doPost(String str) { JsonParser parser = Json.createParser(new StringReader(str)); Map<String, String> mapKeyValue = new HashMap<>(); String key = "", val; while (parser.hasNext()) { JsonParser.Event evt = parser.next(); switch (evt) { case KEY_NAME: key = parser.getString(); break; case VALUE_STRING: val = parser.getString(); mapKeyValue.put(key, val); break; case VALUE_NUMBER: val = Integer.toString(parser.getInt()); mapKeyValue.put(key, val); break; } } System.out.println(mapKeyValue); doPostOrPutOrDelete("INSERT INTO product (name, description, quantity) VALUES ( ?, ?, ?)", mapKeyValue.get("name"), mapKeyValue.get("description"), mapKeyValue.get("quantity")); } @PUT @Path("{id}") @Consumes("application/json") public void doPut(@PathParam("id") String id, String str) { JsonParser parser = Json.createParser(new StringReader(str)); Map<String, String> mapKayValue = new HashMap<>(); String key = "", val; while (parser.hasNext()) { JsonParser.Event evt = parser.next(); switch (evt) { case KEY_NAME: key = parser.getString(); break; case VALUE_STRING: val = parser.getString(); mapKayValue.put(key, val); break; case VALUE_NUMBER: val = parser.getString(); mapKayValue.put(key, val); break; } } System.out.println(mapKayValue); doPostOrPutOrDelete("UPDATE PRODUCT SET name = ?, description = ?, quantity = ? WHERE productID = ?", mapKayValue.get("name"), mapKayValue.get("description"), mapKayValue.get("quantity"), id); } @DELETE @Path("{id}") public void doDelete(@PathParam("id") String id, String str) { doPostOrPutOrDelete("DELETE FROM product WHERE productID = ?", id); } private void doPostOrPutOrDelete(String query, String... params) { try (Connection conn = getConnection()) { PreparedStatement pstmt = conn.prepareStatement(query); for (int i = 1; i <= params.length; i++) { pstmt.setString(i, params[i - 1]); } pstmt.executeUpdate(); } catch (SQLException ex) { Logger.getLogger(products.class.getName()).log(Level.SEVERE, null, ex); } getResults("SELECT * FROM product"); } private String getResults(String query, String... params) { String result = new String(); try (Connection conn = getConnection()) { PreparedStatement pstmt = conn.prepareStatement(query); for (int i = 1; i <= params.length; i++) { pstmt.setString(i, params[i - 1]); } ResultSet rs = pstmt.executeQuery(); JSONArray productArr = new JSONArray(); while (rs.next()) { Map productMap = new LinkedHashMap(); productMap.put("productID", rs.getInt("productID")); productMap.put("name", rs.getString("name")); productMap.put("description", rs.getString("description")); productMap.put("quantity", rs.getInt("quantity")); productArr.add(productMap); } result = productArr.toString(); } catch (SQLException ex) { Logger.getLogger(products.class.getName()).log(Level.SEVERE, null, ex); } return result.replace("},", "},\n"); } }