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 be.fgov.minfin.webForm.backing; import be.fgov.minfin.ccff.fwk.logging.api.Logger; import be.fgov.minfin.ccff.fwk.logging.api.LoggerFactory; import be.fgov.minfin.ccff.fwk.mail.api.exceptions.MailException; import be.fgov.minfin.webForm.entity.Email; import be.fgov.minfin.webForm.entity.Sujet; import be.fgov.minfin.webForm.util.ComStructUtil; import be.fgov.minfin.webForm.util.ISINValidationUtil; import be.fgov.minfin.webForm.util.MailHelper; import be.fgov.minfin.webForm.util.Partie; import be.fgov.minfin.webForm.util.SitranBCEUtil; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import java.util.regex.Pattern; import javax.annotation.PostConstruct; import javax.faces.application.Application; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.ValidatorException; import org.apache.commons.validator.routines.checkdigit.CheckDigitException; import org.apache.commons.validator.routines.checkdigit.IBANCheckDigit; import org.primefaces.context.RequestContext; /** * * @author gbeurnea */ @ManagedBean(name = "deposInvoCdcBean") @ViewScoped public class DeposInvoCdcBean extends WebFormBean implements Serializable { private static final Logger logger = LoggerFactory.getLogger(DeposInvoCdcBean.class); private boolean visibleConfirm = false; private boolean mailEnvoye = false; private String montantTotal = "0"; private String numCompte; private String nomCompte; private List<Partie> partiesActions; private List<Partie> partiesCoupons; private Partie partieSociete = new Partie(); @ManagedProperty(value = "#{authentificationCdcBean}") private AuthentificationCdcBean authentificationCdcBean; @PostConstruct public void init() { selectedDocType = "CDC9"; this.initialize(); partiesActions = new ArrayList<Partie>(); Partie partieActionA = new Partie(); partieActionA.setTypePartie("action"); Partie partieActionB = new Partie(); partieActionB.setTypePartie("action"); partiesActions.add(partieActionA); partiesActions.add(partieActionB); partiesCoupons = new ArrayList<Partie>(); Partie partieCouponA = new Partie(); partieCouponA.setTypePartie("coupon"); Partie partieCouponB = new Partie(); partieCouponB.setTypePartie("coupon"); partiesCoupons.add(partieCouponA); partiesCoupons.add(partieCouponB); if (authentificationCdcBean.getNom() != null) { nomCompte = authentificationCdcBean.getNom(); } else { nomCompte = authentificationCdcBean.getNomSociete(); } } /* Vrifie si le code ISIN est correcte */ public void checkISIN(FacesContext context, UIComponent component, Object value) throws ValidatorException { Application app = FacesContext.getCurrentInstance().getApplication(); ResourceBundle bundle = app.getResourceBundle(FacesContext.getCurrentInstance(), "CdcMessages"); ISINValidationUtil isinValidation = new ISINValidationUtil(); String code = (String) value; try { int modulus = isinValidation.calculcateModulus(code, true); if (modulus != 0) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, bundle.getString("deposInvo.titre.code.valid"), "")); } } catch (CheckDigitException e) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, bundle.getString("deposInvo.titre.code.valid"), "")); } } public void chercheSociete() throws IOException { String numBCEFinal = partieSociete.getBce().replaceAll("\\.", "").trim(); SitranBCEUtil sitran = new SitranBCEUtil(numBCEFinal); partieSociete.setNomSociete(sitran.getNomSociete()); partieSociete.setRue(sitran.getRue()); partieSociete.setNumrue(sitran.getNumrue()); partieSociete.setCodepostal(sitran.getCodepostal()); partieSociete.setVille(sitran.getVille()); partieSociete.setPays(sitran.getPays()); } /* Ajout d'une partie supplmentaire l'arraylist */ public void ajoutColonneAction() { Partie partie = new Partie(); partie.setTypePartie("action"); partiesActions.add(partie); } /* Ajout d'une partie supplmentaire l'arraylist */ public void ajoutColonneCoupon() { Partie partie = new Partie(); partie.setTypePartie("coupon"); partiesCoupons.add(partie); } /* Retourne la lettre alphabtique correspondant au numro entier */ public String getCharForNumber(int i) { return i > 0 && i < 27 ? String.valueOf((char) (i + 64)) : null; } /* Vrifie si le comte bancaire est correcte */ public void checkDigit(FacesContext context, UIComponent component, Object value) throws ValidatorException { Application app = FacesContext.getCurrentInstance().getApplication(); ResourceBundle bundle = app.getResourceBundle(FacesContext.getCurrentInstance(), "CdcMessages"); IBANCheckDigit ibancheck = new IBANCheckDigit(); String numComptAValider = (String) value; if (ibancheck.isValid(numComptAValider) == false) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, bundle.getString("deposInvo.numcompte.error"), "")); } } public void calculMontantTotal() { double montantEnDouble = 0; for (int i = 0; i < partiesActions.size(); i++) { if (partiesActions.get(i).getMontant() != null && partiesActions.get(i).getNb() != null) { String montant = partiesActions.get(i).getMontant().replaceAll(",", "."); double somme = Double.valueOf(montant) * Double.valueOf(partiesActions.get(i).getNb()); montantEnDouble = montantEnDouble + somme; } } for (int i = 0; i < partiesCoupons.size(); i++) { if (partiesCoupons.get(i).getMontant() != null && partiesCoupons.get(i).getNb() != null) { String montant = partiesCoupons.get(i).getMontant().replaceAll(",", "."); double somme = Double.valueOf(montant) * Double.valueOf(partiesCoupons.get(i).getNb()); montantEnDouble = montantEnDouble + somme; } } montantTotal = String.valueOf(montantEnDouble); } /* Rcupre la communication structure */ public String getCommStruct() { ComStructUtil comStruct = new ComStructUtil("188022", super.webFormManager.getSequenceCdc()); return comStruct.getCommStruct(); } /* Envoi un e-mail */ public void sendEmail() { Application app = FacesContext.getCurrentInstance().getApplication(); ResourceBundle bundle = app.getResourceBundle(FacesContext.getCurrentInstance(), "CdcMessages"); String bodyEmail = null; Sujet sujet = new Sujet(); sujet.setIdSujet(258); sujet = this.webFormManager.findSujetById(sujet); if (sujet != null) { String language = this.getLanguage(); StringBuilder messageEmail = new StringBuilder(); MailHelper mailhelper = new MailHelper(); //Ajoute la communication structure au mail messageEmail.append("Donnes communiques pour l'ouverture du dossier :\n"); //Ajoute la partie authentification au message String idenf = mailhelper.getCorpsIdenf(this.authentificationCdcBean); messageEmail.append(idenf); // Formulaire deposInvoout !!!!! messageEmail.append( "\n###################### Type de dossier : Depossession involontaire de titres #####################") .append("\nIdentification de la socit laquelle les titres se rapportent :") .append("\nNationalit : ").append(partieSociete.getNationalite()) .append("\nNom de l'entreprise : ").append(partieSociete.getNomSociete()).append("\nRue : ") .append(partieSociete.getRue()).append("\nNumro de rue : ").append(partieSociete.getNumrue()) .append("\nCode postal : ").append(partieSociete.getCodepostal()).append("\nVille : ") .append(partieSociete.getVille()).append("\nPays : ").append(partieSociete.getPays() + "\n"); messageEmail.append("\nRpartition du montant verser la Caisse des Dpts et Consignations"); // Pour chaque Action for (int i = 0; i < partiesActions.size(); i++) { messageEmail.append("\n-- Type d'action " + (i + 1) + " --").append("\nCode Isin : ") .append(partiesActions.get(i).getCode()).append("\nNombre d'actions : ") .append(partiesActions.get(i).getNb()).append("\nMontant par action : ") .append(partiesActions.get(i).getMontant()).append("\nCoupon attach l'action : ") .append(partiesActions.get(i).getNumcoupon()); } // Pour chaque coupon for (int i = 0; i < partiesCoupons.size(); i++) { messageEmail.append("\n-- Coupon " + (i + 1) + " --").append("\nNombre de coupons : ") .append(partiesCoupons.get(i).getNb()) .append("\nValeur du coupon nette de prcompte mobilier : ") .append(partiesCoupons.get(i).getMontant()); } messageEmail.append("\n\nMontant total verser la Caisse des Dpts et Consignations : ") .append(montantTotal + " EUR").append("\nNumro de compte de versement : ").append(numCompte) .append("\nNom du titulaire du compte : ").append(nomCompte); List emailList = sujet.getEmailList(); if (emailList != null) { for (int i = 0; i < emailList.size(); i++) { Email emailTmp = (Email) emailList.get(i); String emailTo = this.webFormUtil.getPropertyValue((Object) emailTmp, "email", language); emailTmp.setEmail(emailTo); bodyEmail = "Nouvelle demande d'ouverture d'un dossier depossession involontaire de titres"; try { if (authentificationCdcBean.getMail2() != null) { this.webFormUtil.sendMail(emailTmp.getEmail(), bodyEmail, messageEmail.toString(), this.authentificationCdcBean.getMail2(), super.attachments); } else { this.webFormUtil.sendMail(emailTmp.getEmail(), bodyEmail, messageEmail.toString(), this.authentificationCdcBean.getMail(), super.attachments); } this.mailEnvoye = true; } catch (MailException e) { this.sousStatus = "email"; logger.error("Erreur dans la mthode sendMail"); FacesMessage msg = new FacesMessage(bundle.getString("deposInvo.mail.error")); FacesContext.getCurrentInstance().addMessage(null, msg); } } // Si le mail est envoy la CDC, on envoi au client ! if (mailEnvoye == true) { StringBuilder messageClient = new StringBuilder(); messageClient.append(mailhelper.getCorpsClientIdenf(authentificationCdcBean)); messageClient .append("\n###################### " + bundle.getString("deposInvo.mail.titre") + " #####################") .append("\n" + bundle.getString("deposInvo.panelun") + " : ") .append("\n" + bundle.getString("deposInvo.panelvalid.nationalite") + " ") .append(partieSociete.getNationalite()) .append("\n" + bundle.getString("deposInvo.nomsoc") + " : ") .append(partieSociete.getNomSociete()) .append("\n" + bundle.getString("deposInvo.rue") + " : ").append(partieSociete.getRue()) .append("\n" + bundle.getString("deposInvo.numrue") + " : ") .append(partieSociete.getNumrue()) .append("\n" + bundle.getString("deposInvo.codepostal") + " : ") .append(partieSociete.getCodepostal()) .append("\n" + bundle.getString("deposInvo.ville") + " : ") .append(partieSociete.getVille()) .append("\n" + bundle.getString("deposInvo.pays") + " : ") .append(partieSociete.getPays() + "\n"); messageClient.append("\n" + bundle.getString("deposInvo.paneldeux") + " : "); // Pour chaque Action for (int i = 0; i < partiesActions.size(); i++) { messageClient .append("\n-- " + bundle.getString("deposInvo.typeaction") + " " + (i + 1 + " --")) .append("\n" + bundle.getString("deposInvo.isin") + " : ") .append(partiesActions.get(i).getCode()) .append("\n" + bundle.getString("deposInvo.nbaction") + " : ") .append(partiesActions.get(i).getNb()) .append("\n" + bundle.getString("deposInvo.montant") + " : ") .append(partiesActions.get(i).getMontant()) .append("\n" + bundle.getString("deposInvo.couponattach") + " : ") .append(partiesActions.get(i).getNumcoupon()); } // Pour chaque coupon for (int i = 0; i < partiesCoupons.size(); i++) { messageClient.append("\n-- " + bundle.getString("deposInvo.coupon") + " " + (i + 1) + " --") .append("\n" + bundle.getString("deposInvo.nbcoupons") + " : ") .append(partiesCoupons.get(i).getNb()) .append("\n" + bundle.getString("deposInvo.montantcoupon") + " : ") .append(partiesCoupons.get(i).getMontant()); } messageClient.append("\n\n" + bundle.getString("deposInvo.montanttotal") + " : ") .append(montantTotal + " EUR") .append("\n" + bundle.getString("deposInvo.numcompte.label") + " : ").append(numCompte) .append("\n" + bundle.getString("deposInvo.nomcompte.label") + " : ").append(nomCompte); bodyEmail = bundle.getString("deposInvo.mail.body"); try { if (authentificationCdcBean.getMail2() != null) { this.webFormUtil.sendMail(this.authentificationCdcBean.getMail2(), bodyEmail, messageClient.toString(), "depots.tresorerie@minfin.fed.be"); } else { this.webFormUtil.sendMail(this.authentificationCdcBean.getMail(), bodyEmail, messageClient.toString(), "depots.tresorerie@minfin.fed.be"); } FacesMessage msg = new FacesMessage(bundle.getString("deposInvo.validfinal")); FacesContext.getCurrentInstance().addMessage(null, msg); RequestContext.getCurrentInstance().execute("window.scrollTo(0,0);"); FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); } catch (MailException e) { this.sousStatus = "email"; logger.error("Erreur dans la mthode sendMail"); FacesMessage msg = new FacesMessage(bundle.getString("deposInvo.mail.error")); FacesContext.getCurrentInstance().addMessage(null, msg); } } } else { logger.error("emailList = null ******************"); FacesMessage msg = new FacesMessage(bundle.getString("deposInvo.mail.error")); FacesContext.getCurrentInstance().addMessage(null, msg); } } else { logger.error("emailList = null ******************"); FacesMessage msg = new FacesMessage(bundle.getString("deposInvo.mail.error")); FacesContext.getCurrentInstance().addMessage(null, msg); } } /* Affiche la page de confirmation */ public void afficheConfirm() { this.visibleConfirm = !this.visibleConfirm; } public AuthentificationCdcBean getAuthentificationCdcBean() { return authentificationCdcBean; } public void setAuthentificationCdcBean(AuthentificationCdcBean authentificationCdcBean) { this.authentificationCdcBean = authentificationCdcBean; } public boolean isVisibleConfirm() { return visibleConfirm; } public void setVisibleConfirm(boolean visibleConfirm) { this.visibleConfirm = visibleConfirm; } public List<Partie> getPartiesActions() { return partiesActions; } public void setPartiesActions(List<Partie> partiesActions) { this.partiesActions = partiesActions; } public List<Partie> getPartiesCoupons() { return partiesCoupons; } public void setPartiesCoupons(List<Partie> partiesCoupons) { this.partiesCoupons = partiesCoupons; } public Partie getPartieSociete() { return partieSociete; } public void setPartieSociete(Partie partieSociete) { this.partieSociete = partieSociete; } public String getMontantTotal() { return montantTotal; } public void setMontantTotal(String montantTotal) { this.montantTotal = montantTotal; } public String getNumCompte() { return numCompte; } public void setNumCompte(String numCompte) { this.numCompte = numCompte; } public String getNomCompte() { return nomCompte; } public void setNomCompte(String nomCompte) { this.nomCompte = nomCompte; } public boolean isMailEnvoye() { return mailEnvoye; } public void setMailEnvoye(boolean mailEnvoye) { this.mailEnvoye = mailEnvoye; } }