Skip to content

Merge into main #55

Merged
merged 104 commits into from
May 26, 2026
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
a6ae521
Merge pull request #10 from IDATT2003-gruppe06/main
nolydvo Mar 4, 2026
2e2217b
Adding single value constructor to Stock
Mar 5, 2026
2d2244d
adding null check and int quantity overloader
Mar 6, 2026
60d3872
Changing call order, adding null checks
Mar 6, 2026
945cc6c
Changing stocks from List to ArrayList
Mar 6, 2026
292c14b
Adding salesPrice and quantity update to calculator
Mar 6, 2026
6b33b97
test: adding ExchangeTest
Mar 6, 2026
f7e1db6
Player adding null and negative checks
Mar 6, 2026
a898b7f
Adding int quantity overload for Share
Mar 6, 2026
e81d68b
test: adding playerTest
Mar 6, 2026
13001ef
test: adding PortfolioTest
Mar 6, 2026
bad7347
Merge pull request #24 from IDATT2003-gruppe06/main
nolydvo Mar 6, 2026
4e90cef
Adding null checks to Share
Mar 6, 2026
eea0cf2
Adding null and blank checks to Stock
Mar 6, 2026
ed67b31
test: Adding PurchaseTest
Mar 6, 2026
54bc98c
test: Adding SaleTest
Mar 6, 2026
963481b
test: adding ShareTest
Mar 6, 2026
d090837
test: adding StockTest
Mar 6, 2026
992f8fc
test: adding TransactionArchiveTest
Mar 6, 2026
ccce043
removing test for abstract class
Mar 6, 2026
d6bea6b
Merge pull request #25 from IDATT2003-gruppe06/tests
mohenoen Mar 6, 2026
55e2dfe
Adding shell.nix
Mar 6, 2026
61c5e90
Changed commited field in transaction class as this was a mistake in …
Mar 10, 2026
4efe591
Added methods to stock class:
Mar 10, 2026
49c4952
Merge pull request #26 from IDATT2003-gruppe06/2-add-new-methods-to-s…
nolydvo Mar 10, 2026
35bf19c
Created StockInformationCSVReader
Mar 11, 2026
072dbc1
Created StockInformationCSVWriter
Mar 11, 2026
a6c0ce1
Merge pull request #28 from IDATT2003-gruppe06/1-add-support-for-read…
mohenoen Mar 27, 2026
0771753
Added getNetWorth methods to player and portfolio
Apr 8, 2026
ce0dc04
Merge pull request #29 from IDATT2003-gruppe06/4-create-getnetworth-m…
nolydvo Apr 8, 2026
a108919
Added status for player along with test
Apr 8, 2026
5fab027
Merge pull request #30 from IDATT2003-gruppe06/6-add-status-for-playe…
nolydvo Apr 8, 2026
043369c
Created 3 files:
Apr 8, 2026
c5332be
Refactored package structure to follow the MVC-pattern
Apr 12, 2026
e271319
Delete .vscode directory
nolydvo Apr 12, 2026
84c1a03
Moved parsing of stock information to csvStockFileParser and added fo…
Apr 12, 2026
ea0abe1
Created StockFileWriter interface and moved csv write to its own file…
Apr 12, 2026
764750a
moved IO files to their own package
Apr 12, 2026
3acdb6a
Changelog
Apr 12, 2026
49ac7b1
fixed CSVStockFileParserTest
Apr 12, 2026
9f127ac
Fixed CSVStockFileWriter
Apr 13, 2026
1f2982d
Merge pull request #36 from IDATT2003-gruppe06/file-io-development
nolydvo Apr 13, 2026
77700e0
Fixed TransactionCalculatorFactory to actually follow factory design …
Apr 17, 2026
c9c91b0
Merge pull request #37 from IDATT2003-gruppe06/31-implement-factory-f…
nolydvo Apr 17, 2026
c3a9c17
Merge
Apr 20, 2026
c72ee46
Added getLosers and tests for getLosers/Gainers
Apr 20, 2026
31965c8
Removing shell.nix
Apr 17, 2026
8d15ad4
Test: Adding test for price change. Small bugfix
Apr 17, 2026
c0cd5a7
Adding shell.nix to gitignore
Apr 20, 2026
8cc72ce
Fix/test" Fix portfolio rounding bug, adding test for that
Apr 20, 2026
6977a21
Changing to factory pattern for Transaction
Apr 20, 2026
df49c31
fix: Changed test after changing return.
Apr 20, 2026
a566207
Merge pull request #39 from IDATT2003-gruppe06/feat/factory
mohenoen Apr 21, 2026
2a120fe
feat: Adding Listeners
Apr 22, 2026
eee4b84
Adding remaining Listerner files and tests
Apr 22, 2026
b5adc64
feat: Adding forgotten factory files
Apr 22, 2026
2c0a768
Starting javaFX code
Apr 22, 2026
7879d92
Merge pull request #40 from IDATT2003-gruppe06/feat/JavaFX-boilerplate
mohenoen Apr 22, 2026
e72b5a4
Docs: Adding javadocs
May 11, 2026
cfbc5bc
fet: Adding javafx tab view with graph for stocks
May 11, 2026
d875da2
Merge pull request #42 from IDATT2003-gruppe06/javadocs
mohenoen May 11, 2026
c07cf3a
Merge pull request #43 from IDATT2003-gruppe06/dev
nolydvo May 11, 2026
41d75a4
changed CSVStockFileParserTest to only test parsing instead of file a…
May 11, 2026
df559bb
Created InvalidFormatException to handle incorrect formats when parsi…
May 11, 2026
932bee6
Feat: Exception handling for invalid file formats
May 15, 2026
6ec8351
Merge pull request #44 from IDATT2003-gruppe06/file-io-development
nolydvo May 15, 2026
4ced676
Added closing prevention to tabs on game view
May 15, 2026
2f63d03
Created CSVFileHandler to reduce overhead code when reading stocks fr…
May 18, 2026
ff38fdf
Removed reduntant attributes for CSVParser and changed the parse meth…
May 18, 2026
81ad8ae
Refactored packagestructure for csv file handlers
May 18, 2026
88c9c53
Merge pull request #48 from IDATT2003-gruppe06/file-io-development
nolydvo May 18, 2026
e2c9b9f
Added more robust verification of csv file formats, and expanded on e…
May 18, 2026
25088a1
Cleaned up CSVStockFileParserTest
May 18, 2026
81a8164
Added additional tests to csv parsing
May 18, 2026
91ce42c
Added JavaDoc to fileIO files
May 18, 2026
c717175
Cleaned up CSVStockFileWriter and added a logger for exceptions
May 18, 2026
6e01d27
Added logging for exceptions in App.java
May 18, 2026
3f6b4ff
Merge pull request #50 from IDATT2003-gruppe06/file-io-development
nolydvo May 18, 2026
2ea3eee
Added text input prevention for number input fields in StartView
May 19, 2026
fd86479
Added UncheckedFileNotFoundException to handle delegation of FileNotF…
May 19, 2026
575acb8
feat: Adding default stocks file
May 22, 2026
9af3c76
Feat: Adding buy and sell buttons on stocks tab
May 22, 2026
8d704be
fix: Adding missing staged lines
May 22, 2026
53ec0ce
refactor: move common gameView functions to ViewUtils
May 23, 2026
0459af1
feat: Adding simple portifolio and transactions list
May 23, 2026
0950372
EXPERIMENTAL: Added volatility parameters to stocks
May 23, 2026
ff73c1b
Added logging for exceptions in startview. Continued JavaDoc document…
May 24, 2026
3a96abb
Refactored test packagestructure to match project structure
May 24, 2026
1e156e1
Changed where FileNotFoundException is wrapped in an UncheckedFileNot…
May 24, 2026
9d4abda
feat: Adding transactions table with colors
May 25, 2026
f4b97df
Merge remote-tracking branch 'origin/file-io-development' into dev
May 25, 2026
69f7abe
Merging changes, defined price functions
May 25, 2026
4079e92
Deleted unused duplicate files, continued javadoc documentation
May 25, 2026
18a74af
Fixed CSVStockFileParserTest, moved calculatortests to model to match…
May 25, 2026
2ef6cb7
Merge branch 'dev' into test-development
nolydvo May 25, 2026
4dfeb51
Merge pull request #52 from IDATT2003-gruppe06/test-development
nolydvo May 25, 2026
9d0cbfd
Create README.md
nolydvo May 25, 2026
d3a095f
Added a button to redirect to stock market page from portfolio tab
May 25, 2026
381a64d
Small UI tweaks
May 25, 2026
08991e1
feat: sell and quit button
May 25, 2026
d7c9b06
feat: adding styling to application + Market page
May 25, 2026
2d2cbd3
Merge remote-tracking branch 'origin/dev' into feat/prettify
May 26, 2026
407efb1
Merge pull request #54 from IDATT2003-gruppe06/feat/prettify
mohenoen May 26, 2026
d433511
added default-stocks file with up to date format
May 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,5 @@ build/

