diff --git a/client/src/main/java/org/example/demo/praktikum2/Client.java b/client/src/main/java/org/example/demo/praktikum2/Client.java new file mode 100644 index 0000000..ec1e45d --- /dev/null +++ b/client/src/main/java/org/example/demo/praktikum2/Client.java @@ -0,0 +1,38 @@ +package org.example.demo.praktikum2; + +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +public class Client { + + public static void main(String[] args) { + try { + + Properties props = new Properties(); + props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory"); + props.setProperty(Context.PROVIDER_URL, "http-remoting://localhost:8080"); + + InitialContext ctx = new InitialContext(props); + AdresseServiceRemote adresseService = (AdresseServiceRemote) ctx.lookup( "ejb:/ejb-server-1.0-SNAPSHOT/AdresseService!org.example.demo.praktikum2.AdresseServiceRemote"); + PersonServiceRemote personService = (PersonServiceRemote) ctx.lookup("ejb:/ejb-server-1.0-SNAPSHOT/PersonService!org.example.demo.praktikum2.PersonServiceRemote"); + + var adresse = Adresse.builder().strasse("strasse").plz("plz").ort("ort").build(); + int adresseId = adresseService.speichereAdresse(adresse); + System.out.println("Adresse gespeichert mit ID: " + adresseId); + System.out.println("Adresse nach dem Speichern: " + adresse); + + var person = Person.builder().name("max").adresse(List.of(adresse)).build(); + int personId = personService.speicherePerson(person); + System.out.println("Person gespeichert mit ID: " + personId); + System.out.println("Person nach dem Speichern: " + person); + + } catch (NamingException e) { + e.printStackTrace(); + } + } +} diff --git a/flake.nix b/flake.nix index 28259e1..f75b1e7 100644 --- a/flake.nix +++ b/flake.nix @@ -100,6 +100,7 @@ mermaid-cli openjdk maven + lombok ] ++ latexPackages; diff --git a/server/pom.xml b/server/pom.xml index 02df3a5..8569d5c 100755 --- a/server/pom.xml +++ b/server/pom.xml @@ -10,16 +10,34 @@ ejb-server ejb - jakarta.platform jakarta.jakartaee-api 10.0.0 provided + + org.projectlombok + lombok + 1.18.46 + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + org.projectlombok + lombok + 1.18.46 + + + + org.apache.maven.plugins maven-ejb-plugin diff --git a/server/src/main/java/org/example/demo/praktikum2/Adresse.java b/server/src/main/java/org/example/demo/praktikum2/Adresse.java new file mode 100644 index 0000000..10ad320 --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/Adresse.java @@ -0,0 +1,31 @@ +package org.example.demo.praktikum2; + +import java.io.Serializable; + +import jakarta.persistence.*; +import lombok.*; + +@Entity +@ToString +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class Adresse implements Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + + @SuppressWarnings("unused") + private String strasse; + + @SuppressWarnings("unused") + private String plz; + + @SuppressWarnings("unused") + private String ort; + + @ManyToOne + private Person person; +} diff --git a/server/src/main/java/org/example/demo/praktikum2/AdresseService.java b/server/src/main/java/org/example/demo/praktikum2/AdresseService.java new file mode 100644 index 0000000..badc4f9 --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/AdresseService.java @@ -0,0 +1,18 @@ +package org.example.demo.praktikum2; + +import jakarta.ejb.Stateless; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; + +@Stateless +public class AdresseService implements AdresseServiceRemote { + + @PersistenceContext + private EntityManager em; + + @Override + public int speichereAdresse(Adresse m) { + em.persist(m); + return m.getId(); + } +} diff --git a/server/src/main/java/org/example/demo/praktikum2/AdresseServiceRemote.java b/server/src/main/java/org/example/demo/praktikum2/AdresseServiceRemote.java new file mode 100644 index 0000000..e87245a --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/AdresseServiceRemote.java @@ -0,0 +1,8 @@ +package org.example.demo.praktikum2; + +import jakarta.ejb.Remote; + +@Remote +public interface AdresseServiceRemote { + int speichereAdresse(Adresse m); +} diff --git a/server/src/main/java/org/example/demo/praktikum2/Firma.java b/server/src/main/java/org/example/demo/praktikum2/Firma.java new file mode 100644 index 0000000..6560270 --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/Firma.java @@ -0,0 +1,27 @@ +package org.example.demo.praktikum2; + +import java.io.Serializable; +import java.util.List; + +import jakarta.persistence.*; +import lombok.*; + +@Entity +@ToString +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class Firma implements Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + + @SuppressWarnings("unused") + private String name; + + @Singular("adresse") + @OneToMany(mappedBy="firma") + private List person; +} diff --git a/server/src/main/java/org/example/demo/praktikum2/FirmaService.java b/server/src/main/java/org/example/demo/praktikum2/FirmaService.java new file mode 100644 index 0000000..79c3cdf --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/FirmaService.java @@ -0,0 +1,18 @@ +package org.example.demo.praktikum2; + +import jakarta.ejb.Stateless; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; + +@Stateless +public class FirmaService implements FirmaServiceRemote { + + @PersistenceContext + private EntityManager em; + + @Override + public int speichereFirma(Firma m) { + em.persist(m); + return m.getId(); + } +} diff --git a/server/src/main/java/org/example/demo/praktikum2/FirmaServiceRemote.java b/server/src/main/java/org/example/demo/praktikum2/FirmaServiceRemote.java new file mode 100644 index 0000000..1dc151a --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/FirmaServiceRemote.java @@ -0,0 +1,11 @@ +package org.example.demo.praktikum2; + +import java.util.List; + +import jakarta.ejb.Remote; + +@Remote +public interface FirmaServiceRemote { + int speichereFirma(Firma m); + // List listFirmen(); +} diff --git a/server/src/main/java/org/example/demo/praktikum2/Person.java b/server/src/main/java/org/example/demo/praktikum2/Person.java new file mode 100644 index 0000000..17ec24e --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/Person.java @@ -0,0 +1,30 @@ +package org.example.demo.praktikum2; + +import java.io.Serializable; +import java.util.List; + +import jakarta.persistence.*; +import lombok.*; + +@Entity +@ToString +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class Person implements Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + + @SuppressWarnings("unused") + private String name; + + @ManyToOne + private Firma firma; + + @Singular("adresse") + @OneToMany(mappedBy="person") + private List adresse; +} diff --git a/server/src/main/java/org/example/demo/praktikum2/PersonService.java b/server/src/main/java/org/example/demo/praktikum2/PersonService.java new file mode 100644 index 0000000..414748d --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/PersonService.java @@ -0,0 +1,18 @@ +package org.example.demo.praktikum2; + +import jakarta.ejb.Stateless; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; + +@Stateless +public class PersonService implements PersonServiceRemote { + + @PersistenceContext + private EntityManager em; + + @Override + public int speicherePerson(Person m) { + em.persist(m); + return m.getId(); + } +} diff --git a/server/src/main/java/org/example/demo/praktikum2/PersonServiceRemote.java b/server/src/main/java/org/example/demo/praktikum2/PersonServiceRemote.java new file mode 100644 index 0000000..204041e --- /dev/null +++ b/server/src/main/java/org/example/demo/praktikum2/PersonServiceRemote.java @@ -0,0 +1,8 @@ +package org.example.demo.praktikum2; + +import jakarta.ejb.Remote; + +@Remote +public interface PersonServiceRemote { + int speicherePerson(Person m); +}