Envoyer un rendez-vous à plusieurs utilisateurs

Fermé
Utilisateur anonyme - Modifié par baladur13 le 21/05/2015 à 13:42
(image rendue cliquable et s'ouvrant dans un nouvel onglet par la modération CCM)
Bonjour,
Voici une IHM où la listview de droite (liste des destinataires) répertorie la liste des utilisateurs de gauche grâce au bouton de la flèche (->)

Et je souhaiterai intégrer dans la base de données l'ensemble de la liste view des destinataires :

Voici le code de mon controleur :

package agendam2l.vue;

import application.DaoUser;
import agendam2l.modele.MrbsAgenda;
//import agendam2l.modele.RendezVous;
import agendam2l.modele.MrbsUser;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.control.TextInputControl;
import javafx.scene.input.MouseEvent;

public class VueControleur {

 private DaoUser daouser;

 public VueControleur() {
  daouser = new DaoUser();
 }

 @FXML
 private DatePicker choixDate;
 @FXML
 private ComboBox<String> heure;
 @FXML
 private ComboBox<String> minutes;
 @FXML
 private TextField contact;
 @FXML
 private TextField telephone;
 @FXML
 private CheckBox confirmer;
 @FXML
 private CheckBox transport;
 @FXML
 private TextField objet;
 @FXML
 private ListView<MrbsAgenda> liste;
 private ObservableList<MrbsAgenda> lesrendezvous = FXCollections
   .observableArrayList();
 @FXML
 private ListView<MrbsUser> voirlesusers;
 private ObservableList<MrbsUser> lesusers = FXCollections
   .observableArrayList();
 @FXML
 private ListView<MrbsUser> voirlesdestinataires;
 private ObservableList<MrbsUser> lesdestinataires = FXCollections
   .observableArrayList();
 @FXML
 private TextInputControl pwBox = null;

 @FXML
 private void initialize() {
  ObservableList<String> lesheures = FXCollections.observableArrayList(
    "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18",
    "19", "20");
  heure.setItems(lesheures);
  heure.setValue("8");
  ObservableList<String> lesminutes = FXCollections.observableArrayList(
    "00", "10", "15", "20", "25", "30", "35", "40", "45", "50",
    "55");
  minutes.setItems(lesminutes);
  minutes.setValue("00");
  choixDate.setValue(LocalDate.now());
  // La ListView liste visualisera la ObservableList lesrendezvous.
  liste.setItems(lesrendezvous);
  voirtouslesusers();
  voirlesusers.setItems(lesusers);
  voirlesdestinataires.setItems(lesdestinataires);
  liste.setItems(lesrendezvous);
  voirtouslesrendezvous();
  lesusersrendezvous();
  

 }

 @FXML
 private void handleAjouterRV() {
  if (pasErreur() == true) {
   String Heure = heure.getValue() + ":" + minutes.getValue();
   LocalDate date = choixDate.getValue();
   Date daterv = new Date(24 * 3600 * 1000 * date.toEpochDay());
   MrbsAgenda rv = new MrbsAgenda(contact.getText(), daterv, Heure,
     objet.getText(), telephone.getText());
   lesrendezvous.add(rv);
  }
 }

 @FXML
 private void handleEffacerChamps() {
  contact.clear();
  objet.clear();
  telephone.clear();
  heure.setValue("8");
  minutes.setValue("00");
  choixDate.setValue(LocalDate.now());
  confirmer.setSelected(true);
  transport.setSelected(false);

 }

 @FXML
 private void handleSupprimerRV() {
  MrbsAgenda rv = liste.getSelectionModel().getSelectedItem();
  lesrendezvous.remove(rv);
  /*MrbsUser user = voirlesusers.getSelectionModel()
    .getSelectedItem();
  daouser.supprimer(user);
  voirtouslesusers();*/
 }

 @FXML
 private void handleTrierRV() {
  ObservableList<MrbsAgenda> LesRVtries;
  LesRVtries = lesrendezvous.sorted(new Comparator<MrbsAgenda>() {
   @Override
   public int compare(MrbsAgenda a, MrbsAgenda b) {
    // Algorithme de la comparaison, voir les explications
    // ci-dessous
    Date datea = a.getDate();
    Date dateb = b.getDate();
    int r = datea.compareTo(dateb);
    if (r != 0)
     return r;
    // Partie exécutée si les 2 dates sont égales (r=0)
    String[] tabheurea = a.getHeure().split(":");
    String[] tabheureb = b.getHeure().split(":");
    int heurea = Integer.parseInt(tabheurea[0]);
    int heureb = Integer.parseInt(tabheureb[0]);
    r = heurea - heureb;
    if (r != 0)
     return r;
    // Partie exécutée si les heures sont égales
    int mna = Integer.parseInt(tabheurea[1]);
    int mnb = Integer.parseInt(tabheureb[1]);
    return mna - mnb;
   }// fin de la méthode compare
  });

  lesrendezvous.setAll(LesRVtries);
 }

 @FXML
 private boolean pasErreur() {
  String Contact = contact.getText();
  String tel = telephone.getText();
  if (Contact.isEmpty() || tel.isEmpty()) {
   Alert alert = new Alert(AlertType.INFORMATION);
   alert.setTitle("Informations incomplètes");
   alert.setHeaderText("Compléter les champs indiqués");
   if (Contact.isEmpty())
    contact.setPromptText("à compléter");
   if (tel.isEmpty())
    telephone.setPromptText("à compléter");
   alert.showAndWait();
   return false;
  } else
   return true;
 }

 @FXML
 private void voirtouslesusers() {
  lesusers.clear();
  List<MrbsUser> Lesusers = daouser.voirlesusers();
  for (MrbsUser u : Lesusers)
   lesusers.add(u);
 }

 @FXML
 private void selectionutilisateur() {
  MrbsUser user = voirlesusers.getSelectionModel().getSelectedItem();
  for (MrbsUser u : lesdestinataires)
  lesdestinataires.add(u);
  System.out.println("1 " + user);
 }
 
 @FXML
 private void effacerdestinataire() {
  MrbsUser destinataire = voirlesdestinataires.getSelectionModel().getSelectedItem();
  lesdestinataires.remove(destinataire);


 }
 

 @FXML
 private void voirtouslesrendezvous() {
  // lesrendezvous.clear();
  List<MrbsAgenda> Lesrendezvous = daouser.voirlesrendezvous();
  for (MrbsAgenda r : Lesrendezvous)
   lesrendezvous.add(r);
 }

 @FXML
 private void ajouterrendezvous() {
  String Heure = heure.getValue() + ":" + minutes.getValue();
  LocalDate date = choixDate.getValue();
  Date daterv = new Date(24 * 3600 * 1000 * date.toEpochDay());
  MrbsAgenda rendezvous = new MrbsAgenda(contact.getText(), daterv, Heure,
    objet.getText(), telephone.getText());
  liste.getSelectionModel().select(0);
  MrbsUser user = voirlesusers.getSelectionModel().getSelectedItem();
  rendezvous = liste.getSelectionModel().getSelectedItem();
  rendezvous.setMrbsUser(user);
  daouser.stocker(rendezvous);
  //voirtouslesrendezvous();
 }
 @FXML
 private void lesusersrendezvous() {
  List<MrbsUser> lesdestinataires = daouser.voirlesusers();
  for (MrbsUser d : lesdestinataires)
   lesusers.add(d);
 }


}


Et voici ma classe DAO :
package application;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
//import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

import agendam2l.modele.MrbsAgenda;
import agendam2l.modele.MrbsUser;
//import agendam2l.modele.RendezVous;

public class DaoUser {
 private EntityManager em;

 public DaoUser() {
  EntityManagerFactory factory = Persistence
    .createEntityManagerFactory("agendam2l");
  em = factory.createEntityManager();
 }

 public void stocker(MrbsUser user) {
  em.getTransaction().begin();
  em.persist(user);
  em.getTransaction().commit();
 }

 public List<MrbsUser> voirlesusers() {
  TypedQuery<MrbsUser> query = em.createQuery(
    "SELECT g FROM MrbsUser g ORDER BY g.id", MrbsUser.class);
  List<MrbsUser> liste = query.getResultList();
  return liste;
 }

 public void supprimer(MrbsUser user) {
  em.getTransaction().begin();
  em.remove(user);
  em.getTransaction().commit();
 }
 public void stocker(MrbsAgenda rendezvous) {
  em.getTransaction().begin();
  em.persist(rendezvous);
  em.getTransaction().commit();
 }

 public List<MrbsAgenda> voirlesrendezvous() {
  TypedQuery<MrbsAgenda> query = em.createQuery(
    "SELECT g FROM MrbsAgenda g ORDER BY g.id", MrbsAgenda.class);
  List<MrbsAgenda> liste = query.getResultList();
  return liste;
 }

 public void supprimer(MrbsAgenda rendezvous) {
  em.getTransaction().begin();
  em.remove(rendezvous);
  em.getTransaction().commit();
 }
 
 
}


Voici le code de la table où doit être intégrer les données :
package agendam2l.modele;

import java.io.Serializable;

import javax.persistence.*;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;


/**


* The persistent class for the mrbs_agenda database table. *  */@Entity@Table(name="mrbs_agenda")@NamedQuery(name="MrbsAgenda.findAll", query="SELECT m FROM MrbsAgenda m")public class MrbsAgenda implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; private String contact; @Temporal(TemporalType.DATE) private Date date; private String heure; private String objet; private String telephone; //bi-directional many-to-one association to MrbsUser @ManyToOne @JoinColumn(name="id_users") private MrbsUser mrbsUser; public MrbsAgenda() { }  public MrbsAgenda(String contact, Date date, String heure, String objet, String telephone) {  super();  this.contact = contact ;  this.date = date ;  date = new Date();  this.heure = heure;  this.objet = objet;  this.telephone = telephone;  }  public int getId() {  return this.id; } public void setId(int id) {  this.id = id; } public String getContact() {  return this.contact; } public void setContact(String contact) {  this.contact = contact; } public Date getDate() {  return this.date; } public void setDate(Date date) {  this.date = date; } public String getHeure() {  return this.heure; } public void setHeure(String heure) {  this.heure = heure; } public String getObjet() {  return this.objet; } public void setObjet(String objet) {  this.objet = objet; } public String getTelephone() {  return this.telephone; } public void setTelephone(String telephone) {  this.telephone = telephone; } public MrbsUser getMrbsUser() {  return this.mrbsUser; } public void setMrbsUser(MrbsUser mrbsUser) {  this.mrbsUser = mrbsUser; }  public String toString(){  return contact+" "+objet+ " " +  LocalDate.ofEpochDay(date.getTime()/(1000*3600*24))  .format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))+ " " +heure+" "+telephone;  }}