WebDev Hell

This commit is contained in:
2023-11-03 13:34:02 -05:00
parent 45656bf9ed
commit 473a7e61e9
133 changed files with 4855 additions and 179 deletions

View File

@@ -0,0 +1,68 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/JSF/JSFManagedBean.java to edit this template
*/
package edu.slcc.asdv.beans;
import edu.slcc.asdv.bl.DBase;
import edu.slcc.asdv.bl.part.Part;
import edu.slcc.asdv.bl.part.DatabaseManipulationPart;
import jakarta.inject.Named;
import jakarta.enterprise.context.SessionScoped;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.application.FacesMessage.Severity;
import jakarta.faces.context.FacesContext;
import java.io.Serializable;
import java.util.List;
@Named(value = "partsBean")
@SessionScoped
public class PartsBean implements Serializable
{
DBase dms = new DatabaseManipulationPart();
List<Part> parts;
public PartsBean()
{
parts = dms.listAll();
}
public List<Part> getParts()
{
return parts;
}
public void saveFromUpdate()
{
int totalRowsUpdated = 0;
for (Part s : this.parts)
{
if (s.isModify())
{
try
{
int rowsUpdated = this.dms.update(s);
if (rowsUpdated > 0)
{
totalRowsUpdated += rowsUpdated;
s.setModify(false);
}
}
catch (Exception e)
{
String msg = ("Numbers of rows updated is 0.");
addMessage(msg, e.getMessage(), FacesMessage.SEVERITY_ERROR);
break;
}
}
}
String msg = ("Numbers of rows updated: " + totalRowsUpdated);
addMessage(msg, "no exception", FacesMessage.SEVERITY_INFO);
}
public void addMessage(String summary, String detail, Severity severity)
{
FacesMessage msg = new FacesMessage(severity, summary, detail);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}

View File

@@ -59,6 +59,14 @@ public class SupplierBean implements Serializable
String msg = ("Numbers of rows updated: " + totalRowsUpdated);
addMessage(msg, "no exception", FacesMessage.SEVERITY_INFO);
}
public void deleteRow() {
for (Supplier s: this.suppliers) {
if (s.isDelete()) {
}
}
}
public void addMessage(String summary, String detail, Severity severity)
{

View File

@@ -18,5 +18,7 @@ public interface DBase<T>
int update( T t)
throws SQLException;
int delete (T t) throws SQLException;
}

View File

@@ -44,7 +44,7 @@ public class UtilitiesDatabase
return null;
}
String ip = "localhost"; //internet connection
String url = "jdbc:mysql://" + ip + ":8889/" + databaseName + "?useSSL=false";
String url = "jdbc:mysql://" + ip + ":3306/" + databaseName + "?allowPublicKeyRetrieval=true&useSSL=false";
try
{
con = DriverManager.getConnection(url, userName, password);

View File

@@ -24,8 +24,8 @@ public class DatabaseManipulationPart implements DBase<Part>
{
List<Part> tableParts = new ArrayList<Part>();
String databaseName = "suppliers_parts_23";
String userName = "root";
String password = "root";
String userName = "java";
String password = "1KUZ4r6.73IGu*18";
String URL2 = "com.mysql.jdbc.Driver";
Connection con = new UtilitiesDatabase().connection(
databaseName, userName, password, URL2);
@@ -38,7 +38,7 @@ public class DatabaseManipulationPart implements DBase<Part>
}
String table = "";
ResultSet rs = null;
String sqlStr = "SELECT * FROM part";
String sqlStr = "SELECT * FROM part";
//prepare statement
ps = con.prepareStatement(sqlStr);
//execute
@@ -84,8 +84,62 @@ public class DatabaseManipulationPart implements DBase<Part>
System.out.println(dmp.listAll());
}
@Override
@Override
public int update(Part t)
throws SQLException
{
String databaseName = "suppliers_parts_23";
String userName = "java";
String password = "1KUZ4r6.73IGu*18";
String URL2 = "com.mysql.jdbc.Driver";
Connection con = new UtilitiesDatabase().connection(
databaseName, userName, password, URL2);
int result = 0;
PreparedStatement updatePart = null;
try
{
if (con == null)
{
throw new RuntimeException("cannot connect to database");
}
updatePart = con.prepareStatement(
"UPDATE part SET pnumber=?, pname=?, color=?, city=? where pnumber=?");
updatePart.setString(1, t.getPnumber());
updatePart.setString(2, t.getPname());
updatePart.setString(3, t.getColor());
updatePart.setString(4, t.getColor());
updatePart.setString(5, t.getPnumber());
result = updatePart.executeUpdate();
}
catch (SQLException ex)
{
System.err.println(ex.toString());
throw ex;
}
finally
{
try
{
new UtilitiesDatabase().closeDatabaseConnection(con);
// close the resources
if (updatePart != null)
{
updatePart.close();
}
}
catch (SQLException sqle)
{
sqle.printStackTrace();
throw sqle;
}
}
return result;
}
@Override
public int delete(Part t) throws SQLException
{
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
}

