diff --git a/JavaCreditest/.idea/misc.xml b/JavaCreditest/.idea/misc.xml index cd95618..a7dddae 100644 --- a/JavaCreditest/.idea/misc.xml +++ b/JavaCreditest/.idea/misc.xml @@ -7,7 +7,7 @@ - + diff --git a/JavaCreditest/src/main/java/module-info.java b/JavaCreditest/src/main/java/module-info.java index 1ade60d..6dd3fbb 100644 --- a/JavaCreditest/src/main/java/module-info.java +++ b/JavaCreditest/src/main/java/module-info.java @@ -12,11 +12,11 @@ requires com.google.gson; requires java.naming; requires java.sql; - requires java.persistence; + requires javax.persistence; - opens ru.meowmure.javacreditest.Clockshop to com.google.gson; + opens ru.meowmure.javacreditest.Model to com.google.gson; opens ru.meowmure.javacreditest to javafx.fxml; - exports ru.meowmure.javacreditest.Clockshop; + exports ru.meowmure.javacreditest.Model; exports ru.meowmure.javacreditest; exports ru.meowmure.javacreditest.Controllers; opens ru.meowmure.javacreditest.Controllers to javafx.fxml; diff --git a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/ClockShopApplication.java b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/ClockShopApplication.java index 42c2ef5..bb95be5 100644 --- a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/ClockShopApplication.java +++ b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/ClockShopApplication.java @@ -8,7 +8,7 @@ import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.stage.Stage; -import ru.meowmure.javacreditest.Clockshop.Clock; +import ru.meowmure.javacreditest.Model.Clock; import ru.meowmure.javacreditest.Controllers.GUIController; import ru.meowmure.javacreditest.Controllers.ItemController; import ru.meowmure.javacreditest.Controllers.TimeController; @@ -28,7 +28,7 @@ public void start(Stage stage) throws IOException { public void showMainWindow() { try { - FXMLLoader loader = new FXMLLoader(ClockShopApplication.class.getResource("NewMainWindow.fxml")); + FXMLLoader loader = new FXMLLoader(ClockShopApplication.class.getResource("MainWindow.fxml")); Scene mainScene = new Scene(loader.load()); Stage mainStage = new Stage(); mainStage.setTitle("Shop"); diff --git a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/DBController.java b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/DBController.java index 3dcdfef..90ea774 100644 --- a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/DBController.java +++ b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/DBController.java @@ -1,7 +1,7 @@ package ru.meowmure.javacreditest.Controllers; import javafx.scene.Group; -import ru.meowmure.javacreditest.Clockshop.Clock; +import ru.meowmure.javacreditest.Model.Clock; import ru.meowmure.javacreditest.Exceptions.IncorrectNumberException; import java.sql.PreparedStatement; diff --git a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/DefaultList.java b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/DefaultList.java new file mode 100644 index 0000000..5544830 --- /dev/null +++ b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/DefaultList.java @@ -0,0 +1,54 @@ +package ru.meowmure.javacreditest.Controllers; + +import javafx.scene.paint.Color; +import ru.meowmure.javacreditest.Exceptions.IncorrectNumberException; +import ru.meowmure.javacreditest.Model.Clock; + +public class DefaultList { + public static void createDefaultList(GUIController controller) { + try { + Color colorRolex = Color.GOLD; + Clock clockRolex = new Clock(controller.getGroup(), colorRolex); + clockRolex.setName("Day Date 40"); + clockRolex.setMark("Rolex"); + clockRolex.setCost(500000); + clockRolex.setTyped(true); + + Color colorPatekPhilippe = Color.GHOSTWHITE; + Clock clockPatekPhilippe = new Clock(controller.getGroup(), colorPatekPhilippe); + clockPatekPhilippe.setName("Nautilus"); + clockPatekPhilippe.setMark("Patek Philippe"); + clockPatekPhilippe.setCost(990000); + clockPatekPhilippe.setTyped(true); + + Color colorTAGHeuer = Color.ROYALBLUE; + Clock clockTAGheuer = new Clock(controller.getGroup(), colorTAGHeuer); + clockTAGheuer.setName("Monaco"); + clockTAGheuer.setMark("TAG Heuer"); + clockTAGheuer.setCost(478000); + clockTAGheuer.setTyped(false); + + Color colorLongines = Color.LIMEGREEN; + Clock clockLongines = new Clock(controller.getGroup(), colorLongines); + clockLongines.setName("Spirit"); + clockLongines.setMark("Longines"); + clockLongines.setCost(333600); + clockLongines.setTyped(false); + + Color colorAudemarsPiguet = Color.LIGHTSTEELBLUE; + Clock clockAudemarsPiguet = new Clock(controller.getGroup(), colorAudemarsPiguet); + clockAudemarsPiguet.setName("Royal Oak"); + clockAudemarsPiguet.setMark("Audemars Piguet"); + clockAudemarsPiguet.setCost(777000); + clockAudemarsPiguet.setTyped(true); + + controller.getListView().getItems().add(clockRolex); + controller.getListView().getItems().add(clockPatekPhilippe); + controller.getListView().getItems().add(clockTAGheuer); + controller.getListView().getItems().add(clockLongines); + controller.getListView().getItems().add(clockAudemarsPiguet); + } catch (IncorrectNumberException e) { + throw new RuntimeException(e); + } + } +} diff --git a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/GUIController.java b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/GUIController.java index 333fe13..a52069d 100644 --- a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/GUIController.java +++ b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/GUIController.java @@ -6,19 +6,15 @@ import javafx.fxml.FXML; import javafx.scene.Group; import javafx.scene.control.*; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.MenuItem; -import javafx.scene.control.TextField; import javafx.scene.input.MouseEvent; -import javafx.scene.paint.Color; import javafx.stage.FileChooser; import ru.meowmure.javacreditest.ClockShopApplication; -import ru.meowmure.javacreditest.Clockshop.Clock; -import ru.meowmure.javacreditest.Exceptions.IncorrectNumberException; +import ru.meowmure.javacreditest.Model.Clock; import java.io.*; -import java.util.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; public class GUIController { @@ -69,18 +65,32 @@ public class GUIController { private ClockShopApplication app; - public void setApp(ClockShopApplication app) { this.app = app; } + + public void setApp(ClockShopApplication app) { + this.app = app; + } public void setListView(ListView listView) { this.listView = listView; } public void add(ActionEvent actionEvent) { - Color color = new Random().nextInt(2) == 0 ? Color.AQUA : Color.MAGENTA; - Clock clock = new Clock(group, color); + Clock clock = new Clock(group); app.showAddWindow(clock, listView); } + public ListView getListView() { + return listView; + } + + public Group getGroup() { + return group; + } + + public void setGroup(Group group) { + this.group = group; + } + public void onItemSelected(MouseEvent mouseEvent) { if (listView.getItems().isEmpty()) return; @@ -240,49 +250,6 @@ public void dataBaseSave(ActionEvent actionEvent) { } public void defaultClockBrands() { - try { - Color colorRolex = Color.GOLD; - Clock clockRolex = new Clock(group, colorRolex); - clockRolex.setName("Day Date 40"); - clockRolex.setMark("Rolex"); - clockRolex.setCost(500000); - clockRolex.setTyped(true); - - Color colorPatekPhilippe = Color.GHOSTWHITE; - Clock clockPatekPhilippe = new Clock(group, colorPatekPhilippe); - clockPatekPhilippe.setName("Nautilus"); - clockPatekPhilippe.setMark("PatekPhilippe"); - clockPatekPhilippe.setCost(990000); - clockPatekPhilippe.setTyped(true); - - Color colorTAGHeuer = Color.ROYALBLUE; - Clock clockTAGheuer = new Clock(group, colorTAGHeuer); - clockTAGheuer.setName("Monaco"); - clockTAGheuer.setMark("TAG Heuer"); - clockTAGheuer.setCost(478000); - clockTAGheuer.setTyped(false); - - Color colorLongines = Color.LIMEGREEN; - Clock clockLongines = new Clock(group, colorLongines); - clockLongines.setName("Spirit"); - clockLongines.setMark("Longines"); - clockLongines.setCost(333600); - clockLongines.setTyped(false); - - Color colorAudemarsPiguet = Color.LIGHTSTEELBLUE; - Clock clockAudemarsPiguet = new Clock(group, colorAudemarsPiguet); - clockAudemarsPiguet.setName("Royal Oak"); - clockAudemarsPiguet.setMark("Audemars Piguet"); - clockAudemarsPiguet.setCost(777000); - clockAudemarsPiguet.setTyped(true); - - listView.getItems().add(clockRolex); - listView.getItems().add(clockPatekPhilippe); - listView.getItems().add(clockTAGheuer); - listView.getItems().add(clockLongines); - listView.getItems().add(clockAudemarsPiguet); - } catch (IncorrectNumberException e) { - throw new RuntimeException(e); - } + DefaultList.createDefaultList(this); } } diff --git a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/ItemController.java b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/ItemController.java index c49b3cd..76e7208 100644 --- a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/ItemController.java +++ b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/ItemController.java @@ -2,28 +2,27 @@ import javafx.collections.FXCollections; -import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; -import javafx.fxml.Initializable; import javafx.scene.control.*; import javafx.scene.paint.Color; import javafx.stage.Stage; import ru.meowmure.javacreditest.ClockShopApplication; -import ru.meowmure.javacreditest.Clockshop.Clock; import ru.meowmure.javacreditest.Exceptions.IncorrectNumberException; +import ru.meowmure.javacreditest.Model.Clock; -import java.net.URL; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class ItemController { -public class ItemController implements Initializable { - ObservableList list = FXCollections.observableArrayList(); @FXML private Button buttonCreate = new Button(); @FXML - private TextField name = new TextField(); + private TextField name = new TextField(); @FXML - private ChoiceBox brandsChoiceBox; + private ChoiceBox mark = new ChoiceBox<>(); @FXML private TextField price = new TextField(); @FXML @@ -31,11 +30,13 @@ public class ItemController implements Initializable { private ClockShopApplication app; private ListView listView; private Clock clock; - private List brands = Arrays.asList("Rolex", "Patek Philippe", "TAG Heuer", "Longines", "Audemars Piguet"); - private List brandColors = Arrays.asList(Color.GOLD, Color.GHOSTWHITE, Color.ROYALBLUE, Color.LIMEGREEN, Color.LIGHTSTEELBLUE); + + List colors = new ArrayList<>(Arrays.asList(Color.GOLD, Color.GHOSTWHITE, Color.ROYALBLUE, Color.LIMEGREEN, Color.LIGHTSTEELBLUE)); + List brands = new ArrayList<>(Arrays.asList("Rolex", "Patek Philippe", "TAG Heuer", "Longines", "Audemars Piguet")); public void setApp(ClockShopApplication app) { + mark.setItems(FXCollections.observableArrayList("Rolex", "Patek Philippe", "TAG Heuer", "Longines", "Audemars Piguet")); this.app = app; } @@ -47,25 +48,32 @@ public ListView getListView() { return listView; } + public void setObject(Clock clock) { + this.clock = clock; + } + public void create(ActionEvent actionEvent) { - if ((brandsChoiceBox == null || brandsChoiceBox.getItems().isEmpty()) || (name == null || name.getText().isEmpty()) || (price == null || price.getText().isEmpty()) || (type == null)) { + if ((mark == null || mark.getItems().isEmpty()) || (name == null || name.getText().isEmpty()) || (price == null || price.getText().isEmpty()) || (type == null)) { new Alert(Alert.AlertType.ERROR, "The one of the fields is null or empty").showAndWait(); return; } + clock.setMark(mark.getValue()); + clock.setColor(colors.get(brands.indexOf(mark.getValue()))); + try { clock.setCost(Integer.parseInt(price.getText())); } catch ( IncorrectNumberException e) { - new Alert(Alert.AlertType.ERROR, "Price is below zero").showAndWait(); + new Alert(Alert.AlertType.ERROR, e.getMessage()).showAndWait(); return; } catch (NumberFormatException e) { - new Alert(Alert.AlertType.ERROR, "Price is not a number").showAndWait(); + new Alert(Alert.AlertType.ERROR, e.getMessage()).showAndWait(); return; } clock.setName(name.getText()); clock.setTyped(type.isSelected()); - checkMatches(); + //checkMatches(); listView.getItems().add(clock); @@ -81,21 +89,11 @@ public void checkMatches() { } } } - public void setObject(Clock clock) { - this.clock = clock; - } + //public void setObject(Clock clock) { +// this.clock = clock; +// } public void returnList() { app.GUIcontroller.setListView(listView); } - - @Override - public void initialize(URL url, ResourceBundle resourceBundle) { - brandsChoiceBox.getItems().addAll(brands); - } - - public void onMarkSelected(ActionEvent actionEvent) { - clock.setMark(brandsChoiceBox.getValue()); - clock.setColor(brandColors.get(brands.indexOf(brandsChoiceBox.getValue()))); - } } diff --git a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/TimeController.java b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/TimeController.java index 694f59b..63bc2cb 100644 --- a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/TimeController.java +++ b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Controllers/TimeController.java @@ -2,15 +2,12 @@ import javafx.event.ActionEvent; import javafx.fxml.FXML; -import javafx.scene.Group; import javafx.scene.control.Button; -import javafx.scene.control.Label; import javafx.scene.control.ListView; import javafx.scene.control.TextField; -import javafx.scene.text.Font; import javafx.stage.Stage; import ru.meowmure.javacreditest.ClockShopApplication; -import ru.meowmure.javacreditest.Clockshop.Clock; +import ru.meowmure.javacreditest.Model.Clock; public class TimeController { @FXML diff --git a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Clockshop/Clock.java b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Model/Clock.java similarity index 94% rename from JavaCreditest/src/main/java/ru/meowmure/javacreditest/Clockshop/Clock.java rename to JavaCreditest/src/main/java/ru/meowmure/javacreditest/Model/Clock.java index 5ad8a5e..fe121b4 100644 --- a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Clockshop/Clock.java +++ b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Model/Clock.java @@ -1,4 +1,4 @@ -package ru.meowmure.javacreditest.Clockshop; +package ru.meowmure.javacreditest.Model; import com.google.gson.annotations.Expose; @@ -15,7 +15,7 @@ @Table(name = "clocks") public class Clock implements Serializable { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) + @GeneratedValue(strategy = GenerationType.AUTO) private transient int id; @Expose private String name; @@ -48,6 +48,18 @@ public Clock(Group group, Color color) { blue = color.getBlue(); } + public Clock(Group group) { + clockPane = new ClockPane(group, this); + timeStart = new GregorianCalendar(); + } + + public void setColor(Color color) { + red = color.getRed(); + green = color.getGreen(); + blue = color.getBlue(); + clockPane.setColor(color); + } + public int getId() { return id; } @@ -142,12 +154,6 @@ public void setTime(int hours, int minutes, int seconds) { timeStart = new GregorianCalendar(); } - public void setColor(Color color) { - red = color.getRed(); - blue = color.getBlue(); - green = color.getGreen(); - } - public void clockRestored(Group group) { clockPane = new ClockPane(group, this, Color.color(red, green, blue)); } diff --git a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Clockshop/ClockPane.java b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Model/ClockPane.java similarity index 95% rename from JavaCreditest/src/main/java/ru/meowmure/javacreditest/Clockshop/ClockPane.java rename to JavaCreditest/src/main/java/ru/meowmure/javacreditest/Model/ClockPane.java index 3f88b48..edf388a 100644 --- a/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Clockshop/ClockPane.java +++ b/JavaCreditest/src/main/java/ru/meowmure/javacreditest/Model/ClockPane.java @@ -1,4 +1,4 @@ -package ru.meowmure.javacreditest.Clockshop; +package ru.meowmure.javacreditest.Model; import javafx.animation.*; import javafx.scene.Group; @@ -10,8 +10,6 @@ import javafx.scene.transform.Rotate; import javafx.util.Duration; -import java.io.Serializable; - public class ClockPane { private Group group; private Clock clock; @@ -22,11 +20,18 @@ public class ClockPane { private double width = 350, height = 350; + public ClockPane(Group group, Clock clock) { + this.group = group; + this.clock = clock; + } public ClockPane(Group group, Clock clock, Color color){ this.group = group; this.clock = clock; this.color = color; } + public void setColor(Color color) { + this.color = color; + } public void PaintClock(int hours, int minutes, int seconds) { group.getChildren().clear(); diff --git a/JavaCreditest/src/main/resources/ru/meowmure/javacreditest/NewMainWindow.fxml b/JavaCreditest/src/main/resources/ru/meowmure/javacreditest/MainWindow.fxml similarity index 86% rename from JavaCreditest/src/main/resources/ru/meowmure/javacreditest/NewMainWindow.fxml rename to JavaCreditest/src/main/resources/ru/meowmure/javacreditest/MainWindow.fxml index 67c6841..1b142d2 100644 --- a/JavaCreditest/src/main/resources/ru/meowmure/javacreditest/NewMainWindow.fxml +++ b/JavaCreditest/src/main/resources/ru/meowmure/javacreditest/MainWindow.fxml @@ -13,14 +13,14 @@ - - - + + + - - - - + + + + @@ -140,19 +140,7 @@ - - - - diff --git a/JavaCreditest/src/main/resources/ru/meowmure/javacreditest/NewItem.fxml b/JavaCreditest/src/main/resources/ru/meowmure/javacreditest/NewItem.fxml index ebbce03..b772f79 100644 --- a/JavaCreditest/src/main/resources/ru/meowmure/javacreditest/NewItem.fxml +++ b/JavaCreditest/src/main/resources/ru/meowmure/javacreditest/NewItem.fxml @@ -3,7 +3,7 @@ - +