From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../src/examples/entity/single_table/Car.java | 21 +++++++ .../src/examples/entity/single_table/Coupe.java | 31 ++++++++++ .../examples/entity/single_table/Motorcycle.java | 22 +++++++ .../examples/entity/single_table/RoadVehicle.java | 72 ++++++++++++++++++++++ .../single_table/RoadVehicleStatelessBean.java | 50 +++++++++++++++ .../src/examples/entity/single_table/Roadster.java | 31 ++++++++++ .../single_table/client/RoadVehicleClient.java | 54 ++++++++++++++++ .../interfaces/RoadVehicleStateless.java | 16 +++++ 8 files changed, 297 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Car.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Coupe.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Motorcycle.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/RoadVehicle.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/RoadVehicleStatelessBean.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Roadster.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/client/RoadVehicleClient.java create mode 100644 Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/interfaces/RoadVehicleStateless.java (limited to 'Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table') diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Car.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Car.java new file mode 100644 index 0000000..5c72d7f --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Car.java @@ -0,0 +1,21 @@ +package examples.entity.single_table; + +import java.io.Serializable; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +@Entity(name="CarSingle") +@DiscriminatorValue("CAR") +public class Car extends RoadVehicle implements Serializable { + public final AcceleratorType acceleratorType = AcceleratorType.PEDAL; + + public Car() { + super(); + numWheels = 4; + } + + public String toString() { + return "Car: "+super.toString(); + } +} diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Coupe.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Coupe.java new file mode 100644 index 0000000..31af7d5 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Coupe.java @@ -0,0 +1,31 @@ +package examples.entity.single_table; + +import java.io.Serializable; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +@Entity(name="CoupeSingle") +@DiscriminatorValue("COUPE") +public class Coupe extends Car implements Serializable { + public enum BoringFactor {BORING,BORINGER,BORINGEST}; + + private BoringFactor boringFactor; + + public Coupe() { + super(); + numPassengers = 5; + } + + public BoringFactor getBoringFactor() { + return boringFactor; + } + + public void setBoringFactor(BoringFactor boringFactor) { + this.boringFactor = boringFactor; + } + + public String toString() { + return "Coupe: "+super.toString(); + } +} diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Motorcycle.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Motorcycle.java new file mode 100644 index 0000000..018cb5d --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Motorcycle.java @@ -0,0 +1,22 @@ +package examples.entity.single_table; + +import java.io.Serializable; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +@Entity(name="MotorcycleSingle") +@DiscriminatorValue("MOTORCYCLE") +public class Motorcycle extends RoadVehicle implements Serializable { + public final AcceleratorType acceleratorType = AcceleratorType.THROTTLE; + + public Motorcycle() { + super(); + numWheels = 2; + numPassengers = 2; + } + + public String toString() { + return "Motorcycle: "+super.toString(); + } +} diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/RoadVehicle.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/RoadVehicle.java new file mode 100644 index 0000000..75a258a --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/RoadVehicle.java @@ -0,0 +1,72 @@ +package examples.entity.single_table; + +import java.io.Serializable; + +import javax.persistence.DiscriminatorColumn; +import javax.persistence.DiscriminatorType; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.Table; + +@Entity(name="RoadVehicleSingle") +@Table(name="RoadVehicleSingle") +@Inheritance(strategy=InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name="DISC", discriminatorType=DiscriminatorType.STRING) +@DiscriminatorValue("ROADVEHICLE") +public class RoadVehicle implements Serializable { + public enum AcceleratorType {PEDAL,THROTTLE}; + + @Id + protected int id; + protected int numPassengers; + protected int numWheels; + protected String make; + protected String model; + + public RoadVehicle() { + id = (int) System.nanoTime(); + } + + public int getNumPassengers() { + return numPassengers; + } + + public void setNumPassengers(int numPassengers) { + this.numPassengers = numPassengers; + } + + public int getNumWheels() { + return numWheels; + } + + public void setNumWheels(int numWheels) { + this.numWheels = numWheels; + } + + public int getId() { + return id; + } + + public String getMake() { + return make; + } + + public void setMake(String make) { + this.make = make; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String toString() { + return "Make: "+make+", Model: "+model+", Number of passengers: "+numPassengers; + } +} diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/RoadVehicleStatelessBean.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/RoadVehicleStatelessBean.java new file mode 100644 index 0000000..94d27db --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/RoadVehicleStatelessBean.java @@ -0,0 +1,50 @@ +package examples.entity.single_table; + +import java.util.List; + +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; + +import examples.entity.single_table.Coupe.BoringFactor; +import examples.entity.single_table.Roadster.CoolFactor; +import examples.entity.single_table.interfaces.RoadVehicleStateless; + +@Stateless +public class RoadVehicleStatelessBean implements RoadVehicleStateless { + @PersistenceContext(unitName="pu1") + EntityManager em; + + public void doSomeStuff() { + Coupe c = new Coupe(); + c.setMake("Bob"); + c.setModel("E400"); + c.setBoringFactor(BoringFactor.BORING); + em.persist(c); + + Roadster r = new Roadster(); + r.setMake("Mini"); + r.setModel("Cooper S"); + r.setCoolFactor(CoolFactor.COOLEST); + em.persist(r); + + Motorcycle m = new Motorcycle(); + em.persist(m); + } + + public List getAllRoadVehicles() { + Query q = em.createQuery("SELECT r FROM RoadVehicleSingle r"); + return q.getResultList(); + } + + public void deleteAll(String type) { + Query q = em.createQuery("DELETE FROM "+type); + q.executeUpdate(); + } + + public void updateAll(String type) { + Query q = em.createQuery("UPDATE "+type+" r SET r.numPassengers = 1"); + q.executeUpdate(); + } +} diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Roadster.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Roadster.java new file mode 100644 index 0000000..ae308ac --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/Roadster.java @@ -0,0 +1,31 @@ +package examples.entity.single_table; + +import java.io.Serializable; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +@Entity(name="RaodsterSingle") +@DiscriminatorValue("ROADSTER") +public class Roadster extends Car implements Serializable { + public enum CoolFactor {COOL,COOLER,COOLEST}; + + private CoolFactor coolFactor; + + public Roadster() { + super(); + numPassengers = 2; + } + + public CoolFactor getCoolFactor() { + return coolFactor; + } + + public void setCoolFactor(CoolFactor coolFactor) { + this.coolFactor = coolFactor; + } + + public String toString() { + return "Roadster: "+super.toString(); + } +} diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/client/RoadVehicleClient.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/client/RoadVehicleClient.java new file mode 100644 index 0000000..6ef6ea6 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/client/RoadVehicleClient.java @@ -0,0 +1,54 @@ +package examples.entity.single_table.client; + +import javax.naming.InitialContext; +import javax.naming.NamingException; + +import examples.entity.single_table.interfaces.RoadVehicleStateless; + + +public class RoadVehicleClient { + public static void main(String[] args) { + String action = "insert"; + String type = "RoadVehicleSingle"; + + if (args.length>0) { + if (args[0].startsWith("update")) { + action="update"; + } + else if (args[0].startsWith("delete")) { + action="delete"; + } + + if (args.length == 2) { + type = args[1]; + } + } + + InitialContext ic; + try { + ic = new InitialContext(); + RoadVehicleStateless rvs = (RoadVehicleStateless)ic.lookup(RoadVehicleStateless.class.getName()); + + if (action.equals("insert")) { + System.out.println("Inserting..."); + rvs.doSomeStuff(); + } + else if (action.equals("update")) { + System.out.println("Updating "+type+"..."); + rvs.updateAll(type); + } + else if (action.equals("delete")) { + System.out.println("Deleting "+type+"..."); + rvs.deleteAll(type); + } + + System.out.println("Here is the list of all RoadVehicles:\n"); + for (Object o : rvs.getAllRoadVehicles()) { + System.out.println("RoadVehicle: "+o); + } + } + catch (NamingException e) { + e.printStackTrace(); + } + } +} diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/interfaces/RoadVehicleStateless.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/interfaces/RoadVehicleStateless.java new file mode 100644 index 0000000..c85da7e --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/entity/single_table/interfaces/RoadVehicleStateless.java @@ -0,0 +1,16 @@ +package examples.entity.single_table.interfaces; + +import java.util.List; + +import javax.ejb.Remote; + +@Remote +public interface RoadVehicleStateless { + public void doSomeStuff(); + + public List getAllRoadVehicles(); + + public void deleteAll(String type); + + public void updateAll(String type); +} -- cgit v1.2.3