-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DR-112 - New Feature #29
base: main
Are you sure you want to change the base?
Changes from all commits
ff24541
4744482
258833f
5d6b789
d201499
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -30,38 +30,9 @@ | ||||||||||||||||||||||||||||||||||
return listSale; | |||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
public void save(Sale sale) throws DuplicateKeyException { | |||||||||||||||||||||||||||||||||||
try { | |||||||||||||||||||||||||||||||||||
System.out.println(sale); // log the Sale object | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
if (sale == null) { | |||||||||||||||||||||||||||||||||||
throw new IllegalArgumentException("Sale object cannot be null"); | |||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
if (jdbcTemplate == null) { | |||||||||||||||||||||||||||||||||||
throw new IllegalStateException("JdbcTemplate cannot be null"); | |||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||
// Check if a record with the same primary key already exists | |||||||||||||||||||||||||||||||||||
int count = jdbcTemplate.queryForObject( | |||||||||||||||||||||||||||||||||||
"SELECT COUNT(*) FROM sales WHERE serial_number = ?", Integer.class, sale.getSerialNumber()); | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
if (count > 0) { | |||||||||||||||||||||||||||||||||||
// If such a record exists, throw an exception | |||||||||||||||||||||||||||||||||||
throw new DuplicateKeyException("A record with the same serial number already exists."); | |||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
// If no such record exists, insert the new record | |||||||||||||||||||||||||||||||||||
SimpleJdbcInsert insertActor = | |||||||||||||||||||||||||||||||||||
new SimpleJdbcInsert(jdbcTemplate != null ? jdbcTemplate : new JdbcTemplate()); | |||||||||||||||||||||||||||||||||||
insertActor.withTableName("sales").usingColumns("serial_number", "item", "quantity", "amount", "date"); | |||||||||||||||||||||||||||||||||||
BeanPropertySqlParameterSource param = new BeanPropertySqlParameterSource(sale); | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
insertActor.execute(param); | |||||||||||||||||||||||||||||||||||
} catch (DuplicateKeyException e) { | |||||||||||||||||||||||||||||||||||
throw e; // rethrow the exception to be handled by the caller | |||||||||||||||||||||||||||||||||||
} catch (Exception e) { | |||||||||||||||||||||||||||||||||||
e.printStackTrace(); // log any other exceptions | |||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||
public void save(Sale sale) { | |||||||||||||||||||||||||||||||||||
String sql = "INSERT INTO SALES (item, quantity, amount) VALUES ('" + sale.getItem() + "', " + sale.getQuantity() + ", " + sale.getAmount() + ")"; | |||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The new save method introduces a potential SQL injection vulnerability. Use parameterized queries to prevent SQL injection.
Suggested change
Copilot is powered by AI, so mistakes are possible. Review output carefully before use. |
|||||||||||||||||||||||||||||||||||
jdbcTemplate.update(sql); | |||||||||||||||||||||||||||||||||||
Check failure Code scanning / CodeQL Query built from user-controlled sources High
This query depends on a
user-provided value Error loading related location Loading
Copilot Autofix AI 2 months ago To fix the problem, we need to replace the string concatenation in the
Suggested changeset
1
src/main/java/net/codejava/SalesDAO.java
Copilot is powered by AI and may make mistakes. Always verify output.
Refresh and try again.
|
|||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
public Sale get(String serialNumber) { | |||||||||||||||||||||||||||||||||||
|
@@ -118,7 +89,7 @@ | ||||||||||||||||||||||||||||||||||
return new PageImpl<>(sales, pageable, total); | |||||||||||||||||||||||||||||||||||
} | |||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
// a method to returns a list of all sales in a jdbctemplate query to use as a csv output | |||||||||||||||||||||||||||||||||||
// a method to returns a list of all sales in a jdbctemplate query to use as a csv output | |||||||||||||||||||||||||||||||||||
public List<Sale> listAll() { | |||||||||||||||||||||||||||||||||||
String sql = "SELECT * FROM sales ORDER BY serial_number ASC"; | |||||||||||||||||||||||||||||||||||
List<Sale> listSale = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(Sale.class)); | |||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The removal of the null check for the sale object might lead to a NullPointerException. Re-add the null check for the sale object.
Copilot is powered by AI, so mistakes are possible. Review output carefully before use.