Advertisement
Guest User

Untitled

a guest
Dec 7th, 2018
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 70.48 KB | None | 0 0
  1. package DogHouse;
  2.  
  3. import java.net.URL;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.PreparedStatement;
  7. import java.sql.ResultSet;
  8. import java.sql.Statement;
  9. import java.text.DateFormat;
  10. import java.text.DecimalFormat;
  11. import java.text.SimpleDateFormat;
  12. import java.time.LocalDate;
  13. import java.util.ArrayList;
  14. import java.util.Date;
  15. import java.util.HashSet;
  16. import java.util.Optional;
  17. import java.util.Properties;
  18.  
  19. import javax.mail.Message;
  20. import javax.mail.MessagingException;
  21. import javax.mail.PasswordAuthentication;
  22. import javax.mail.Session;
  23. import javax.mail.Transport;
  24. import javax.mail.internet.InternetAddress;
  25. import javax.mail.internet.MimeMessage;
  26. import javafx.animation.Animation;
  27. import javafx.animation.KeyFrame;
  28. import javafx.animation.Timeline;
  29. import javafx.application.Application;
  30. import javafx.collections.FXCollections;
  31. import javafx.collections.ObservableList;
  32. import javafx.event.ActionEvent;
  33. import javafx.event.EventHandler;
  34. import javafx.geometry.Insets;
  35. import javafx.geometry.Pos;
  36. import javafx.scene.Group;
  37. import javafx.scene.Scene;
  38. import javafx.scene.control.Alert;
  39. import javafx.scene.control.Alert.AlertType;
  40. import javafx.scene.control.Button;
  41. import javafx.scene.control.ChoiceBox;
  42. import javafx.scene.control.Label;
  43. import javafx.scene.control.TableColumn;
  44. import javafx.scene.control.TableView;
  45. import javafx.scene.control.TextField;
  46. import javafx.scene.control.TextInputDialog;
  47. import javafx.scene.control.cell.PropertyValueFactory;
  48. import javafx.scene.effect.Glow;
  49. import javafx.scene.effect.Lighting;
  50. import javafx.scene.image.Image;
  51. import javafx.scene.image.ImageView;
  52. import javafx.scene.layout.BorderPane;
  53. import javafx.scene.layout.GridPane;
  54. import javafx.scene.layout.HBox;
  55. import javafx.scene.layout.StackPane;
  56. import javafx.scene.layout.VBox;
  57. import javafx.scene.media.Media;
  58. import javafx.scene.media.MediaPlayer;
  59. import javafx.scene.paint.Color;
  60. import javafx.scene.shape.Rectangle;
  61. import javafx.scene.text.Font;
  62. import javafx.scene.text.FontWeight;
  63. import javafx.scene.text.Text;
  64. import javafx.stage.Stage;
  65. import javafx.util.Duration;
  66.  
  67. public class javaFXPane extends Application {
  68. private static MediaPlayer mediaPlayer;
  69. private static MediaPlayer cuteBarking;
  70. private static MediaPlayer dogPanting;
  71. private static MediaPlayer mediaPlayerHeater;
  72. private static MediaPlayer mediaPlayerHeaterNext;
  73. private static MediaPlayer tooHotWarning;
  74. private static MediaPlayer tooColdWarning;
  75. private static MediaPlayer properTemp;
  76. private static MediaPlayer busyStreet;
  77. private TableView<Dog> table = new TableView<Dog>();
  78. private TableView<AlertMessage> alertTable = new TableView<AlertMessage>();
  79. private ObservableList<Dog> data = FXCollections.observableArrayList();
  80. public ObservableList<AlertMessage> history = FXCollections.observableArrayList();
  81. public Button backToUser = new Button("Main Menu");
  82.  
  83. //pet varialbes
  84.  
  85. int x = 0; //variable to track pet x position
  86. int y = 0;//variable to track pet's y position
  87. int a = 250;//pet size
  88. int b = 250;//pet size
  89.  
  90. int hour = 0; int min = 0; int hours = 0; int mins = 0;
  91.  
  92. public Lighting lighting = new Lighting();
  93. Glow gl = new Glow();
  94. @Override
  95. public void start(Stage stage) throws Exception {
  96.  
  97. /*line 378
  98. *line 521
  99. *line 620
  100. *line 754
  101. *line 846
  102. *line 853 The dogHappySound.mp3 doesn't work on my computer so I convert it to .wav format and it works
  103. *line 971
  104. *line 1096 The cuteDogBarking.mp3 doesn't work on my computer so I convert it to .wav format and it works
  105. */
  106.  
  107.  
  108. //class to register dog position
  109. DistanceFromHouse dog = new DistanceFromHouse();
  110.  
  111. ImageView pet = new ImageView();
  112. ImageView pet2 = new ImageView();
  113.  
  114. ImageView dogHouse = new ImageView();
  115.  
  116. ImageView tennisBall = new ImageView();
  117. FetchBall TBall = new FetchBall();
  118. ImageView light = new ImageView();
  119.  
  120. //BUTTONS//
  121.  
  122. //btCheckDistance
  123. Button btCheckDistance = new Button("CheckDis");
  124. btCheckDistance.setStyle("-fx-background-color: Black");
  125. btCheckDistance.setTextFill(Color.WHITE);
  126.  
  127. //btMoveForward
  128. Button btMoveFordward = new Button("Forward");
  129. btMoveFordward.setStyle("-fx-background-color: Black");
  130. btMoveFordward.setTextFill(Color.WHITE);
  131.  
  132. //btMoveBackWard
  133. Button btMoveBackward = new Button("Backward");
  134. btMoveBackward.setStyle("-fx-background-color: Black");
  135. btMoveBackward.setTextFill(Color.WHITE);
  136.  
  137. //btUpward
  138. Button btUpward = new Button ("Upward");
  139. btUpward.setStyle("-fx-background-color: Black");
  140. btUpward.setTextFill(Color.WHITE);
  141.  
  142. //btDownWard
  143. Button btDownward = new Button("Downward");
  144. btDownward.setStyle("-fx-background-color: Black");
  145. btDownward.setTextFill(Color.WHITE);
  146.  
  147. //btTrowBall
  148. Button throwBall = new Button("Throw Tennis Ball");
  149. throwBall.setStyle("-fx-background-color: Black");
  150. throwBall.setTextFill(Color.WHITE);
  151.  
  152. //bt unmute
  153. Button unmute = new Button("unmute");
  154. unmute.setDisable(true);
  155. unmute.setStyle("-fx-background-color: Black");
  156. unmute.setTextFill(Color.WHITE);
  157.  
  158. //bt mute
  159. Button mute = new Button("mute");
  160. mute.setStyle("-fx-background-color: Black");
  161. mute.setTextFill(Color.WHITE);
  162.  
  163. Button viewInfor = new Button("Database");
  164.  
  165. viewInfor.setStyle("-fx-background-color: Black");
  166. viewInfor.setTextFill(Color.WHITE);
  167.  
  168.  
  169. backToUser.setStyle("-fx-background-color: Black");
  170.  
  171. backToUser.setTextFill(Color.WHITE);
  172.  
  173. backToUser.setOnAction(event->{
  174. UserInputPane us = new UserInputPane();
  175. Stage userStage = new Stage();
  176. try {
  177. us.start(userStage);
  178. stage.close();
  179. mediaPlayer.stop();
  180. cuteBarking.stop();
  181. }catch (Exception e3) {
  182. // TODO Auto-generated catch block
  183. e3.printStackTrace();
  184. }
  185. });
  186.  
  187. /////////////////////////////////////////////////////////////////////////////////////////////////
  188. viewInfor.setOnAction(e->{
  189. data.clear();
  190.  
  191. String url = "jdbc:mysql://localhost/cs3220stu55?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
  192. String username = "cs3220stu55";
  193. String password = "zWpa0NxR";
  194.  
  195.  
  196.  
  197. try {
  198. Connection c = DriverManager
  199. .getConnection( url, username, password );
  200. Statement stmt = c.createStatement();
  201.  
  202. ResultSet rs = stmt.executeQuery( "select * from pet" );
  203.  
  204. while( rs.next() )
  205. {
  206. LocalDate today = rs.getDate("birthday").toLocalDate();
  207. LocalDate tomorrow = today.plusDays(1);
  208. data.add(new Dog(rs.getString("name"),rs.getString("breed"),
  209. rs.getString("gender"),rs.getString("furColor"),rs.getInt("weight"),rs.getInt("height"),
  210. tomorrow,rs.getBoolean("neutorSpay"),rs.getBoolean("microchipped"),rs.getString("phoneNumber"),rs.getString("provider")));
  211.  
  212. }
  213.  
  214. c.close();
  215.  
  216.  
  217.  
  218.  
  219.  
  220. } catch (Exception exception) {
  221. exception.printStackTrace();
  222. //System.out.println("Error on Building Data");
  223. }
  224. table.getColumns().clear();
  225.  
  226.  
  227. Stage fifthStage = new Stage();
  228.  
  229. Scene scene = new Scene(new Group());
  230.  
  231. final Label label = new Label("Dog Information");
  232. label.setFont(new Font("Arial", 20));
  233.  
  234. table.setEditable(true);
  235.  
  236. TableColumn NameCol = new TableColumn("name");
  237. NameCol.setMaxWidth(100);
  238. NameCol.setCellValueFactory(
  239. new PropertyValueFactory<Dog, String>("name"));
  240.  
  241. TableColumn breedCol = new TableColumn("breed");
  242. breedCol.setMaxWidth(200);
  243. breedCol.setCellValueFactory(
  244. new PropertyValueFactory<Dog, String>("breed"));
  245.  
  246. TableColumn genderCol = new TableColumn("gender");
  247. genderCol.setMaxWidth(100);
  248. genderCol.setCellValueFactory(
  249. new PropertyValueFactory<Dog, String>("gender"));
  250.  
  251. TableColumn furColorCol = new TableColumn("furColor");
  252. furColorCol.setMaxWidth(100);
  253. furColorCol.setCellValueFactory(
  254. new PropertyValueFactory<Dog, String>("furColor"));
  255.  
  256. TableColumn weightCol = new TableColumn("weight");
  257. weightCol.setMaxWidth(100);
  258. weightCol.setCellValueFactory(
  259. new PropertyValueFactory<Dog, Integer>("weight"));
  260.  
  261. TableColumn heightCol = new TableColumn("height");
  262. heightCol.setMaxWidth(100);
  263. heightCol.setCellValueFactory(
  264. new PropertyValueFactory<Dog, Integer>("height"));
  265.  
  266. TableColumn birthdayCol = new TableColumn("birthday");
  267. birthdayCol.setMaxWidth(100);
  268. birthdayCol.setCellValueFactory(
  269. new PropertyValueFactory<Dog, String>("birthday"));
  270.  
  271. TableColumn spayCol = new TableColumn("neuterSpay");
  272. spayCol.setMaxWidth(100);
  273. spayCol.setCellValueFactory(
  274. new PropertyValueFactory<Dog, Boolean>("neuterSpay"));
  275.  
  276. TableColumn microchippedCol = new TableColumn("microchip");
  277. microchippedCol.setMaxWidth(100);
  278. microchippedCol.setCellValueFactory(
  279. new PropertyValueFactory<Dog, Boolean>("microchip"));
  280.  
  281.  
  282. TableColumn phoneNumberCol = new TableColumn("phone number");
  283. phoneNumberCol.setMaxWidth(150);
  284. phoneNumberCol.setCellValueFactory(
  285. new PropertyValueFactory<Dog, String>("phoneNumber"));
  286.  
  287. TableColumn providerCol = new TableColumn("provider");
  288. providerCol.setMaxWidth(150);
  289. providerCol.setCellValueFactory(
  290. new PropertyValueFactory<Dog, String>("provider"));
  291.  
  292. // ObservableList<Dog> list = FXCollections.observableArrayList(dogInformation);
  293. ObservableList<Dog> list = removeDuplicates(data);
  294. table.setItems(list);
  295. table.getColumns().addAll(NameCol, breedCol, genderCol,furColorCol, weightCol,
  296. heightCol, birthdayCol, spayCol, microchippedCol,phoneNumberCol, providerCol);
  297.  
  298.  
  299. Button clear = new Button("Clear");
  300. Button delete = new Button("Delete This");
  301.  
  302. delete.setOnAction(ee->{
  303. Dog selectedItem = table.getSelectionModel().getSelectedItem();
  304. table.getItems().remove(selectedItem);
  305. Connection conn = null;
  306. try{
  307. Class.forName("com.mysql.cj.jdbc.Driver");
  308.  
  309. conn = DriverManager.getConnection(url, username, password);
  310.  
  311. String sql = "DELETE FROM pet where name = ?";
  312.  
  313. PreparedStatement preparedStmt = conn.prepareStatement(sql);
  314. preparedStmt.setString(1,selectedItem.getName());
  315. preparedStmt.execute();
  316. conn.close();
  317.  
  318. }catch(Exception exc) {
  319. exc.printStackTrace();
  320. }
  321. if(table.getItems().isEmpty()) {
  322. fifthStage.close();
  323.  
  324. UserInputPane us = new UserInputPane();
  325. Stage userStage = new Stage();
  326. try {
  327. us.start(userStage);
  328. stage.close();
  329. mediaPlayer.stop();
  330. cuteBarking.stop();
  331. }catch (Exception e3) {
  332. // TODO Auto-generated catch block
  333. e3.printStackTrace();
  334. }
  335.  
  336. }
  337. });
  338.  
  339. clear.setOnAction(e1->{
  340. UserInputPane.dogInformation.clear();
  341. Connection conn = null;
  342. Statement stmte = null;
  343.  
  344. try{
  345.  
  346. Class.forName("com.mysql.cj.jdbc.Driver");
  347.  
  348. conn = DriverManager.getConnection(url, username, password);
  349.  
  350. stmte = conn.createStatement();
  351.  
  352. String sql = "DELETE FROM pet;";
  353.  
  354. stmte.executeUpdate(sql);
  355. }catch(Exception exc) {
  356. exc.printStackTrace();
  357. }
  358.  
  359. refreshTable();
  360.  
  361. fifthStage.close();
  362.  
  363. UserInputPane us = new UserInputPane();
  364. Stage userStage = new Stage();
  365. try {
  366. us.start(userStage);
  367. stage.close();
  368. mediaPlayer.stop();
  369. cuteBarking.stop();
  370. }catch (Exception e3) {
  371. // TODO Auto-generated catch block
  372. e3.printStackTrace();
  373. }
  374. });
  375.  
  376. final VBox vbox = new VBox();
  377. vbox.setSpacing(5);
  378. vbox.setPadding(new Insets(10, 0, 0, 10));
  379. vbox.getChildren().addAll(label, table,clear,delete);
  380.  
  381. ((Group) scene.getRoot()).getChildren().addAll(vbox);
  382.  
  383. fifthStage.setScene(scene);
  384. fifthStage.show();
  385.  
  386.  
  387. });
  388. /////////////////////////////////////////////////////////////////////////////////////
  389.  
  390. //pet properties
  391. pet.setImage(new Image("dog.gif"));
  392. // pet.setEffect(lighting);
  393. pet.setFitHeight(a);
  394. pet.setFitWidth(b);
  395. //pet coordinates
  396. pet.setX(0);
  397. pet.setY(0);
  398. pet.setOnMouseDragged(e -> {
  399. pet.setX(e.getX());
  400. pet.setY(e.getY());
  401. });
  402. //pet2 properties
  403. pet2.setImage(new Image("dog.gif"));
  404. pet2.setFitHeight(a);
  405. pet2.setFitWidth(b);
  406. //pet2 coordinates
  407. pet2.setX(0);
  408. pet2.setY(0);
  409. pet2.setOnMouseDragged(e -> {
  410. pet2.setX(e.getX());
  411. pet2.setY(e.getY());
  412. });
  413. pet2.setVisible(false);
  414. //
  415. //dog house image
  416. dogHouse.setImage(new Image("dogHouse.png"));
  417. dogHouse.setEffect(gl);
  418. dogHouse.setFitHeight(280);
  419. dogHouse.setFitWidth(400);
  420.  
  421. //tennis ball
  422. tennisBall.setImage(new Image("tennisBall.png"));
  423. Glow selectGlow = new Glow(1.7f);
  424. tennisBall.setEffect(selectGlow);
  425. TBall.setTennisBallDistance();
  426. tennisBall.setX( TBall.getTennisBallDistance() );
  427. tennisBall.setFitHeight(40);
  428. tennisBall.setFitWidth(40);
  429.  
  430. //light
  431. light.setImage(new Image("light.png"));
  432. light.setFitHeight(40);
  433. light.setFitWidth(40);
  434.  
  435. GridPane pane = new GridPane();
  436.  
  437.  
  438. pane.setHgap(10);
  439. pane.setVgap(10);
  440. pane.add(dogHouse, 0, 19);
  441. Button viewRecord = new Button("ViewRec");
  442. viewRecord.setStyle("-fx-background-color: Black");
  443. viewRecord.setTextFill(Color.WHITE);
  444.  
  445.  
  446.  
  447. // throwBall.setDisable(true);
  448. // throwBall.setOnAction(e->{
  449. // TBall.setTennisBallDistance();
  450. // tennisBall.setX( TBall.getTennisBallDistance() );
  451. // tennisBall.setVisible(true);
  452. // throwBall.setDisable(true);
  453. // });
  454.  
  455.  
  456. /////////////////////////////////////////////////////Cell Phone Input/////////////////////////////////////
  457.  
  458. TextField textfield = new TextField();//phone number
  459. textfield.setPromptText("Enter Phone Number");//adds title to textfield
  460. ChoiceBox choiceBox = new ChoiceBox();//company
  461.  
  462.  
  463. //Company choices
  464. choiceBox.getItems().add("Metropcs");
  465. choiceBox.getItems().add("ATT");
  466. choiceBox.getItems().add("TMobile");
  467. choiceBox.getItems().add("Sprint");
  468. choiceBox.getItems().add("Cricket");
  469.  
  470. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  471.  
  472. //btViewRecord
  473. viewRecord.setOnAction(e->{
  474.  
  475. history.clear();
  476. String url = "jdbc:mysql://localhost/cs3220stu55?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
  477. String username = "cs3220stu55";
  478. String password = "zWpa0NxR";
  479.  
  480. Connection conn;
  481.  
  482. try{
  483.  
  484.  
  485. //STEP 3: Open a connection
  486.  
  487. conn = DriverManager.getConnection(url, username, password);
  488.  
  489. Statement statement = conn.createStatement() ;
  490. ResultSet resultset = statement.executeQuery("SELECT * FROM Alert") ;
  491. while(resultset.next()) {
  492. history.add(new AlertMessage(resultset.getString("time"),resultset.getString("alerts")));
  493. }
  494. conn.close();
  495. }catch(Exception except) {
  496. except.printStackTrace();
  497. }
  498. alertTable.getColumns().clear();
  499.  
  500. Button button = new Button("Back");
  501. GridPane recordPane = new GridPane();
  502. Stage recordStage = new Stage();
  503.  
  504. alertTable.setEditable(true);
  505. final Label alertLabel = new Label("Alert History");
  506. alertLabel.setFont(new Font("Arial", 20));
  507.  
  508. ObservableList<AlertMessage> historyNoDuplicate = removeDu(history);
  509. // TableColumn AlertCol = new TableColumn("alerts");
  510.  
  511. TableColumn TimeCol = new TableColumn("Time");
  512. TimeCol.setMaxWidth(300);
  513. TimeCol.setCellValueFactory(
  514. new PropertyValueFactory<AlertMessage, String>("time"));
  515.  
  516. TableColumn AlertCol = new TableColumn("Alert Message");
  517. AlertCol.setMaxWidth(300);
  518. AlertCol.setCellValueFactory(
  519. new PropertyValueFactory<AlertMessage, String>("alerts"));
  520.  
  521. alertTable.getColumns().addAll(AlertCol,TimeCol);
  522. alertTable.getSortOrder().addAll(TimeCol);
  523. alertTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
  524. alertTable.prefHeightProperty().bind(recordStage.heightProperty());
  525. alertTable.prefWidthProperty().bind(recordStage.widthProperty());
  526. alertTable.setItems(historyNoDuplicate);
  527. // alertTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
  528. button.setOnAction(en->{
  529. recordStage.close();
  530. });
  531. Button clear = new Button("Clear");
  532.  
  533. clear.setOnAction(e1->{
  534. history.clear();
  535. Statement statement = null;
  536. Connection c = null;
  537.  
  538. try{
  539.  
  540. Class.forName("com.mysql.cj.jdbc.Driver");
  541.  
  542. c = DriverManager.getConnection(url, username, password);
  543.  
  544. statement = c.createStatement();
  545.  
  546. String sql = "DELETE FROM Alert;";
  547.  
  548. statement.executeUpdate(sql);
  549. }catch(Exception exc) {
  550. exc.printStackTrace();
  551. }
  552.  
  553. refreshTable();
  554.  
  555. });
  556. recordPane.add(alertLabel, 0, 0);
  557. recordPane.add(alertTable, 0, 1);
  558. recordPane.add(button, 0, 21);
  559. recordPane.add(clear, 0, 22);
  560.  
  561.  
  562. recordStage.setScene(new Scene(recordPane,600,500));
  563. recordStage.show();
  564.  
  565. });
  566.  
  567. //BUTTON ACTION EVENTS
  568.  
  569. //btCheckDistance
  570. btCheckDistance.setOnAction( e ->
  571. {
  572. dog.totalDistance();
  573.  
  574. Alert alert = new Alert(AlertType.INFORMATION);
  575. alert.setTitle("pet's distance");
  576. alert.setHeaderText(null);
  577.  
  578. if(dog.total>0)
  579. {
  580. alert.setContentText("The dog is now: "+dog.total +" feet from the dog house.");
  581. }
  582. else if(dog.total==0&&!(0<pet.getTranslateX()&&pet.getTranslateX()<dogHouse.getFitWidth()))
  583. {
  584. alert.setContentText("The dog is now: 0 feet from the dog house.");
  585. }
  586. else
  587. {
  588. double distance = dog.total*(-1);
  589.  
  590. alert.setContentText("The dog is now: "+ distance +" feet from the dog house.");
  591. }
  592.  
  593. alert.showAndWait();
  594. });
  595.  
  596. //forward button
  597. btMoveFordward.setOnAction((e) ->
  598. {
  599. pet.setScaleX(1);
  600. x -= 40;
  601. pet.setTranslateX(x);
  602. dog.moveForward();
  603. if(dog.distance == 0)
  604. {
  605. //Date d = new Date();
  606. // saveAlertToDB(d.toString(),"Dog At Dog House");
  607. btMoveFordward.setDisable(true);
  608. if(TBall.doesDogHasBall())
  609. {
  610. TBall.setDogHasBall(false);
  611. TBall.setBallPresent(true);
  612. //throwBall.setDisable(false);
  613. TBall.setTennisBallDistance();
  614. tennisBall.setX( TBall.getTennisBallDistance() );
  615. tennisBall.setVisible(true);
  616. throwBall.setDisable(true);
  617. }
  618. }
  619.  
  620. if(dog.distance < 45){btMoveBackward.setDisable(false);}
  621.  
  622. if(dog.distance == TBall.getTennisBallDistance() && dog.distanceV == 0)
  623. {
  624. tennisBall.setVisible(false);
  625. TBall.setDogHasBall(true);
  626. }
  627.  
  628. dog.totalDistance();
  629. if(dog.total == 0) {pet.setVisible(false);}
  630.  
  631. if(dog.total == 0) {btUpward.setDisable(true);}
  632.  
  633. });
  634.  
  635. //backward button
  636. btMoveBackward.setOnAction(e ->
  637. {
  638. pet.setScaleX(-1);
  639. x += 40;
  640. pet.setTranslateX(x);
  641. dog.moveBackward();
  642. if(dog.distance > 0){
  643. btMoveFordward.setDisable(false);
  644. }
  645.  
  646. if(dog.distance > 45)
  647. {
  648. btMoveBackward.setDisable(true);
  649.  
  650. Date d = new Date();
  651. saveAlertToDB(d.toString(),"Dog Too Far");
  652. //history.add("Your dog is unusually far away! at " + new Date());
  653. stage.close();
  654. mediaPlayer.setMute(true);
  655. cuteBarking.setMute(true);
  656. Stage lostStage = new Stage();
  657. BorderPane bor = new BorderPane();
  658. Image i = new Image("lost.gif");
  659. ImageView iv = new ImageView();
  660. Button bt = new Button("Back");
  661. bt.setOnAction(value->{
  662. lostStage.close();
  663. busyStreet.stop();
  664. stage.show();
  665. mediaPlayer.setMute(false);
  666. cuteBarking.setMute(false);
  667.  
  668. });
  669. iv.setImage(i);
  670. iv.setFitHeight(200);
  671. iv.setFitWidth(240);
  672. bor.setCenter(iv);
  673. bor.setLeft(bt);
  674. BorderPane.setAlignment(bt, Pos.TOP_LEFT);
  675. bor.setStyle( "-fx-background-image: url(" +
  676. "'busyStreet.jpg'" +
  677. "); " +
  678. "-fx-background-size: cover;");
  679. final URL busyStreetResource = getClass().getResource("busyStreet.mp3");
  680. final Media busyStreetMedia = new Media(busyStreetResource.toString());
  681. busyStreet= new MediaPlayer(busyStreetMedia);
  682. busyStreet.setVolume(0.1);
  683. busyStreet.play();
  684.  
  685. lostStage.setScene(new Scene(bor,925,1500));
  686. lostStage.show();
  687.  
  688.  
  689. }
  690. if(dog.distance == TBall.getTennisBallDistance() && dog.distanceV == 0)
  691. {
  692. tennisBall.setVisible(false);
  693. TBall.setDogHasBall(true);
  694. }
  695.  
  696. if(dog.total > 0) {pet.setVisible(true);}
  697.  
  698. if(dog.distance > 0) {btUpward.setDisable(false);}
  699.  
  700. dog.totalDistance();
  701.  
  702. if(dog.distance > 45)
  703. {
  704. String phone = null, value = null;
  705. final String username = "doghousemessage@gmail.com"; // enter your mail id
  706. final String password = "Victory5";// enter your password
  707.  
  708. if(textfield.getText().trim().isEmpty()||textfield.getText()==null) {
  709. phone = readPhoneNumber();
  710. }
  711. if(choiceBox.getValue()==null) {
  712. value = readProvider();
  713. }
  714. if(!textfield.getText().trim().isEmpty()&&textfield.getText()!=null
  715. && choiceBox.getValue()!=null) {
  716. phone = textfield.getText();//phone number
  717. value = (String) choiceBox.getValue();
  718. }
  719. String extension = null;
  720.  
  721. switch(value)
  722. {
  723. case "Metropcs" : extension = "@mymetropcs.com";
  724. break;
  725. case "ATT" : extension = "@mms.att.net";
  726. break;
  727. case "TMobile" : extension = "@tmomail.net";
  728. break;
  729. case "Sprint" : extension = "@messaging.sprintpcs.com";
  730. break;
  731. case "Cricket" : extension = "@mms.cricketwireless.net";
  732. }
  733.  
  734. Properties props = new Properties();
  735. props.put("mail.smtp.auth", "true");
  736. props.put("mail.smtp.starttls.enable", "true");
  737. props.put("mail.smtp.host", "smtp.gmail.com");
  738. props.put("mail.smtp.port", "587");
  739.  
  740. Session session = Session.getInstance(props,
  741. new javax.mail.Authenticator() {
  742. protected PasswordAuthentication getPasswordAuthentication() {
  743. return new PasswordAuthentication(username, password);
  744. }
  745. });
  746.  
  747. try {
  748.  
  749. Message message = new MimeMessage(session);
  750. message.setFrom(new InternetAddress("doghousemessage@gmail.com")); // same email id
  751. message.setRecipients(Message.RecipientType.TO,
  752. InternetAddress.parse(phone + extension));// whom you have to send mails that person id
  753. message.setSubject("Alert");
  754. message.setText("Your dog is too far from the dog house!");
  755.  
  756. Transport.send(message);
  757.  
  758. } catch (MessagingException e1) {
  759. throw new RuntimeException(e1);
  760. }
  761. }
  762.  
  763. });
  764.  
  765. //btUpward
  766. btUpward.setOnAction(e ->
  767. {
  768. y -= 40;
  769. pet.setTranslateY(y);
  770. a -= 25;
  771. b -= 25;
  772. pet.setFitHeight(a);
  773. pet.setFitWidth(b);
  774. dog.Upward();
  775.  
  776. if(dog.distanceV > 0){btDownward.setDisable(false);}
  777.  
  778. if(dog.distanceV > 16) {btUpward.setDisable(true);}
  779. });
  780.  
  781. //btDownWard
  782. btDownward.setDisable(true);//at default disable btDownWard
  783. btDownward.setOnAction(e ->
  784. {
  785. y += 40;
  786. pet.setTranslateY(y);
  787. a += 25;
  788. b += 25;
  789. pet.setFitHeight(a);
  790. pet.setFitWidth(b);
  791. dog.Downward();
  792.  
  793. if(dog.distanceV == 0) {btDownward.setDisable(true);}
  794.  
  795. if(dog.distanceV < 22) {btUpward.setDisable(false);}
  796.  
  797. dog.totalDistance();
  798.  
  799. if(dog.total == 0) {pet.setVisible(false);}
  800.  
  801. if(dog.total == 0) {btUpward.setDisable(true);}
  802.  
  803. if(dog.distance == TBall.getTennisBallDistance() && dog.distanceV == 0)
  804. {
  805. tennisBall.setVisible(false);
  806. TBall.setDogHasBall(true);
  807. }
  808. });
  809.  
  810. //BUTTON unmute
  811. unmute.setOnAction(value->{
  812. mediaPlayer.setMute(false);
  813. unmute.setDisable(true);
  814. mute.setDisable(false);
  815. });
  816.  
  817. //BUTTON mute
  818. mute.setOnAction(value->{
  819. mediaPlayer.setMute(true);
  820. unmute.setDisable(false);
  821. mute.setDisable(true);
  822. });
  823.  
  824.  
  825. ////////////////////////////Temperature buttons and property//////////////////////////////////////////////////////////
  826.  
  827. Temperature temp = new Temperature();
  828. Text label = new Text("The current temperature: " + temp.GetTemperature());
  829.  
  830. label.setFont(Font.font("Arial", FontWeight.BOLD, 15));
  831. label.setFill(Color.BLACK);
  832. label.setStyle("-fx-background-color: coral;");
  833.  
  834. Button tempUp = new Button("Up");
  835. tempUp.setStyle("-fx-background-color: Black");
  836. tempUp.setTextFill(Color.WHITE);
  837. Button tempDown = new Button("Down");
  838. tempDown.setStyle("-fx-background-color: Black");
  839. tempDown.setTextFill(Color.WHITE);
  840. Button setOptimalTemperature = new Button("Optimal");
  841. setOptimalTemperature.setStyle("-fx-background-color: Black");
  842. setOptimalTemperature.setTextFill(Color.WHITE);
  843.  
  844. //btTempUp
  845. tempUp.setOnAction(e ->{
  846. temp.SetTemperatureUp();
  847. label.setText("The current temperature: " + temp.GetTemp());
  848.  
  849. if(temp.GetTemp() >= temp.GetOptimalTemp() + 10)
  850. {
  851.  
  852. Date d = new Date();
  853. saveAlertToDB(d.toString(),"AC Turned ON");
  854. final URL dogPantingResource = getClass().getResource("dogPanting.mp3");
  855. final Media dogPantingMedia = new Media(dogPantingResource.toString());
  856. dogPanting = new MediaPlayer(dogPantingMedia);
  857. dogPanting.setVolume(0.1);
  858. dogPanting.setOnEndOfMedia(new Runnable()
  859. {
  860. public void run() {
  861. dogPanting.seek(Duration.ZERO);
  862. }
  863. });
  864.  
  865. final URL toohotAlert = getClass().getResource("TooHotAlert.mp3");
  866. final Media tooHotAlert = new Media(toohotAlert.toString());
  867. tooHotWarning = new MediaPlayer(tooHotAlert);
  868. tooHotWarning.setVolume(0.2);
  869. tooHotWarning.play();
  870. mediaPlayer.setVolume(mediaPlayer.getVolume()/30);
  871. Alert alert = new Alert(AlertType.INFORMATION);
  872. alert.setTitle("AC is on for your pet!");
  873. alert.setHeaderText(null);
  874. alert.setContentText("The air conditioning is on for your pet!");
  875.  
  876. alert.showAndWait();
  877. tooHotWarning.stop();
  878. cuteBarking.stop();
  879.  
  880. mediaPlayer.setVolume(mediaPlayer.getVolume()*30);
  881. temp.SetCurrentTemp(temp.GetOptimalTemp());
  882. Button button = new Button("Back");
  883. button.setStyle("-fx-background-color: YELLOW");
  884. GridPane pane1 = new GridPane();
  885. Stage stage1 = new Stage();
  886. pane1.setStyle( "-fx-background-image: url(" +
  887. "'room.jpg'" +
  888. "); " +
  889. "-fx-background-size: cover;");
  890. if(dog.distance==0) {
  891. ImageView ima = new ImageView();
  892. ima.setImage(new Image("dog hot.gif"));
  893. ima.setEffect(lighting);
  894. ima.setFitHeight(350);
  895. ima.setFitWidth(350);
  896. pane1.add(ima, 7, 20);
  897.  
  898.  
  899.  
  900. dogPanting.play();
  901.  
  902.  
  903. }
  904. final URL resource1 = getClass().getResource("Calming-harp-music.mp3");
  905. final Media media2 = new Media(resource1.toString());
  906. mediaPlayerHeaterNext = new MediaPlayer(media2);
  907. mediaPlayerHeaterNext.setVolume(0.1);
  908. mediaPlayerHeaterNext.play();
  909. ImageView AC = new ImageView();
  910. AC.setImage(new Image("AC.gif"));
  911. AC.setFitHeight(100);
  912. AC.setFitWidth(150);
  913. button.setOnAction(en->{
  914. mediaPlayerHeaterNext.stop();
  915. stage1.close();
  916. if(dog.distance==0) {dogPanting.stop();}
  917.  
  918. label.setText("The current temperature: " + temp.GetTemp());
  919. stage.show();
  920. mediaPlayer.play();
  921. });
  922. pane1.setVgap(10);
  923. pane1.setHgap(10);
  924. pane1.add(button, 1, 1);
  925. pane1.add(AC, 0, 1);
  926.  
  927. stage1.setScene(new Scene(pane1,800,800));
  928. stage1.show();
  929. mediaPlayer.stop();
  930.  
  931. stage.close();
  932. // history.add("It's too hot! Turning on the AC" + new Date());
  933. }
  934. });
  935.  
  936. //btTempDown
  937. tempDown.setOnAction(e->{
  938. temp.SetTemperatureDown();
  939.  
  940. label.setText("The current temperature: " + temp.GetTemp());
  941.  
  942. if(temp.GetTemp()<= temp.GetOptimalTemp()-10)
  943. {
  944. Date d = new Date();
  945. saveAlertToDB(d.toString(),"Heater Turned On");
  946.  
  947. final URL resource = getClass().getResource("dogHappySound.wav");
  948. final Media media1 = new Media(resource.toString());
  949. final URL resource1 = getClass().getResource("Calming-harp-music.mp3");
  950. final Media media2 = new Media(resource1.toString());
  951. mediaPlayerHeaterNext = new MediaPlayer(media2);
  952. mediaPlayerHeaterNext.setVolume(0.1);
  953. mediaPlayerHeater = new MediaPlayer(media1);
  954. mediaPlayerHeater.setVolume(0.1);
  955. final URL toocoldAlert = getClass().getResource("TooColdAlert.mp3");
  956. final Media tooColdAlert = new Media(toocoldAlert.toString());
  957. tooColdWarning = new MediaPlayer(tooColdAlert);
  958. tooColdWarning.play();
  959. tooColdWarning.setVolume(0.2);
  960. mediaPlayer.setVolume(mediaPlayer.getVolume()/30);
  961.  
  962. Alert alert = new Alert(AlertType.INFORMATION);
  963. alert.setTitle("heater is on for your pet!");
  964. alert.setHeaderText(null);
  965. alert.setContentText("The heater is on for your pet!");
  966.  
  967. alert.showAndWait();
  968. tooColdWarning.stop();
  969. cuteBarking.stop();
  970. mediaPlayer.setVolume(mediaPlayer.getVolume()*30);
  971.  
  972. Button button1 = new Button("Back");
  973. GridPane pane2 = new GridPane();
  974. Stage stage2 = new Stage();
  975. pane2.setStyle( "-fx-background-image: url(" +
  976. "'room.jpg'" +
  977. "); " +
  978. "-fx-background-size: cover;");
  979.  
  980. if(dog.distance==0) {
  981. ImageView imCold = new ImageView();
  982. imCold.setEffect(lighting);
  983. imCold.setImage(new Image("dogHappy.gif"));
  984. imCold.setFitHeight(350);
  985. imCold.setFitWidth(350);
  986. pane2.add(imCold, 7, 30);
  987. mediaPlayerHeater.play();
  988. mediaPlayerHeater.setVolume(0.2);
  989. }
  990. ImageView heater = new ImageView();
  991. heater.setImage(new Image("heater.gif"));
  992. heater.setFitHeight(100);
  993. heater.setFitWidth(150);
  994. button1.setOnAction(en->{
  995. temp.SetCurrentTemp(temp.GetOptimalTemp());
  996. stage2.close();
  997.  
  998. mediaPlayerHeaterNext.stop();
  999. label.setText("The current temperature: " + temp.GetTemp());
  1000. stage.show();
  1001.  
  1002. mediaPlayer.play();
  1003. // cuteBarking.play();
  1004.  
  1005. });
  1006. pane2.setVgap(10);
  1007. pane2.setHgap(10);
  1008. pane2.add(button1, 1, 1);
  1009.  
  1010. pane2.add(heater, 0, 1);
  1011.  
  1012. stage2.setScene(new Scene(pane2,800,800));
  1013. stage2.show();
  1014. mediaPlayer.stop();
  1015.  
  1016. // mediaPlayerHeater.setVolume(0.2);
  1017. mediaPlayerHeaterNext.play();
  1018. mediaPlayerHeaterNext.setVolume(0.1);
  1019. stage.close();
  1020. // history.add("It's too cold! Turning on the heater" + new Date());
  1021.  
  1022. }
  1023. });
  1024.  
  1025. //btSetOptimalTemperature
  1026. setOptimalTemperature.setOnAction(e ->{
  1027.  
  1028. TextInputDialog dialog = new TextInputDialog("70");
  1029. dialog.setTitle("Optimal Temperature");
  1030. dialog.setHeaderText("What is your optimal temperature?");
  1031. dialog.setContentText("Enter Optimal Temperature:");
  1032.  
  1033. // Traditional way to get the response value.
  1034. Optional<String> temperature = dialog.showAndWait();
  1035. if (temperature.isPresent())
  1036. {
  1037. if(isValidOptimalTmp(temperature.get()))
  1038. {
  1039. Temperature.SetOptimalTemp(Integer.parseInt(temperature.get()));
  1040. }
  1041. else
  1042. {
  1043. final URL properTempAlert = getClass().getResource("properTemp.mp3");
  1044. final Media propertempAlert = new Media(properTempAlert.toString());
  1045. properTemp = new MediaPlayer(propertempAlert);
  1046. properTemp.setVolume(0.2);
  1047. mediaPlayer.setVolume(mediaPlayer.getVolume()/30);
  1048. properTemp.play();
  1049. Alert alert = new Alert(AlertType.ERROR);
  1050. alert.setHeaderText(null);
  1051. alert.setContentText("Please enter proper temperature for your dog!");
  1052. alert.showAndWait();
  1053. properTemp.stop();
  1054. cuteBarking.stop();
  1055. mediaPlayer.setVolume(mediaPlayer.getVolume()*30);
  1056. }
  1057. }
  1058. });
  1059.  
  1060. String dogFood = "dogFood.jpeg";
  1061. String dogWater = "15-154507_cartoon-dog-water-bowl.png";
  1062. ImageView imFood = new ImageView();
  1063. ImageView imWater = new ImageView();
  1064. DateFormat df = new SimpleDateFormat("EEE,MMM d yyyy - h:mm:ss a");
  1065. Date date = new Date();
  1066. String stringDate = df.format(date);
  1067. Text timing = new Text(10, 60, stringDate);
  1068.  
  1069. timing.setFont(Font.font ("Arial",FontWeight.BOLD, 15));
  1070. timing.setFill(Color.BLACK);
  1071. Button timeUp = new Button("Up");
  1072. timeUp.setStyle("-fx-background-color: Black");
  1073. timeUp.setTextFill(Color.WHITE);
  1074. Button timeDo = new Button("Down");
  1075. timeDo.setStyle("-fx-background-color: Black");
  1076. timeDo.setTextFill(Color.WHITE);
  1077.  
  1078. Button setFeed = new Button("FeedTime 1");
  1079. setFeed.setStyle("-fx-background-color: Black");
  1080. setFeed.setTextFill(Color.WHITE);
  1081. setFeed.setWrapText(true);
  1082.  
  1083. Button setFeed2 = new Button("FeedTime 2");
  1084. setFeed2.setStyle("-fx-background-color: Black");
  1085. setFeed2.setTextFill(Color.WHITE);
  1086. setFeed2.setWrapText(true);
  1087.  
  1088. ////////////////////////////TIMELINE////////////////////////////////////////////
  1089. Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0),
  1090. new EventHandler<ActionEvent>() {
  1091.  
  1092. @Override
  1093. public void handle(ActionEvent actionEvent) {
  1094.  
  1095. Date update = new Date();
  1096. String stringNewDate = df.format(update);
  1097. timing.setText(stringNewDate);
  1098.  
  1099.  
  1100. }
  1101. }
  1102.  
  1103. ), new KeyFrame(Duration.seconds(1)));
  1104. timeline.setCycleCount(Animation.INDEFINITE);
  1105. timeline.play();
  1106.  
  1107. GridPane lightPane = new GridPane();
  1108. Stage lightStage = new Stage();
  1109. lightPane.add(light, 0, 0);
  1110. lightStage.setScene(new Scene(lightPane, 40, 40));
  1111. lightStage.setX(0);//////////////////////////////Horizontal location
  1112. lightStage.setY(0);/////////////////////////Vertical location
  1113.  
  1114. setFeed.setOnAction(e ->{
  1115. TextInputDialog dialog = new TextInputDialog("\"Hour:Minute\"");
  1116. dialog.setTitle("Feeding Time");
  1117. dialog.setHeaderText("What the best feeding time?");
  1118. dialog.setContentText("Enter Time in the format of (HH:MM):");
  1119.  
  1120. // Traditional way to get the response value.
  1121. Optional<String> timez = dialog.showAndWait();
  1122. if (timez.isPresent())
  1123. {
  1124. hours = FeedDog.timeSplitHours(timez.get());
  1125. mins = FeedDog.timeSplitMinutes(timez.get());
  1126. if(hours < 10)
  1127. {
  1128. FeedDog.setFeedTime(0 + hours + ":" + mins);
  1129. }
  1130. else
  1131. FeedDog.setFeedTime(hours + ":" + mins);
  1132. System.out.println("Your time: " + timez.get());
  1133. }
  1134.  
  1135. // The Java 8 way to get the response value (with lambda expression).
  1136. timez.ifPresent(name -> System.out.println("Your time: " + name));
  1137. });
  1138.  
  1139. //BUTTON setFeed2
  1140. setFeed2.setOnAction(e ->{
  1141. TextInputDialog dialog = new TextInputDialog("\"Hour:Minute\"");
  1142. dialog.setTitle("Feeding Time");
  1143. dialog.setHeaderText("What the best feeding time?");
  1144. dialog.setContentText("Enter Time in the format of (HH:MM):");
  1145.  
  1146. // Traditional way to get the response value.
  1147. Optional<String> timez = dialog.showAndWait();
  1148. if (timez.isPresent())
  1149. {
  1150. hours = FeedDog.timeSplitHours(timez.get());
  1151. mins = FeedDog.timeSplitMinutes(timez.get());
  1152. if(hours < 10)
  1153. {
  1154. FeedDog.setFeedTime(0 + hours + ":" + mins);
  1155. }
  1156. else
  1157. FeedDog.setFeedTime(hours + ":" + mins);
  1158. System.out.println("Your time: " + timez.get());
  1159. }
  1160.  
  1161. // The Java 8 way to get the response value (with lambda expression).
  1162. timez.ifPresent(name -> System.out.println("Your time: " + name));
  1163. });
  1164.  
  1165. //BUTTON timeUp
  1166. timeUp.setOnAction(e->{
  1167. timeline.stop();
  1168. int minutes = date.getMinutes();
  1169.  
  1170. date.setMinutes(minutes+=15);
  1171. DateFormat df1 = new SimpleDateFormat("EEE,MMM d yyyy - h:mm a");
  1172. String newDate = df1.format(date);
  1173.  
  1174. timing.setText(newDate);
  1175. //ORIGINAL
  1176.  
  1177. if(hour == 0 && min == 0)
  1178. {
  1179. hour = 7;
  1180. min = 30;
  1181. }
  1182. if(hours == 0 && mins == 0)
  1183. {
  1184. hours = 15;
  1185. mins = 30;
  1186. }
  1187. if(date.getHours() <= 7 || date.getHours() >= 20)
  1188. {//Light
  1189. if(!lightStage.isShowing()) {
  1190. lightStage.show();
  1191. }
  1192. }
  1193. else
  1194. {
  1195. lightStage.close();
  1196. }
  1197.  
  1198. if(date.getHours() == hour && (date.getMinutes()> min && date.getMinutes() <= min + 15))
  1199. {
  1200. /********************************************UPDATE*********************************************/
  1201.  
  1202. saveAlertToDB(hour + ":" + min + ":" + date.getSeconds()+ " " + date.getMonth() + "/" + date.getDate() + "/" +(date.getYear() + 1900),"Feeding Time!");
  1203. /********************************************UPDATE*********************************************/
  1204. final URL resource = getClass().getResource("dogHappySound.wav");
  1205. final Media media1 = new Media(resource.toString());
  1206. mediaPlayerHeater = new MediaPlayer(media1);
  1207. mediaPlayer.setVolume(mediaPlayer.getVolume()/30);
  1208.  
  1209. Alert alert = new Alert(AlertType.INFORMATION);
  1210. alert.setTitle("Your dog has just recieved food!");
  1211. alert.setHeaderText(null);
  1212. alert.setContentText("Your dog has just recieved food!");
  1213. alert.showAndWait();
  1214.  
  1215. cuteBarking.stop();
  1216. mediaPlayer.setVolume(mediaPlayer.getVolume()*30);
  1217.  
  1218. Button button1 = new Button("Back");
  1219. GridPane pane2 = new GridPane();
  1220. Stage stage2 = new Stage();
  1221. pane2.setStyle( "-fx-background-image: url(" +
  1222. "'room.jpg'" +
  1223. "); " +
  1224. "-fx-background-size: cover;");
  1225. ImageView dogEating = new ImageView();
  1226. dogEating.setImage(new Image("dogFood.gif"));
  1227. dogEating.setFitHeight(200);
  1228. dogEating.setFitWidth(200);
  1229.  
  1230. if(dog.distance==0)
  1231. {
  1232. ImageView happyDog = new ImageView();
  1233. happyDog.setImage(new Image("dogEating.gif"));
  1234. happyDog.setFitHeight(200);
  1235. happyDog.setFitWidth(200);
  1236. pane2.getChildren().remove(dogEating);
  1237. pane2.add(happyDog, 7, 50);
  1238. }
  1239.  
  1240.  
  1241. ImageView dogDrinking = new ImageView();
  1242. dogDrinking.setImage(new Image("dogDrinking.gif"));
  1243. dogDrinking.setFitHeight(200);
  1244. dogDrinking.setFitWidth(200);
  1245. button1.setOnAction(en->{
  1246. temp.SetCurrentTemp(temp.GetOptimalTemp());
  1247. stage2.close();
  1248.  
  1249. stage.show();
  1250.  
  1251. mediaPlayer.play();
  1252. // cuteBarking.play();
  1253.  
  1254. });
  1255. // HBox feed = new HBox();
  1256. // feed.setSpacing(5);
  1257. // feed.getChildren().addAll(dogEating, dogDrinking);
  1258. pane2.setVgap(10);
  1259. pane2.setHgap(10);
  1260. pane2.add(button1, 1, 1);
  1261. pane2.add(dogEating, 10, 50);
  1262. pane2.add(dogDrinking, 9, 50);
  1263. // pane2.add(dogDrinking, 13, 40);
  1264.  
  1265. stage2.setScene(new Scene(pane2,800,800));
  1266. stage2.show();
  1267. mediaPlayer.stop();
  1268.  
  1269. stage.close();
  1270.  
  1271. }
  1272.  
  1273. if(date.getHours() == hours && (date.getMinutes() > mins && date.getMinutes() <= mins + 15))
  1274. {
  1275. /********************************************UPDATE*********************************************/
  1276.  
  1277. saveAlertToDB(hours + ":" + mins + ":" + date.getSeconds() + " " + date.getMonth() + "/" + date.getDate() + "/" +(date.getYear() + 1900),"Feeding Time!");
  1278. /********************************************UPDATE*********************************************/
  1279. final URL resource = getClass().getResource("dogHappySound.wav");
  1280. final Media media1 = new Media(resource.toString());
  1281. mediaPlayerHeater = new MediaPlayer(media1);
  1282. mediaPlayer.setVolume(mediaPlayer.getVolume()/30);
  1283.  
  1284. Alert alert = new Alert(AlertType.INFORMATION);
  1285. alert.setTitle("Your dog has just recieved food!");
  1286. alert.setHeaderText(null);
  1287. alert.setContentText("Your dog has just recieved food!");
  1288. alert.showAndWait();
  1289.  
  1290. cuteBarking.stop();
  1291. mediaPlayer.setVolume(mediaPlayer.getVolume()*30);
  1292.  
  1293. Button button1 = new Button("Back");
  1294. GridPane pane2 = new GridPane();
  1295. Stage stage2 = new Stage();
  1296. pane2.setStyle( "-fx-background-image: url(" +
  1297. "'room.jpg'" +
  1298. "); " +
  1299. "-fx-background-size: cover;");
  1300. ImageView dogEating = new ImageView();
  1301. dogEating.setImage(new Image("dogFood.gif"));
  1302. dogEating.setFitHeight(200);
  1303. dogEating.setFitWidth(200);
  1304. if(dog.distance==0)
  1305. {
  1306. ImageView happyDog = new ImageView();
  1307. happyDog.setImage(new Image("dogEating.gif"));
  1308. happyDog.setFitHeight(200);
  1309. happyDog.setFitWidth(200);
  1310. pane2.getChildren().remove(dogEating);
  1311. pane2.add(happyDog, 7, 50);
  1312.  
  1313. }
  1314.  
  1315. ImageView dogDrinking = new ImageView();
  1316. dogDrinking.setImage(new Image("dogDrinking.gif"));
  1317. dogDrinking.setFitHeight(200);
  1318. dogDrinking.setFitWidth(200);
  1319. button1.setOnAction(en->{
  1320. temp.SetCurrentTemp(temp.GetOptimalTemp());
  1321. stage2.close();
  1322.  
  1323. stage.show();
  1324.  
  1325. mediaPlayer.play();
  1326. // cuteBarking.play();
  1327.  
  1328. });
  1329. pane2.setVgap(10);
  1330. pane2.setHgap(10);
  1331. pane2.add(button1, 1, 1);
  1332. pane2.add(dogEating, 10, 50);
  1333. pane2.add(dogDrinking, 9, 50);
  1334. stage2.setScene(new Scene(pane2,800,800));
  1335. stage2.show();
  1336. mediaPlayer.stop();
  1337.  
  1338. stage.close();
  1339.  
  1340. }
  1341.  
  1342. });
  1343.  
  1344. //BUTTON timeDo
  1345. timeDo.setOnAction(e->{
  1346. timeline.stop();
  1347. int minutes = date.getMinutes();
  1348.  
  1349. date.setMinutes(minutes-=15);
  1350. DateFormat df1 = new SimpleDateFormat("EEE,MMM d yyyy - h:mm a");
  1351. String newDate = df1.format(date);
  1352.  
  1353. timing.setText(newDate);
  1354. //ORIGINAL
  1355.  
  1356. if(hour == 0 && hours == 0 && mins == 0)
  1357. {
  1358. hour = 7;
  1359. hours = 15;
  1360. mins = 30;
  1361. }
  1362.  
  1363. if(date.getHours() <= 7 || date.getHours() >= 20)
  1364. {//Light
  1365. if(!lightStage.isShowing())
  1366. {
  1367. lightStage.show();
  1368. }
  1369. }
  1370. else
  1371. {
  1372. lightStage.close();
  1373. }
  1374. if((date.getHours() == hour||date.getHours() == hours )&& (date.getMinutes()> mins && date.getMinutes() <= mins + 15))
  1375. {
  1376. /********************************************UPDATE*********************************************/
  1377.  
  1378. saveAlertToDB(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + " "+ date.getMonth() + "/" + date.getDate() + "/" +(date.getYear() + 1900),"Feeding Time!");
  1379. /********************************************UPDATE*********************************************/
  1380. final URL resource = getClass().getResource("dogHappySound.wav");
  1381. final Media media1 = new Media(resource.toString());
  1382. mediaPlayerHeater = new MediaPlayer(media1);
  1383. mediaPlayer.setVolume(mediaPlayer.getVolume()/30);
  1384.  
  1385. Alert alert = new Alert(AlertType.INFORMATION);
  1386. alert.setTitle("Your dog has just recieved food!");
  1387. alert.setHeaderText(null);
  1388. alert.setContentText("Your dog has just recieved food!");
  1389. alert.showAndWait();
  1390.  
  1391. cuteBarking.stop();
  1392. mediaPlayer.setVolume(mediaPlayer.getVolume()*30);
  1393.  
  1394. Button button1 = new Button("Back");
  1395. GridPane pane2 = new GridPane();
  1396. Stage stage2 = new Stage();
  1397. pane2.setStyle( "-fx-background-image: url(" +
  1398. "'room.jpg'" +
  1399. "); " +
  1400. "-fx-background-size: cover;");
  1401.  
  1402. if(dog.distance==0)
  1403. {
  1404. ImageView happyDog = new ImageView();
  1405. happyDog.setImage(new Image("dogEating.gif"));
  1406. happyDog.setFitHeight(200);
  1407. happyDog.setFitWidth(200);
  1408. pane2.add(happyDog, 7, 50);
  1409. }
  1410. ImageView dogEating = new ImageView();
  1411. dogEating.setImage(new Image("dogFood.gif"));
  1412. dogEating.setFitHeight(200);
  1413. dogEating.setFitWidth(200);
  1414. ImageView dogDrinking = new ImageView();
  1415. dogDrinking.setImage(new Image("dogDrinking.gif"));
  1416. dogDrinking.setFitHeight(200);
  1417. dogDrinking.setFitWidth(200);
  1418. button1.setOnAction(en->{
  1419. temp.SetCurrentTemp(temp.GetOptimalTemp());
  1420. stage2.close();
  1421.  
  1422. stage.show();
  1423.  
  1424. mediaPlayer.play();
  1425. // cuteBarking.play();
  1426.  
  1427. });
  1428. // HBox feed = new HBox();
  1429. // feed.setSpacing(5);
  1430. // feed.getChildren().addAll(dogEating, dogDrinking);
  1431. pane2.setVgap(10);
  1432. pane2.setHgap(10);
  1433. pane2.add(button1, 1, 1);
  1434. pane2.add(dogEating, 10, 50);
  1435. pane2.add(dogDrinking, 9, 50);
  1436. stage2.setScene(new Scene(pane2,800,800));
  1437. stage2.show();
  1438. mediaPlayer.stop();
  1439.  
  1440. stage.close();
  1441.  
  1442. }
  1443.  
  1444. });
  1445.  
  1446.  
  1447. //////////////////////////////objects added to pane//////////////////////////////////////////////////
  1448.  
  1449. //HBox
  1450. HBox tem = new HBox();
  1451. HBox tim = new HBox();
  1452. HBox h = new HBox();
  1453. h.setSpacing(5);
  1454.  
  1455. //StackPane
  1456. StackPane stack = new StackPane();
  1457. StackPane stackTime = new StackPane();
  1458. Rectangle rec = new Rectangle();
  1459. Rectangle rec1 = new Rectangle();
  1460. rec.setFill(Color.WHITE);
  1461. rec.setStroke(Color.BLACK);
  1462. rec.setWidth(220);
  1463. rec.setHeight(40);
  1464.  
  1465. rec1.setFill(Color.WHITE);
  1466. rec1.setStroke(Color.BLACK);
  1467. rec1.setWidth(220);
  1468. rec1.setHeight(40);
  1469. stack.getChildren().add(rec);
  1470. stack.getChildren().add(label);
  1471. stackTime.getChildren().add(rec1);
  1472. stackTime.getChildren().add(timing);
  1473. tem.getChildren().addAll(tempUp,tempDown,setOptimalTemperature,stack);
  1474.  
  1475. h.getChildren().addAll(viewInfor,mute, unmute);
  1476.  
  1477. tem.setSpacing(5);
  1478. tim.setSpacing(5);
  1479. tim.getChildren().addAll(timeUp,timeDo,setFeed, setFeed2,stackTime);
  1480.  
  1481. //ADD TO pane
  1482. pane.add(tem, 0, 0);
  1483. pane.add(tim, 0, 1);
  1484. pane.add(h, 0, 2);
  1485.  
  1486. pane.add(textfield, 3, 0);//////////////////////------>textfield for phone input
  1487. pane.add(choiceBox, 3, 1);//////////////////////------>choicebox for company
  1488.  
  1489. pane.add(btMoveBackward,0, 15);
  1490. pane.add(btMoveFordward, 0, 16);
  1491. pane.add(btCheckDistance, 0, 17);
  1492. pane.add(viewRecord,0, 18);
  1493. pane.add(btUpward,0,13);
  1494. pane.add(pet2, 2, 19);
  1495. pane.add(tennisBall, 5, 19);
  1496. // pane.setGridLinesVisible(true);
  1497. pane.add(btDownward,0,14);
  1498. pane.add(pet,2,19);
  1499.  
  1500. pane.setStyle( "-fx-background-image: url(" +
  1501. "'backyard.jpg'" +
  1502. "); " +
  1503. "-fx-background-size: cover;");
  1504.  
  1505.  
  1506. stage.setScene(new Scene(pane, 1020, 1500));
  1507. final URL resource = getClass().getResource("FunnyDay.mp3");
  1508. final Media media = new Media(resource.toString());
  1509.  
  1510. final URL cuteBarkingResource = getClass().getResource("dogCuteBarking.wav");
  1511. final Media cuteBarkingMedia = new Media(cuteBarkingResource.toString());
  1512. cuteBarking= new MediaPlayer(cuteBarkingMedia);
  1513. cuteBarking.play();
  1514. cuteBarking.setVolume(0.3);
  1515. mediaPlayer = new MediaPlayer(media);
  1516.  
  1517. mediaPlayer.setOnEndOfMedia(new Runnable() {
  1518. public void run() {
  1519. mediaPlayer.seek(Duration.ZERO);
  1520. }
  1521. });
  1522.  
  1523. mediaPlayer.play();
  1524.  
  1525. mediaPlayer.setVolume(0.1);
  1526.  
  1527. stage.show();
  1528. }
  1529.  
  1530. public static void main(String[] args)
  1531. {
  1532. launch(args);
  1533. }
  1534.  
  1535. public void refreshTable() {
  1536. data.clear();
  1537. String url = "jdbc:mysql://localhost/cs3220stu55?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
  1538. String username = "cs3220stu55";
  1539. String password = "zWpa0NxR";
  1540.  
  1541. try {
  1542. Connection c = DriverManager
  1543. .getConnection( url, username, password );
  1544. Statement stmt = c.createStatement();
  1545.  
  1546. ResultSet rs = stmt.executeQuery( "select * from pet" );
  1547.  
  1548. while( rs.next() )
  1549. {
  1550. LocalDate today = rs.getDate("birthday").toLocalDate();
  1551. LocalDate tomorrow = today.plusDays(1);
  1552. data.add(new Dog(rs.getString("name"),rs.getString("breed"),
  1553. rs.getString("gender"),rs.getString("furColor"),rs.getInt("weight"),rs.getInt("height"),
  1554. tomorrow,rs.getBoolean("neutorSpay"),rs.getBoolean("microchipped"),rs.getString("phoneNumber"),rs.getString("provider")));
  1555.  
  1556. }
  1557. c.close();
  1558. } catch (Exception exception) {
  1559. exception.printStackTrace();
  1560. //System.out.println("Error on Building Data");
  1561. }
  1562.  
  1563. table.setItems(data);
  1564. }
  1565.  
  1566. static ObservableList<AlertMessage> removeDu(ObservableList<AlertMessage> list)
  1567. {
  1568. HashSet <AlertMessage> h = new HashSet<AlertMessage>(list);
  1569. list.clear();
  1570. list.addAll(h);
  1571. return list;
  1572. }
  1573.  
  1574. static ObservableList<Dog> removeDuplicates(ObservableList<Dog> list)
  1575. {
  1576. HashSet <Dog> h = new HashSet<Dog>(list);
  1577. list.clear();
  1578. list.addAll(h);
  1579. return list;
  1580. }
  1581.  
  1582. //ADD to sql
  1583. public static String readPhoneNumber()
  1584. {
  1585. String number = "";
  1586. ArrayList<String> list = new ArrayList<>();
  1587. String url = "jdbc:mysql://localhost/cs3220stu55?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
  1588. String username = "cs3220stu55";
  1589. String password = "zWpa0NxR";
  1590.  
  1591. try {
  1592. Connection c = DriverManager
  1593. .getConnection( url, username, password );
  1594. Statement stmt = c.createStatement();
  1595.  
  1596. ResultSet rs = stmt.executeQuery( "select * from pet" );
  1597.  
  1598. while( rs.next() )
  1599. {
  1600. list.add(rs.getString("phoneNumber"));
  1601. }
  1602.  
  1603. c.close();
  1604.  
  1605. } catch (Exception exception) {
  1606. exception.printStackTrace();
  1607. //System.out.println("Error on Building Data");
  1608. }
  1609. number = list.get(list.size()-1);
  1610. return number;
  1611. }
  1612.  
  1613. //ADD to sql
  1614. public static String readProvider() {
  1615. String provider = "";
  1616. ArrayList<String> listP = new ArrayList<>();
  1617. String url = "jdbc:mysql://localhost/cs3220stu55?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
  1618. String username = "cs3220stu55";
  1619. String password = "zWpa0NxR";
  1620.  
  1621. try {
  1622. Connection c = DriverManager
  1623. .getConnection( url, username, password );
  1624. Statement stmt = c.createStatement();
  1625.  
  1626. ResultSet rs = stmt.executeQuery( "select * from pet" );
  1627.  
  1628. while( rs.next() )
  1629. {
  1630. listP.add(rs.getString("provider"));
  1631. }
  1632.  
  1633. c.close();
  1634.  
  1635. } catch (Exception exception) {
  1636. exception.printStackTrace();
  1637. //System.out.println("Error on Building Data");
  1638. }
  1639. provider = listP.get(listP.size()-1);
  1640. return provider;
  1641. }
  1642.  
  1643.  
  1644. public static boolean isValidOptimalTmp(String temp)
  1645. {
  1646. int num;
  1647. try
  1648. {
  1649. num = Integer.parseInt(temp);
  1650. if(num<60)
  1651. return false;
  1652. if(num>80)
  1653. return false;
  1654. }
  1655. catch(NumberFormatException ex)
  1656. {
  1657. return false;
  1658. }
  1659. return true;
  1660. }
  1661.  
  1662. //ADD to sql
  1663. public static void saveAlertToDB(String date,String str)
  1664. {
  1665. String url = "jdbc:mysql://localhost/cs3220stu55?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
  1666. String username = "cs3220stu55";
  1667. String password = "zWpa0NxR";
  1668.  
  1669. try {
  1670. Class.forName("com.mysql.cj.jdbc.Driver");
  1671. Connection conn = DriverManager
  1672. .getConnection( url, username, password );
  1673.  
  1674. String query = " insert into Alert (time,alerts)"
  1675. + " values (?,?)";
  1676. PreparedStatement preparedStmt = conn.prepareStatement(query);
  1677.  
  1678. preparedStmt.setString (1, date);
  1679. preparedStmt.setString (2, str);
  1680. preparedStmt.execute();
  1681.  
  1682. conn.close();
  1683.  
  1684.  
  1685.  
  1686. } catch (Exception exception) {
  1687. exception.printStackTrace();
  1688. //System.out.println("Error on Building Data");
  1689. }
  1690. }
  1691.  
  1692. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement