oracle.otnsamples.streams.StreamsMessagingBean (Java2HTML)
package oracle.otnsamples.streams;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.io.IOException;
import java.util.Properties;
import java.util.ResourceBundle;
import java.util.Hashtable;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import oracle.jdbc.pool.OracleDataSource;
import oracle.otnsamples.streams.Product;
public class StreamsMessagingBean {
private Connection conn = null;
private HttpSession session = null;
public static Properties loadParams( String file ) throws IOException {
Properties prop = new Properties();
ResourceBundle bundle = ResourceBundle.getBundle( file );
Enumeration enum = bundle.getKeys();
String key = null;
while( enum.hasMoreElements() ) {
key = (String)enum.nextElement();
prop.put( key, bundle.getObject( key ) );
}
return prop;
}
public void dbConnection() {
try {
OracleDataSource ods = new OracleDataSource();
Properties firstDbConnProp =
StreamsMessagingBean.loadParams("ConnForFirstDB");
StreamsMessagingBean.configureDataSource(ods, firstDbConnProp);
conn = ods.getConnection();
} catch (SQLException sqlEx){ System.out.println("SQL Errors = " + sqlEx.toString());
} catch(Exception excep) { System.out.println(" Couldn't retrieve connection... "
+ excep.toString());
}
}
public static void configureDataSource(OracleDataSource ods,
Properties prop) {
ods.setDriverType ("oci8");
ods.setTNSEntryName((String)prop.get("TnsEntryName"));
ods.setUser((String)prop.get("UserName"));
ods.setPassword((String)prop.get("Password"));
}
public Hashtable getProductDetails() throws Exception {
Statement stmt = null;
ResultSet rset = null;
Product productObj = null;
Hashtable productDetails = new Hashtable();
String query = "SELECT productId, productName, "
+ "NVL(productdesc,'NOT SPECIFIED'), price, quantityOnHand"
+ " FROM prodstore.Product_Master";
stmt = conn.createStatement();
rset = stmt.executeQuery(query);
while(rset.next()) {
productObj = new Product(rset.getInt(1), rset.getString(2),
rset.getString(3),
rset.getFloat(4), rset.getInt(5));
productDetails.put(new Integer(rset.getInt(1)), productObj);
}
rset.close();
stmt.close();
return(productDetails);
}
public void addProduct(HttpServletRequest request) throws Exception {
PreparedStatement pstmt = null;
pstmt = conn.prepareStatement("INSERT INTO prodstore.Product_Master "
+ "(productId, productName, productDesc, price, quantityOnHand)"
+ " VALUES (prodstore.Product_Id_Seq.nextVal, ?, ?, ?, ?)");
pstmt.setString(1, request.getParameter("ProductNameReq"));
pstmt.setString(2, request.getParameter("ProductDesc"));
pstmt.setFloat(3, Float.parseFloat(request.getParameter("PriceReq")));
pstmt.setInt(4, Integer.parseInt(request.getParameter("QuantityReq")));
pstmt.executeUpdate();
pstmt.close();
int productId = this.retrieveProductId();
Hashtable productsList = this.getProductDetails();
session = request.getSession(false);
session.setAttribute("ProductIds", new Integer(productId));
session.setAttribute("ProductsList", productsList);
}
private int retrieveProductId() throws Exception {
Statement stmt = null;
ResultSet rset = null;
int prdId = 0;
String query = "SELECT prodstore.Product_Id_Seq.currval FROM dual";
stmt = conn.createStatement();
rset = stmt.executeQuery(query);
if(rset.next()) {
prdId = rset.getInt(1);
}
rset.close();
stmt.close();
return prdId;
}
public void deleteProducts(HttpServletRequest request) throws Exception {
PreparedStatement pstmt = null;
String[] deletePrds = request.getParameterValues("PrdIDSelected");
StringBuffer queryString = new StringBuffer("DELETE FROM "
+ "prodstore.Product_Master WHERE"
+ " productId IN (");
int length = deletePrds.length;
for(int i=0;i<length;i++) {
queryString.append("?");
if (i < (length-1)) {
queryString.append(", ");
}
}
queryString.append(")");
pstmt = conn.prepareStatement(queryString.toString());
for(int i=0;i<length;i++) {
pstmt.setInt(i+1, new Integer(deletePrds[i]).intValue());
}
pstmt.executeUpdate();
pstmt.close();
Hashtable productsList = this.getProductDetails();
session = request.getSession(false);
session.setAttribute("ProductIds", deletePrds);
session.setAttribute("ProductsList", productsList);
}
public void updateProduct(HttpServletRequest request) throws Exception {
PreparedStatement pstmt = null;
String productId = request.getParameter("PrdId");
pstmt = conn.prepareStatement("UPDATE prodstore.Product_Master "
+ " SET productName = ?, productDesc = ?, price = ?, "
+ "quantityOnHand = ? where productID = ?");
pstmt.setString(1, request.getParameter("ProductNameReq"));
pstmt.setString(2, request.getParameter("ProductDesc"));
pstmt.setFloat(3, Float.parseFloat(request.getParameter("PriceReq")));
pstmt.setInt(4, Integer.parseInt(request.getParameter("QuantityReq")));
pstmt.setInt(5, Integer.parseInt(productId));
pstmt.executeUpdate();
pstmt.close();
Hashtable productsList = this.getProductDetails();
session = request.getSession(false);
session.setAttribute("ProductIds", productId);
session.setAttribute("ProductsList", productsList);
}
public void cleanUp()
throws SQLException,Exception {
if(session != null){
session.invalidate();
session = null;
}
if(conn != null) conn.close();
}
}
|