Advertisement
Omar_Natour

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

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