Skip to content

Feature1#1

Merged
JohanHiths merged 17 commits intomainfrom
feature1
Feb 4, 2026
Merged

Feature1#1
JohanHiths merged 17 commits intomainfrom
feature1

Conversation

@JohanHiths
Copy link
Owner

@JohanHiths JohanHiths commented Feb 4, 2026

Summary by CodeRabbit

Release Notes

  • New Features

    • Added bowling game with strike and spare scoring functionality
    • Added weather-based clothing advisor for temperature-appropriate outfit recommendations
    • Added price watching service with asynchronous notifications
    • Added todo list management system with CSV export capability
    • Added phone number validator
  • Tests

    • Added comprehensive test coverage for new features including bowling, weather, pricing, and todo functionality

@JohanHiths JohanHiths merged commit 870b986 into main Feb 4, 2026
1 of 4 checks passed
@coderabbitai
Copy link

coderabbitai bot commented Feb 4, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

This pull request introduces multiple new systems and features including a weather-based clothing advisor, price watching with notifications, bowling game scoring, todo list management with CSV storage, phone number validation, socket communication, and comprehensive test coverage. Configuration files and build dependencies are also added.

Changes

Cohort / File(s) Summary
Configuration & Build
.idea/dbnavigator.xml, opencode.json, pom.xml, functional-requirements.md
Added IDE database navigator configuration, MCP remote context reference, test dependencies (Mockito JUnit Jupiter 5.21.0, Awaitility 4.2.0), and Swedish language functional requirements for weather-based clothing and price handling projects.
Weather System
src/main/java/org/example/weather/WeatherService.java, src/main/java/org/example/weather/outFitAdvisor.java
New WeatherService interface for temperature retrieval and outFitAdvisor class providing temperature-based clothing recommendations (winter jacket <0°C, sweatpants ≥15°C) with exception handling.
Price Watching System
src/main/java/org/example/price/Priceservice.java, src/main/java/org/example/price/NotificationService.java, src/main/java/org/example/price/PriceWatcher.java
New service interfaces and watcher implementation for monitoring product prices below 100 threshold and triggering notifications.
Todo List Management
src/main/java/org/example/toDoList.java, src/main/java/org/example/todolist/TodoItem.java, src/main/java/org/example/todolist/TodoList.java, src/main/java/org/example/todolist/TodoListTask.java
Multiple todo implementations with immutable TodoItem, auto-incrementing id generation, task/due date tracking, and mark-done functionality.
CSV Storage
src/main/java/org/example/CSV/CsvTodoStorage.java, src/main/java/org/example/CSV/saveToFile.java
CSV serialization for TodoItems with proper quote/comma escaping and BufferedWriter-based file I/O.
Bowling Game
src/main/java/org/example/Bowling.java
Bowling scoring engine with strike/spare detection, bonus calculations, and frame-based scoring logic.
Calculator & Utilities
src/main/java/org/example/Calculator.java, src/main/java/org/example/utils/PhoneNumberValidator.java
New divide method for Calculator; Predicate-based validator for +44 UK phone numbers with 13-character length requirement.
Socket Communication
src/main/java/org/example/socket/SimpleClient.java, src/main/java/org/example/socket/SimpleServer.java
Basic TCP client and server implementations for 127.0.0.1:3000 with virtual thread support (server) and exception wrapping. ⚠️ Server has non-standard main signature and unresolved IO.readln() call.
Bowling Tests
src/test/java/org/example/BowlingTest.java
Comprehensive test suite covering gutter games, ones, spares, strikes, and perfect game scenarios.
Todo & CSV Tests
src/test/java/org/example/TodoListTest.java, src/test/java/org/example/CSV/CsvTodoStorageTest.java
Tests for todo item CRUD operations, sequential id assignment, CSV header/escaping, and task/due date persistence.
Price & Weather Tests
src/test/java/org/example/WeatherTest.java, src/test/java/org/example/priceTest/PriceWatcherTest.java, src/test/java/org/example/priceTest/PriceWatcherAsyncTest.java, src/test/java/org/example/priceTest/AsyncNotificationService.java
Mocked tests for clothing advice logic, price threshold notifications, and async notification handling with 5-second delay. ⚠️ AsyncNotificationService has potential data race on unsynchronized isSent flag.
Other Tests
src/test/java/org/example/CalculatorTest.java, src/test/java/org/example/PhoneNumberValidatorTest.java
Tests for phone number validation (+44 prefix, length checks) and calculator formatting adjustments.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes


🐰 A garden of code now grows so wide,
Weather advisors, prices that guide,
Bowling frames roll without a frown,
Todos in CSV settle back down!
With tests by the dozen, this feature's here strong,
This rabbit approves—the whole PR's not wrong! 🥕

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature1

Important

Action Needed: IP Allowlist Update

If your organization protects your Git platform with IP whitelisting, please add the new CodeRabbit IP address to your allowlist:

  • 136.113.208.247/32 (new)
  • 34.170.211.100/32
  • 35.222.179.152/32

Reviews will stop working after February 8, 2026 if the new IP is not added to your allowlist.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

github-actions bot commented Feb 4, 2026

Qodana for JVM

6 new problems were found

Inspection name Severity Problems
Nullability and data flow problems 🔶 Warning 1
Empty 'try' block 🔶 Warning 1
Infinite loop statement 🔶 Warning 1
Suspicious indentation after control statement without braces 🔶 Warning 1
Unused assignment 🔶 Warning 1
Constant values ◽️ Notice 1
View the detailed Qodana report

To be able to view the detailed Qodana report, you can either:

To get *.log files or any other Qodana artifacts, run the action with upload-result option set to true,
so that the action will upload the files as the job artifacts:

      - name: 'Qodana Scan'
        uses: JetBrains/qodana-action@v2025.3.1
        with:
          upload-result: true
Contact Qodana team

Contact us at qodana-support@jetbrains.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant