dimanche 3 mai 2015

Daten einer Datenbank in ein Formular einfügen

Hey,

Mein Problem ist folgendes:

Ich habe Daten zu verschiedenen Räumen gespeichert in einer MySQL-Datenbank. Ich verwende JPA für die Kommunikation mit der DB.

Ich habe also eine Entität "Raum"

Java Code:

  1.  
  2. package model;
  3.  
  4. import java.io.Serializable;
  5.  
  6. import javax.enterprise.context.RequestScoped;
  7. import javax.inject.Named;
  8. import javax.persistence.*;
  9.  
  10. import org.hibernate.validator.constraints.NotEmpty;
  11.  
  12. import java.util.List;
  13.  
  14.  
  15. /**
  16.  * The persistent class for the raum database table.
  17.  *
  18.  */
  19. @Named
  20. @RequestScoped
  21. @NamedQuery(name="Raum.findAll", query="SELECT r FROM Raum r")
  22. public class Raum implements Serializable {
  23. private static final long serialVersionUID = 1L;
  24.  
  25. @Id
  26. @GeneratedValue(strategy=GenerationType.IDENTITY)
  27. private int raumOID;
  28.  
  29. private String aktiv;
  30.  
  31. private String bezeichnung;
  32.  
  33. //bi-directional many-to-many association to Behandlung
  34. @ManyToMany(mappedBy="raums")
  35. private List<Behandlung> behandlungs;
  36.  
  37. //bi-directional many-to-one association to Praxi
  38. @ManyToOne
  39. @JoinColumn(name="PraxisOID")
  40. private Praxi praxi;
  41.  
  42. //bi-directional many-to-one association to Termin
  43. @OneToMany(mappedBy="raum")
  44. private List<Termin> termins;
  45.  
  46. public Raum() {
  47. }
  48.  
  49. public int getRaumOID() {
  50. return this.raumOID;
  51. }
  52.  
  53. public void setRaumOID(int raumOID) {
  54. this.raumOID = raumOID;
  55. }
  56.  
  57. public String getAktiv() {
  58. return this.aktiv;
  59. }
  60.  
  61. public void setAktiv(String aktiv) {
  62. this.aktiv = aktiv;
  63. }
  64.  
  65. public String getBezeichnung() {
  66. return this.bezeichnung;
  67. }
  68.  
  69. public void setBezeichnung(String bezeichnung) {
  70. this.bezeichnung = bezeichnung;
  71. }
  72.  
  73. public List<Behandlung> getBehandlungs() {
  74. return this.behandlungs;
  75. }
  76.  
  77. public void setBehandlungs(List<Behandlung> behandlungs) {
  78. this.behandlungs = behandlungs;
  79. }
  80.  
  81. public Praxi getPraxi() {
  82. return this.praxi;
  83. }
  84.  
  85. public void setPraxi(Praxi praxi) {
  86. this.praxi = praxi;
  87. }
  88.  
  89. public List<Termin> getTermins() {
  90. return this.termins;
  91. }
  92.  
  93. public void setTermins(List<Termin> termins) {
  94. this.termins = termins;
  95. }
  96.  
  97. public Termin addTermin(Termin termin) {
  98. getTermins().add(termin);
  99. termin.setRaum(this);
  100.  
  101. return termin;
  102. }
  103.  
  104. public Termin removeTermin(Termin termin) {
  105. getTermins().remove(termin);
  106. termin.setRaum(null);
  107.  
  108. return termin;
  109. }
  110.  
  111. public Raum clone()
  112. {
  113. Raum r = new Raum();
  114. r.setAktiv(this.getAktiv());
  115. r.setBehandlungs(this.getBehandlungs());
  116. r.setBezeichnung(this.getBezeichnung());
  117. r.setPraxi(this.getPraxi());
  118. r.setRaumOID(this.getRaumOID());
  119. r.setTermins(this.getTermins());
  120. return r;
  121. }
  122.  
  123. @Override
  124. public boolean equals(Object obj) {
  125. String a = String.valueOf(obj);
  126. String b = String.valueOf(this.getRaumOID());
  127. if(a.equals(b))
  128. {
  129. return true;
  130. }
  131. return false;
  132. }
  133.  
  134. }


Um diese Entität zu verwalten, habe ich eine Manager, und eine Handlerklasse:

Java Code:

  1.  
  2.  
  3.  
  4. import java.util.Iterator;
  5. import java.util.List;
  6.  
  7. import javax.ejb.Stateless;
  8. import javax.inject.Inject;
  9. import javax.persistence.EntityManager;
  10. import javax.persistence.PersistenceContext;
  11. import javax.persistence.Query;
  12.  
  13. import model.Behandlung;
  14. import model.Raum;
  15.  
  16.  
  17. @Stateless
  18. public class RaumManager {
  19.  
  20. @PersistenceContext
  21. private EntityManager em;
  22. @Inject
  23. private SessionBeanManager sessionBean;
  24.  
  25. public Raum updateRaum(int id)
  26. {
  27. Raum r = getRaumById(id);
  28. r.setBezeichnung("Pups2");
  29. em.merge(r);
  30. //em.refresh(r);
  31. return r;
  32. }
  33.  
  34. public Raum save(Raum raum)
  35. {
  36. em.persist(raum);
  37. em.flush();
  38. List<Behandlung> l = raum.getBehandlungs();
  39. for (Iterator<Behandlung> iterator = l.iterator(); iterator.hasNext();) {
  40. Behandlung type = (Behandlung) iterator.next();
  41. Query q = em.createNativeQuery("INSERT INTO raumbehandlung VALUES(" + raum.getRaumOID() + ", " + type.getBehandlungOID() + ")");
  42. q.executeUpdate();
  43. }
  44.  
  45. return raum;
  46. }
  47.  
  48. @SuppressWarnings("unchecked")
  49. public List<Raum> getRaums() {
  50. Query query = em.createNativeQuery("SELECT * FROM raum WHERE PraxisOID = " + sessionBean.getPraxis().getPraxisOID(), Raum.class);
  51. return query.getResultList();
  52. }
  53.  
  54. public Raum getRaumById(int id)
  55. {
  56. Query query = em.createNativeQuery("SELECT * FROM raum WHERE RaumOID = " + id + " AND PraxisOID = " + sessionBean.getPraxis().getPraxisOID(), Raum.class);
  57. try{
  58. return (Raum) query.getSingleResult();
  59. }
  60. catch(Exception e)
  61. {
  62. return null;
  63. }
  64.  
  65. }
  66.  
  67. public void delete(int id)
  68. {
  69. em.remove(this.getRaumById(id));
  70. }
  71. }