### Mac OS ###
.DS_Store

shell.nix
6 changes: 0 additions & 6 deletions .vscode/settings.json

This file was deleted.

11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Millions stock trading game

Made by:
- Nikolai Oliver Aasheim Lydvo
- Martin Olai Amundsen Henøen

How to run the game:
1. Download the latest release
2. Ensure you have Java 25 and the Maven commandline tool installed
3. Navigate to the project root directory and run the command: "mvn javafx:run"
4. Set up your game configuration and start game
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>6.0.1</version>
<version>5.11.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand All @@ -48,7 +48,7 @@
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<configuration>
<mainClass>temppackage.Main</mainClass>
<mainClass>millions.App</mainClass>
</configuration>
</plugin>
<plugin>
Expand Down
95 changes: 95 additions & 0 deletions src/main/java/millions/App.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package millions;

import java.math.BigDecimal;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.stage.Stage;
import millions.controller.GameController;
import millions.controller.fileIO.InvalidFormatException;
import millions.controller.fileIO.UncheckedFileNotFoundException;
import millions.view.ExitView;
import millions.view.GameView;
import millions.view.StartView;

/** Main JavaFX application entry point for the Millions stock trading game. */
public class App extends Application {
private static final Logger logger = Logger.getLogger(App.class.getName());
private static final String STYLESHEET =
Objects.requireNonNull(App.class.getResource("/styles/millions.css")).toExternalForm();

@Override
public void start(Stage stage) {
GameController controller = new GameController();
StartView startView = new StartView(stage);

startView
.getStartButton()
.setOnAction(
event -> {
try {
controller.startGame(
startView.getName(),
new BigDecimal(startView.getStartingAmount()),
startView.getSelectedFile().toPath(),
startView.getPreRunWeeks());

GameView gameView =
new GameView(
controller,
() -> {
ExitView exitView = new ExitView(controller.getPlayer());
exitView.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
Scene exitScene = new Scene(exitView, 500, 400);
exitScene.getStylesheets().add(STYLESHEET);
stage.setScene(exitScene);
});
controller.getPlayer().addListener(gameView);
controller.getExchange().addListener(gameView);

Scene gameScene = new Scene(gameView, 1920, 1080);
gameScene.getStylesheets().add(STYLESHEET);
stage.setScene(gameScene);
} catch (InvalidFormatException e) {
logger.log(Level.WARNING, "InvalidFormatException: " + e.getMessage());

Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Error with selected file");
alert.setContentText(
e.getMessage() + "\nPlease control the format of the selected file");

alert.showAndWait();

} catch (UncheckedFileNotFoundException e) {
logger.log(Level.WARNING, "FileNotFoundException: " + e.getMessage());

Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Error with selected file");
alert.setContentText(e.getMessage());

alert.showAndWait();

} catch (RuntimeException ex) {
logger.log(Level.SEVERE, ex.getMessage());
System.exit(0);
}
});

Scene scene = new Scene(startView, 400, 350);
scene.getStylesheets().add(STYLESHEET);
stage.setTitle("Millions");
stage.setMinWidth(900);
stage.setMinHeight(600);
stage.setScene(scene);
stage.show();
}

public static void main(String[] args) {
launch(args);
}
}
68 changes: 0 additions & 68 deletions src/main/java/millions/Exchange.java

This file was deleted.

43 changes: 0 additions & 43 deletions src/main/java/millions/Player.java

This file was deleted.

34 changes: 0 additions & 34 deletions src/main/java/millions/Portfolio.java

This file was deleted.

27 changes: 0 additions & 27 deletions src/main/java/millions/Share.java

This file was deleted.

32 changes: 0 additions & 32 deletions src/main/java/millions/Stock.java

This file was deleted.

Loading