@Override
  public AgenziaTO read(String id) {
    Connection conn = MySqlConnectionFactory.getConnection();
    PreparedStatement statement = null;
    AgenziaTO agenzia = null;
    ResultSet resultSet = null;

    try {
      statement = conn.prepareStatement(queryFactory.getQuery("read_agenzia"));
      statement.setInt(1, Integer.parseInt(id));

      resultSet = statement.executeQuery();
      while (resultSet.next()) {
        agenzia = new AgenziaTO();
        agenzia.setId(resultSet.getString("id"));
        agenzia.setCitta(resultSet.getString("citta"));
        agenzia.setIndirizzo(resultSet.getString("indirizzo"));
        agenzia.setTelefono(resultSet.getString("telefono"));
      }

    } catch (SQLException e) {
      e.printStackTrace();
    } catch (NullPointerException e) {
      e.printStackTrace();
    } finally {
      DbEntityCloser.close(statement);
      DbEntityCloser.close(conn);
    }

    return agenzia;
  }
  @Override
  public List<AgenziaTO> readAll() {
    Connection conn = MySqlConnectionFactory.getConnection();
    PreparedStatement statement = null;
    List<AgenziaTO> listAgenzia = new ArrayList<AgenziaTO>();
    ;
    ResultSet resultSet = null;

    try {
      statement = conn.prepareStatement(queryFactory.getQuery("read_all_agenzia"));
      resultSet = statement.executeQuery();

      while (resultSet.next()) {
        AgenziaTO agenzia = new AgenziaTO();
        agenzia.setId(resultSet.getString("id"));
        agenzia.setCitta(resultSet.getString("citta"));
        agenzia.setIndirizzo(resultSet.getString("indirizzo"));
        agenzia.setTelefono(resultSet.getString("telefono"));
        listAgenzia.add(agenzia);
      }

    } catch (SQLException e) {
      e.printStackTrace();
    } catch (NullPointerException e) {
      e.printStackTrace();
    } finally {
      DbEntityCloser.close(statement);
      DbEntityCloser.close(conn);
    }

    return listAgenzia;
  }
  @Override
  public boolean create(AgenziaTO agenzia) {
    Connection conn = MySqlConnectionFactory.getConnection();
    PreparedStatement statement = null;

    int result = 0;
    boolean response = false;

    try {
      statement = conn.prepareStatement(queryFactory.getQuery("create_agenzia"));
      int i = 1;
      statement.setString(i++, agenzia.getCitta());
      statement.setString(i++, agenzia.getIndirizzo());
      statement.setString(i++, agenzia.getTelefono());
      statement.setString(i++, "aperta");

      result = statement.executeUpdate();

      if (result > 0) {
        response = true;
      }

    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      DbEntityCloser.close(statement);
      DbEntityCloser.close(conn);
    }

    return response;
  }