Java Code:

  1.  
  2.  
  3.  
  4. import java.io.Serializable;
  5. import java.util.Iterator;
  6. import java.util.List;
  7.  
  8. import javax.ejb.EJB;
  9. import javax.enterprise.context.RequestScoped;
  10. import javax.faces.event.ActionEvent;
  11. import javax.inject.Inject;
  12. import javax.inject.Named;
  13.  
  14. import model.Behandlung;
  15. import model.Raum;
  16. import de.fhswf.kositza.manager.RaumManager;
  17. import de.fhswf.kositza.manager.SessionBeanManager;
  18.  
  19. @Named
  20. @RequestScoped
  21. public class RaumHandler implements Serializable {
  22.  
  23. /**
  24. *
  25. */
  26. private static final long serialVersionUID = 8665180820620170277L;
  27.  
  28. private int updateRaum;
  29. @Inject
  30. private Raum raum;
  31.  
  32. @Inject
  33. private SessionBeanManager sessionBean;
  34.  
  35. private int updateID;
  36.  
  37. @EJB
  38. private RaumManager manager;
  39.  
  40. // Flags
  41. private boolean successFlag = false;
  42.  
  43. public void createRaum(ActionEvent event)
  44. {
  45. List<Behandlung> l = raum.getBehandlungs();
  46. for (Iterator<Behandlung> iterator = l.iterator(); iterator.hasNext();) {
  47. Behandlung type = (Behandlung) iterator.next();
  48. System.out.println(type.getBezeichnung());
  49.  
  50. }
  51. raum.setPraxi(sessionBean.getPraxis());
  52. raum.setAktiv("1");
  53. manager.save(raum.clone());
  54.  
  55. setSuccessFlag(true);
  56. }
  57.  
  58.  
  59. public void deleteRaum(int id)
  60. {
  61. manager.delete(id);
  62. }
  63.  
  64. public void output()
  65. {
  66. System.out.println(updateRaum);
  67. }
  68. public void update(int id)
  69. {
  70. updateRaum = id;
  71. Raum r = getRaumById(id);
  72. r.setPraxi(sessionBean.getPraxis());
  73. r.setAktiv("1");
  74. r.setRaumOID(id);
  75. raum = manager.updateRaum(id);
  76. }
  77.  
  78. public Raum getRaumById(int id)
  79. {
  80. try {
  81.  
  82. return raum;
  83. }
  84. catch(Exception e)
  85. {
  86. return null;
  87. }
  88. }
  89.  
  90. public List<Raum> getRaums()
  91. {
  92. return manager.getRaums();
  93. }
  94.  
  95. public boolean isSuccessFlag() {
  96. return successFlag;
  97. }
  98.  
  99. public void setSuccessFlag(boolean successFlag) {
  100. this.successFlag = successFlag;
  101. }
  102.  
  103.  
  104. public int getUpdateID() {
  105. return updateID;
  106. }
  107.  
  108.  
  109. public void doUpdateID(int updateID) {
  110.  
  111. this.updateID = updateID;
  112. }
  113.  
  114. }



Super wäre, wenn ich nun einen Eintrag zu den Räumen aus der Datenbank in ein Formular eintragen kann, welches so aufgebaut ist:

HTML-Code:

<h:form>
        <span class="beforeinput fa fa-user"></span>
        <h:inputText id="bezeichnung"
                class="validationToolTip checkForEmpty"
                value="#{raum.bezeichnung}"
                p:placeholder="Bezeichnung" />

        <h:message for="bezeichnung" errorClass="errorText"/>
        <br/>
                                               
        <div class="behandlungenCheckbox">
        <h4>Behandlungen wählen:</h4>
        <h:selectManyCheckbox value="#{raum.behandlungs}" converter="BehandlungConverter">
        <c:forEach items="${behandlungHandler.behandlungen}" var="item">
                  <f:selectItem itemValue="${item.behandlungOID}" itemLabel="${item.bezeichnung}"/>
        </c:forEach>
        <f:converter converterId="BehandlungConverter"/>
        </h:selectManyCheckbox>
        </div>
        <br/>
        <span class="beforeinput fa fa-check"></span>
        <h:commandButton actionListener="#{ raumHandler.createRaum}" value="Anlegen">
                <f:ajax execute="@form" render="@all"></f:ajax>
        </h:commandButton>
                                               
        <span class="beforeinput fa fa-trash"></span>
        <h:commandButton p:type="reset" value="Abbrechen"></h:commandButton>
        <h:outputScript library="js/Validation" name="Validation.js"></h:outputScript>
</h:form>

Ich hab echt keinen Schimmer, wie ich das Formular befüllen kann.


Daten einer Datenbank in ein Formular einfügen

0 commentaires:

Enregistrer un commentaire