/**
   * Concatena el NIT de todos los propietarios y retorna una cadena con esa informacion.
   *
   * @param año Año en el cual concatena los propietarios
   * @return Retorna un String con los NIT de los propietarios en un año
   */
  protected String concatenarPropietarios(int año) {
    String propietario = "";
    ArrayList<Propietario> prop = propietarios.get(año);
    if (prop != null) for (Propietario p : prop) propietario += p.getCc() + "~";

    return propietario;
  }
  /**
   * Busca en los propietarios ya creados si existe alguno con la informacion que recibe por
   * parametro.
   *
   * @param año Año en que se buscara un propietaio.
   * @param cc NIT para comparar el propietario
   * @return Retorna true si existe el propietario.
   */
  private boolean validarExistenciaPropietario(int año, String cc) {
    ArrayList<Propietario> propietario = propietarios.get(año);

    for (Propietario x : propietario) if (x.getCc().equalsIgnoreCase(cc)) return true;

    return false;
  }
  /**
   * Concatena y envia todos los propietarios de un año, pero esto de más corto que el metodo
   * imprimitPropietariosParaUnAño(int año) con la información que envia.
   *
   * @param año Año para imprimir los propietarios.
   * @return Retorna la informacion que reune.
   */
  protected String imprimirInfoBasicPropietariosParaUnAño(int año) {
    String propietario = "";

    ArrayList<Propietario> prop = propietarios.get(año);
    if (prop != null) for (Propietario x : prop) propietario += "\n" + x.infoBasic();

    return propietario;
  }
  /**
   * Busca en los propietarios a ver si existe un propietario con la cedula
   *
   * @param cc NIT para comprobar un propietario.
   * @return Retorna true si existe el propietario
   */
  protected boolean comprobarPropietario(String cc) {
    Collection<ArrayList<Propietario>> prop = propietarios.values();
    Iterator<ArrayList<Propietario>> it = prop.iterator();

    ArrayList<Propietario> p = it.next();
    for (Propietario x : p) if (x.getCc().equalsIgnoreCase(cc)) return true;

    return false;
  }
  /**
   * Obtiene un año en que el propietario fue dueño del vehiculo.
   *
   * @param cc NIT para obtener el año en que un propietario fue dueño del carro.
   * @return Retorna el año.
   */
  protected int obtenerAño(String cc) {
    Iterator it = propietarios.entrySet().iterator();
    while (it.hasNext()) {
      Map.Entry e = (Map.Entry) it.next();
      ArrayList<Propietario> p = (ArrayList<Propietario>) e.getValue();
      for (Propietario x : p) if (x.getCc().equalsIgnoreCase(cc)) return (Integer) e.getKey();
    }

    return 0;
  }
  /**
   * Concatena y envia todos los propietarios de un año.
   *
   * @param año Año para imprimir los propietarios.
   * @return Retorna un String con la informacion de los propietarios.
   */
  protected String imprimirPropietariosParaUnAño(int año) {
    String propietario = "";

    if (propietarios.containsKey(año)) {
      ArrayList<Propietario> prop = propietarios.get(año);
      for (Propietario x : prop) propietario += "\n" + x.toString();
    }

    return propietario;
  }
  /**
   * Elimina un propietario en un año.
   *
   * @param año Año en el que va a eliminar el propietario
   * @param cc NIT del propietario
   * @return Retorna true dado el caso elimine el propietario
   */
  protected boolean borrarPropietario(int año, String cc) {
    ArrayList<Propietario> prop = propietarios.get(año);
    if (prop != null)
      for (Propietario x : prop)
        if (x.getCc().equalsIgnoreCase(cc)) {
          prop.remove(x);
          return true;
        }

    return false;
  }
 @WebMethod
 public String propietarioMulta(String mes, String placa) {
   Propietario p =
       new Propietario(
           "No encontrado",
           "No encontrado",
           "No encontrado"); // Inicializamos el propietario en no encontrado en caso que la
                             // busqueda sea fallida
   for (int i = 0;
       i < multasDB.size();
       i++) { // Buscamos en los registros de multas la informacion solicitada
     Multa m = multasDB.get(i); // Obtenemos la multa
     if (m.getCoche().getPlaca().equalsIgnoreCase(placa)
         && m.getMes().equalsIgnoreCase(mes)) { // Comparamos si es el registro que buscamos
       p = m.getPropietario(); // En caso de serlo lo asignamos
     }
   }
   return p.getNombre()
       + "-"
       + p.getApellido()
       + "-"
       + p.getDNI(); // retornamos el registro encontrado o el inicial con la info de no encontrado
 }
  /**
   * Obtiene la informacion basica de un propieatrio
   *
   * @param año Año de compra
   * @param propietario NIT del propietario
   * @return Retorna la informacion basica del propieatrio
   */
  protected String obtenerInfoPropietario(int año, String propietario) {
    ArrayList<Propietario> prop = propietarios.get(año);
    if (prop != null)
      for (Propietario x : prop)
        if (x.getCc().equalsIgnoreCase(propietario))
          return x.getNombre()
              + "~"
              + x.getCc()
              + "~"
              + x.getDireccion()
              + "~"
              + x.getCiudad()
              + "~"
              + x.getTelefono();

    return null;
  }
  /**
   * Modifica la informacion de un propietario
   *
   * @param año Año de compra
   * @param propietario NIT del propietario
   * @param nuevoNombre Nuevo nombre
   * @param nuevoCC Nuevo NIT
   * @param nuevaDireccion Nueva direccion
   * @param nuevaCiudad Nueva ciudad
   * @param nuevoTelefono Nuevo telefono
   * @return Retorna true cuando guarda la informacion
   */
  protected boolean modificarPropietario(
      int año,
      String propietario,
      String nuevoNombre,
      String nuevoCC,
      String nuevaDireccion,
      String nuevaCiudad,
      String nuevoTelefono) {
    ArrayList<Propietario> prop = propietarios.get(año);
    if (prop != null)
      for (Propietario x : prop)
        if (x.getCc().equalsIgnoreCase(propietario)) {
          x.setNombre(nuevoNombre);
          x.setCc(nuevoCC);
          x.setDireccion(nuevaDireccion);
          x.setCiudad(nuevaCiudad);
          x.setTelefono(nuevoTelefono);
          return true;
        }

    return false;
  }