Model.DAO_Devoir.java Source code

Java tutorial

Introduction

Here is the source code for Model.DAO_Devoir.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import Entity.Critere;
import Entity.Devoir;
import Entity.Etudiant;
import Entity.Groupe;
import Entity.Note;
import Entity.Rubrique;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.Cursor;
import com.mongodb.DBObject;
import com.mongodb.QueryBuilder;
import static java.lang.System.out;
import java.net.UnknownHostException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import org.bson.types.ObjectId;

/**
 *
 * @author admin
 */
public class DAO_Devoir extends DAO_Template<Devoir> {

    //On instancie le curseur
    Cursor cursor = null;

    public DAO_Devoir(Connection conn) throws UnknownHostException {
        super(conn);
    }

    public boolean findByDate(Date uneD) {

        BasicDBObject query = new BasicDBObject();
        query.put("date", uneD);
        cursor = collection.find(query);
        return cursor.hasNext();
    }

    @Override
    public boolean create(Devoir obj) {
        /*
         *   Cration d'un objet document
         *   On lui passe en paramtre les cls associ de ses valeurs
         */
        BasicDBObject doc = new BasicDBObject("libelle", obj.getLibelle()).append("matiere", obj.getMatiere())
                .append("date", obj.getDate()).append("lstRubrique", obj.mapBddRubriques())
                .append("lstGroupe", obj.mapBddGroupes());
        /*
         * On insre dans la BDD
         */
        collection.insert(doc);

        return true;
    }

    @Override
    public boolean delete(Devoir obj) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public boolean update(Devoir oldDevoir, Devoir newDevoir) {
        //Ceci contiendra l'objet  remplacer
        BasicDBObject doc = null;

        //on cre un nouvel objet  insrer pour remplacer celui existant
        BasicDBObject newDoc = new BasicDBObject("libelle", newDevoir.getLibelle())
                .append("matiere", newDevoir.getMatiere()).append("date", newDevoir.getDate())
                .append("lstRubrique", newDevoir.mapBddRubriques()).append("lstGroupe", newDevoir.mapBddGroupes());

        //On cre les parametres de la requete
        BasicDBObject query = new BasicDBObject();
        query.put("_id", oldDevoir.getId());
        //query.put("libelle", oldDevoir.getLibelle());
        //query.put("matiere", oldDevoir.getMatiere());
        //query.put("date", oldDevoir.getDate());

        //On met  jour l'enregistrement
        collection.update(query, newDoc);

        return true;
    }

    @Override
    public Devoir findById(ObjectId id) {
        //On instancie la liste qui va contenir les clients retourns par la requte
        List<Devoir> listDevoir = new ArrayList<>();

        BasicDBObject query = new BasicDBObject("_id", id);
        cursor = collection.find(query);

        try {
            //Pour chaque enregistrement trouv
            while (cursor.hasNext()) {
                //On instancie un objet
                DBObject objet = cursor.next();
                //On le cast en client en rentrant les parametres
                Devoir devoir = new Devoir(objet.get("libelle").toString(), objet.get("matiere").toString(),
                        (Date) objet.get("date"));
                //On ajoute l'id de l'enregistrement
                devoir.setId((ObjectId) objet.get("_id"));
                //On ajoute la liste des Rubriques
                devoir.setLstRubrique((List<Rubrique>) objet.get("lstRubrique"));
                //On ajoute le client  la liste
                listDevoir.add(devoir);
            }
        } finally {
            cursor.close();
        }
        return listDevoir.get(0);
    }

    @Override
    public List<Devoir> findAll() {
        //On instancie la liste qui va contenir les clients retourns par la requte
        List<Devoir> listDevoir = new ArrayList<>();

        cursor = collection.find();

        try {
            //Pour chaque enregistrement trouv
            while (cursor.hasNext()) {
                //On instancie un objet
                DBObject objet = cursor.next();
                //On le cast en client en rentrant les parametres
                Devoir devoir = new Devoir(objet.get("libelle").toString(), objet.get("matiere").toString(),
                        (Date) objet.get("date"));
                //On ajoute l'id de l'enregistrement
                devoir.setId((ObjectId) objet.get("_id"));
                //On ajoute la liste des Rubriques

                List<Rubrique> lstRubrique = new ArrayList<Rubrique>();
                BasicDBList listBDRubrique = (BasicDBList) objet.get("lstRubrique");

                if (listBDRubrique != null) {
                    Iterator itListBDRubrique = listBDRubrique.iterator();

                    while (itListBDRubrique.hasNext()) {
                        List<Critere> lstCritere = new ArrayList<Critere>();
                        BasicDBObject objectCritere = (BasicDBObject) itListBDRubrique.next();
                        BasicDBList listBDCritere = (BasicDBList) objectCritere.get("lstCritere");
                        Iterator itListBDCritere = listBDCritere.iterator();
                        while (itListBDCritere.hasNext()) {//On ajoute la liste des Critere
                            BasicDBObject aDBObjectCritere = (BasicDBObject) itListBDCritere.next();
                            Critere unCritere = new Critere(aDBObjectCritere.get("libelle").toString(),
                                    (Integer) aDBObjectCritere.get("poid"));

                            lstCritere.add(unCritere);
                        }
                        Rubrique uneRubrique = new Rubrique(objectCritere.get("libelle").toString(), lstCritere);
                        lstRubrique.add(uneRubrique);
                    }
                    devoir.setLstRubrique(lstRubrique);//ajout list Rubrique

                    List<Groupe> lstGroupe = new ArrayList<Groupe>();
                    BasicDBList listBDGroupe = (BasicDBList) objet.get("lstGroupe");
                    Iterator itListBDGroupe = listBDGroupe.iterator();

                    while (itListBDGroupe.hasNext()) {
                        List<Etudiant> lstEtudiant = new ArrayList<Etudiant>();
                        List<Note> lstNote = new ArrayList<Note>();
                        BasicDBObject objectsGroupe = (BasicDBObject) itListBDGroupe.next();
                        BasicDBList listBDEtudiant = (BasicDBList) objectsGroupe.get("lstEtudiant");
                        Iterator itListBDEtudiant = listBDEtudiant.iterator();
                        while (itListBDEtudiant.hasNext()) {//On ajoute la liste des Critere
                            BasicDBObject aDBObjectCritere = (BasicDBObject) itListBDEtudiant.next();
                            Etudiant unEtudiant = new Etudiant(aDBObjectCritere.get("prenom").toString(),
                                    aDBObjectCritere.get("nom").toString(),
                                    aDBObjectCritere.get("classe").toString());

                            lstEtudiant.add(unEtudiant);
                        }
                        BasicDBList listBDNote = (BasicDBList) objectsGroupe.get("lstNote");
                        Iterator itListBDNote = listBDNote.iterator();
                        while (itListBDNote.hasNext()) {//On ajoute la liste des Critere
                            BasicDBObject aDBObjectNote = (BasicDBObject) itListBDNote.next();
                            Note uneNote = new Note(aDBObjectNote.get("libelle").toString(),
                                    (Integer) aDBObjectNote.get("poid"), (Double) aDBObjectNote.get("note"));
                            //1.5);

                            lstNote.add(uneNote);
                        }
                        Groupe unGroupe = new Groupe(objectsGroupe.get("libelle").toString(), lstEtudiant, lstNote);
                        lstGroupe.add(unGroupe);
                    }
                    devoir.setLstGroupe(lstGroupe);
                }
                //On ajoute le client  la liste
                listDevoir.add(devoir);
            }
        } finally {
            cursor.close();
        }
        return listDevoir;
    }

}