public StockInformation findById(Integer Id) {
   StockInformation si = null;
   for (int i = 0; i < this.size(); i++) {
     si = (StockInformation) this.get(i);
     if (si.getId().equals(Id)) {
       return si;
     }
   }
   return null;
 }
  public void retrieve10MaxTradesStockList(
      ErrorObject error, DatabaseClass db, Date start, Date end) {

    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    String sql =
        "select ticker, name, isin, currency, "
            + "marketplace, listname, sum(trades) as tradeSum "
            + "from stock_information "
            + "where information_date <= ? and information_date >= ? "
            + "group by ticker, name, isin, currency, marketplace, listname "
            + "order by tradeSum desc ";
    this.clear();

    try {
      conn = DriverManager.getConnection(db.getUrl(), db.getUsr(), db.getPwd());
      conn.setAutoCommit(false);

      pst = conn.prepareStatement(sql);
      long date1 = end.getTime();
      java.sql.Date sqlDate1 = new java.sql.Date(date1);
      pst.setDate(1, sqlDate1);

      long date2 = start.getTime();
      java.sql.Date sqlDate2 = new java.sql.Date(date2);
      pst.setDate(2, sqlDate2);

      rs = pst.executeQuery();
      int i = 0;
      while (rs.next()) {
        if (i < 10) {
          StockInformation si = new StockInformation();
          si.setTicker(rs.getString(1));
          si.setName(rs.getString(2));
          si.setIsin(rs.getString(3));
          si.setCurrency(rs.getString(4));
          si.setMarketplace(rs.getString(5));
          si.setListname(rs.getString(6));
          si.setPeriodSumTrades(new Integer(rs.getInt(7)));
          this.add(si);
          i++;
        }
      }
      rs.close();
      conn.commit();
      pst.close();
      conn.close();
    } catch (SQLException e) {
      System.out.println("DB Error: " + e.getMessage());
      error.setError(true);
      error.setMessage(e.getMessage());
      if (conn != null) {
        try {
          conn.close();
        } catch (SQLException e2) {
        }
      }
    }
  }
  public void retrieveDateList(ErrorObject error, DatabaseClass db) {

    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    String sql =
        "select distinct information_date  " + "from stock_information order by information_date ";
    this.clear();

    try {
      conn = DriverManager.getConnection(db.getUrl(), db.getUsr(), db.getPwd());
      conn.setAutoCommit(false);

      pst = conn.prepareStatement(sql);
      rs = pst.executeQuery();
      while (rs.next()) {

        StockInformation si = new StockInformation();
        si.setInformationDate(rs.getDate(1));
        this.add(si);
      }
      rs.close();
      conn.commit();
      pst.close();
      conn.close();
    } catch (SQLException e) {
      System.out.println("DB Error: " + e.getMessage());
      error.setError(true);
      error.setMessage(e.getMessage());
      if (conn != null) {
        try {
          conn.close();
        } catch (SQLException e2) {
        }
      }
    }
  }
  public void deleteInsertTodaysStockList(ErrorObject error, DatabaseClass db) {

    Connection conn = null;
    PreparedStatement pst = null;
    PreparedStatement pst2 = null;

    String delete = "delete from stock_information " + "where information_date = ?";

    String sql =
        "insert into stock_information (information_date, "
            + "ticker, name, isin, currency, "
            + "marketplace, listname, average_price, "
            + "open_price, high_price, low_price, "
            + "last_close_price, last_price, "
            + "price_change_percentage, best_bid, best_ask, "
            + "trades, volume, turnover) "
            + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";

    try {
      conn = DriverManager.getConnection(db.getUrl(), db.getUsr(), db.getPwd());
      conn.setAutoCommit(false);

      if (this.size() != 0) {
        StockInformation si = this.get(0);
        pst2 = conn.prepareStatement(delete);
        pst2.setDate(1, new java.sql.Date(si.getInformationDate().getTime()));
        pst2.executeUpdate();
      }

      pst = conn.prepareStatement(sql);

      for (int i = 0; i < this.size(); i++) {
        StockInformation s = this.get(i);
        pst.setDate(1, new java.sql.Date(s.getInformationDate().getTime()));

        pst.setString(2, s.getTicker());
        pst.setString(3, s.getName());
        pst.setString(4, s.getIsin());
        pst.setString(5, s.getCurrency());
        pst.setString(6, s.getMarketplace());
        pst.setString(7, s.getListname());

        pst.setDouble(8, s.getAveragePrice().doubleValue());
        pst.setDouble(9, s.getOpenPrice().doubleValue());
        pst.setDouble(10, s.getHighPrice().doubleValue());
        pst.setDouble(11, s.getLowPrice().doubleValue());
        pst.setDouble(12, s.getLastClosePrice().doubleValue());
        pst.setDouble(13, s.getLastPrice().doubleValue());
        pst.setDouble(14, s.getPriceChangePercentage().doubleValue());
        pst.setDouble(15, s.getBestBid().doubleValue());
        pst.setDouble(16, s.getBestAsk().doubleValue());

        pst.setInt(17, s.getTrades().intValue());
        pst.setInt(18, s.getVolume().intValue());

        pst.setDouble(19, s.getTurnover().doubleValue());

        pst.executeUpdate();
      }

      conn.commit();
      pst.close();
      conn.close();
    } catch (SQLException e) {
      System.out.println("DB Error: " + e.getMessage());
      error.setError(true);
      error.setMessage(e.getMessage());
      if (conn != null) {
        try {
          conn.close();
        } catch (SQLException e2) {
        }
      }
    }
  }
  public void retrieveStockInformationList(ErrorObject error, DatabaseClass db, Date start) {

    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    String sql =
        "select id, ticker, name, isin, currency, "
            + "marketplace, listname, average_price, "
            + "open_price, high_price, low_price, "
            + "last_close_price, last_price, "
            + "price_change_percentage, best_bid, best_ask, "
            + "trades, volume, turnover  "
            + "from stock_information "
            + "where information_date = ?";
    this.clear();

    try {
      conn = DriverManager.getConnection(db.getUrl(), db.getUsr(), db.getPwd());
      conn.setAutoCommit(false);

      pst = conn.prepareStatement(sql);
      long date = start.getTime();
      java.sql.Date sqlDate = new java.sql.Date(date);
      pst.setDate(1, sqlDate);
      rs = pst.executeQuery();
      while (rs.next()) {

        StockInformation si = new StockInformation();
        si.setId(new Integer(rs.getInt(1)));
        si.setInformationDate(start);
        si.setTicker(rs.getString(2));
        si.setName(rs.getString(3));
        si.setIsin(rs.getString(4));
        si.setCurrency(rs.getString(5));
        si.setMarketplace(rs.getString(6));
        si.setListname(rs.getString(7));
        si.setAveragePrice(new Double(rs.getDouble(8)));
        si.setOpenPrice(new Double(rs.getDouble(9)));
        si.setHighPrice(new Double(rs.getDouble(10)));
        si.setLowPrice(new Double(rs.getDouble(11)));
        si.setLastClosePrice(new Double(rs.getDouble(12)));
        si.setLastPrice(new Double(rs.getDouble(13)));
        si.setPriceChangePercentage(new Double(rs.getDouble(14)));
        si.setBestBid(new Double(rs.getDouble(15)));
        si.setBestAsk(new Double(rs.getDouble(16)));
        si.setTrades(new Integer(rs.getInt(17)));
        si.setVolume(new Integer(rs.getInt(18)));
        si.setTurnover(new Double(rs.getDouble(19)));
        this.add(si);
      }
      rs.close();
      conn.commit();
      pst.close();
      conn.close();
    } catch (SQLException e) {
      System.out.println("DB Error: " + e.getMessage());
      error.setError(true);
      error.setMessage(e.getMessage());
      if (conn != null) {
        try {
          conn.close();
        } catch (SQLException e2) {
        }
      }
    }
  }