diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c647bf8..a246a07 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,14 +5,9 @@ on: # manual trigger workflow_dispatch: inputs: - ssh_debug_enabled: + debug_enabled: type: boolean - description: 'Run the build/test with ssh debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' - required: false - default: false - debug_deployment: - type: boolean - description: 'Run the pipeline with debug deployment enabled' + description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' required: false default: false @@ -67,6 +62,7 @@ jobs: fail-fast: false matrix: language: [ 'java', 'javascript' ] + # # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # # Use only 'java' to analyze code written in Java, Kotlin or both # # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both @@ -92,7 +88,7 @@ jobs: # runnning code scanning with CodeQL. Link to the documentation - https://docs.github.com/en/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning # first step is to initialize CodeQL - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # defining the language for the CodeQL analysis # debug: true # uncomment this line to enable debugging for CodeQL analysis step @@ -107,11 +103,11 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v2 # performing Code Quality Analysis with CodeQL. Link to the documentation - https://docs.github.com/en/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v2 with: category: "/language:${{matrix.language}}" # defining the language for the CodeQL analysis @@ -239,7 +235,7 @@ jobs: id: split-tests name: Split tests with: - glob: src/test/**/**/*.java # glob pattern to match the test files + glob: src/test/**/**/**.java # glob pattern to match the test files split-total: ${{ env.total-runners }} # total number of github-hosted runners split-index: ${{ matrix.runner-index }} # current runner index junit-path: test_results/**/*xml # path to the junit test results with wildcards to match all the files @@ -260,6 +256,7 @@ jobs: name: testresults-${{ github.run_id }}-split-${{ matrix.runner-index }} # naming the artifact with the test results path: ./target/surefire-reports # path to the test results retention-days: 90 # retention period for the artifact in days. Link to the documentation - https://docs.github.com/en/actions/guides/storing-workflow-data-as-artifacts#about-workflow-artifact-retention + publish-test-results: needs: [build, unit-parallel-tests] @@ -361,5 +358,4 @@ jobs: with: # with tag from the build-and-publish-docker-image job in the output_tags step image_tag: "${{ needs.build-and-publish-docker-image.outputs.image_tag }}" - debug: "${{ github.event.inputs.debug_deployment }}" secrets: inherit \ No newline at end of file diff --git a/pom.xml b/pom.xml index 59384d5..875022b 100644 --- a/pom.xml +++ b/pom.xml @@ -136,6 +136,12 @@ spring-data-commons + + org.springframework.security + spring-security-core + 5.7.0 + + diff --git a/src/main/java/net/codejava/SalesDAO.java b/src/main/java/net/codejava/SalesDAO.java index c3e6029..3d2ea41 100755 --- a/src/main/java/net/codejava/SalesDAO.java +++ b/src/main/java/net/codejava/SalesDAO.java @@ -30,38 +30,9 @@ public List list(int limit, int offset) { 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() + ")"; + jdbcTemplate.update(sql); } public Sale get(String serialNumber) { @@ -118,7 +89,7 @@ public Page findAll(Pageable pageable) { 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 listAll() { String sql = "SELECT * FROM sales ORDER BY serial_number ASC"; List listSale = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(Sale.class)); diff --git a/src/main/resources/static/js/styles.js b/src/main/resources/static/js/styles.js index 1c197a2..c5eef1d 100644 --- a/src/main/resources/static/js/styles.js +++ b/src/main/resources/static/js/styles.js @@ -40,7 +40,7 @@ addStyles(); let themeColors; if (!window.enableSearchFeature) { // Swapped the condition to check for not enabled themeColors = { - '--h1-color': '#2196F3', + '--h1-color': window.searchFeatureColor || '#4CAF50', '--th-bg-color': '#2196F3', '--a-color': '#2196F3', '--tr-bg-color': '#c2e0fb',