/* * Return a computer using its id */ public Computer get(Long computerId) throws SQLException, ParseException { logger.debug("Enterring get(Long computerId) in ComputerDAO."); Connection connection = DataSourceUtils.getConnection(datasource); String query = "SELECT * FROM `computer-database-db`.`computer` AS computer LEFT OUTER JOIN `computer-database-db`.`company` AS company ON computer.company_id=company.id WHERE computer.id=?;"; PreparedStatement statement = connection.prepareStatement(query); statement.setLong(1, computerId); ResultSet resultSet = statement.executeQuery(); Computer computer = null; while (resultSet.next()) { Company company = Company.builder().id(resultSet.getLong(5)).name(resultSet.getString(7)).build(); computer = Computer.builder() .id(resultSet.getLong(1)) .name(resultSet.getString(2)) .company(company) .build(); if (resultSet.getDate(3) != null) { computer.setIntroduced(new DateTime(resultSet.getDate(3))); } if (resultSet.getDate(4) != null) { computer.setDiscontinued(new DateTime(resultSet.getDate(4))); } } if (resultSet != null) resultSet.close(); if (statement != null) statement.close(); logger.debug("Leaving get(Long computerId) in ComputerDAO."); return computer; }
/* * Return the list of computers with a specific company, ordered and limited */ public List<Computer> getListByCompanyName( String computerCompanyName, String orderBy, Integer page, Integer recordsPerPage) throws SQLException { logger.debug("Entering getListByCompanyName in ComputerDAO."); Connection connection = DataSourceUtils.getConnection(datasource); StringBuilder query = new StringBuilder( "SELECT * FROM `computer-database-db`.`computer` AS computer LEFT OUTER JOIN `computer-database-db`.`company` AS company ON computer.company_id=company.id WHERE company.name=?"); if (orderBy == null) { orderBy = "computer.id ASC"; } else switch (orderBy) { case "nameASC": orderBy = "computer.name ASC"; break; case "nameDESC": orderBy = "computer.name DESC"; break; case "introducedASC": orderBy = "computer.introduced ASC"; break; case "introducedDESC": orderBy = "computer.introduced DESC"; break; case "discontinuedASC": orderBy = "computer.discontinued ASC"; break; case "discontinuedDESC": orderBy = "computer.discontinued DESC"; break; case "companyASC": orderBy = "computer.company_id ASC"; break; case "companyDESC": orderBy = "company.name DESC"; break; } query.append(" ORDER BY ").append(orderBy).append(" LIMIT ?,?;"); List<Computer> listComputers = new ArrayList<Computer>(); PreparedStatement statement = connection.prepareStatement(query.toString()); statement.setString(1, computerCompanyName); statement.setInt(2, (page - 1) * recordsPerPage); statement.setInt(3, recordsPerPage); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { Company company = Company.builder().id(resultSet.getLong(5)).name(resultSet.getString(7)).build(); Computer computer = Computer.builder() .id(resultSet.getLong(1)) .name(resultSet.getString(2)) .company(company) .build(); if (resultSet.getDate(3) != null) { computer.setIntroduced(new DateTime(resultSet.getDate(3))); } if (resultSet.getDate(4) != null) { computer.setDiscontinued(new DateTime(resultSet.getDate(4))); } listComputers.add(computer); } if (resultSet != null) resultSet.close(); if (statement != null) statement.close(); logger.debug("Leaving getListByCompanyName in ComputerDAO."); return listComputers; }