Java tutorial
/* * 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 bureau; import java.io.File; import java.io.FileNotFoundException; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.persistence.TypedQuery; import org.hibernate.Session; import java.io.FileWriter; import static java.lang.Integer.parseInt; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.List; import java.util.Locale; import org.jdom2.*; import org.jdom2.input.*; import org.jdom2.output.*; import org.jdom2.transform.*; /** * * @author Kurasawa */ public class Services { EntityManagerFactory fact; EntityManager em; public Services(EntityManagerFactory fact) { this.fact = fact; this.em = fact.createEntityManager(); } public void close() { em.close(); } /******************************************************************************************************/ /* Admission */ public void newAdmission(Admission ad) { em.getTransaction().begin(); em.persist(ad); em.getTransaction().commit(); } public void removeAdmission(int id) { Admission ad = em.find(Admission.class, id); em.getTransaction().begin(); em.remove(ad); em.getTransaction().commit(); } public void editAdmission(Admission ad) { em.getTransaction().begin(); em.merge(ad); em.getTransaction().commit(); } public Admission newAdmission(int ipp_, int type_, int iep_) { Admission a = new Admission(); a.setIpp(ipp_); a.setType(type_); a.setIep(iep_); em.getTransaction().begin(); em.persist(a); em.getTransaction().commit(); return a; } public Admission getAdmissionByIep(int iep) { Admission res = em.find(Admission.class, iep); return res; } public List<Admission> getAdmissionByIpp(int ipp) { TypedQuery<Admission> query = em .createQuery("SELECT a FROM Admission a WHERE a.ipp = :ipp", Admission.class) .setParameter("ipp", ipp); List<Admission> res = query.getResultList(); return res; } public List<Admission> getAllAdmissions() { TypedQuery<Admission> query = em.createQuery("SELECT a FROM Admission a", Admission.class); List<Admission> res = query.getResultList(); return res; } public void deleteAllAdmissions() { em.getTransaction().begin(); em.createQuery("DELETE FROM Admission").executeUpdate(); em.getTransaction().commit(); } public void updateAdmission(Admission ad, int ipp_, int type_) { ad.setIpp(ipp_); ad.setType(type_); em.getTransaction().begin(); em.persist(ad); em.getTransaction().commit(); } /* LIT */ public Lit newLit(String room) { Lit l = new Lit(); l.setChambre(room); l.setOccupe(false); em.getTransaction().begin(); em.persist(l); em.getTransaction().commit(); return l; } public void editLit(Lit l) { em.getTransaction().begin(); em.merge(l); em.getTransaction().commit(); } public void updateLit(Lit l) { em.getTransaction().begin(); em.persist(l); em.getTransaction().commit(); } public Lit getLitById(int id_lit) { Lit res = em.find(Lit.class, id_lit); return res; } public List<Lit> getLitByUF(String nomUF) { TypedQuery<Lit> query = em .createQuery("SELECT u.lits FROM UniteFonctionnelle u WHERE u.nom = :nomUF", Lit.class) .setParameter("nomUF", nomUF); List<Lit> res = query.getResultList(); return res; } public List<Lit> getAllLits() { TypedQuery<Lit> query = em.createQuery("SELECT l FROM Lit l", Lit.class); List<Lit> res = query.getResultList(); return res; } public void deleteAllLits() { em.getTransaction().begin(); em.createQuery("DELETE FROM Lit").executeUpdate(); em.getTransaction().commit(); } /* MOUVEMENT */ public Mouvement newMouvement(Admission ad, Lit lit, UniteFonctionnelle uf, Date date_entree) { Mouvement m = new Mouvement(); em.getTransaction().begin(); //Rcuperer le type d'admission m.setDate_entree(date_entree); //si hospitalisation (1) date de sortie = date entre + 3 System.out.println("test :" + ad.getType()); if (ad.getType() == 1) { Calendar cal = Calendar.getInstance(); cal.setTime(date_entree); cal.add(Calendar.DATE, 3); //un nombre ngatif dcrmente la date m.setDate_sortie(cal.getTime()); System.out.println("date de sortie d'hospitalisation fixe :" + cal.getTime()); } //si urgence (2) date de sortie = date entre + 10 else if (ad.getType() == 2) { Calendar cal = Calendar.getInstance(); cal.setTime(date_entree); cal.add(Calendar.DATE, 10); m.setDate_sortie(cal.getTime()); System.out.println("date de sortie d'hospitalisation fixe :" + cal.getTime()); } //si consultation externe (3) date entre = date de sortie else { m.setDate_sortie(date_entree); } m.setAdmission(ad); //em.persist(lit); m.setLit(lit); m.getLit().setOccupe(Boolean.TRUE); System.out.println(" le lit " + lit + " ou " + m.getLit() + " est " + m.getLit().getOccupe() + " et " + lit.getOccupe()); m.setUf(uf); em.persist(m); em.getTransaction().commit(); return m; } public void updateMouvement(Mouvement m, Admission ad, Lit lit, UniteFonctionnelle uf, Date date_entree, Date date_sortie) { em.getTransaction().begin(); m.setDate_entree(date_entree); //Rcuperer le type d'admission m.setDate_sortie(date_sortie); m.setAdmission(ad); m.setLit(lit); m.setUf(uf); em.persist(m); em.getTransaction().commit(); } public void editMouvement(Mouvement m) { em.getTransaction().begin(); em.merge(m); em.getTransaction().commit(); } public void clotureMouvement(Mouvement m) { em.getTransaction().begin(); Lit l = m.getLit(); l.setOccupe(Boolean.FALSE); em.merge(m); em.getTransaction().commit(); } public void removeMouvement(int id_mouv) { Mouvement mv = em.find(Mouvement.class, id_mouv); em.getTransaction().begin(); em.remove(mv); em.getTransaction().commit(); } public void changeStatutLit(Lit lit) { em.getTransaction().begin(); if (lit.getOccupe()) { lit.setOccupe(Boolean.FALSE); } else { lit.setOccupe(Boolean.TRUE); } em.merge(lit); em.getTransaction().commit(); } public Mouvement getMouvementById(int id_mouv) { Mouvement res = em.find(Mouvement.class, id_mouv); return res; } public List<Mouvement> getAllMouvements() { TypedQuery<Mouvement> query = em.createQuery("SELECT m FROM Mouvement m", Mouvement.class); List<Mouvement> res = query.getResultList(); return res; } public List<Mouvement> getMouvementByIep(int iep) { TypedQuery<Mouvement> query = em .createQuery("SELECT m FROM Mouvement m WHERE m.admission.iep = :iep", Mouvement.class) .setParameter("iep", iep); List<Mouvement> res = query.getResultList(); return res; } public void deleteAllMouvements() { em.getTransaction().begin(); em.createQuery("DELETE FROM Mouvement").executeUpdate(); em.getTransaction().commit(); } /* UF */ public UniteFonctionnelle newUniteFonctionnelle(String nom, List<Lit> lits) { UniteFonctionnelle uf = new UniteFonctionnelle(); em.getTransaction().begin(); uf.setNom(nom); uf.setLits(lits); em.persist(uf); em.getTransaction().commit(); return uf; } public UniteFonctionnelle getUniteFonctionnelleById(int id_uf) { UniteFonctionnelle res = em.find(UniteFonctionnelle.class, id_uf); return res; } public UniteFonctionnelle getUniteFontionnelleByNom(String nom) { UniteFonctionnelle res = new UniteFonctionnelle(); List<UniteFonctionnelle> lite_uf = getAllUnitesFonctionnelles(); for (UniteFonctionnelle uf : lite_uf) { if (nom.equals(uf.getNom())) { res = uf; } } return res; } public List<UniteFonctionnelle> getAllUnitesFonctionnelles() { TypedQuery<UniteFonctionnelle> query = em.createQuery("SELECT u FROM UniteFonctionnelle u", UniteFonctionnelle.class); List<UniteFonctionnelle> res = query.getResultList(); return res; } public void deleteAllUniteFonctionnelles() { em.getTransaction().begin(); em.createQuery("DELETE FROM UniteFonctionnelle").executeUpdate(); em.getTransaction().commit(); } /*Alomentation de la base de donnes*/ public void getAdmissionsFromFile() { SAXBuilder builder = new SAXBuilder(); try { //on liste et on parcours les fichiers pour trouver les .xml qui sont en ajout et en edit File repertoire = new File("\\\\172.18.8.70\\temp\\PP_PAT_IN");// \\\\178.18.8.70\\temp System.out.println("new file"); String[] listefichiers; int i; System.out.println("int i string liste fichier"); listefichiers = repertoire.list(); System.out.println("repertoire.list()"); for (i = 0; i < listefichiers.length; i++) { System.out.println("dans la boucle"); //si le fichier est en ajout if (listefichiers[i].startsWith("new")) { System.out.println("fichier new trouv"); Document doc = builder.build("" + repertoire + "\\" + listefichiers[i]); Element root = doc.getRootElement(); Element admissionXML = root; int type = 1; int ipp; int iep; ipp = parseInt(admissionXML.getChild("patient").getAttributeValue("ipp")); iep = parseInt(admissionXML.getAttributeValue("iep")); if (admissionXML.getChild("type").getText().startsWith("c")) type = 3; if (admissionXML.getChild("type").getText().startsWith("h")) type = 1; if (admissionXML.getChild("type").getText().startsWith("u")) type = 2; newAdmission(ipp, type, iep); System.out.println("nouvelle admission ajoute"); } if (listefichiers[i].startsWith("update")) { System.out.println("fichier en update trouv"); Document doc = builder.build("" + repertoire + "\\" + listefichiers[i]); Element root = doc.getRootElement(); Element admissionXML = root; int type = 1; int iep = parseInt(admissionXML.getAttributeValue("iep")); if (admissionXML.getChild("type").getText().startsWith("c")) type = 3; if (admissionXML.getChild("type").getText().startsWith("h")) type = 1; if (admissionXML.getChild("type").getText().startsWith("u")) type = 2; if (getAdmissionByIep(iep) == null) { System.out.println("Il n'y a pas d'admission avec cet IEP"); } else { Admission ad = getAdmissionByIep(iep); ad.setType(type); editAdmission(ad); System.out.println("admission modifie"); } String date_sortie = admissionXML.getChild("date_sortie").getValue(); DateFormat format = new SimpleDateFormat("YYYY-MM-DD", Locale.ENGLISH); Date date_s = format.parse(date_sortie); String date_entree = admissionXML.getChild("date_sortie").getValue(); Date date_e = format.parse(date_entree); List<Mouvement> listemouv = getMouvementByIep(iep); if (listemouv != null) { Mouvement mouv = listemouv.get(listemouv.size()); updateMouvement(mouv, mouv.getAdmission(), mouv.getLit(), mouv.getUf(), date_e, date_s); } else { System.out.println("pas de mouvement pour cette admission"); } } if (listefichiers[i].startsWith("mouv")) { System.out.println("fichier new trouv"); Document doc = builder.build("" + repertoire + "\\" + listefichiers[i]); Element root = doc.getRootElement(); Element mouvementXML = root; String service = "Cardiologie"; int ipp; int iep; Lit lit = new Lit(); String date_entree = mouvementXML.getChild("date_entree").getValue(); DateFormat format = new SimpleDateFormat("YYYY-MM-DD", Locale.ENGLISH); Date date = format.parse(date_entree); ipp = parseInt(mouvementXML.getChild("ipp").getValue()); iep = parseInt(mouvementXML.getChild("iep").getValue()); if (mouvementXML.getChild("service").getText().endsWith("2")) service = "Radio 2"; if (mouvementXML.getChild("service").getText().endsWith("1")) service = "Radio 1"; List<Lit> liste_lits = getLitByUF(service); for (Lit buff_lit : liste_lits) { if (!buff_lit.getOccupe()) { lit = buff_lit; } } newMouvement(getAdmissionByIep(iep), lit, getUniteFontionnelleByNom(service), date); System.out.println("nouvelle admission ajoute"); } } } catch (Exception e) { System.out.println("Erreur de lecture du fichier d'admission"); } } }