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; }}