View File

@@ -8,68 +8,65 @@ package edu.slcc.asdv.bl.part;
*
* @author asdv5
*/
public class Part
{
public class Part {
private String pnumber;
private String pname;
private String color;
private String city;
private boolean modify;
public Part(String pnumber, String pname, String color, String city)
{
public boolean isModify() {
return modify;
}
public void setModify(boolean modify) {
this.modify = modify;
}
public Part(String pnumber, String pname, String color, String city) {
this.pnumber = pnumber;
this.pname = pname;
this.color = color;
this.city = city;
}
public String getColor()
{
public String getColor() {
return color;
}
public void setColor(String color)
{
public void setColor(String color) {
this.color = color;
}
public String getCity()
{
public String getCity() {
return city;
}
public void setCity(String city)
{
public void setCity(String city) {
this.city = city;
}
public String getPname()
{
public String getPname() {
return pname;
}
public void setPname(String pname)
{
public void setPname(String pname) {
this.pname = pname;
}
public String getPnumber()
{
public String getPnumber() {
return pnumber;
}
public void setPnumber(String pnumber)
{
public void setPnumber(String pnumber) {
this.pnumber = pnumber;
}
@Override
public String toString()
{
public String toString() {
return "Part{" + "pnumber=" + pnumber + ", pname=" + pname + ", color=" + color + ", city=" + city + '}';
}
}

View File

@@ -25,8 +25,8 @@ public class DatabaseManipulationSupplier implements DBase<Supplier>
{
List<Supplier> tableSuppliers = new ArrayList<Supplier>();
String databaseName = "suppliers_parts_23";
String userName = "root";
String password = "root";
String userName = "java";
String password = "1KUZ4r6.73IGu*18";
String URL2 = "com.mysql.jdbc.Driver";
Connection con = new UtilitiesDatabase().connection(
databaseName, userName, password, URL2);
@@ -85,8 +85,8 @@ public class DatabaseManipulationSupplier implements DBase<Supplier>
throws SQLException
{
String databaseName = "suppliers_parts_23";
String userName = "root";
String password = "root";
String userName = "java";
String password = "1KUZ4r6.73IGu*18";
String URL2 = "com.mysql.jdbc.Driver";
Connection con = new UtilitiesDatabase().connection(
databaseName, userName, password, URL2);
@@ -137,4 +137,61 @@ public class DatabaseManipulationSupplier implements DBase<Supplier>
}
public static void main(String[] args)
{
DatabaseManipulationSupplier dmp = new DatabaseManipulationSupplier();
System.out.println(dmp.listAll());
}
@Override
public int delete(Supplier t) throws SQLException
{
String databaseName = "suppliers_parts_23";
String userName = "java";
String password = "1KUZ4r6.73IGu*18";
String URL2 = "com.mysql.jdbc.Driver";
Connection con = new UtilitiesDatabase().connection(
databaseName, userName, password, URL2);
int result = 0;
PreparedStatement updateSupplier = null;
try
{
if (con == null)
{
throw new RuntimeException("cannot connect to database");
}
updateSupplier = con.prepareStatement(
//"UPDATE supplier SET snumber=?, sname=?, status=?, birthday=?, city=? WHERE snumber=?"
"DELETE FROM supplier WHERE snumber=? "
);
updateSupplier.setString(1, t.getSnumber());
result = updateSupplier.executeUpdate();
}
catch (SQLException ex)
{
System.err.println(ex.toString());
throw ex;
}
finally
{
try
{
new UtilitiesDatabase().closeDatabaseConnection(con);
// close the resources
if (updateSupplier != null)
{
updateSupplier.close();
}
}
catch (SQLException sqle)
{
sqle.printStackTrace();
throw sqle;
}
}
return result;
}
}

View File

@@ -0,0 +1,41 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package edu.slcc.asdv.bl.supplier;
/**
*
* @author caleb
*/
import jakarta.faces.application.FacesMessage;
import jakarta.faces.component.UIComponent;
import jakarta.faces.context.FacesContext;
import jakarta.faces.validator.FacesValidator;
import jakarta.faces.validator.Validator;
import jakarta.faces.validator.ValidatorException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@FacesValidator("dateValidator")
public class DateValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String dateStr = (String) value;
if (dateStr == null || dateStr.trim().isEmpty()) {
return; // Empty values are not validated.
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
try {
dateFormat.parse(dateStr);
} catch (ParseException e) {
throw new ValidatorException(new FacesMessage("Invalid date format. Please use yyyy-MM-dd."));
}
}
}

View File

@@ -0,0 +1,31 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package edu.slcc.asdv.bl.supplier;
/**
*
* @author caleb
*/
import jakarta.faces.application.FacesMessage;
import jakarta.faces.component.UIComponent;
import jakarta.faces.context.FacesContext;
import jakarta.faces.validator.FacesValidator;
import jakarta.faces.validator.Validator;
import jakarta.faces.validator.ValidatorException;
@FacesValidator("numericValidator")
public class NumericValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String input = value.toString();
if (input == null || !input.matches("\\d+")) {
throw new ValidatorException(new FacesMessage("Please enter a valid numeric value."));
}
}
}

View File

@@ -17,9 +17,19 @@ public class Supplier implements Serializable
private String birthday;
private int status;
private String city;
private boolean delete;
private boolean modify;
public boolean isDelete()
{
return delete;
}
public void setDelete(boolean delete)
{
this.delete = delete;
}
public boolean isModify()
{
return modify;
@@ -39,6 +49,7 @@ public class Supplier implements Serializable
this.status = status;
this.city = city;
this.modify = false;
this.delete = false;
}
public String getCity()

View File

@@ -0,0 +1,59 @@
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<p:growl id="globalgrowl" showDetail="false" showSummary="true" life="2000"/>
<h:dataTable var="part"
value="#{partsBean.getParts()}" >
<f:facet name="header"> <h:outputText value="Parts Table" style="font-size: 1.2em"/></f:facet>
<h:column>
<f:facet name="header"> <h:outputText value="pnumber" /></f:facet>
<h:inputText disabled ="true" value="#{part.pnumber}"/>
</h:column>
<h:column>
<f:facet name="header"> <h:outputText value="pname" /></f:facet>
<h:inputText disabled ="#{!part.modify}" value="#{part.pname}">
<f:validateLength minimum="0" maximum="20" />
</h:inputText>
</h:column>
<h:column>
<f:facet name="header"> <h:outputText value="color" /></f:facet>
<h:inputText disabled ="#{!part.modify}" value="#{part.color}">
<f:validateLength minimum="0" maximum="20" />
</h:inputText>
</h:column>
<h:column>
<f:facet name="header"> <h:outputText value="city" /></f:facet>
<h:inputText disabled ="#{!part.modify}" value="#{part.city}">
<f:validateLength minimum="0" maximum="20" />
</h:inputText>
</h:column>
<h:column>
<f:facet name="header"> <h:outputText value="update" /></f:facet>
<h:selectBooleanCheckbox onclick="submit()"
value="#{part.modify}">
</h:selectBooleanCheckbox >
</h:column>
</h:dataTable>
<h:commandButton value="Save" action="#{partsBean.saveFromUpdate()}" />
</h:form>
</h:body>
</html>

View File

@@ -19,29 +19,34 @@
<f:facet name="header"> <h:outputText value="snumber" /></f:facet>
<h:inputText disabled ="true" value="#{supplier.snumber}"/>
</h:column>
<h:column>
<f:facet name="header"> <h:outputText value="sname" /></f:facet>
<h:inputText disabled ="#{!supplier.modify}" value="#{supplier.sname}"/>
<h:inputText disabled ="#{!supplier.modify}" value="#{supplier.sname}">
<f:validateLength minimum="3" maximum="20" />
</h:inputText>
</h:column>
<h:column>
<f:facet name="header"> <h:outputText value="birthday" /></f:facet>
<h:inputText disabled ="#{!supplier.modify}" value="#{supplier.birthday}"/>
<h:inputText disabled ="#{!supplier.modify}" value="#{supplier.birthday}" validator="dateValidator"/>
</h:column>
<h:column>
<f:facet name="header"> <h:outputText value="status" /></f:facet>
<f:facet name="header"> <h:outputText value="status"/></f:facet>
<h:inputText disabled ="#{!supplier.modify}" value="#{supplier.status}"/>
<h:inputText disabled ="#{!supplier.modify}" value="#{supplier.status}" validator="numericValidator"/>
</h:column>
<h:column>
<f:facet name="header"> <h:outputText value="city" /></f:facet>
<h:inputText disabled ="#{!supplier.modify}" value="#{supplier.city}"/>
<h:inputText disabled ="#{!supplier.modify}" value="#{supplier.city}">
<f:validateLength minimum="3" maximum="20" />
</h:inputText>
</h:column>
@@ -51,6 +56,9 @@
value="#{supplier.modify}">
</h:selectBooleanCheckbox >
</h:column>
<h:column>
<h:commandButton value="Delete" action="#{supplierBean.}"
</h:column>
</h:dataTable>
<h:commandButton value="Save" action="#{supplierBean.saveFromUpdate()}" />
</h:form>