FLCSS.floridaautomationtestsuite.ufm.UfmCreateXmlFilesForTestData.java Source code

Java tutorial

Introduction

Here is the source code for FLCSS.floridaautomationtestsuite.ufm.UfmCreateXmlFilesForTestData.java

Source

package FLCSS.floridaautomationtestsuite.ufm;

/**
 * Created by 23319 on 13-12-2016.
 */

import FLCSS.floridaautomationtestsuite.libraries.ReportLibrary;
import com.relevantcodes.extentreports.LogStatus;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class UfmCreateXmlFilesForTestData {

    public static void main(String argv[]) {

        /*  ReportLibrary.Start_Report("TC 1", "Demo");
          ReportLibrary.End_Test();
          ReportLibrary.End_Report();
            
          System.out.println("Test started for Siebel account creation");
            
          ReportLibrary.Start_Report("UFM XML files creation", "count");
          ReportLibrary.Get_Report_Library_Instance();
          //code for login*/

        System.out.println("Test started for Xml files creation for UFM");
        ReportLibrary.Start_Report("Xml files creation for UFM", "Xml files UFM");
        ReportLibrary.Get_Report_Library_Instance();

        //Getting test data into a hashmap
        HashMap<String, String> allTestCasesDataBeforeSort = getUfmTestData(
                "C:\\Users\\23319\\Downloads\\FLCSS-java(5)\\a1\\src\\QATP_R0.xlsx");

        //Sorting the test case ids which are present in Hashmap(allTestCasesDataBeforeSort)
        Map<String, String> allTestCasesData = new TreeMap<String, String>(allTestCasesDataBeforeSort);

        //System.out.println("After Sorting:");
        Iterator iterator = allTestCasesData.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry me = (Map.Entry) iterator.next();
        }
        //Defining variables to save data for each row
        String testCaseName = "";
        String colNamesAndValuesInfoString = "";
        String colNamesAndValuesInfoArray[];
        String keyName = "";
        String keyValue = "";

        //Creating a map object to keep each test case data
        Map<String, String> eachTestCaseData = new TreeMap<String, String>(allTestCasesData);
        Iterator iterator1 = allTestCasesData.entrySet().iterator();

        while (iterator1.hasNext()) {
            Map.Entry me1 = (Map.Entry) iterator1.next();
            testCaseName = me1.getKey().toString();
            //this string holds all the columnn name and vlaue perticular syntax(Example - "PlazaId:099;PltRead:997;
            colNamesAndValuesInfoString = me1.getValue().toString();
            //this array holds column names and values for a single test case(row)
            colNamesAndValuesInfoArray = colNamesAndValuesInfoString.split(";");
            //column name and value are keeping here in a Map(eachTestCaseData)
            for (int i = 0; i <= colNamesAndValuesInfoArray.length - 1; i++) {
                keyName = colNamesAndValuesInfoArray[i].split(":")[0].toString();//keyname(colum name)
                if (colNamesAndValuesInfoArray[i].split(":").length == 2) {
                    keyValue = colNamesAndValuesInfoArray[i].split(":")[1].toString();//key  value(actual value to be passed in xml)
                } else {
                    keyValue = "";
                }
                eachTestCaseData.put(keyName, keyValue);
            }
            //Erasing array after each iteration
            colNamesAndValuesInfoArray = null;
            createXmlWithTestData(testCaseName, eachTestCaseData);

            ReportLibrary.End_Report();
            ReportLibrary.End_Test();
        }

    }

    /**
     * Returns Element object
     * @param doc: document object
     * @param  parentElement: parent element
     * @param  tagName: tag to be created with the name
     * @param value: tag value to keep
     */
    public static Element createChildElement(Document doc, Element parentElement, String tagName, String value) {
        try {
            Element e = doc.createElement(tagName);
            e.appendChild(doc.createTextNode(value));
            parentElement.appendChild(e);
            return e;
        } catch (Exception e) {
            return null;
        }

    }

    /**
     * Read the test data from testData Map object and create the xml file for the mentioned @param testCaseName.
     * @param testData: Map object with key(testcase rownum), value(columnnames and vlaues of perticular row).
     * @param testCaseName: for with test case, xml should be created.
     */
    public static void createXmlWithTestData(String testCaseName, Map testData) {
        try {

            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

            // root element
            Document doc = docBuilder.newDocument();
            Element soapEnvelope = doc.createElement("soapenv:Envelope");
            doc.appendChild(soapEnvelope);

            // adding attributes
            soapEnvelope.setAttribute("xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
            soapEnvelope.setAttribute("xmlns:del", "http://deliver.outbound.ufm.sodh.fte.com/");

            Element soapHeader = createChildElement(doc, soapEnvelope, "soapenv:Header", "");
            Element soapBody = createChildElement(doc, soapEnvelope, "soapenv:Body", "");
            Element delProcUFM = createChildElement(doc, soapBody, "del:procUFM", "");

            createChildElement(doc, delProcUFM, "AwayAgencyIAGCode", testData.get("Away Agency ID").toString());
            createChildElement(doc, delProcUFM, "SubmitTime", testData.get("TxnTm").toString());

            // ufm elements
            Element ufm = createChildElement(doc, delProcUFM, "UFM", "");

            // ufm elements
            createChildElement(doc, ufm, "UFMID", testData.get("UFM ID").toString());
            createChildElement(doc, ufm, "TipUfmSequence", testData.get("UFM ID").toString());////////////
            createChildElement(doc, ufm, "LaneUFMType", testData.get("Lane UFM Type").toString());
            createChildElement(doc, ufm, "CalClass", testData.get("CalClass").toString());
            createChildElement(doc, ufm, "TimeStamp", testData.get("TxnTm").toString());
            createChildElement(doc, ufm, "PlazaID", testData.get("PlazaId").toString());
            createChildElement(doc, ufm, "LaneID", testData.get("LaneId").toString());
            createChildElement(doc, ufm, "PayMethod", testData.get("PlazaId").toString());/////
            createChildElement(doc, ufm, "LaneMode", testData.get("Lane Mode").toString());
            createChildElement(doc, ufm, "LaneStatusState", testData.get("Lane Status").toString());
            createChildElement(doc, ufm, "ExceptionsCodes", "101");/////

            Element previousInfo = createChildElement(doc, ufm, "PreviousInfo", "");
            createChildElement(doc, previousInfo, "PreviousPlazaID", testData.get("PrevPlzId").toString());
            createChildElement(doc, previousInfo, "PreviousLaneID", testData.get("PrevLane").toString());
            createChildElement(doc, previousInfo, "PreviousTimeStamp", testData.get("PrevTm").toString());

            Element transponderInfo = createChildElement(doc, ufm, "TransponderInfo", "");
            createChildElement(doc, transponderInfo, "TransponderStatus", testData.get("TpdrStat").toString());
            createChildElement(doc, transponderInfo, "StateRegionCode", testData.get("Region").toString());
            createChildElement(doc, transponderInfo, "AgencyID", testData.get("Agency").toString());
            createChildElement(doc, transponderInfo, "TransponderID", testData.get("TpdrId").toString());
            createChildElement(doc, transponderInfo, "InternalNumber", testData.get("Internal #").toString());
            createChildElement(doc, transponderInfo, "PasBak", testData.get("PasBak").toString());
            createChildElement(doc, transponderInfo, "PrepaidPassType",
                    testData.get("Prepaid Pass Type").toString());

            Element vehicleInfo = createChildElement(doc, ufm, "VehicleInfo", "");
            createChildElement(doc, vehicleInfo, "LicensePlateCountry",
                    testData.get("License Plate Country").toString());
            createChildElement(doc, vehicleInfo, "Jurisdiction", testData.get("Juris").toString());
            createChildElement(doc, vehicleInfo, "PlateType", testData.get("PlateType").toString());
            createChildElement(doc, vehicleInfo, "PlateRead", testData.get("PltRead").toString());
            createChildElement(doc, vehicleInfo, "HorizontalPosition",
                    testData.get("Horizontal Position").toString());
            createChildElement(doc, vehicleInfo, "VerticalPosition", testData.get("Vertical Position").toString());
            createChildElement(doc, vehicleInfo, "PlateReadConfidence",
                    testData.get("Plate Read Confidence").toString());
            createChildElement(doc, vehicleInfo, "JurisdictionReadConfidence",
                    testData.get("Jurisdiction Read Confidence").toString());
            createChildElement(doc, ufm, "FullFareRevenue", testData.get("FulFareRev").toString());
            createChildElement(doc, ufm, "EtcFareRevenue", testData.get("ETCRev").toString());
            createChildElement(doc, ufm, "IndicatedRevenue", testData.get("IndRev").toString());
            createChildElement(doc, ufm, "ActualRevenueCollected", testData.get("TpdrStat").toString());////
            createChildElement(doc, ufm, "AccountID", testData.get("Account ID").toString());
            createChildElement(doc, ufm, "TipAdjusted", testData.get("TIP Adjusted").toString());///////

            Element tripInfo = createChildElement(doc, ufm, "TripInfo", "");

            createChildElement(doc, tripInfo, "TripId", testData.get("Trip ID").toString());
            createChildElement(doc, tripInfo, "TripAssociationType", testData.get("TpdrStat").toString());//////////
            createChildElement(doc, ufm, "RevenueType", testData.get("TpdrStat").toString());///

            // write the content into xml file
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new File(
                    "C:\\Users\\23319\\Downloads\\FLCSS-java(5)\\a1\\src\\ufmXmlFiles\\" + testCaseName + ".xml"));
            transformer.transform(source, result);

            ReportLibrary.Add_Step(ReportLibrary.Test_Step_Number, "File saved. " + testCaseName + ".xml",
                    LogStatus.PASS, false);

        } catch (ParserConfigurationException pce) {
            pce.printStackTrace();
            ReportLibrary.Add_Step(ReportLibrary.Test_Step_Number, "Failed for test case " + testCaseName + ".",
                    LogStatus.FAIL, false);
        } catch (TransformerException tfe) {
            ReportLibrary.Add_Step(ReportLibrary.Test_Step_Number, "Failed for test case " + testCaseName + ".",
                    LogStatus.FAIL, false);
            tfe.printStackTrace();
        }

    }

    /**
     * Read the test data in Excel data file and convert data to HashMap and return as output.
     * @param locOfFile: location of test data file(Excel file with UFM test cases information).
     * argument is a specifier that is relative to the url argument.
     */
    public static HashMap getUfmTestData(String locOfFile) {
        HashMap<String, String> rowData = new HashMap<String, String>();
        try {
            DataFormatter formatter = new DataFormatter();
            FileInputStream file = new FileInputStream(
                    new File("C:\\Users\\23319\\Downloads\\FLCSS-java(5)\\a1\\src\\QATP_R0.xlsx"));

            //Create Workbook instance holding reference to .xlsx file
            XSSFWorkbook workbook = new XSSFWorkbook(file);

            //Get first/desired sheet from the workbook
            XSSFSheet sheet = workbook.getSheetAt(0);
            int noOfRows = sheet.getLastRowNum();
            //System.out.println("no of rows:" + noOfRows);

            int i = 0;
            Row rowWithColumnNames = sheet.getRow(2);
            int noOfColumns = rowWithColumnNames.getPhysicalNumberOfCells();
            //System.out.println(noOfColumns);
            String testCaseName = "";
            String columnNamesAndValuesOfOneRow = "";
            //            HashMap<String,String> headerColumnNames = new HashMap<String,String>();
            //            //int[][] rowWithData = new int[5][];
            //            for (i = 0; i < 84; i++) {
            //                // System.out.println("hello");
            //                headerColumnNames.put(formatter.formatCellValue((rowWithColumnNames.getCell(i))),"");
            //                //  System.out.println(headerColumnNames.size());
            //            }

            //Iterate through each rows one by one
            Iterator<Row> rowIterator = sheet.iterator();

            // System.out.println(rowIterator

            for (int m = 0; m < noOfRows; m++) {
                //System.out.println("Ieration number : " + m);
                Row rowCurrent = rowIterator.next();
                if (m <= 3) {
                    continue;
                }
                testCaseName = String.valueOf(rowCurrent.getCell(0));
                //     System.out.println("test case name " + testCaseName);

                for (int p = 0; p < 84; p++) {
                    //Igonre the columns without any column name in test case excel file
                    if (formatter.formatCellValue(rowWithColumnNames.getCell(p)) == "") {
                        continue;
                    }
                    columnNamesAndValuesOfOneRow = columnNamesAndValuesOfOneRow
                            + formatter.formatCellValue((rowWithColumnNames.getCell(p))).trim() + ":"
                            + formatter.formatCellValue((rowCurrent.getCell(p))).trim() + ";";

                }
                rowData.put(testCaseName, columnNamesAndValuesOfOneRow);
                columnNamesAndValuesOfOneRow = "";

            }
            file.close();
            return rowData;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;

    }
}