Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package BillionGraves; import java.io.Console; import java.io.File; import java.io.IOException; import java.net.URL; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.ComboBox; import javafx.scene.control.ListView; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.stage.FileChooser; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.joda.time.Interval; import org.joda.time.Period; /** * FXML Controller class * * @author DartRA */ public class BillionGravesController implements Initializable { private final FileChooser myFileChooser = new FileChooser(); private TextFileReader reader; private TextFileReader dataReader; private TextFileReader ingestReader; private File selectFilePath; private List<File> multiFilePath; private Map<String, File> namePath; private String strFilePath; private String strFileName; private String currentLine; private static String timeStamp; private RecordDataFields dataReaderSimpleString; private int rowCount; String fileGroupIngestTimestamp = MiscUtilities.getGroupTimeStamp(); ObservableList<String> consoleItems = FXCollections.observableArrayList(); @FXML private Button btnFileChooser; @FXML private ListView lstViewFiles; @FXML private Button btnRemove1; @FXML private Button btnRemove2; @FXML private Button btnRemove3; @FXML private Button btnRemove4; @FXML private Button btnRemove5; @FXML private ComboBox cbxRowsToPreview; @FXML private Button btnPreviewData; @FXML private CheckBox chkBoxTruncate; @FXML private CheckBox chkBoxUI; @FXML private Button btnFileIngest; @FXML private ListView<String> lstConsole; @FXML private TableView tvDataPreview; private ObservableList<String> cellData; @FXML public void btnFileChooser(ActionEvent event) { namePath = new HashMap<>(); multiFilePath = new MiscUtilities().getFilePath(); if (multiFilePath != null) { for (File b : multiFilePath) { strFileName = b.toString(); if (lstViewFiles.getItems().contains(b.getName())) { break; } else { lstViewFiles.getItems().add(b.getName()); namePath.put(b.getName(), b);//creates a hash map with filename key and filepath value } } } int selectedFileCount = lstViewFiles.getItems().size(); Map buttonState = MiscUtilities.getButtonState(selectedFileCount); btnRemove1.setVisible((boolean) buttonState.get("Button1")); btnRemove2.setVisible((boolean) buttonState.get("Button2")); btnRemove3.setVisible((boolean) buttonState.get("Button3")); btnRemove4.setVisible((boolean) buttonState.get("Button4")); btnRemove5.setVisible((boolean) buttonState.get("Button5")); } public void btnRemove1(ActionEvent event) { //need to remove clicked entry from file/filepath hashmap namePath.remove(lstViewFiles.getItems().get(0).toString()); Object remove = lstViewFiles.getItems().remove(0); int selectedFileCount = lstViewFiles.getItems().size(); Map buttonState = MiscUtilities.getButtonState(selectedFileCount); btnRemove1.setVisible((boolean) buttonState.get("Button1")); btnRemove2.setVisible((boolean) buttonState.get("Button2")); btnRemove3.setVisible((boolean) buttonState.get("Button3")); btnRemove4.setVisible((boolean) buttonState.get("Button4")); btnRemove5.setVisible((boolean) buttonState.get("Button5")); } public void btnRemove2(ActionEvent event) { //need to remove clicked entry from file/filepath hashmap namePath.remove(lstViewFiles.getItems().get(1).toString()); Object remove = lstViewFiles.getItems().remove(1); int selectedFileCount = lstViewFiles.getItems().size(); Map buttonState = MiscUtilities.getButtonState(selectedFileCount); btnRemove1.setVisible((boolean) buttonState.get("Button1")); btnRemove2.setVisible((boolean) buttonState.get("Button2")); btnRemove3.setVisible((boolean) buttonState.get("Button3")); btnRemove4.setVisible((boolean) buttonState.get("Button4")); btnRemove5.setVisible((boolean) buttonState.get("Button5")); } public void btnRemove3(ActionEvent event) { //need to remove clicked entry from file/filepath hashmap namePath.remove(lstViewFiles.getItems().get(2).toString()); Object remove = lstViewFiles.getItems().remove(2); int selectedFileCount = lstViewFiles.getItems().size(); Map buttonState = MiscUtilities.getButtonState(selectedFileCount); btnRemove1.setVisible((boolean) buttonState.get("Button1")); btnRemove2.setVisible((boolean) buttonState.get("Button2")); btnRemove3.setVisible((boolean) buttonState.get("Button3")); btnRemove4.setVisible((boolean) buttonState.get("Button4")); btnRemove5.setVisible((boolean) buttonState.get("Button5")); } public void btnRemove4(ActionEvent event) { //need to remove clicked entry from file/filepath hashmap namePath.remove(lstViewFiles.getItems().get(3).toString()); Object remove = lstViewFiles.getItems().remove(3); int selectedFileCount = lstViewFiles.getItems().size(); Map buttonState = MiscUtilities.getButtonState(selectedFileCount); btnRemove1.setVisible((boolean) buttonState.get("Button1")); btnRemove2.setVisible((boolean) buttonState.get("Button2")); btnRemove3.setVisible((boolean) buttonState.get("Button3")); btnRemove4.setVisible((boolean) buttonState.get("Button4")); btnRemove5.setVisible((boolean) buttonState.get("Button5")); } public void btnRemove5(ActionEvent event) { //need to remove clicked entry from file/filepath hashmap namePath.remove(lstViewFiles.getItems().get(4).toString()); Object remove = lstViewFiles.getItems().remove(4); int selectedFileCount = lstViewFiles.getItems().size(); Map buttonState = MiscUtilities.getButtonState(selectedFileCount); btnRemove1.setVisible((boolean) buttonState.get("Button1")); btnRemove2.setVisible((boolean) buttonState.get("Button2")); btnRemove3.setVisible((boolean) buttonState.get("Button3")); btnRemove4.setVisible((boolean) buttonState.get("Button4")); btnRemove5.setVisible((boolean) buttonState.get("Button5")); } @FXML //get the column names public void btnPreviewData(ActionEvent event) { String hashKey = lstViewFiles.getItems().get(0).toString();//grabs the first file item in the list try { reader = new TextFileReader(namePath.get(hashKey)); List<String> columnNames = reader.getColumnNames(); for (String a : columnNames) { TableColumn newColumn = new TableColumn(a); tvDataPreview.getColumns().add(newColumn); } } catch (IOException ex) { Logger.getLogger(BillionGravesController.class.getName()).log(Level.SEVERE, null, ex); } tvDataPreview.setEditable(true); tvDataPreview.setItems(reader.getData()); //get the fielded record data for table display try { dataReader = new TextFileReader(namePath.get(hashKey), rowCount); //dataReaderSimpleString = new RecordDataFields(selectFilePath, rowCount); } catch (IOException ex) { Logger.getLogger(BillionGravesController.class.getName()).log(Level.SEVERE, null, ex); } tvDataPreview.setEditable(true); for (int i = 0; i < (dataReader.getAllData().size()); i++) { } tvDataPreview.setItems(dataReader.getData()); } /** * * @param event * @throws SQLException */ @FXML public void btnFileIngest(ActionEvent event) throws SQLException { long startTime = System.currentTimeMillis(); //Truncate table is checkbox is selected if (chkBoxTruncate.isSelected() == true) { consoleItems.add("Truncating Load Table"); lstConsole.setItems(consoleItems); } PPOFNLDataWriter truncateTable = new PPOFNLDataWriter(chkBoxTruncate.isSelected()); System.out.println("Ingesting records"); consoleItems.add("Ingesting records"); lstConsole.setItems(consoleItems); //Start the data ingest for (int i = 0; i < (lstViewFiles.getItems().size()); i++) { //loop to process each selected file********* String hashKey = lstViewFiles.getItems().get(i).toString(); selectFilePath = namePath.get(hashKey); String ingestTimeStamp = MiscUtilities.getTimeStamp();//set timestamp for record group field System.out.println(" --Ingesting " + selectFilePath); consoleItems.add(" --Ingesting " + selectFilePath); lstConsole.setItems(consoleItems); //get all the data one row at a time and treat try { dataReader = new TextFileReader(selectFilePath, currentLine, ingestTimeStamp); } catch (IOException ex) { Logger.getLogger(BillionGravesController.class.getName()).log(Level.SEVERE, null, ex); } } PPOFNLDataWriter getGrossRecordCount = new PPOFNLDataWriter("GROSS"); Map<String, Integer> grossCountMap = getGrossRecordCount.grossData; consoleItems.add("Removing Duplicate Records"); lstConsole.setItems(consoleItems); PPOFNLDataWriter removeDupes = new PPOFNLDataWriter();//removes dupes and embedded characters from load table. consoleItems.add("Assigning Unique Identifiers and Creating Sort Keys"); lstConsole.setItems(consoleItems); PPOFNLDataWriter assignUI = new PPOFNLDataWriter(chkBoxUI.isSelected(), "");//Not ready to use. Date endDate = new Date(); PPOFNLDataWriter getNetRecordCount = new PPOFNLDataWriter("NET"); Map<String, Integer> netCountMap = getNetRecordCount.netData; PPOFNLDataWriter writeLog = new PPOFNLDataWriter(grossCountMap, netCountMap, fileGroupIngestTimestamp); long endTime = System.currentTimeMillis(); Interval interval = new Interval(startTime, endTime); Period period = interval.toPeriod(); consoleItems.add("Total elaped time = " + StringUtils.leftPad(String.valueOf(period.getHours()), 2, "0") + ":" + StringUtils.leftPad(String.valueOf(period.getMinutes()), 2, "0") + ":" + StringUtils.leftPad(String.valueOf(period.getSeconds()), 2, "0")); lstConsole.setItems(consoleItems); System.out.println("Total elaped time = " + StringUtils.leftPad(String.valueOf(period.getHours()), 2, "0") + ":" + StringUtils.leftPad(String.valueOf(period.getMinutes()), 2, "0") + ":" + StringUtils.leftPad(String.valueOf(period.getSeconds()), 2, "0")); } @FXML public void cbxRowsToPreview(ActionEvent event) { //System.out.println(cbxRowsToPreview.getSelectionModel().getSelectedItem()); rowCount = Integer.valueOf(cbxRowsToPreview.getSelectionModel().getSelectedItem().toString()); } @Override public void initialize(URL url, ResourceBundle rb) { tvDataPreview.getColumns().clear(); cbxRowsToPreview.getSelectionModel().select(0); int selectedFileCount = lstViewFiles.getItems().size(); Map buttonState = MiscUtilities.getButtonState(selectedFileCount); btnRemove1.setVisible((boolean) buttonState.get("Button1")); btnRemove2.setVisible((boolean) buttonState.get("Button2")); btnRemove3.setVisible((boolean) buttonState.get("Button3")); btnRemove4.setVisible((boolean) buttonState.get("Button4")); btnRemove5.setVisible((boolean) buttonState.get("Button5")); } }