Advertisement
Guest User

Untitled

a guest
Nov 29th, 2018
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.60 KB | None | 0 0
  1. package DogHouse;
  2. import java.io.BufferedWriter;
  3. import java.io.FileWriter;
  4. import java.io.Writer;
  5. import java.net.URL;
  6. import java.sql.Connection;
  7. import java.sql.DriverManager;
  8. import java.sql.ResultSet;
  9. import java.sql.Statement;
  10. import java.text.DateFormat;
  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 javafx.animation.Animation;
  20. import javafx.animation.KeyFrame;
  21. import javafx.animation.Timeline;
  22. import javafx.application.Application;
  23. import javafx.collections.FXCollections;
  24. import javafx.collections.ObservableList;
  25. import javafx.event.ActionEvent;
  26. import javafx.event.EventHandler;
  27. import javafx.geometry.Insets;
  28. import javafx.scene.Group;
  29. import javafx.scene.Scene;
  30. import javafx.scene.control.Alert;
  31. import javafx.scene.control.Alert.AlertType;
  32. import javafx.scene.control.cell.PropertyValueFactory;
  33. import javafx.scene.control.Button;
  34. import javafx.scene.control.ChoiceBox;
  35. import javafx.scene.control.Label;
  36. import javafx.scene.control.TableColumn;
  37. import javafx.scene.control.TableView;
  38. import javafx.scene.control.TextField;
  39. import javafx.scene.control.TextInputDialog;
  40. import javafx.scene.image.Image;
  41. import javafx.scene.image.ImageView;
  42. import javafx.scene.layout.ColumnConstraints;
  43. import javafx.scene.layout.GridPane;
  44. import javafx.scene.layout.HBox;
  45. import javafx.scene.layout.RowConstraints;
  46. import javafx.scene.layout.StackPane;
  47. import javafx.scene.layout.VBox;
  48. import javafx.scene.media.Media;
  49. import javafx.scene.media.MediaPlayer;
  50. import javafx.scene.paint.Color;
  51. import javafx.scene.shape.Rectangle;
  52. import javafx.scene.text.Font;
  53. import javafx.scene.text.FontWeight;
  54. import javafx.scene.text.Text;
  55. import javafx.stage.Stage;
  56. import javafx.util.Duration;
  57. import javax.mail.Message; ///////////////////////////UPDATE//////////////////////
  58. import javax.mail.MessagingException; ///////////////////////////UPDATE////////////////////
  59. import javax.mail.PasswordAuthentication; ///////////////////////////UPDATE//////////////////
  60. import javax.mail.Session; ////////////////////////////UPDATE///////////////
  61. import javax.mail.Transport; ///////////////////////////UPDATE///////////////
  62. import javax.mail.internet.InternetAddress;////////////////////////////UPDATE//////////////
  63. import javax.mail.internet.MimeMessage; //////////////////////////////UPDATE///////////
  64.  
  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 TableView<Dog> table = new TableView<Dog>();
  75. private ObservableList<Dog> data = FXCollections.observableArrayList();
  76. ArrayList<String> history = new ArrayList<>(20);
  77. public Button backToUser = new Button("Main Menu");
  78. int x = 0; //variable to track pet x position
  79. int y = 0;//variable to track pet's y position
  80. int a = 250;//pet size
  81. int b = 250;//pet size
  82.  
  83. @Override
  84. public void start(Stage stage) throws Exception {
  85. //class to register dog position
  86.  
  87.  
  88. DistanceFromHouse dog = new DistanceFromHouse();
  89. ImageView pet = new ImageView();
  90. ImageView dogHouse = new ImageView();
  91. ImageView tennisBall = new ImageView();
  92. FetchBall TBall = new FetchBall();
  93. Button viewInfor = new Button("Database");
  94. Button archive = new Button("Archive history");
  95. viewInfor.setStyle("-fx-background-color: Black");
  96. viewInfor.setTextFill(Color.WHITE);
  97. ImageView pet2 = new ImageView();
  98.  
  99.  
  100. backToUser.setStyle("-fx-background-color: Black");
  101. backToUser.setTextFill(Color.WHITE);
  102. backToUser.setOnAction(event->{
  103. UserInputPane us = new UserInputPane();
  104. Stage userStage = new Stage();
  105. try {
  106. us.start(userStage);
  107. stage.close();
  108. mediaPlayer.stop();
  109. cuteBarking.stop();
  110. }catch (Exception e3) {
  111. // TODO Auto-generated catch block
  112. e3.printStackTrace();
  113. }
  114. });
  115. viewInfor.setOnAction(e->{
  116. data.clear();
  117.  
  118. String url = "jdbc:mysql://localhost/cs3220stu55?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
  119. String username = "cs3220stu55";
  120. String password = "zWpa0NxR";
  121.  
  122.  
  123.  
  124. try {
  125. Connection c = DriverManager
  126. .getConnection( url, username, password );
  127. Statement stmt = c.createStatement();
  128.  
  129. ResultSet rs = stmt.executeQuery( "select * from pet" );
  130.  
  131. while( rs.next() )
  132. {
  133. LocalDate today = rs.getDate("birthday").toLocalDate();
  134. LocalDate tomorrow = today.plusDays(1);
  135. data.add(new Dog(rs.getString("name"),rs.getString("breed"),
  136. rs.getString("gender"),rs.getString("furColor"),rs.getInt("weight"),rs.getInt("height"),
  137. tomorrow,rs.getBoolean("neutorSpay"),rs.getBoolean("microchipped"),rs.getString("userEmail")));
  138.  
  139. }
  140.  
  141. c.close();
  142.  
  143.  
  144.  
  145.  
  146.  
  147. } catch (Exception exception) {
  148. exception.printStackTrace();
  149. //System.out.println("Error on Building Data");
  150. }
  151. table.getColumns().clear();
  152.  
  153.  
  154. Stage fifthStage = new Stage();
  155.  
  156. Scene scene = new Scene(new Group());
  157.  
  158. final Label label = new Label("Dog Information");
  159. label.setFont(new Font("Arial", 20));
  160.  
  161. table.setEditable(true);
  162.  
  163. TableColumn NameCol = new TableColumn("name");
  164. NameCol.setMaxWidth(100);
  165. NameCol.setCellValueFactory(
  166. new PropertyValueFactory<Dog, String>("name"));
  167.  
  168. TableColumn breedCol = new TableColumn("breed");
  169. breedCol.setMaxWidth(200);
  170. breedCol.setCellValueFactory(
  171. new PropertyValueFactory<Dog, String>("breed"));
  172.  
  173. TableColumn genderCol = new TableColumn("gender");
  174. genderCol.setMaxWidth(100);
  175. genderCol.setCellValueFactory(
  176. new PropertyValueFactory<Dog, String>("gender"));
  177.  
  178. TableColumn furColorCol = new TableColumn("furColor");
  179. furColorCol.setMaxWidth(100);
  180. furColorCol.setCellValueFactory(
  181. new PropertyValueFactory<Dog, String>("furColor"));
  182.  
  183. TableColumn weightCol = new TableColumn("weight");
  184. weightCol.setMaxWidth(100);
  185. weightCol.setCellValueFactory(
  186. new PropertyValueFactory<Dog, Integer>("weight"));
  187.  
  188. TableColumn heightCol = new TableColumn("height");
  189. heightCol.setMaxWidth(100);
  190. heightCol.setCellValueFactory(
  191. new PropertyValueFactory<Dog, Integer>("height"));
  192.  
  193. TableColumn birthdayCol = new TableColumn("birthday");
  194. birthdayCol.setMaxWidth(100);
  195. birthdayCol.setCellValueFactory(
  196. new PropertyValueFactory<Dog, String>("birthday"));
  197.  
  198. TableColumn spayCol = new TableColumn("neuterSpay");
  199. spayCol.setMaxWidth(100);
  200. spayCol.setCellValueFactory(
  201. new PropertyValueFactory<Dog, Boolean>("neuterSpay"));
  202.  
  203. TableColumn microchippedCol = new TableColumn("microchip");
  204. microchippedCol.setMaxWidth(100);
  205. microchippedCol.setCellValueFactory(
  206. new PropertyValueFactory<Dog, Boolean>("microchip"));
  207.  
  208. TableColumn userEmailCol = new TableColumn("User Email");
  209. userEmailCol.setMaxWidth(100);
  210. userEmailCol.setCellValueFactory(
  211. new PropertyValueFactory<Dog, String>("userEmail"));
  212.  
  213.  
  214.  
  215. // ObservableList<Dog> list = FXCollections.observableArrayList(dogInformation);
  216. ObservableList<Dog> list = removeDuplicates(data);
  217. table.setItems(list);
  218. table.getColumns().addAll(NameCol, breedCol, genderCol,furColorCol, weightCol,
  219. heightCol, birthdayCol, spayCol, microchippedCol, userEmailCol);
  220.  
  221.  
  222. Button clear = new Button("Clear");
  223.  
  224. clear.setOnAction(e1->{
  225. UserInputPane.dogInformation.clear();
  226. Connection conn = null;
  227. Statement stmte = null;
  228.  
  229. try{
  230.  
  231. Class.forName("com.mysql.cj.jdbc.Driver");
  232.  
  233. conn = DriverManager.getConnection(url, username, password);
  234.  
  235. stmte = conn.createStatement();
  236.  
  237. String sql = "DELETE FROM pet;";
  238.  
  239. stmte.executeUpdate(sql);
  240. }catch(Exception exc) {
  241. exc.printStackTrace();
  242. }
  243.  
  244. refreshTable();
  245.  
  246. });
  247.  
  248. final VBox vbox = new VBox();
  249. vbox.setSpacing(5);
  250. vbox.setPadding(new Insets(10, 0, 0, 10));
  251. vbox.getChildren().addAll(label, table,clear);
  252.  
  253. ((Group) scene.getRoot()).getChildren().addAll(vbox);
  254.  
  255. fifthStage.setScene(scene);
  256. fifthStage.show();
  257.  
  258.  
  259. });
  260.  
  261.  
  262. //pet properties
  263. pet.setImage(new Image("dog.gif"));
  264. pet.setFitHeight(a);
  265. pet.setFitWidth(b);
  266. //pet coordinates
  267. pet.setX(0);
  268. pet.setY(0);
  269. pet.setOnMouseDragged(e -> {
  270. pet.setX(e.getX());
  271. pet.setY(e.getY());
  272. });
  273. //dog house image
  274. dogHouse.setImage(new Image("dogHouse.png"));
  275. dogHouse.setFitHeight(280);
  276. dogHouse.setFitWidth(400);
  277.  
  278. //pet2 properties
  279. pet2.setImage(new Image("dog.gif"));
  280. pet2.setFitHeight(a);
  281. pet2.setFitWidth(b);
  282. //pet2 coordinates
  283. pet2.setX(0);
  284. pet2.setY(0);
  285. pet2.setOnMouseDragged(e -> {
  286. pet2.setX(e.getX());
  287. pet2.setY(e.getY());
  288. });
  289. pet2.setVisible(false);
  290. //dog house image
  291. dogHouse.setImage(new Image("dogHouse.png"));
  292. dogHouse.setFitHeight(280);
  293. dogHouse.setFitWidth(400);
  294.  
  295. //tennis ball
  296. tennisBall.setImage(new Image("tennisBall.jpg"));
  297. TBall.setTennisBallDistance();
  298. tennisBall.setX( TBall.getTennisBallDistance() );
  299. tennisBall.setFitHeight(40);
  300. tennisBall.setFitWidth(40);
  301.  
  302. GridPane pane = new GridPane();
  303.  
  304.  
  305. pane.setHgap(10);
  306. pane.setVgap(10);
  307. pane.add(dogHouse, 0, 19);
  308. Button viewRecord = new Button("ViewRec");
  309. viewRecord.setStyle("-fx-background-color: Black");
  310. viewRecord.setTextFill(Color.WHITE);
  311.  
  312. //buttons to move pet
  313. Button btCheckDistance = new Button("CheckDis");
  314. btCheckDistance.setStyle("-fx-background-color: Black");
  315. btCheckDistance.setTextFill(Color.WHITE);
  316.  
  317. Button btMoveFordward = new Button("Forward");
  318. btMoveFordward.setStyle("-fx-background-color: Black");
  319. btMoveFordward.setTextFill(Color.WHITE);
  320.  
  321. Button btMoveBackward = new Button("backward");
  322. btMoveBackward.setStyle("-fx-background-color: Black");
  323. btMoveBackward.setTextFill(Color.WHITE);
  324.  
  325. Button btUpward = new Button ("Upward");
  326. btUpward.setStyle("-fx-background-color: Black");
  327. btUpward.setTextFill(Color.WHITE);
  328.  
  329. Button btDownward = new Button("Downward");
  330. btDownward.setStyle("-fx-background-color: Black");
  331. btDownward.setTextFill(Color.WHITE);
  332.  
  333. Button throwBall = new Button("Throw Tennis Ball");
  334. throwBall.setStyle("-fx-background-color: Black");
  335. throwBall.setTextFill(Color.WHITE);
  336. /*Button btTotalDistance = new Button("Total Distance");*/
  337.  
  338. /////////////////////////////////////////////////////Cell Phone Input/////////////////////////////////////
  339.  
  340. TextField textfield = new TextField();//phone number
  341. textfield.setPromptText("Enter Phone Number");//adds title to textfield
  342. ChoiceBox choiceBox = new ChoiceBox();//company
  343.  
  344.  
  345. //Company choices
  346. choiceBox.getItems().add("Metropcs");
  347. choiceBox.getItems().add("ATT");
  348. choiceBox.getItems().add("TMobile");
  349. choiceBox.getItems().add("Verizon");
  350. choiceBox.getItems().add("Sprint");
  351. choiceBox.getItems().add("BoostMobile");
  352. choiceBox.getItems().add("Cricket");
  353.  
  354. //////////////////////////////////////////////////////////////////////////////////////////////////////////////
  355.  
  356. throwBall.setDisable(true);
  357. throwBall.setOnAction(e->{
  358. TBall.setTennisBallDistance();
  359. tennisBall.setX( TBall.getTennisBallDistance() );
  360. tennisBall.setVisible(true);
  361. throwBall.setDisable(true);
  362. });
  363.  
  364. archive.setOnAction(e->{
  365. try {
  366. FileWriter fw = new FileWriter("archive.txt");
  367. Writer output = new BufferedWriter(fw);
  368. for(String str : history) {
  369. output.write(str + "\n");
  370. }
  371. output.close();
  372. } catch(Exception ex) {
  373. ex.printStackTrace();
  374. }
  375. });
  376.  
  377. viewRecord.setOnAction(e->{
  378.  
  379. Button button = new Button("Back");
  380. GridPane recordPane = new GridPane();
  381. Stage recordStage = new Stage();
  382. int i = 0;
  383. for(@SuppressWarnings("unused") String str : history){
  384. Text label = new Text(history.get(i));
  385. label.setFont(Font.font("Arial", FontWeight.BOLD, 20));
  386. label.setFill(Color.BLACK);
  387. label.setStyle("-fx-background-color: coral;");
  388. recordPane.add(label, 1, i + 1);
  389. i++;
  390. }
  391. button.setOnAction(en->{
  392. recordStage.close();
  393. });
  394. recordPane.setVgap(10);
  395. recordPane.setHgap(10);
  396. recordPane.add(button, 1, 0);
  397. recordStage.setScene(new Scene(recordPane, 600, 400));
  398.  
  399. recordStage.show();
  400.  
  401. });
  402. //buttons Action Event
  403.  
  404. //check distance button
  405. btCheckDistance.setOnAction( e ->
  406. {
  407.  
  408.  
  409. ////////////////////////////////UPDATE///////////////////////////////////////////////
  410. dog.totalDistance();
  411.  
  412. Alert alert = new Alert(AlertType.INFORMATION);
  413. alert.setTitle("pet's distance");
  414. alert.setHeaderText(null);
  415.  
  416. if(dog.total>0)
  417. {
  418. alert.setContentText("The dog is now: "+dog.total +" feet from the dog house.");
  419. }
  420. else if(dog.total==0&&!(0<pet.getTranslateX()&&pet.getTranslateX()<dogHouse.getFitWidth()))
  421. {
  422. alert.setContentText("The dog is now: 0 feet from the dog house.");
  423. }
  424. else
  425. {
  426.  
  427. double distance = dog.total*(-1);
  428.  
  429.  
  430. alert.setContentText("The dog is now: "+ distance +" feet from the dog house.");
  431. }
  432.  
  433.  
  434.  
  435. alert.showAndWait();
  436. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  437.  
  438.  
  439. });
  440. //forward button
  441. btMoveFordward.setOnAction((e) ->
  442. {
  443. pet.setScaleX(1);
  444. x -= 40;
  445. pet.setTranslateX(x);
  446. dog.moveForward();
  447. if(dog.distance == 0){
  448. btMoveFordward.setDisable(true);
  449. if(TBall.doesDogHasBall()){
  450. TBall.setDogHasBall(false);
  451. TBall.setBallPresent(true);
  452. throwBall.setDisable(false);
  453. }
  454. }
  455. if(dog.distance < 39){
  456. btMoveBackward.setDisable(false);
  457. }
  458. if(dog.distance == TBall.getTennisBallDistance() && dog.distanceV == 0){
  459. tennisBall.setVisible(false);
  460. TBall.setDogHasBall(true);
  461. }
  462. ///////////////////////////////////////UPDATE////////////////////////////////////////////
  463.  
  464. dog.totalDistance();
  465. if(dog.total == 0)
  466. {
  467. final String username = "doghousemessage@gmail.com"; // enter your mail id
  468. final String password = "Victory5";// enter your password
  469. String phone = textfield.getText();//phone number
  470. String value = (String) choiceBox.getValue();
  471. String extension = null;
  472.  
  473. switch(value)
  474. {
  475. case "Metropcs" : extension = "@mymetropcs.com";
  476. break;
  477. case "ATT" : extension = "@mms.att.net";
  478. break;
  479. case "TMobile" : extension = "@tmomail.net";
  480. break;
  481. case "Verizon" : extension = "@vtext.com";
  482. break;
  483. case "Sprint" : extension = "@messaging.sprintpcs.com";
  484. break;
  485. case "BoostMobile" : extension = "@sms.myboostmobile.com";
  486. break;
  487. case "Cricket" : extension = "@mms.cricketwireless.net";
  488. }
  489.  
  490. Properties props = new Properties();
  491. props.put("mail.smtp.auth", "true");
  492. props.put("mail.smtp.starttls.enable", "true");
  493. props.put("mail.smtp.host", "smtp.gmail.com");
  494. props.put("mail.smtp.port", "587");
  495.  
  496. Session session = Session.getInstance(props,
  497. new javax.mail.Authenticator() {
  498. protected PasswordAuthentication getPasswordAuthentication() {
  499. return new PasswordAuthentication(username, password);
  500. }
  501. });
  502.  
  503. try {
  504.  
  505. Message message = new MimeMessage(session);
  506. message.setFrom(new InternetAddress("doghousemessage@gmail.com")); // same email id
  507. message.setRecipients(Message.RecipientType.TO,
  508. InternetAddress.parse(phone + extension));// whom you have to send mails that person id
  509. message.setSubject("Alert");
  510. message.setText("Your dog is at the dog house!");
  511.  
  512. Transport.send(message);
  513.  
  514. //System.out.println("Done");
  515.  
  516. } catch (MessagingException e1) {
  517. throw new RuntimeException(e1);
  518. }
  519. }
  520. ///////////////////////////////////////////////////////////////////////////////////////////////////
  521. });
  522. //backward button
  523. btMoveBackward.setOnAction(e ->
  524. {
  525. pet.setScaleX(-1);
  526. x += 40;
  527. pet.setTranslateX(x);
  528. dog.moveBackward();
  529. if(dog.distance > 0){
  530. btMoveFordward.setDisable(false);
  531. }
  532. if(dog.distance > 39){
  533. btMoveBackward.setDisable(true);
  534. history.add("Your dog is unusually far away! at " + new Date());
  535. }
  536. if(dog.distance == TBall.getTennisBallDistance() && dog.distanceV == 0){
  537. tennisBall.setVisible(false);
  538. TBall.setDogHasBall(true);
  539. }
  540. /////////////////////////////////UPDATE////////////////////////////////////
  541.  
  542. dog.totalDistance();
  543. if(dog.total > 41)
  544. {
  545. final String username = "doghousemessage@gmail.com"; // enter your mail id
  546. final String password = "Victory5";// enter your password
  547. String phone = textfield.getText();//phone number
  548. String value = (String) choiceBox.getValue();
  549. String extension = null;
  550.  
  551. switch(value)
  552. {
  553. case "Metropcs" : extension = "@mymetropcs.com";
  554. break;
  555. case "ATT" : extension = "@mms.att.net";
  556. break;
  557. case "TMobile" : extension = "@tmomail.net";
  558. break;
  559. case "Verizon" : extension = "@vtext.com";
  560. break;
  561. case "Sprint" : extension = "@messaging.sprintpcs.com";
  562. break;
  563. case "BoostMobile" : extension = "@sms.myboostmobile.com";
  564. break;
  565. case "Cricket" : extension = "@mms.cricketwireless.net";
  566. }
  567.  
  568. Properties props = new Properties();
  569. props.put("mail.smtp.auth", "true");
  570. props.put("mail.smtp.starttls.enable", "true");
  571. props.put("mail.smtp.host", "smtp.gmail.com");
  572. props.put("mail.smtp.port", "587");
  573.  
  574. Session session = Session.getInstance(props,
  575. new javax.mail.Authenticator() {
  576. protected PasswordAuthentication getPasswordAuthentication() {
  577. return new PasswordAuthentication(username, password);
  578. }
  579. });
  580.  
  581. try {
  582.  
  583. Message message = new MimeMessage(session);
  584. message.setFrom(new InternetAddress("doghousemessage@gmail.com")); // same email id
  585. message.setRecipients(Message.RecipientType.TO,
  586. InternetAddress.parse(phone + extension));// whom you have to send mails that person id
  587. message.setSubject("Alert");
  588. message.setText("Your dog is too far from the dog house!");
  589.  
  590. Transport.send(message);
  591.  
  592. //System.out.println("Done");
  593.  
  594. } catch (MessagingException e1) {
  595. throw new RuntimeException(e1);
  596. }
  597. }
  598.  
  599. //////////////////////////////////////////////////////////////////////////////////////////////////////////////
  600. });
  601.  
  602. btUpward.setOnAction(e ->
  603. {
  604. y -= 40;
  605. pet.setTranslateY(y);
  606. a -= 25;
  607. b -= 25;
  608. pet.setFitHeight(a);
  609. pet.setFitWidth(b);
  610. dog.Upward();
  611. if(dog.distanceV > 0){btDownward.setDisable(false);}
  612. if(dog.distanceV > 20) {btUpward.setDisable(true);}
  613.  
  614. });
  615. btDownward.setDisable(true);
  616. btDownward.setOnAction(e ->
  617. {
  618. y += 40;
  619. pet.setTranslateY(y);
  620. a += 25;
  621. b += 25;
  622. pet.setFitHeight(a);
  623. pet.setFitWidth(b);
  624. dog.Downward();
  625. if(dog.distanceV == 0) {btDownward.setDisable(true);} //////////UPDATE/////////////////////////////
  626. if(dog.distanceV < 22) {btUpward.setDisable(false);} ///////////UPDATE///////////////////////////
  627. });
  628.  
  629.  
  630.  
  631.  
  632.  
  633. ////////////////////////////Temperature buttons and property//////////////////////////////////////////////////////////
  634.  
  635. Temperature temp = new Temperature();
  636. Text label = new Text("The current temperature: " + temp.GetTemperature());
  637.  
  638.  
  639. /****** UPDATES ******/
  640. label.setFont(Font.font("Arial", FontWeight.BOLD, 15));
  641. label.setFill(Color.BLACK);
  642. label.setStyle("-fx-background-color: coral;");
  643.  
  644. /****** UPDATES ******/
  645. Button tempUp = new Button("Up");
  646. tempUp.setStyle("-fx-background-color: Black");
  647. tempUp.setTextFill(Color.WHITE);
  648. Button tempDown = new Button("Down");
  649. tempDown.setStyle("-fx-background-color: Black");
  650. tempDown.setTextFill(Color.WHITE);
  651. Button setOptimalTemperature = new Button("Optimal");
  652. setOptimalTemperature.setStyle("-fx-background-color: Black");
  653. setOptimalTemperature.setTextFill(Color.WHITE);
  654.  
  655. tempUp.setOnAction(e ->{
  656. temp.SetTemperatureUp();
  657. label.setText("The current temperature: " + temp.GetTemp());
  658. //
  659. if(temp.GetTemp() >= temp.GetOptimalTemp() + 10) {
  660. final URL toohotAlert = getClass().getResource("TooHotAlert.mp3");
  661. final Media tooHotAlert = new Media(toohotAlert.toString());
  662. tooHotWarning = new MediaPlayer(tooHotAlert);
  663. tooHotWarning.play();
  664. mediaPlayer.setVolume(mediaPlayer.getVolume()/30);
  665. Alert alert = new Alert(AlertType.INFORMATION);
  666. alert.setTitle("AC is on for your pet!");
  667. alert.setHeaderText(null);
  668. alert.setContentText("The air conditioning is on for your pet!");
  669.  
  670. alert.showAndWait();
  671.  
  672. mediaPlayer.setVolume(mediaPlayer.getVolume()*30);
  673. temp.SetCurrentTemp(temp.GetOptimalTemp());
  674. Button button = new Button("Back");
  675. button.setStyle("-fx-background-color: YELLOW");
  676. GridPane pane1 = new GridPane();
  677. Stage stage1 = new Stage();
  678. pane1.setStyle( "-fx-background-image: url(" +
  679. "'room.jpg'" +
  680. "); " +
  681. "-fx-background-size: cover;");
  682. if(dog.distance==0) {
  683. ImageView ima = new ImageView();
  684. ima.setImage(new Image("dog hot.gif"));
  685. ima.setFitHeight(350);
  686. ima.setFitWidth(350);
  687. pane1.add(ima, 7, 20);}
  688. ImageView AC = new ImageView();
  689. AC.setImage(new Image("AC.gif"));
  690. AC.setFitHeight(100);
  691. AC.setFitWidth(150);
  692. button.setOnAction(en->{
  693. stage1.close();
  694. dogPanting.stop();
  695. mediaPlayer.play();
  696. label.setText("The current temperature: " + temp.GetTemp());
  697. stage.show();
  698.  
  699. });
  700. pane1.setVgap(10);
  701. pane1.setHgap(10);
  702. pane1.add(button, 1, 1);
  703. pane1.add(AC, 0, 1);
  704.  
  705. stage1.setScene(new Scene(pane1,800,800));
  706. stage1.show();
  707. mediaPlayer.stop();
  708. final URL dogPantingResource = getClass().getResource("dogPanting.mp3");
  709. final Media dogPantingMedia = new Media(dogPantingResource.toString());
  710. dogPanting = new MediaPlayer(dogPantingMedia);
  711. dogPanting.setOnEndOfMedia(new Runnable() {
  712. public void run() {
  713. dogPanting.seek(Duration.ZERO);
  714. }
  715. });
  716.  
  717. dogPanting.play();
  718. stage.close();
  719. history.add("It's too hot! Turning on the AC" + new Date());
  720. }
  721.  
  722.  
  723.  
  724. });
  725. tempDown.setOnAction(e->{
  726. temp.SetTemperatureDown();
  727.  
  728. label.setText("The current temperature: " + temp.GetTemp());
  729.  
  730.  
  731. if(temp.GetTemp()<= temp.GetOptimalTemp()-10) {
  732. final URL toocoldAlert = getClass().getResource("TooColdAlert.mp3");
  733. final Media tooColdAlert = new Media(toocoldAlert.toString());
  734. tooColdWarning = new MediaPlayer(tooColdAlert);
  735. tooColdWarning.play();
  736. mediaPlayer.setVolume(mediaPlayer.getVolume()/30);
  737.  
  738. Alert alert = new Alert(AlertType.INFORMATION);
  739. alert.setTitle("heater is on for your pet!");
  740. alert.setHeaderText(null);
  741. alert.setContentText("The heater is on for your pet!");
  742.  
  743. alert.showAndWait();
  744.  
  745. mediaPlayer.setVolume(mediaPlayer.getVolume()*30);
  746.  
  747. Button button1 = new Button("Back");
  748. GridPane pane2 = new GridPane();
  749. Stage stage2 = new Stage();
  750. pane2.setStyle( "-fx-background-image: url(" +
  751. "'room.jpg'" +
  752. "); " +
  753. "-fx-background-size: cover;");
  754.  
  755. if(dog.distance==0) {
  756. ImageView imCold = new ImageView();
  757. imCold.setImage(new Image("dogHappy.gif"));
  758. imCold.setFitHeight(350);
  759. imCold.setFitWidth(350);
  760. pane2.add(imCold, 7, 30);
  761. }
  762. ImageView heater = new ImageView();
  763. heater.setImage(new Image("heater.gif"));
  764. heater.setFitHeight(100);
  765. heater.setFitWidth(150);
  766. button1.setOnAction(en->{
  767. temp.SetCurrentTemp(temp.GetOptimalTemp());
  768. stage2.close();
  769. mediaPlayerHeaterNext.stop();
  770. label.setText("The current temperature: " + temp.GetTemp());
  771. stage.show();
  772.  
  773. mediaPlayer.play();
  774. cuteBarking.play();
  775.  
  776. });
  777. pane2.setVgap(10);
  778. pane2.setHgap(10);
  779. pane2.add(button1, 1, 1);
  780.  
  781. pane2.add(heater, 0, 1);
  782.  
  783. stage2.setScene(new Scene(pane2,800,800));
  784. stage2.show();
  785. mediaPlayer.stop();
  786. final URL resource = getClass().getResource("dogHappySound.mp3");
  787. final Media media1 = new Media(resource.toString());
  788. final URL resource1 = getClass().getResource("Calming-harp-music.mp3");
  789. final Media media2 = new Media(resource1.toString());
  790. mediaPlayerHeaterNext = new MediaPlayer(media2);
  791. mediaPlayerHeater = new MediaPlayer(media1);
  792. mediaPlayerHeater.play();
  793. mediaPlayerHeaterNext.play();
  794. stage.close();
  795. history.add("It's too cold! Turning on the heater" + new Date());
  796. }
  797.  
  798.  
  799.  
  800.  
  801.  
  802. });
  803. setOptimalTemperature.setOnAction(e ->{
  804. TextInputDialog dialog = new TextInputDialog("70");
  805. dialog.setTitle("Optimal Temperature");
  806. dialog.setHeaderText("What is your optimal temperature?");
  807. dialog.setContentText("Enter Optimal Temperature:");
  808.  
  809. // Traditional way to get the response value.
  810. Optional<String> temperature = dialog.showAndWait();
  811. if (temperature.isPresent()){
  812.  
  813. Temperature.SetOptimalTemp(Integer.parseInt(temperature.get()));
  814. label.setText("The current temperature: " + temp.GetOptimalTemp());
  815.  
  816. }
  817.  
  818.  
  819. });
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826. String dogFood = "dogFood.jpeg";
  827. String dogWater = "15-154507_cartoon-dog-water-bowl.png";
  828. ImageView imFood = new ImageView();
  829. ImageView imWater = new ImageView();
  830. DateFormat df = new SimpleDateFormat("EEE,MMM d yyyy - h:mm:ss a");
  831. Date date = new Date();
  832. String stringDate = df.format(date);
  833. Text timing = new Text(10, 60, stringDate);
  834.  
  835. /****** UPDATES ******/
  836.  
  837. timing.setFont(Font.font ("Arial",FontWeight.BOLD, 15));
  838. timing.setFill(Color.BLACK);
  839. Button timeUp = new Button("Up");
  840. timeUp.setStyle("-fx-background-color: Black");
  841. timeUp.setTextFill(Color.WHITE);
  842. Button timeDo = new Button("Down");
  843. timeDo.setStyle("-fx-background-color: Black");
  844. timeDo.setTextFill(Color.WHITE);
  845. Button PrefFeeding = new Button("Set");
  846. PrefFeeding.setStyle("-fx-background-color: Black");
  847. PrefFeeding.setTextFill(Color.WHITE);
  848.  
  849. Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0),
  850. new EventHandler<ActionEvent>() {
  851.  
  852. @Override
  853. public void handle(ActionEvent actionEvent) {
  854.  
  855. Date update = new Date();
  856. String stringNewDate = df.format(update);
  857. timing.setText(stringNewDate);
  858.  
  859.  
  860. }
  861. }
  862.  
  863. ), new KeyFrame(Duration.seconds(1)));
  864. timeline.setCycleCount(Animation.INDEFINITE);
  865. timeline.play();
  866. timeUp.setOnAction(e->{
  867. timeline.stop();
  868. int minutes = date.getMinutes();
  869.  
  870. date.setMinutes(minutes+=1);
  871. DateFormat df1 = new SimpleDateFormat("EEE,MMM d yyyy - h:mm a");
  872. String newDate = df1.format(date);
  873.  
  874. timing.setText(newDate);
  875.  
  876. //if the adjusted time equals current time, the timeline will play
  877.  
  878. Date curTime = new Date();
  879. if(date.getMinutes()==curTime.getMinutes()) {
  880. timeline.play();
  881. }
  882.  
  883.  
  884. });
  885. timeDo.setOnAction(e->{
  886. timeline.stop();
  887. int minutes = date.getMinutes();
  888.  
  889. date.setMinutes(minutes-=1);
  890. DateFormat df1 = new SimpleDateFormat("EEE,MMM d yyyy - h:mm a");
  891. String newDate = df1.format(date);
  892.  
  893. timing.setText(newDate);
  894.  
  895. Date curTime = new Date();
  896. if(date.getMinutes()==curTime.getMinutes()) {
  897. timeline.play();
  898. }
  899.  
  900. });
  901. //////////////////////////////objects added to pane//////////////////////////////////////////////////////////
  902.  
  903. /****** UPDATES ******/
  904.  
  905. HBox tem = new HBox();
  906. HBox tim = new HBox();
  907. HBox h = new HBox();
  908. h.setSpacing(5);
  909. VBox tempAll = new VBox();
  910. // pane.add(viewInfor, 3, 0);
  911. // pane.add(throwBall, 3, 1);
  912. // pane.add(backToUser, 4, 0);
  913. //tempAll.setSpacing(5);
  914. StackPane stack = new StackPane();
  915. StackPane stackTime = new StackPane();
  916. Rectangle rec = new Rectangle();
  917. Rectangle rec1 = new Rectangle();
  918. rec.setFill(Color.WHITE);
  919. rec.setStroke(Color.BLACK);
  920. rec.setWidth(220);
  921. rec.setHeight(40);
  922.  
  923. rec1.setFill(Color.WHITE);
  924. rec1.setStroke(Color.BLACK);
  925. rec1.setWidth(220);
  926. rec1.setHeight(40);
  927. stack.getChildren().add(rec);
  928. stack.getChildren().add(label);
  929. stackTime.getChildren().add(rec1);
  930. stackTime.getChildren().add(timing);
  931. tem.getChildren().addAll(tempUp,tempDown,setOptimalTemperature,stack);
  932. h.getChildren().addAll(viewInfor,throwBall,backToUser, archive);
  933. //tem.setPadding(new Insets(10,10,10,10));
  934. tem.setSpacing(5);
  935. tim.setSpacing(5);
  936. tim.getChildren().addAll(timeUp,timeDo,PrefFeeding,stackTime);
  937.  
  938. // pane.add(timeUp, 2, 0);
  939. // pane.add(timeDo, 2, 1);
  940. // pane.add(tempUp, 0, 0);
  941. // pane.add(tempDown, 0, 1);
  942. // pane.add(setOptimalTemperature, 0, 2);
  943. pane.add(tem, 0, 0);
  944. // pane.add(tempAll, 0, 1);
  945. pane.add(tim, 0, 1);
  946. pane.add(h, 0, 2);
  947. // pane.add(timing, 2, 2);
  948.  
  949. pane.add(textfield, 3, 0);//////////////////////------>textfield for phone input
  950. pane.add(choiceBox, 3, 1);//////////////////////------>choicebox for company
  951. pane.add(btMoveBackward,0, 15);
  952. pane.add(btMoveFordward, 0, 16);
  953. pane.add(btCheckDistance, 0, 17);
  954. pane.add(viewRecord,0, 18);
  955. pane.add(btUpward,0,13);
  956.  
  957. pane.add(tennisBall, 9, 19);
  958. pane.setGridLinesVisible(true);
  959. pane.add(btDownward,0,14);
  960. /*pane.add(btTotalDistance, 1, 18);*/
  961. pane.add(pet2, 2, 19);
  962. pane.add(pet,2,19);
  963.  
  964. /////////////////////////////////dog at pane:default (4,19)/////////////////////////////////////////////////
  965. pane.setStyle( "-fx-background-image: url(" +
  966. "'backyard.jpg'" +
  967. "); " +
  968. "-fx-background-size: cover;");
  969.  
  970.  
  971. stage.setScene(new Scene(pane, 925, 1500));/////////////////////////default(pane,900,1500)
  972. final URL resource = getClass().getResource("FunnyDay.mp3");
  973. final Media media = new Media(resource.toString());
  974. final URL cuteBarkingResource = getClass().getResource("dogCuteBarking.mp3");
  975. final Media cuteBarkingMedia = new Media(cuteBarkingResource.toString());
  976. cuteBarking= new MediaPlayer(cuteBarkingMedia);
  977. cuteBarking.play();
  978. mediaPlayer = new MediaPlayer(media);
  979. mediaPlayer.setOnEndOfMedia(new Runnable() {
  980. public void run() {
  981. mediaPlayer.seek(Duration.ZERO);
  982. }
  983. });
  984.  
  985. mediaPlayer.play();
  986.  
  987. stage.show();
  988. }
  989. public static void main(String[] args) {
  990. launch(args);
  991. }
  992. public void refreshTable() {
  993. data.clear();
  994. String url = "jdbc:mysql://localhost/cs3220stu55?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
  995. String username = "cs3220stu55";
  996. String password = "zWpa0NxR";
  997.  
  998.  
  999.  
  1000.  
  1001. try {
  1002. Connection c = DriverManager
  1003. .getConnection( url, username, password );
  1004. Statement stmt = c.createStatement();
  1005.  
  1006. ResultSet rs = stmt.executeQuery( "select * from pet" );
  1007.  
  1008. while( rs.next() )
  1009. {
  1010. LocalDate today = rs.getDate("birthday").toLocalDate();
  1011. LocalDate tomorrow = today.plusDays(1);
  1012. data.add(new Dog(rs.getString("name"),rs.getString("breed"),
  1013. rs.getString("gender"),rs.getString("furColor"),rs.getInt("weight"),rs.getInt("height"),
  1014. tomorrow,rs.getBoolean("neutorSpay"),rs.getBoolean("microchipped"),rs.getString("userEmail")));
  1015.  
  1016. }
  1017.  
  1018. c.close();
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024. } catch (Exception exception) {
  1025. exception.printStackTrace();
  1026. //System.out.println("Error on Building Data");
  1027. }
  1028.  
  1029. table.setItems(data);
  1030.  
  1031. }
  1032.  
  1033.  
  1034. static ObservableList<Dog> removeDuplicates(ObservableList<Dog> list) {
  1035.  
  1036. HashSet <Dog> h = new HashSet<Dog>(list);
  1037. list.clear();
  1038. list.addAll(h);
  1039. return list;
  1040. }
  1041.  
  1042. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement