Advertisement
Guest User

Untitled

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