Omar_Natour

Natour, O. 5/17/16 Csc-112 Phase 2 Final

May 10th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.91 KB | None | 0 0
  1. /*
  2.  * Omar Natour
  3.  * 5/10/16
  4.  * Csc-112 Java 2
  5.  * Final Exam Phase 2
  6.  * Convert Zipcode into city and state, Convert city and state into Zipcode. All this using databases.
  7.  */
  8.  
  9. import java.sql.*;
  10. import javafx.scene.Node;
  11. import javafx.scene.Scene;
  12. import javafx.scene.control.Button;
  13. import javafx.scene.control.TextArea;
  14. import javafx.scene.control.TextField;
  15. import javafx.scene.input.KeyEvent;
  16. import javafx.scene.layout.BorderPane;
  17. import javafx.scene.layout.HBox;
  18. import javafx.scene.layout.VBox;
  19. import javafx.scene.shape.Rectangle;
  20. import javafx.scene.text.Text;
  21. import javafx.stage.Stage;
  22. import javafx.application.Application;
  23. import javafx.event.ActionEvent;
  24. import javafx.event.EventHandler;
  25. import javafx.geometry.Pos;
  26.  
  27. public class ZipCodeGui extends Application {
  28.    
  29.     public static void main(String[] args){
  30.         launch(args);
  31.     }
  32.    
  33.     BorderPane Gui = new BorderPane();
  34.    
  35.     public void start(Stage primaryStage){
  36.        
  37.         Gui.setTop(ZipToCity());
  38.         Gui.setCenter(CityToZip());
  39.         Gui.setBottom(Status());
  40.        
  41.         Scene sce = new Scene(Gui, 650, 300);
  42.        
  43.         primaryStage.setTitle("Zip Code");
  44.         primaryStage.setScene(sce);
  45.         primaryStage.show();
  46.         primaryStage.setResizable(false);
  47.     }
  48.    
  49.      TextField tfStatus = new TextField();
  50.      TextField tfCity = new TextField();
  51.      TextField tfState = new TextField();
  52.      TextArea taZipCode = new TextArea("Zip Code(s)");
  53.    
  54.     private  Node ZipToCity() {
  55.        
  56.         VBox vbZTC = new VBox();
  57.        
  58.         HBox HBztcTop = new HBox(10);
  59.         HBztcTop.setPrefHeight(100);
  60.        
  61.         Text tZipCode = new Text("Zip Code:");
  62.         TextField tfZipCode = new TextField();
  63.         Button btZTC = new Button("Zip to City");
  64.         Text tCity = new Text("City:");
  65.         Text tState = new Text("State:");
  66.        
  67.         tfZipCode.addEventFilter(KeyEvent.KEY_TYPED, maxLength(5));
  68.         tfZipCode.setPrefColumnCount(6);
  69.         tfState.setPrefColumnCount(2);
  70.  
  71.         tfCity.setEditable(false);
  72.         tfCity.setFocusTraversable(false);
  73.        
  74.         tfState.setEditable(false);
  75.         tfState.setFocusTraversable(false);
  76.        
  77.         EventHandler<ActionEvent> ZipToCity = e->{
  78.             String Zip = tfZipCode.getText();
  79.             if(Zip.matches("(\\d{5})"))
  80.                 Retrive(Zip,null,null);
  81.             else{
  82.                 tfStatus.setText("Invalid input (Zip To City)");
  83.                 tfCity.setText("");
  84.                 tfState.setText("");
  85.             }
  86.         };
  87.    
  88.         btZTC.setOnAction(ZipToCity);
  89.         tfZipCode.setOnAction(ZipToCity);
  90.        
  91.         Rectangle divider = new Rectangle();
  92.         divider.setWidth(595);
  93.         divider.setHeight(2);
  94.        
  95.         HBztcTop.setAlignment(Pos.CENTER); 
  96.         HBztcTop.getChildren().addAll(tZipCode, tfZipCode, btZTC, tCity, tfCity, tState, tfState);
  97.        
  98.         vbZTC.setAlignment(Pos.CENTER);
  99.         vbZTC.getChildren().addAll(HBztcTop, divider);
  100.         return vbZTC;
  101.     }
  102.    
  103.     private Node CityToZip() {
  104.         VBox vbCTZ = new VBox();
  105.        
  106.         HBox HBctzTop = new HBox(10);
  107.         HBctzTop.setPrefHeight(140);
  108.        
  109.         Button btCTZ = new Button("City to Zip");
  110.         Text tCity = new Text("City:");
  111.         TextField tfCity = new TextField();
  112.         Text tState = new Text("State:");
  113.         TextField tfState = new TextField();
  114.        
  115.         taZipCode.setPrefColumnCount(6);
  116.         taZipCode.setMaxHeight(120);
  117.         tfCity.setPrefColumnCount(25);
  118.         tfCity.addEventFilter(KeyEvent.KEY_TYPED, maxLength(25));
  119.         tfState.setPrefColumnCount(2);
  120.         tfState.addEventFilter(KeyEvent.KEY_TYPED, maxLength(2));
  121.        
  122.         taZipCode.setEditable(false);
  123.         taZipCode.setFocusTraversable(false);
  124.        
  125.         EventHandler<ActionEvent> CityToZip = e -> {
  126.            
  127.             String City = tfCity.getText().trim();
  128.             City = City.replaceAll("\\s{2,}"," ");
  129.            
  130.             String State = tfState.getText();
  131.            
  132.             if(City.matches("(^([a-zA-Z]+ ?)+$)") &&
  133.                State.matches("^[a-zA-Z]{2}$")){
  134.                 Retrive("",City,State);
  135.             }
  136.             else{
  137.                 tfStatus.setText("Invalid input (City To Zip)");
  138.                 taZipCode.setText("Zip Code(s)");
  139.             }
  140.         };
  141.        
  142.         btCTZ.setOnAction(CityToZip);
  143.         tfCity.setOnAction(CityToZip);
  144.         tfState.setOnAction(CityToZip);
  145.        
  146.         Rectangle divider = new Rectangle();
  147.         divider.setWidth(595);
  148.         divider.setHeight(2);
  149.        
  150.         HBctzTop.getChildren().addAll( tCity, tfCity, tState, tfState, btCTZ, taZipCode);
  151.         HBctzTop.setAlignment(Pos.CENTER);
  152.        
  153.         vbCTZ.setAlignment(Pos.TOP_CENTER);
  154.         vbCTZ.getChildren().addAll(HBctzTop, divider);
  155.        
  156.         return vbCTZ;
  157.     }
  158.    
  159.     private Node Status() {
  160.         HBox hbStatus = new HBox(15);
  161.        
  162.         Text tStatus = new Text("Status:");
  163.        
  164.         tfStatus.setEditable(false);
  165.         tfStatus.setFocusTraversable(false);
  166.         tfStatus.setPrefColumnCount(35);
  167.        
  168.         hbStatus.getChildren().addAll(tStatus, tfStatus);
  169.         hbStatus.setAlignment(Pos.CENTER);
  170.         hbStatus.setPrefHeight(80);
  171.        
  172.         return hbStatus;
  173.     }
  174.    
  175.     // Credit to "Magcus" on Stackoverflow.com (http://tinyurl.com/jqkb2ky) for this method of limiting characters in text field.
  176.     public EventHandler<KeyEvent> maxLength(final Integer i) {
  177.         return new EventHandler<KeyEvent>() {
  178.  
  179.             @Override
  180.             public void handle(KeyEvent arg0) {
  181.  
  182.                 TextField tx = (TextField) arg0.getSource();
  183.                 if (tx.getText().length() >= i) {
  184.                     arg0.consume();
  185.                 }
  186.             }
  187.         };
  188.     }
  189.    
  190.     private void Retrive(String Zip, String City, String State){
  191.        
  192.         String Database ="silvestri";
  193.         String Username ="readonly";
  194.         String Password ="readonly";
  195.        
  196.         String Driver = "com.mysql.jdbc.Driver";
  197.         String Url = "jdbc:mysql://cs.stcc.edu/" + Database + "?user=" + Username + "&password=" + Password;
  198.        
  199.         try{
  200.             Class.forName(Driver).newInstance();
  201.             Connection conn = DriverManager.getConnection(Url);
  202.            
  203.             if(!(Zip.isEmpty())){
  204.                
  205.                 String zipCommand = ("Select city, state from Zipcodes where zipcode ='" + Zip +"';");
  206.                 PreparedStatement statement = conn.prepareStatement(zipCommand);
  207.                 ResultSet resultset = statement.executeQuery(zipCommand);
  208.                
  209.                 if(resultset.next()){
  210.                    
  211.                 tfCity.setText(resultset.getString(1));
  212.                 tfState.setText(resultset.getString(2));
  213.                 tfStatus.setText("Retrieval from Zipcodes table successful!");
  214.                 }
  215.                 else{
  216.                     tfStatus.setText("Zipcode dosn't exist.");
  217.                     tfCity.setText("");
  218.                     tfState.setText("");
  219.                 }
  220.                
  221.             }
  222.             else{
  223.                
  224.                 String cityCommand = ("Select zipcode from Zipcodes where state ='" + State + "' && city ='" + City +"';");
  225.                 PreparedStatement statement = conn.prepareStatement(cityCommand);
  226.                 ResultSet resultset = statement.executeQuery(cityCommand);
  227.                
  228.                 String Zips = "";
  229.                 int cout =0;
  230.                
  231.                 if(resultset.next()){
  232.                     resultset.previous();
  233.                    
  234.                     while(resultset.next()){
  235.                         Zips += (resultset.getString(1) + "\n");
  236.                         cout++;
  237.                     }
  238.                    
  239.                     tfStatus.setText("Retrieval from Zipcodes table successful! " + cout + " Zipcodes found.");
  240.                     taZipCode.setText(Zips);
  241.                 }
  242.                 else{
  243.                    
  244.                     tfStatus.setText("City or State dosn't exist.");
  245.                     taZipCode.setText("Zip Code(s)");
  246.                 }
  247.             }
  248.            
  249.             conn.close();
  250.            
  251.         }catch(Exception e){
  252.             tfStatus.setText(e.getMessage());
  253.         }      
  254.     }
  255. }
Advertisement
Add Comment
Please, Sign In to add comment