Advertisement
Guest User

Untitled

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