Kane Samba
Kane Samba

Reputation: 279

How to Delete and Modify Datas using Struts2 and Hibernate

I created a jsp page that shows me the list of doctors (medecin in french) contained in my mysql database via the hibernate framework and struts2 .

I have a delete button supprimer (in french), to remove a doctor, and a button , modifier , to edit the doctor's data .

The edit button , modifier , will take all the datas (id , nom , prenom etc..) of the selectionned doctor and put it in a form so i can update it .

ListMed action give me this . enter image description here

ListedesMedecins.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sb" uri="/struts-bootstrap-tags"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Listes des Medecins</title>
</head>
<body>
    <jsp:include page="accueil.jsp"/>
    <h1>Listes des Medecins</h1>
         <s:if test="Medecin.size() > 0">
<table border="1px" cellpadding="8px">
<tr>
    <th>id</th>
    <th>Nom</th>
    <th>Prenom</th>
            <th>contact</th>
    <th>specialite</th>

</tr>
<s:iterator value="Medecin">
    <tr>
        <td><s:property value="idmed" /></td>
        <td><s:property value="nom" /></td>
        <td><s:property value="prenom" /></td>
                    <td><s:property value="contact" /></td>
        <td><s:property value="specialite"/></td>
                    <td><a href="<s:url action="Modmed" namespace="/Modmed"/>"> Modifier </a>  </td>
                    <td><a href="<s:url action="Supmed" namespace="/Supmed"/>"> Supprimer </a>  </td>
    </tr>
</s:iterator>
</s:if>
</table>
</body>
</html>

my class MedecinDAO with the required method (select , update , delete , list)

public Medecin getMedecin(Integer idMedecin) {
    log.info("********** Debut getMedecin MedecinDAO **********");
    Medecin Medecin = null;
    Session session = SessionFactoryUtil.getInstance().openSession();
    try {
        Medecin = (Medecin) session.get(Medecin.class, idMedecin);

        return Medecin;
    } catch (Exception e) {
        e.printStackTrace();
        log.fatal(e.getMessage());
        return null;
    } finally {
        session.close();
        log.info("********** Fin getMedecin MedecinDAO **********");
    }
}

public boolean saveMedecin(Medecin Medecin) {
    log.info("********** Debut saveMedecin MedecinDAO **********");
    Session session = SessionFactoryUtil.getInstance().openSession();
    Transaction trans = session.beginTransaction();
    try {


        session.save(Medecin);
        trans.commit();
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        log.fatal(e.getMessage());
        trans.rollback();
        return false;
    } finally {
        session.close();
        log.info("********** Fin saveMedecin MedecinDAO **********");

    }
}

public boolean updateMedecin(Medecin Medecin) {
    log.info("********** Debut updateMedecin MedecinDAO **********");
    Session session = SessionFactoryUtil.getInstance().openSession();
    Transaction trans = session.beginTransaction();
    try {
        session.update(Medecin);
        trans.commit();
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        log.fatal(e.getMessage());
        return false;
    } finally {
        session.close();
        log.info("********** Fin updateMedecin MedecinDAO **********");

    }
}


public boolean deleteMedecin(Medecin Medecin) {
    log.info("********** Debut deleteMedecin MedecinDAO **********");
    Session session = SessionFactoryUtil.getInstance().openSession();
    try {
        Transaction trans = session.beginTransaction();
        session.delete(Medecin);
        trans.commit();
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        log.fatal(e.getMessage());
        return false;
    } finally {
        session.close();
        log.info("********** Fin deleteMedecin MedecinDAO **********");
    }
}

   public List<Medecin> allmedecin(){

    List<Medecin> medecin = null;

    Session session = SessionFactoryUtil.getInstance().openSession();
    String registr = "from Medecin";

    Query query = session.createQuery(registr);
    medecin=query.list();

    return medecin;
}

And finally my action class , formMedAction.java

   //getters,setters...
   //this method is for adding Medecin/doctors 
   public String Ajoutmed() {


     MedecinDAO medDAO= MedecinDAO.getInstance();
     Medecin M = new Medecin();

     M.setIdmed(idmed);
     M.setNom(nom);
     M.setPrenom(prenom);
     M.setContact(contact);
     M.setSpecialite(specialite);
     medDAO.saveMedecin(M);

    return SUCCESS;

  }
  // return list of all medecin in the table
  public String Listmed() throws Exception {

    MedecinDAO medDAO = MedecinDAO.getInstance();
    Medecin = medDAO.allmedecin();

    return SUCCESS;
  }

  // Method I created to delete the data, but I'm not sure if it correct
  public String Supmed() {
      MedecinDAO medDAO = MedecinDAO.getInstance();
      Medecin M = new Medecin();
      M.getIdmed();
      M.getNom();
      M.getPrenom();
      M.getContact();
      M.getSpecialite();
      medDAO.deleteMedecin(M);

      return SUCCESS;


  }

  public string Modmed () {
  //dont know what to do for the modifier/edit action , need your help
  return SUCCESS;
  }

