public String updateContact(
      long id,
      String firstName,
      String lastName,
      String email,
      String street,
      String city,
      String zip,
      String country,
      String phoneKind,
      String phoneNumber) {
    // TODO Auto-generated method stub
    String rvalue = null;
    StringBuffer requeteS = new StringBuffer();
    requeteS
        .append("from Contact contact")
        .append(" left join contact.address as address")
        .append(" left join contact.phoneNumbers as phoneNumber")
        .append(" left join contact.contactGroups as contactGroup where contact.id=" + id);
    Query query = em.createQuery(requeteS.toString());
    List<Object[]> l = query.getResultList();
    if (l.size() == 0) {
      rvalue = "Contact dont exist!";
      return rvalue;
    }
    Contact contact = (Contact) l.get(0)[0];
    if (firstName != null) contact.setFirstName(firstName);
    if (lastName != null) contact.setLastName(lastName);
    if (email != null) contact.setEmail(email);

    Address address = (Address) l.get(0)[1];
    if (street != null) address.setStreet(street);
    if (city != null) address.setCity(city);
    if (zip != null) address.setZip(zip);
    if (country != null) address.setCountry(country);
    contact.setAddress(address); // Uni birectionnel

    PhoneNumber phone = (PhoneNumber) l.get(0)[2];
    if (phoneKind != null) phone.setPhoneKind(phoneKind);
    if (phoneNumber != null) phone.setPhoneNumber(phoneNumber);

    //		ContactGroup cg = (ContactGroup)l.get(0)[3];
    //		if ()
    em.merge(contact);
    rvalue = ServerUtils.opFait;
    return rvalue;
  }
  public String addContact(
      String firstName,
      String lastName,
      String email,
      String street,
      String city,
      String zip,
      String country,
      String phoneKind,
      String phoneNumber,
      String group) {
    System.out.println("Server side, 9 params");
    // TODO Auto-generated method stub
    Contact contact = new Contact();
    contact.setFirstName(firstName);
    contact.setLastName(lastName);
    contact.setEmail(email);

    Address address = new Address();
    address.setStreet(street);
    address.setCity(city);
    address.setZip(zip);
    address.setCountry(country);
    contact.setAddress(address); // Uni birectionnel

    PhoneNumber phone = new PhoneNumber();
    phone.setPhoneKind(phoneKind);
    phone.setPhoneNumber(phoneNumber);
    contact.getPhoneNumbers().add(phone);
    phone.setContact(contact);

    String request = "from ContactGroup contactGroup";
    Query query = em.createQuery(request);
    List<ContactGroup> l = query.getResultList();
    Iterator<ContactGroup> ite = l.iterator();
    ContactGroup contactGroup = null;
    String rvalue = null;
    while (ite.hasNext()) {
      contactGroup = ite.next();
      if (contactGroup.getGroupName().equals(group)) {
        contact.getContactGroups().add(contactGroup);
        contactGroup.getContacts().add(contact);
        em.persist(contact);
        rvalue = ServerUtils.opFait;
        return rvalue;
      }
    }

    // If new contact Group
    contactGroup = new ContactGroup();
    contactGroup.setGroupName(group);
    contact.getContactGroups().add(contactGroup);
    contactGroup.getContacts().add(contact);

    em.persist(contact);
    // em.persist(address);
    // em.persist(phone);
    // em.persist(contactGroup);

    return ServerUtils.opFait;
  }