/* * Projet : Fourmi * Nom du fichier : MainServlet.java * Date de création : 11/2003 * Dernière modification: 02/2007 * Auteur : La Poste * version : 7.20 */ package dirr.dpcg.fourmi.servlet; import java.io.IOException; import java.sql.SQLException; import java.util.Iterator; import java.util.TreeMap; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import dirr.devinet.sybase.PoolDeConnexionException; import dirr.devinet.util.FichierDeProprietes; import dirr.dpcg.fourmi.action.ClientAction; import dirr.dpcg.fourmi.action.CodeComptableAction; import dirr.dpcg.fourmi.action.CspnAction; import dirr.dpcg.fourmi.action.FactureAction; import dirr.dpcg.fourmi.action.IecAction; import dirr.dpcg.fourmi.action.LoginAction; import dirr.dpcg.fourmi.action.OperationAction; import dirr.dpcg.fourmi.action.PrestationAction; import dirr.dpcg.fourmi.action.RechercheLibellesAction; import dirr.dpcg.fourmi.action.ScflAction; import dirr.dpcg.fourmi.action.TvaAction; import dirr.dpcg.fourmi.bd.ClientBd; import dirr.dpcg.fourmi.bd.CodeComptableOperationBd; import dirr.dpcg.fourmi.bd.CodeComptableRemiseBd; import dirr.dpcg.fourmi.bd.IECBd; import dirr.dpcg.fourmi.bd.ScflBd; import dirr.dpcg.fourmi.bd.TvaBd; import dirr.dpcg.fourmi.beans.Operation; import dirr.dpcg.fourmi.beans.Prestation; import dirr.dpcg.fourmi.beans.referentiel.CodeComptable; import dirr.dpcg.fourmi.beans.referentiel.Scfl; import dirr.dpcg.fourmi.beans.referentiel.liste.Libelles; import dirr.dpcg.fourmi.beans.referentiel.liste.TvaListe; import dirr.dpcg.fourmi.fichiers.DownloadFichier; import dirr.dpcg.fourmi.fichiers.ListePrestation; /** * Servlet controleur chargée de recevoir toutes les requêtes, de les orienter * vers les classes Action chargées d'effectuer le traitement, et en fonction * du résultat du traitement, de sélectionner la page à afficher */ public class MainServlet extends HttpServlet { /** répertoire contenant le fichier de configuration de l'annuaire*/ public static String REPERTOIRE_CONFIG = "/WEB-INF/classes/"; /** */ public final static String PRELEVEMENT_BANCAIRE = "PRB"; public final static String PRELEVEMENT_POSTAL = "PRP"; public final static String PRELEVEMENT_DIRECT = "PTD"; /** */ public final static String CODE_COMPTABLE_OPERATION = "01"; public final static String CODE_COMPTABLE_REMISE = "02"; public final static String CODE_COMPTABLE_CLIENT = "03"; /** log */ protected static Logger log = Logger.getLogger(MainServlet.class.getName()); /** * Initialisation de la servlet et de l'application * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig) */ public void init(ServletConfig config) throws ServletException { super.init(config); log.debug("Initialisation de l'application"); initDonneesStatiques(config); } /** * Traite les requetes doGet et doPost * @param request requete * @param response réponse * @throws ServletException se * @throws IOException ioe */ private void doProcess( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String selectedURL = selectedUrl(request.getRequestURI()); RequestDispatcher rd; boolean res = false; String next = "/jsp/accueil/message.jsp"; try { log.debug("selectedURL = " + selectedURL); if ("login.do".equals(selectedURL)) { if (LoginAction.login(getServletContext(), request)) { next = "/jsp/accueil/layoutglobal.jsp"; } else { next = "/static-content/londres/forbidden.html"; } } else if ("authentifier.do".equals(selectedURL)) { if (LoginAction.authentifier(getServletContext(), request)) { if (LoginAction.login(getServletContext(), request)) { next = "/jsp/accueil/layoutglobal.jsp"; } else { next = "/static-content/londres/unauthorized.html"; } } else { next = "/static-content/londres/unauthorized.html"; } } else if ("quitter.do".equals(selectedURL)) { request.getSession().removeAttribute("authentifieFourmi"); request.getSession().invalidate(); } else if ("clientVoir.do".equals(selectedURL)) { if (ClientAction.ouvrir(request)) { next = "/jsp/clients/client.jsp"; } } else if ("clientCreer.do".equals(selectedURL)) { if (ClientAction.existLnomcli(request.getParameter("nom"))){ next = "/jsp/clients/client2.jsp"; }else{ res = ClientAction.creer(request); if (res) { next = "/jsp/clients/client.jsp"; } } } else if("clientEnregistrer.do".equals(selectedURL)){ res = ClientAction.creer(request); if (res) { next = "/jsp/clients/client.jsp"; } } else if("clientExist.do".equals(selectedURL)){ log.info("je renonce à l'enregistrement"); } else if ("clientSauver.do".equals(selectedURL)) { ClientAction.sauver(request); } else if ("clientFermer.do".equals(selectedURL)) { ClientAction.fermer(request); } else if ("clientSupp.do".equals(selectedURL)) { ClientAction.detruire(request); } else if ("clientRes.do".equals(selectedURL)) { if (!ClientAction.rechercher(request)) { // 0 ou plusieurs clients trouvés next = "/jsp/clients/resultat.jsp"; } else { // un seul client next = "/clientVoir.do?"; } } else if ("prestationNouvelle.do".equals(selectedURL)) { next = "/jsp/prestations/prestation.jsp"; } else if ("prestationEdit.do".equals(selectedURL)) { if (PrestationAction.ouvrir(getServletContext(), request)) { next = "/jsp/prestations/prestation_visu.jsp"; } else { next = "/jsp/prestations/prestation.jsp"; } } else if ("prestationVisu.do".equals(selectedURL)) { PrestationAction.ouvrir(getServletContext(), request); next = "/jsp/prestations/prestation_visu.jsp"; } else if ("prestationRes.do".equals(selectedURL)) { int nbPrestations = PrestationAction.rechercher(getServletContext(), request); if (nbPrestations == 1) { // un seul resultat Prestation prestation = (Prestation) request.getAttribute("prestation"); if (prestation.getNumFacture() != "") { next = "/jsp/prestations/prestation_visu.jsp"; } else { next = "/jsp/prestations/prestation.jsp"; } } else if (nbPrestations >= 0) { // plusieurs resultats next = "/jsp/prestations/resultat.jsp"; } // sinon erreur } else if ("prestationSauver.do".equals(selectedURL)) { PrestationAction.sauver(request); } else if ("prestationSupp.do".equals(selectedURL)) { PrestationAction.detruire(request); } else if ("operationNouvelle.do".equals(selectedURL)) { next = "/jsp/operations/operation.jsp"; } else if ("operationVisu.do".equals(selectedURL)) { OperationAction.ouvrir(request); next = "/jsp/operations/operation_visu.jsp"; } else if ("operationEdit.do".equals(selectedURL)) { if (OperationAction.ouvrir(request)) { next = "/jsp/operations/operation_visu.jsp"; } else { next = "/jsp/operations/operation.jsp"; } } else if ("operationRes.do".equals(selectedURL)) { int nbOperations = OperationAction.rechercher(request); if (nbOperations == 1) { // affichage de l'opération Operation oper = (Operation) request.getAttribute("operation"); if (oper.getNumFacture() != "") { next = "/jsp/operations/operation_visu.jsp"; } else { next = "/jsp/operations/operation.jsp"; } } else if (nbOperations >= 0) { // affichage de la liste next = "/jsp/operations/resultat.jsp"; } // sinon, afficher l'erreur } else if ("operationSauver.do".equals(selectedURL)) { OperationAction.sauver(request); } else if ("operationSupp.do".equals(selectedURL)) { OperationAction.detruire(request); } else if ("factureRes.do".equals(selectedURL)) { int nbFactures = FactureAction.rechercher(request); if (nbFactures == 1) { next = "/jsp/factures/facture.jsp"; } else if (nbFactures >= 0) { next = "/jsp/factures/resultat.jsp"; } // sinon échec de la recherche des factures } else if ("factureAnnulation.do".equals(selectedURL)) { if (FactureAction.ouvrir(request, false)) { next = "/jsp/factures/facture.jsp?action=annulation"; } } else if ("factureAnnuler.do".equals(selectedURL)) { FactureAction.annuler(request); } else if ("factureDuplicata.do".equals(selectedURL)) { if (FactureAction.ouvrir(request, true)) { next = "/jsp/factures/facture.jsp?action=duplicata"; } } else if ("factureDupliquer.do".equals(selectedURL)) { FactureAction.dupliquer(request); } else if ("factureVisu.do".equals(selectedURL)) { FactureAction.voir(request); next = "/jsp/factures/facture.jsp"; } else if ("factureRes.do".equals(selectedURL)) { int nbFactures = FactureAction.rechercher(request); if (nbFactures == 1) { next = "/jsp/factures/facture.jsp"; } else if (nbFactures >= 0) { next = "/jsp/factures/resultat.jsp"; } } else if ("factureFichiers.do".equals(selectedURL)) { FactureAction.getListeFichiersRecup(getServletContext(), request); next = "/jsp/fichiers/fichiers.jsp"; } else if ("factureTelecharge.do".equals(selectedURL)) { FactureAction.fichierTelecharge(getServletContext(), request, response); return; } else if ("factureFichiersGenerer.do".equals(selectedURL)) { next = "/jsp/fichiers/fichiersGenerer.jsp"; } else if ("factureTelechargeGenerer.do".equals(selectedURL)) { DownloadFichier.telechargeFichier(request, response); return; } else if ("factureAfficherFichier.do".equals(selectedURL)) { DownloadFichier.afficheFichier(request, response); next = "/jsp/fichiers/afficheFichier.jsp"; } else if ("donneesCspn.do".equals(selectedURL)){ next = "/jsp/fichiers/donneesCspn.jsp"; } else if ("telechargeDonneesCspn.do".equals(selectedURL)){ DownloadFichier.telechargeDonneesCspn(request, response); } else if ("message.do".equals(selectedURL)) { } else if ("libelles.do".equals(selectedURL)) { RechercheLibellesAction.perform(getServletContext(), request); next = "/jsp/libelles/recherche.jsp"; } else if ("libellesSel.do".equals(selectedURL)) { RechercheLibellesAction.charger(getServletContext(), request); next = "/jsp/libelles/recherche.jsp"; } else if ("codeComptNouveau.do".equals(selectedURL)) { next = "/jsp/referentiel/codescompt/codecompt.jsp"; } else if ("creerCodeCompt.do".equals(selectedURL)) { CodeComptable codeCompt = CodeComptableAction.creer(request); initCode(codeCompt); } else if ("suppCodeCompt.do".equals(selectedURL)) { CodeComptable codeCompt = CodeComptableAction.inactiver(request); initCode(codeCompt); } else if ("codeComptVoir.do".equals(selectedURL)) { CodeComptableAction.charger(request); next = "/jsp/referentiel/codescompt/codecompt_visu.jsp"; } else if ("codeComptRech.do".equals(selectedURL)) { next = "/jsp/referentiel/codescompt/recherche.jsp"; } else if ("codeComptRes.do".equals(selectedURL)) { if (CodeComptableAction.rechercher(request)) { // un seul résultat: afficher directement le code comptable next = "/jsp/referentiel/codescompt/codecompt_visu.jsp"; } else { next = "/jsp/referentiel/codescompt/resultat.jsp"; } } else if ("tva.do".equals(selectedURL)) { if (TvaAction.charger(getServletContext())) { next = "/jsp/referentiel/tva/tva_visu.jsp"; } else { next = "/jsp/referentiel/tva/tva.jsp"; } } else if ("tvaSauver.do".equals(selectedURL)) { TvaAction.sauver(getServletContext(), request); // relire et remettre les codes tva dans le contexte TreeMap listeCodesTva = getListeCodesTva(); getServletContext().setAttribute("codesTva", new TvaListe(listeCodesTva, true)); } else if ("tvaSupp.do".equals(selectedURL)) { TvaAction.inactiver(request); // enlever les codes tva du contexte getServletContext().removeAttribute("codesTva"); } else if ("iecNouveau.do".equals(selectedURL)) { next = "/jsp/referentiel/iec/iec.jsp"; } else if ("iecCreer.do".equals(selectedURL)) { IecAction.creer(request); initScfl(); } else if ("iecVisu.do".equals(selectedURL)) { if (IecAction.charger(request)) { next = "/jsp/referentiel/iec/iec_visu.jsp"; } } else if ("iecSupp.do".equals(selectedURL)) { IecAction.supprimer(request); initScfl(); } else if ("iecRech.do".equals(selectedURL)) { next = "/jsp/referentiel/iec/recherche.jsp"; } else if ("iecRes.do".equals(selectedURL)) { IecAction.rechercher(request); next = "/jsp/referentiel/iec/resultat.jsp"; } else if ("scflNouveau.do".equals(selectedURL)) { next = "/jsp/referentiel/scfl/scfl.jsp"; } else if ("scflCreer.do".equals(selectedURL)) { ScflAction.creer(request); initScfl(); } else if ("scflVisu.do".equals(selectedURL)) { ScflAction.charger(getServletContext(), request); next = "/jsp/referentiel/scfl/scfl_visu.jsp"; } else if ("scflRech.do".equals(selectedURL)) { next = "/jsp/referentiel/scfl/resultat.jsp"; } else if ("scflRes.do".equals(selectedURL)) { next = "/referentiel/scfl/resultat.jsp"; } else if ("scflSupp.do".equals(selectedURL)) { ScflAction.supprimer(request); initScfl(); } else if ("cspnVisu.do".equals(selectedURL)) { if (CspnAction.charger(request)) { next = "/jsp/referentiel/cspn/cspn.jsp"; } } else if ("cspnSauver.do".equals(selectedURL)) { CspnAction.sauver(request); } else if ("encours.do".equals(selectedURL)){ if (ListePrestation.Liste(request,response)) { next="/jsp/encours/listPrest.jsp"; } } } catch (Exception e) { log.debug("Erreur lors du routage vers la JSP : "); log.error(e); next = "/jsp/accueil/message.jsp"; } log.debug("-> Affichage de la page " + next); rd = request.getRequestDispatcher(next); rd.forward(request, response); } /** * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doProcess(request, response); } /** * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doProcess(request, response); } /** * @param fullURL url complète de la requête * @return la partie fichier de l'url, null si absente */ private String selectedUrl(String fullURL) { int lastPathSeparatorIndex = fullURL.lastIndexOf("/") + 1; return lastPathSeparatorIndex != -1 ? fullURL.substring(lastPathSeparatorIndex, fullURL.length()) : null; } /** Place les données statiques dans le contexte de l'application afin * qu'elles puissent être utilisées par tous les utilisateur sans nouvelle * interrogation de la base de données. Une ligne blanche est ajoutée dans * chaque liste afin * de laisser la possibilité à l'utilisateur de ne rien choisir. * @param config ServletConfig * @throws ServletException se */ private void initDonneesStatiques(ServletConfig config) throws ServletException { ServletContext contexte = config.getServletContext(); log.debug("Initialisation des données statiques"); //System.out.println("initialisation des données statiques"); // initialisation des propriétés de l'annuaire LDAP String nomFichierConfig = getServletContext().getRealPath(REPERTOIRE_CONFIG + config.getInitParameter("configFourmi")); log.debug("nom du fichier config: " + nomFichierConfig); FichierDeProprietes fichierConfig = new FichierDeProprietes(nomFichierConfig); contexte.setAttribute("configFourmi", fichierConfig); log.debug("le fichier de propriete est sauvé dans l'application"); // initialisation des données des SCFL initScfl(); // Identifiants/Libelles des natures TreeMap idLibNatures = getListeIdLibelleNatures(); contexte.setAttribute("idLibelleNatures", idLibNatures); // Codes TVA TreeMap listeCodesTva = getListeCodesTva(); contexte.setAttribute("codesTva", new TvaListe(listeCodesTva, true)); // Conditions TreeMap conditions = getListeConditions(); contexte.setAttribute("conditions", conditions); // Libellés initLibelles(); // catégories initCategories(); // codes remise initCodesRemise(); // types codes comptables TreeMap typesCodesComptables = getListeTypesCodesComptables(); contexte.setAttribute("typesCodesComptables", typesCodesComptables); // map des IEC TreeMap mapIec = getMapIec(); contexte.setAttribute("mapIec", mapIec); log.debug("Initialisation de la servlet OK"); } /** * Récupère la liste des codes clients * @return Codes clients (clé=numero client, valeur=nom) * @throws ServletException se */ private TreeMap getMapIec() throws ServletException { TreeMap mapIec = null; try { IECBd iecBd = new IECBd(); mapIec = iecBd.getMapIec(); } catch (PoolDeConnexionException e) { log.error("Echec de la lecture des IEC: " + e.getMessage()); throw new ServletException("Echec de la lecture des IEC", e); } catch (SQLException e) { log.error("Echec de la lecture des IEC: " + e.getMessage()); throw new ServletException("Echec de la lecture des IEC", e); } catch (ClassNotFoundException e) { log.error("Echec de la lecture des IEC: " + e.getMessage()); throw new ServletException("Echec de la lecture des IEC", e); } catch (InstantiationException e) { log.error("Echec de la lecture des IEC: " + e.getMessage()); throw new ServletException("Echec de la lecture des IEC", e); } catch (IllegalAccessException e) { log.error("Echec de la lecture des IEC: " + e.getMessage()); throw new ServletException("Echec de la lecture des IEC", e); } catch (IOException e) { log.error("Echec de la lecture des IEC: " + e.getMessage()); throw new ServletException("Echec de la lecture des IEC", e); } return mapIec; } /** * Récupère la liste des codes clients * @return Codes clients (clé=numero client, valeur=nom) * @throws ServletException se */ private TreeMap getListeCodesCli() throws ServletException { TreeMap codesCli = null; try { ClientBd client = new ClientBd(); codesCli = client.getListeCodeCli(); } catch (PoolDeConnexionException e) { log.error("Echec de la lecture des codes clients: " + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (SQLException e) { log.error("Echec de la lecture des codes clients: " + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (ClassNotFoundException e) { log.error("Echec de la lecture des codes clients: " + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (InstantiationException e) { log.error("Echec de la lecture des codes clients: " + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (IllegalAccessException e) { log.error("Echec de la lecture des codes clients: " + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (IOException e) { log.error("Echec de la lecture des codes clients: " + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } return codesCli; } /** * Récupère les entites facturantes * @param listeScfl TreeMap * @return Entites facturantes (clé=libelle, valeur=libelle) * @throws ServletException se */ private TreeMap getListeEntitesFacturantes(TreeMap listeScfl) throws ServletException { TreeMap entites = new TreeMap(); try { // Pour chaque SCFL, Iterator cles = listeScfl.keySet().iterator(); while (cles.hasNext()) { String id = (String) cles.next(); Scfl scfl = (Scfl) listeScfl.get(id); IECBd iec = new IECBd(); // récupérer les entités du SCFL TreeMap entitesDuScfl = iec.getListeEntitesFacturantes(scfl.getIdentifiant()); // ajouter une ligne vide pour la sélection par défaut entitesDuScfl.put("", ""); // mettre le TreeMap des entités par identifiant SCFL entites.put(scfl.getIdentifiant(), entitesDuScfl); } } catch (PoolDeConnexionException e) { log.error("Echec de la lecture des codes clients" + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (SQLException e) { log.error("Echec de la lecture des codes clients" + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (ClassNotFoundException e) { log.error("Echec de la lecture des codes clients" + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (InstantiationException e) { log.error("Echec de la lecture des codes clients" + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (IllegalAccessException e) { log.error("Echec de la lecture des codes clients" + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } catch (IOException e) { log.error("Echec de la lecture des codes clients" + e.getMessage()); throw new ServletException("Echec de la lecture des codes clients", e); } return entites; } /** * Récupère les natures de prestation * @param entites TreeMap * @return Natures de prestation (clé=identifiant, valeur=libelle) * @throws ServletException se */ private TreeMap getListeNaturesPrestation(TreeMap entites) throws ServletException { TreeMap natures = null; try { IECBd iec = new IECBd(); natures = iec.getListeNatures(entites); } catch (PoolDeConnexionException e) { log.error("Echec de la lecture des natures de prestation" + e.getMessage()); throw new ServletException("Echec de la lecture des natures de prestation", e); } catch (SQLException e) { log.error("Echec de la lecture des natures de prestation" + e.getMessage()); throw new ServletException("Echec de la lecture des natures de prestation", e); } catch (ClassNotFoundException e) { log.error("Echec de la lecture des natures de prestation" + e.getMessage()); throw new ServletException("Echec de la lecture des natures de prestation", e); } catch (InstantiationException e) { log.error("Echec de la lecture des natures de prestation" + e.getMessage()); throw new ServletException("Echec de la lecture des natures de prestation", e); } catch (IllegalAccessException e) { log.error("Echec de la lecture des natures de prestation" + e.getMessage()); throw new ServletException("Echec de la lecture des natures de prestation", e); } catch (IOException e) { log.error("Echec de la lecture des natures de prestation" + e.getMessage()); throw new ServletException("Echec de la lecture des natures de prestation", e); } return natures; } /** * Récupère les codes Tva * @return Codes Tva (clé=identifiant code tva, valeur=valeur affichée) * @throws ServletException se */ private TreeMap getListeCodesTva() throws ServletException { TreeMap codesTva = null; try { TvaBd tva = new TvaBd(); codesTva = tva.getListe(); } catch (PoolDeConnexionException e) { log.error("Echec de la lecture des codes TVA" + e.getMessage()); throw new ServletException("Echec de la lecture des codes TVA", e); } catch (SQLException e) { log.error("Echec de la lecture des codes TVA" + e.getMessage()); throw new ServletException("Echec de la lecture des codes TVA", e); } catch (ClassNotFoundException e) { log.error("Echec de la lecture des codes TVA" + e.getMessage()); throw new ServletException("Echec de la lecture des codes TVA", e); } catch (InstantiationException e) { log.error("Echec de la lecture des codes TVA" + e.getMessage()); throw new ServletException("Echec de la lecture des codes TVA", e); } catch (IllegalAccessException e) { log.error("Echec de la lecture des codes TVA" + e.getMessage()); throw new ServletException("Echec de la lecture des codes TVA", e); } catch (IOException e) { log.error("Echec de la lecture des codes TVA" + e.getMessage()); throw new ServletException("Echec de la lecture des codes TVA", e); } return codesTva; } /** * Retourne la liste des libelles * @return Libelles (clé=identifiant du libelle, valeur=libellé affiché) * @throws ServletException se */ private TreeMap getListeLibelles() throws ServletException { TreeMap libelles = null; try { CodeComptableOperationBd codeComptaOpe = new CodeComptableOperationBd(); libelles = codeComptaOpe.getListeLibelles(); } catch (PoolDeConnexionException e) { log.error("Echec de la lecture des codes libelles" + e.getMessage()); throw new ServletException("Echec de la lecture des libelles", e); } catch (SQLException e) { log.error("Echec de la lecture des codes libelles" + e.getMessage()); throw new ServletException("Echec de la lecture des libelles", e); } catch (ClassNotFoundException e) { log.error("Echec de la lecture des codes libelles" + e.getMessage()); throw new ServletException("Echec de la lecture des libelles", e); } catch (InstantiationException e) { log.error("Echec de la lecture des codes libelles" + e.getMessage()); throw new ServletException("Echec de la lecture des libelles", e); } catch (IllegalAccessException e) { log.error("Echec de la lecture des codes libelles" + e.getMessage()); throw new ServletException("Echec de la lecture des libelles", e); } catch (IOException e) { log.error("Echec de la lecture des codes libelles" + e.getMessage()); throw new ServletException("Echec de la lecture des libelles", e); } return libelles; } /** * @return TreeMap * @throws ServletException se */ private TreeMap getListeScfl() throws ServletException { TreeMap liste = null; try { ScflBd scfl = new ScflBd(); liste = scfl.getListe(); } catch (PoolDeConnexionException e) { log.error("Echec durant la lecture des Scfl"); log.error("Exception recue lors du premier accès à la base de données: " + e.getMessage()); log.error("ECHEC de l'initialisation de la servlet !! "); throw new ServletException("Echec de l'initialisation de la servlet", e); } catch (SQLException e) { log.error("Echec durant la lecture des Scfl"); log.error("Exception recue lors du premier accès à la base de données: " + e.getMessage()); log.error("ECHEC de l'initialisation de la servlet !! "); throw new ServletException("Echec de l'initialisation de la servlet", e); } catch (ClassNotFoundException e) { log.error("Echec durant la lecture des Scfl"); log.error("Exception recue lors du premier accès à la base de données: " + e.getMessage()); log.error("ECHEC de l'initialisation de la servlet !! "); throw new ServletException("Echec de l'initialisation de la servlet", e); } catch (InstantiationException e) { log.error("Echec durant la lecture des Scfl"); log.error("Exception recue lors du premier accès à la base de données: " + e.getMessage()); log.error("ECHEC de l'initialisation de la servlet !! "); throw new ServletException("Echec de l'initialisation de la servlet", e); } catch (IllegalAccessException e) { log.error("Echec durant la lecture des Scfl"); log.error("Exception recue lors du premier accès à la base de données: " + e.getMessage()); log.error("ECHEC de l'initialisation de la servlet !! "); throw new ServletException("Echec de l'initialisation de la servlet", e); } catch (IOException e) { log.error("Echec durant la lecture des Scfl"); log.error("Exception recue lors du premier accès à la base de données: " + e.getMessage()); log.error("ECHEC de l'initialisation de la servlet !! "); throw new ServletException("Echec de l'initialisation de la servlet", e); } return liste; } /** * @return TreeMap */ private TreeMap getListeConditions() { TreeMap conditions = new TreeMap(); conditions.put(PRELEVEMENT_BANCAIRE, PRELEVEMENT_BANCAIRE); conditions.put(PRELEVEMENT_POSTAL, PRELEVEMENT_POSTAL); conditions.put(PRELEVEMENT_DIRECT, PRELEVEMENT_DIRECT); conditions.put("", ""); return conditions; } /** * @return TreeMap * @throws ServletException se */ private TreeMap getListeCodesRemise() throws ServletException { TreeMap codesRemise = null; try { CodeComptableRemiseBd codeComptableRemise = new CodeComptableRemiseBd(); codesRemise = codeComptableRemise.getMap(); } catch (PoolDeConnexionException e) { log.error("Echec de la lecture des codes comptables des remises" + e.getMessage()); throw new ServletException("Echec de la lecture des codes comptables des remises", e); } catch (SQLException e) { log.error("Echec de la lecture des codes comptables des remises" + e.getMessage()); throw new ServletException("Echec de la lecture des codes comptables des remises", e); } catch (ClassNotFoundException e) { log.error("Echec de la lecture des codes comptables des remises" + e.getMessage()); throw new ServletException("Echec de la lecture des codes comptables des remises", e); } catch (InstantiationException e) { log.error("Echec de la lecture des codes comptables des remises" + e.getMessage()); throw new ServletException("Echec de la lecture des codes comptables des remises", e); } catch (IllegalAccessException e) { log.error("Echec de la lecture des codes comptables des remises" + e.getMessage()); throw new ServletException("Echec de la lecture des codes comptables des remises", e); } catch (IOException e) { log.error("Echec de la lecture des codes comptables des remises" + e.getMessage()); throw new ServletException("Echec de la lecture des codes comptables des remises", e); } return codesRemise; } /** * @return TreeMap */ private TreeMap getListeTypesCodesComptables() { TreeMap types = new TreeMap(); types.put(CODE_COMPTABLE_OPERATION, "Opération"); types.put(CODE_COMPTABLE_REMISE, "Remise"); types.put(CODE_COMPTABLE_CLIENT, "Client"); types.put("", ""); return types; } /** * @return TreeMap * @throws ServletException se */ private TreeMap getListeIdLibelleNatures() throws ServletException { TreeMap idLibNatures = null; try { IECBd iec = new IECBd(); idLibNatures = iec.getListeNatures(); idLibNatures.put("", ""); } catch (PoolDeConnexionException e) { log.error("Echec de la lecture des codes natures IEC" + e.getMessage()); throw new ServletException("Echec de la lecture des natures IEC", e); } catch (SQLException e) { log.error("Echec de la lecture des codes natures IEC" + e.getMessage()); throw new ServletException("Echec de la lecture des natures IEC", e); } catch (ClassNotFoundException e) { log.error("Echec de la lecture des codes natures IEC" + e.getMessage()); throw new ServletException("Echec de la lecture des natures IEC", e); } catch (InstantiationException e) { log.error("Echec de la lecture des codes natures IEC" + e.getMessage()); throw new ServletException("Echec de la lecture des natures IEC", e); } catch (IllegalAccessException e) { log.error("Echec de la lecture des codes natures IEC" + e.getMessage()); throw new ServletException("Echec de la lecture des natures IEC", e); } catch (IOException e) { log.error("Echec de la lecture des codes natures IEC" + e.getMessage()); throw new ServletException("Echec de la lecture des natures IEC", e); } return idLibNatures; } /** * @param listeScfl TreeMap * @return TreeMap */ private TreeMap getListeIdLibelleScfl(TreeMap listeScfl) { TreeMap idLibScfl = new TreeMap(); Iterator idScfls = listeScfl.keySet().iterator(); while (idScfls.hasNext()) { String identifiant = (String) idScfls.next(); if (!identifiant.equals("")) { Scfl scfl = (Scfl) listeScfl.get(identifiant); idLibScfl.put(identifiant, scfl.getLibelle()); } } idLibScfl.put("", ""); return idLibScfl; } /** * Lecture des SCFL et des entités facturantes et natures de facturation * associées. * @throws ServletException se */ private void initScfl() throws ServletException { // proprietes de la connexion log.debug("Lecture des propriétés de la connexion"); FichierDeProprietes propConnexion = new FichierDeProprietes(getServletContext().getRealPath( REPERTOIRE_CONFIG + "PoolDeConnexion.prop")); log.debug("DB_URL: " + propConnexion.getPropriete("DB_URL")); log.debug("DRIVER: " + propConnexion.getPropriete("DRIVER")); log.debug("LOGIN: " + propConnexion.getPropriete("LOGIN")); log.debug("PASSWORD: " + propConnexion.getPropriete("PASSWORD")); log.debug("Relecture des données relatives aux SCFL"); // dictionnaire des scfl TreeMap listeScfl = getListeScfl(); getServletContext().setAttribute("listeScfl", listeScfl); // identifiants-libelles des scfl TreeMap idLibScfl = getListeIdLibelleScfl(listeScfl); getServletContext().setAttribute("idLibelleScfl", idLibScfl); // Entités Facturantes TreeMap entites = getListeEntitesFacturantes(listeScfl); getServletContext().setAttribute("entitesFacturantes", entites); // Natures par entite facturante TreeMap natures = getListeNaturesPrestation(entites); getServletContext().setAttribute("natures", natures); log.debug("Fin de la lecture des données relatives aux SCFL"); } /** * Lecture des categories clients * @throws ServletException se */ public void initCategories() throws ServletException { log.debug("Lecture des categories client"); TreeMap codesCli = getListeCodesCli(); getServletContext().setAttribute("categories", codesCli); } /** * @throws ServletException se */ public void initLibelles() throws ServletException { log.debug("Lecture des libelles"); TreeMap libelles = getListeLibelles(); getServletContext().setAttribute("libelles", new Libelles(libelles, true)); } /** * @throws ServletException se */ public void initCodesRemise() throws ServletException { log.debug("Lecture des codes remise"); TreeMap codesRemise = getListeCodesRemise(); getServletContext().setAttribute("codesRemises", codesRemise); } /** * Initialise les codes comptables client, remise ou opération * lors de la modification d'un code comptable * @param codeCompt CodeComptable * @throws ServletException se */ void initCode(CodeComptable codeCompt) throws ServletException { if (codeCompt.isTypeClient()) { // nouveau code comptable client, relire les categories client initCategories(); } else if (codeCompt.isTypeRemise()) { initCodesRemise(); } else if (codeCompt.isTypeOperation()) { initLibelles(); } } }