Need your help Thanks

EDIT !

Find a way to delete a doctor with this code in MedecinDAO :

public Medecin deleteMedecin(Integer idmed) {
    log.info("********** Debut deleteMedecin MedecinDAO **********");
    Session session = SessionFactoryUtil.getInstance().openSession();
        Transaction trans = session.beginTransaction();
       Medecin m = (Medecin) session.load(Medecin.class, idmed);
        session.delete(m);
        trans.commit();
        return m;
    } 

And adding this in the action class

 public String Supmed() {
      MedecinDAO medDAO = MedecinDAO.getInstance();
      Medecin m = new Medecin();
      m = medDAO.deleteMedecin(getIdmed());
      return SUCCESS;

  }

And in JSP button action

<td><a href="<s:url action="Supmed" namespace="/pages"><s:param name="idmed" value="%{idmed}"></s:param></s:url>"> Supprimer </a>  </td>

now i need to know how to edit

Upvotes: 0

Views: 1151

Answers (2)

Kane Samba
Kane Samba

Reputation: 279

Ok i have found the solution .

If you want to get the selected object param (id , name or something) you just need to add this code . (in my case for example , i needed : idmed , nom prenom ,contact , specialite )

<td><a class="btn btn-warning" href="<s:url action="editmed" namespace="/pages"> <s:param name="idmed" value="%{idmed}" ></s:param><s:param name="nom" value="%{nom}" ></s:param><s:param name="prenom" value="%{prenom}" ></s:param><s:param name="contact" value="%{contact}" ></s:param><s:param name="specialite" value="%{specialite}" ></s:param></s:url>"> Modifier </a>  </td>

You create an Edit action

 public String editmed()
{

    return SUCCESS;
}

And then you create a new page , edit.jsp for example and you set the value of the param , in struts textfields (select etc..)

<s:form action="Modmed" id="Modmed" namespace="/pages" theme="bootstrap" cssClass="bs-example form-horizontal">

               <s:textfield label="Identifiant" type="Number" min="1" name="idmed"  value="%{idmed}"/>
                <s:textfield label="Nom" name="nom" value="%{nom}" />
                <s:textfield label="Prenom" name="prenom"  value="%{prenom}" />
                <s:textfield label="Contact" name="contact" value="%{contact}" />
                <s:textfield label="Spécialité" name="specialite" value="%{specialite}"/>

                <div class="col-lg-9 col-lg-offset-3">
                <s:submit cssClass="btn btn-primary" value="Sauvegarder"/>

    </div>
            </s:form>

And it should work !

Upvotes: 0

fiskra
fiskra

Reputation: 892

Edit should be the similar way like you did delete . First you can get Medecin object you wan to update :

Medecin med =  (Medecin) session.get(Medecin.class, idmed);
med.setNom("Andrea"); //set new values of your columns 

After you set properties you want to update:

public Medecin updateMedecin(Medecin updatedObject) {
  log.info("********** Debut updateMedecin MedecinDAO **********");
  Session session = SessionFactoryUtil.getInstance().openSession();
  Transaction trans = session.beginTransaction();
  session.save(updatedObject);
  trans.commit();
  return updatedObject;
}

EDITED: If you need to set the value of the selected Medecin Object in new a JSP page, first you need a form to update columns, second you have to pass idMed to form page,

JSP button for edit action:

<td><a href="<s:url action="edit" namespace="/edit"><s:param name="idmed" value="%{idmed}"></s:param></s:url>"> Edit</a>  </td>

Form page:

<s:form action="update">
<s:push value="medecin">
    <s:hidden name="idmed" />
    <s:textfield name="name" label="User Name" value="%{medecin.nom} />
    <s:textfield name="surname" label="Sur Name" value="%{medecin.prenom} />
    <s:submit />
</s:push>
</s:form>

And lastly, you can get id parameter from jsp :

request.getParameter("idmed")

Upvotes: 2

Related Questions