-1

I'm trying to develop a function that return a string if the result is successful or not

here is my function :

 public String addAssistanceRecord(Date dateCreation, BigDecimal dureeAssistance, String etatAssistance,
                  String idAssistance, String ingAff, String ouvertPar, String sujetAss, String dep,String client,String idContrat) {


        Assistance assistance = new Assistance();
        assistance.setClient(client);
        assistance.setDateCreation(dateCreation);
        assistance.setDep(dep);
        assistance.setDureeAssistance(dureeAssistance);
        assistance.setIngAff(ingAff);
        assistance.setOuvertPar(ouvertPar);
        assistance.setSujetAss(sujetAss);
        assistance.setIdAssistance(idAssistance);
        assistance.setEtatAssistance(etatAssistance);


        //setting the contratid explicitly
          Contrat contrat = new Contrat();
             contrat.setIdContrat(idContrat);
                 assistance.setContrat(contrat);

       //persist the assistance object data to ASS table


                      Contrat con1 =assistance.getContrat();
                      String idCon= con1.getIdContrat();
                    //  System.out.println("id contrat "+ idCon);


     Query query =
         em.createQuery("SELECT a from Contrat a where a.idContrat =:id");

     query.setParameter("id", idCon);
     Contrat con2 = (Contrat) query.getSingleResult();
     em.persist(assistance);

    // System.out.println("id contrat 2 "+ con2.getIdContrat());
     //System.out.println("nb jr contrat 2 "+ con2.getNbJours());

     BigDecimal nbJours = con2.getNbJours();
     BigDecimal sldj =con2.getSoldeJours();
     int monSolde;
     if(sldj==null){

         monSolde =0;
     }
     else {
              monSolde=(con2.getSoldeJours()).intValueExact(); 
         }


       int monAssistance= (assistance.getDureeAssistance()).intValueExact();
       System.out.println("mon Solde est "+monSolde);
     System.out.println("ma durée est "+monAssistance);  

     if((monSolde - monAssistance > 0) ){
             if(monSolde==0){
         nbJours = nbJours.subtract(assistance.getDureeAssistance());

          con2.setSoldeJours(nbJours);
                 em.merge(con2);
               return "success";

     }
             else{
             nbJours = sldj.subtract(assistance.getDureeAssistance());

              con2.setSoldeJours(nbJours);
                     em.merge(con2);
               return "success";

     }



     }
     else {
             return "daddaaa";
         }

 }

here the condition where i compare ((monSolde - monAssistance > 0) )

and here my function in the my managed bean

public String Verification() {
        oracle.binding.BindingContainer bindings = getBindings();
        OperationBinding operationBinding = bindings.getOperationBinding("addAssistanceRecord");
       Object result = operationBinding.getResult();
      System.out.println("## Result = " + result);
         if (result == "success") {
            String messageText = "Votre Consommation du contrat est ajouté avec succès";
            FacesMessage fm = new FacesMessage(messageText);


            fm.setSeverity(FacesMessage.SEVERITY_FATAL);
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, fm);
            return null;

        } 
        else 
        {
            String messageText = "Impossible d'ajouter cette consommation: la durée d'assistance est inférieure  a celle du contrat choisi";
            FacesMessage fm = new FacesMessage(messageText);


            fm.setSeverity(FacesMessage.SEVERITY_FATAL);
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, fm);
            return null;

        }


    }

when i excute my function it do correctly all the work but the function (Verification)always return null

divibisan
  • 11,659
  • 11
  • 40
  • 58
user3419507
  • 117
  • 1
  • 4
  • 16
  • 1
    Not only this is a duplicate, but you have `if (something) { .. return null; } else { return null; }`. Think about why your method returns `null` then. :) – Konstantin Yovkov Feb 23 '16 at 09:14

2 Answers2

1

You have always null because you have always return null;.Try to use:

   `retrun result;` instead of `return null;` .

Try to replace this:

  if (result == "success") {

With using equals instead of ==:

 if ("success".equals(result)) {
Abdelhak
  • 8,299
  • 4
  • 22
  • 36
0

When you compare two Strings you need to use the equals() function and not the == operator because the == check if the two objects are pointing to the same place in memory, the equals() function instead is overridable and when comparing two strings check if the values are the same.

aleb2000
  • 452
  • 4
  • 10