com.cisco.dbds.utils.tims.TIMS.java Source code

Java tutorial

Introduction

Here is the source code for com.cisco.dbds.utils.tims.TIMS.java

Source

/**
 * Copyright (c) 2015 by SAT Systems, Inc.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of SAT Systems,  ("Confidential Information").  You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with SAT Systems.
 *
 *
 * @Project: Utils
 * @Author: amsathishkumar
 * @Version: 
 * @Description:  
 * @Date created: Apr 9, 2015
 */
package com.cisco.dbds.utils.tims;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Properties;
import java.util.Scanner;

import org.apache.http.HttpResponse;

import com.cisco.dbds.utils.configfilehandler.ConfigFileHandler;
import com.cisco.dbds.utils.restapi.RestfulIFCommonFunctions;
import com.cisco.dbds.utils.restapi.XMLFunctions;

// TODO: Auto-generated Javadoc
/**
 * The Class TIMS.
 */
public class TIMS {

    /** The url. */
    private static String url = "";

    /** The xml. */
    private static String xml = "";

    /** The tr id. */
    private static String trID = "";

    /** The credentials. */
    private static LinkedHashMap credentials = new LinkedHashMap();

    /** The xml file name. */
    private static String xmlFileName = "c:\\sattims.xml"; //Don't changes
    //Log file details
    /** The fname. */
    private static String fname = "c:\\htmltoTIMS.txt";

    /** The outlog. */
    private static PrintWriter outlog;

    /** The rs. */
    private static RestfulIFCommonFunctions rs = new RestfulIFCommonFunctions();

    /** The xmlf. */
    private static XMLFunctions xmlf = new XMLFunctions();

    // Input Parameter
    /** The file name. */
    private static String fFileName = "c:\\customreport.html";

    /**
     * The main method.
     *
     * @param args the arguments
     * @throws Exception the exception
     */
    public static void main(String args[]) throws Exception {

        ConfigFileHandler.loadConfigFile("src/it/resources");
        new FileOutputStream(fname).close();
        outlog = new PrintWriter(new BufferedWriter(new FileWriter(fname, true)));
        //updatetimsresult("Ttv9629533c", "passed");

        //       initializeTIMSParameters(
        //         System.getProperty("tims.userID").trim(), 
        //         System.getProperty("tims.projectID").trim(), 
        //         System.getProperty("tims.configID").trim(),
        //         System.getProperty("tims.token").trim(),
        //         System.getProperty("tims.sw").trim(),
        //         System.getProperty("tims.platform").trim(),
        //         System.getProperty("tims.browsertype").trim(),
        //         System.getProperty("tims.browserversion").trim()
        //    );
        //      
        //      postTIMSsearch("Ttv9629533c");

        updateHTMLtoTIMSresults();
        //      ArrayList<String> re1 = new ArrayList<String>(); 
        //      re1 = readhtmlfilePass();
        //      System.out.println(re1.size()+" bvvv "+re1);

        //createtimsresult("Tl4352381c", "failed","sample111555");
    }

    /**
     * Initialize tims parameters.
     *
     * @param userID the user id
     * @param projectID the project id
     * @param configID the config id
     * @param token the token
     * @param sw the sw
     * @param platform the platform
     * @param browsertype the browsertype
     * @param browserversion the browserversion
     * @return true, if successful
     */
    public static boolean initializeTIMSParameters(String userID, String projectID, String configID, String token,
            String sw, String platform, String browsertype, String browserversion) {
        try {
            boolean status = true;
            credentials.put("userID", userID);
            credentials.put("token", token);
            credentials.put("projectID", projectID);
            credentials.put("configID", configID);
            credentials.put("sw", sw);
            credentials.put("platform", platform);
            credentials.put("brwtype", browsertype);
            credentials.put("brwversion", browserversion);
            if (userID == null || userID == "") {
                status = false;
                System.out.println("UserID shouldn't be null or blank.");
                return status;
            }
            if (token == null || token == "") {
                status = false;
                System.out.println("Automation Token shouldn't be null or blank.");
                return status;
            }

            if (projectID == null || projectID == "") {
                status = false;
                System.out.println("ProjectID shouldn't be null or blank.");
                return status;
            }
            if (configID == null || configID == "") {
                status = false;
                System.out.println("ConfigID shouldn't be null or blank.");
                return status;
            }
            return status;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * Generate tims xml file.
     */
    public static void generateTimsXMLFile() {
        try {
            String fileName = xmlFileName;
            File outFile = new File(fileName);
            FileWriter out = new FileWriter(outFile);
            out.write(xml);
            out.close();
            xml = "";
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * Load properties.
     *
     * @param FileName the file name
     * @return the properties
     */
    public static Properties loadProperties(String FileName) {
        try {
            Properties property = new Properties();
            FileInputStream in = new FileInputStream(FileName);
            property.load(in);
            in.close();
            return property;
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
            e.printStackTrace();
            return null;
        }
    }

    /**
     * Buildsearchxml.
     *
     * @param cred the cred
     * @param testCaseID the test case id
     * @return true, if successful
     */
    public static boolean buildsearchxml(LinkedHashMap cred, String testCaseID) {
        boolean status = true;
        String configID = cred.get("configID").toString();
        try {
            if (configID == null || configID == "") {
                status = false;
                System.out.println("configID shouldn't be null or blank.");
            }
            if (testCaseID == null || testCaseID == "") {
                status = false;
                System.out.println("Test Case ID shouldn't be null or blank");
            }
            xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
            xml = xml
                    + "<Tims xsi:schemaLocation=\"http://tims.cisco.com/namespace http://tims.cisco.com/xsd/Tims.xsd\"\n";
            xml = xml + "xmlns=\"http://tims.cisco.com/namespace\"\n";
            xml = xml + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
            xml = xml + "xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n";
            xml = xml + "<ResultList>\n";
            xml = xml + "<ResultRange>last</ResultRange>\n";
            xml = xml + "<CaseID>" + testCaseID + "</CaseID>\n";
            xml = xml + "<ConfigID>" + configID + "</ConfigID>\n";
            xml = xml + "</ResultList>\n";
            xml = xml + "</Tims>";
            return status;
        } catch (Exception e) {
            e.printStackTrace();
            status = false;
            return status;
        }
    }

    /**
     * Buildupdatexml.
     *
     * @param cred the cred
     * @param result the result
     * @return true, if successful
     */
    public static boolean buildupdatexml(LinkedHashMap cred, String result) {

        boolean status = true;

        String configID = cred.get("configID").toString();
        String usrID = cred.get("userID").toString();
        String tokenv = cred.get("token").toString();
        String sw = cred.get("sw").toString();
        String platform = cred.get("platform").toString();
        String brwtype = cred.get("brwtype").toString();
        String brwversion = cred.get("brwversion").toString();
        System.out.println("browser details:" + brwtype + brwversion);
        try {

            if (configID == null || configID == "") {
                status = false;
                System.out.println("configID shouldn't be null or blank.");
            }
            if (trID == null || trID == "") {
                status = false;
                System.out.println("Test Result ID shouldn't be null or blank");
            }
            if (result == null || result == "") {
                status = false;
                System.out.println("Result shouldn't be null or blank");
            }
            if (!(result.equals("passed") | result.equals("failed")

                    | result.equals("blocked") | result.equals("dropped")

                    | result.equals("passx") | result.equals("pending"))) {

                System.out.println("Invalid Status value");
                return false;
            }

            xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
            xml = xml
                    + "<Tims xsi:schemaLocation=\"http://tims.cisco.com/namespace http://tims.cisco.com/xsd/Tims.xsd\"\n";
            xml = xml + "xmlns=\"http://tims.cisco.com/namespace\"\n";
            xml = xml + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
            xml = xml + "xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n";
            xml = xml + "<Credential user=\"" + usrID + "\" token=\"" + tokenv + "\"/>\n";
            xml = xml + "<ID>" + trID + "</ID>\n";

            xml = xml + "<ListFieldValue editoperator=\"set\">\n";
            xml = xml + "<FieldName>Status</FieldName>\n";
            xml = xml + "<Value>" + result + "</Value>\n";
            xml = xml + "</ListFieldValue>\n";

            xml = xml + "<ListFieldValue editoperator=\"set\">\n";
            xml = xml + "<FieldName>Tested by</FieldName>\n";
            xml = xml + "<Value>" + usrID + "</Value>\n";
            xml = xml + "</ListFieldValue>\n";

            /*xml=xml+"<ListFieldValue editoperator=\"set\">\n";
               xml=xml+"<FieldName>Software Version</FieldName>\n";
               xml=xml+"<Value>"+sw+"</Value>\n";   
            xml=xml+"</ListFieldValue>\n";*/

            xml = xml + "<ListFieldValue editoperator=\"set\">\n";
            xml = xml + "<FieldName>Platform</FieldName>\n";
            xml = xml + "<Value>" + platform + "</Value>\n";
            xml = xml + "</ListFieldValue>\n";

            xml = xml + "<TextFieldValue editoperator=\"set\">\n";
            xml = xml + "<FieldName>Browser Type</FieldName>\n";
            xml = xml + "<Value>" + brwtype + "</Value>\n";
            xml = xml + "</TextFieldValue>\n";

            xml = xml + "<TextFieldValue editoperator=\"set\">\n";
            xml = xml + "<FieldName>Browser Version</FieldName>\n";
            xml = xml + "<Value>" + brwversion + "</Value>\n";
            xml = xml + "</TextFieldValue>\n";

            xml = xml + "</Tims>\n";
            return status;

        } catch (Exception e) {

            e.printStackTrace();

            status = false;

            return status;

        }

    }

    /**
     * Buildcreatexml.
     *
     * @param cred the cred
     * @param testCaseID the test case id
     * @param result the result
     * @param title the title
     * @return true, if successful
     */
    public static boolean buildcreatexml(LinkedHashMap cred, String testCaseID, String result, String title) {

        boolean status = true;
        String userID = cred.get("userID").toString();
        String automationToken = cred.get("token").toString();
        String projectID = cred.get("projectID").toString();
        String configID = cred.get("configID").toString();

        try {
            if (userID == null || userID == "") {
                status = false;
                System.out.println("userID shouldn't be null or blank.");
            }
            if (automationToken == null || automationToken == "") {
                status = false;
                System.out.println("Automation Token shouldn't be null or blank.");
            }
            if (testCaseID == null || testCaseID == "") {
                status = false;
                System.out.println("Test Case ID shouldn't be null or blank");
            }
            if (configID == null || configID == "") {
                status = false;
                System.out.println("configID shouldn't be null or blank.");
            }

            xml = xml + "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
            xml = xml
                    + "<Tims xsi:schemaLocation=\"http://tims.cisco.com/namespace http://tims.cisco.com/xsd/Tims.xsd\"\n";
            xml = xml + "xmlns=\"http://tims.cisco.com/namespace\"\n";
            xml = xml + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
            xml = xml + "xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n";
            xml = xml + "<Credential user=\"" + userID + "\" token=\"" + automationToken + "\"/>\n";
            xml = xml + "<Result xlink:href=\"http://tims.cisco.com/xml/" + testCaseID + "/entity.svc\">\n";

            xml = xml + "<Title><![CDATA[" + title + "]]></Title>\n";
            xml = xml + "<ListFieldValue multi-value=\"false\">\n";
            xml = xml + "<FieldName><![CDATA[Tested by]]>\n";
            xml = xml + "</FieldName>\n";
            xml = xml + "<Value><![CDATA[" + userID + "]]>\n";
            xml = xml + "</Value>\n";
            xml = xml + "<Value><![CDATA[shisuren]]>\n";
            xml = xml + "</Value>\n";
            xml = xml + "</ListFieldValue>\n";

            xml = xml + "<Owner>\n";
            xml = xml + "<UserID>\n" + userID + "\n</UserID>\n";
            xml = xml + "<Email>\n" + userID + "@cisco.com" + "\n</Email>\n";
            xml = xml + "</Owner>\n";
            xml = xml + "<Status>" + result + "</Status>\n";
            xml = xml + "<ConfigID xlink:href=\"http://tims.cisco.com/xml/" + configID + "/entity.svc\">" + configID
                    + "</ConfigID>\n";
            xml = xml + "<CaseID xlink:href=\"http://tims.cisco.com/xml/" + testCaseID + "/entity.svc\">"
                    + testCaseID + "</CaseID>\n";
            xml = xml + "</Result>\n";
            xml = xml + "</Tims>";

            return status;

        } catch (Exception e) {

            e.printStackTrace();

            status = false;

            return status;

        }

    }

    /**
     * Updatetimsresult.
     *
     * @param tcid the tcid
     * @param status the status
     */
    public static void updatetimsresult(String tcid, String status) {
        boolean result;
        result = initializeTIMSParameters(System.getProperty("tims.userID").trim(),
                System.getProperty("tims.projectID").trim(), System.getProperty("tims.configID").trim(),
                System.getProperty("tims.token").trim(), System.getProperty("tims.sw").trim(),
                System.getProperty("tims.platform").trim(), System.getProperty("tims.browsertype").trim(),
                System.getProperty("tims.browserversion").trim());

        System.out.println(
                System.getProperty("tims.browsertype").trim() + System.getProperty("tims.browserversion").trim());
        try {
            if (!postTIMSsearch(tcid)) {
                System.out.println("Test ResultID:" + trID + "\n Result:" + result + "\n");
            } else {
                System.out.println("Test ResultID:" + trID + "\n Result:" + result + "\n");
                System.out.println("update result" + postTIMSupdate(status));
                outlog.print(trID);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * Createtimsresult.
     *
     * @param tcid the tcid
     * @param status the status
     * @param title the title
     */
    public static void createtimsresult(String tcid, String status, String title) {
        boolean result;
        result = initializeTIMSParameters(System.getProperty("tims.userID").trim(),
                System.getProperty("tims.projectID").trim(), System.getProperty("tims.configID").trim(),
                System.getProperty("tims.token").trim(), System.getProperty("tims.sw").trim(),
                System.getProperty("tims.platform").trim(), System.getProperty("tims.browsertype").trim(),
                System.getProperty("tims.browserversion").trim());

        try {
            if (!postTIMScreate(tcid, status, title)) {
                System.out.println("TResult:" + result + "\n");
            } else {
                System.out.println("Result:" + result + "\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * Post tim ssearch.
     *
     * @param testCaseID the test case id
     * @return true, if successful
     * @throws Exception the exception
     */
    public static boolean postTIMSsearch(String testCaseID) throws Exception {
        try {
            boolean status = true;
            String tc = null;
            String sw = credentials.get("sw").toString();
            if (credentials.size() == 0) {
                status = false;
                System.out.println("Sorry!! , Please initialize TIMS parameters before posting the result.");
                return status;
            }
            String projectID = credentials.get("projectID").toString();
            if (projectID == null || projectID == "") {
                status = false;
                System.out.println("projectID shouldn't be null or blank");
                return status;
            }

            if (testCaseID == null || testCaseID == "") {
                status = false;
                System.out.println("Test Case ID shouldn't be null or blank");
                return status;
            }

            url = "http://tims.cisco.com/xml/" + projectID + "/result-list.svc";
            if (!buildsearchxml(credentials, testCaseID)) {
                return false;
            }
            generateTimsXMLFile();

            String strXMLFilename = xmlf.convertXMLFileToString(xmlFileName);

            HashMap<String, String> contentType = new HashMap<String, String>();
            contentType.put("Content-type", "text/xml; charset=ISO-8859-1");

            HttpResponse res = rs.getRESTAPIResponse(url, "POST", strXMLFilename, "http", contentType);

            int statusCode = rs.readStatusCode(res);
            if (statusCode == 200) {
                String a = rs.readContent(res);
                System.out.println("Upload complete, response=" + a);
                String b[] = a.split("\n");
                int found = 0;
                if (b.length > 7 && a.contains("<LogicalID>")) {
                    tc = b[8].trim();
                    System.out.println("sathis" + tc);
                    tc = tc.substring("<LogicalID>".length(), tc.length() - "</LogicalID>".length());
                    System.out.println("test Result id" + tc);
                    //System.out.println("software version" +b[93]);                    
                    for (int sat = 0; sat <= b.length - 1; sat++)
                    //for (int sat=0 ;sat<=100;sat++)
                    {
                        String sw1 = "<Value><![CDATA[" + sw + "]]></Value>";
                        if ((b[sat].trim()).equalsIgnoreCase(sw1))
                        //if (b[sat].contains(sw))
                        {
                            found = 1;
                            System.out.println("software version" + b[sat]);
                        }
                    }

                    if (found == 1) {
                        trID = tc;
                        outlog.print(trID);
                    } else {

                        outlog.println(sw + "are not mtached");
                        return false;

                    }
                } else {
                    outlog.println("no response string matched");
                    return false;
                }

            } else {
                System.out.println("Upload failed, response=" + statusCode);
                return false;
            }
            return true;

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }

    }

    /**
     * Post tim supdate.
     *
     * @param result the result
     * @return true, if successful
     * @throws Exception the exception
     */
    public static boolean postTIMSupdate(String result) throws Exception {
        try {
            boolean status = true;
            if (credentials.size() == 0) {
                status = false;
                System.out.println("Sorry!! , Please initialize TIMS parameters before posting the result.");
                return status;
            }

            if (result == null || result == "") {
                status = false;
                System.out.println("Result shouldn't be null or blank.");
                return status;
            }

            String projectID = credentials.get("projectID").toString();
            if (projectID == null || projectID == "") {
                status = false;
                System.out.println("projectID shouldn't be null or blank");
                return status;
            }

            url = "http://tims.cisco.com/xml/" + projectID + "/entity-list/edit.svc";
            if (!buildupdatexml(credentials, result)) {
                return false;
            }
            generateTimsXMLFile();
            String strXMLFilename = xmlf.convertXMLFileToString(xmlFileName);

            HashMap<String, String> contentType = new HashMap<String, String>();
            contentType.put("Content-type", "text/xml; charset=ISO-8859-1");

            HttpResponse res = rs.getRESTAPIResponse(url, "POST", strXMLFilename, "http", contentType);

            int statusCode = rs.readStatusCode(res);
            if (statusCode == 200) {
                String a = rs.readContent(res);
                System.out.println("Upload complete, response=" + a);
                if (a.contains("Error")) {
                    System.out.println("Staus: Fail: " + a);
                    outlog.println(", Staus: Fail: " + a);
                } else {
                    System.out.println("Staus: Pass");
                    outlog.println(", Status: Pass ");
                }
            } else {
                System.out.println("Upload failed, response=" + statusCode);
                return false;
            }
            return true;

        } catch (Exception e) {

            e.printStackTrace();

            return false;
        }

    }

    /**
     * Post tim screate.
     *
     * @param testCaseID the test case id
     * @param result the result
     * @param title the title
     * @return true, if successful
     * @throws Exception the exception
     */
    public static boolean postTIMScreate(String testCaseID, String result, String title) throws Exception {
        try {
            boolean status = true;
            if (credentials.size() == 0) {
                status = false;
                System.out.println("Sorry!! , Please initialize TIMS parameters before posting the result.");
                return status;
            }

            if (result == null || result == "") {
                status = false;
                System.out.println("Result shouldn't be null or blank.");
                return status;
            }

            String projectID = credentials.get("projectID").toString();
            if (projectID == null || projectID == "") {
                status = false;
                System.out.println("projectID shouldn't be null or blank");
                return status;
            }

            url = "http://tims.cisco.com/xml/" + projectID + "/entity.svc";

            if (!buildcreatexml(credentials, testCaseID, result, title)) {
                return false;
            }
            generateTimsXMLFile();

            //         if (statusCode1 == HttpStatus.SC_OK) {                         
            String strXMLFilename = xmlf.convertXMLFileToString(xmlFileName);

            HashMap<String, String> contentType = new HashMap<String, String>();
            contentType.put("Content-type", "text/xml; charset=ISO-8859-1");

            HttpResponse res = rs.getRESTAPIResponse(url, "POST", strXMLFilename, "http", contentType);

            int statusCode = rs.readStatusCode(res);
            if (statusCode == 200) {
                String a = rs.readContent(res);
                System.out.println("Upload complete, response=" + a);
            } else {
                System.out.println("Upload failed, response=" + statusCode);
                return false;
            }

            return true;

        } catch (Exception e) {

            e.printStackTrace();

            return false;
        }

    }

    /**
     * Update htm lto tim sresults.
     *
     * @throws IOException Signals that an I/O exception has occurred.
     */
    public static void updateHTMLtoTIMSresults() throws IOException {
        ArrayList<String> re = new ArrayList<String>();
        re = readhtmlfilePass();
        new FileOutputStream(fname).close();
        outlog = new PrintWriter(new BufferedWriter(new FileWriter(fname, true)));
        System.out.println("Tims Update started: " + re.size());
        outlog.println("Tims Update started");
        outlog.println("Total TIMS test case for update" + re.size());
        outlog.println(" S.no, Desc, TCID, TIMS report id, Update status");
        for (int i = 0; i < re.size(); i++) {
            String res = re.get(i);
            String[] tc = res.split("~");
            if (tc[0].startsWith("Ttv")) {
                if (tc.length > 1) {
                    outlog.print(i + ", " + tc[0] + ", " + tc[1] + ", " + tc[2] + ", ");
                    updatetimsresult(tc[0], tc[2].toLowerCase());
                } else {
                    outlog.print(res + "not updated");
                }
            }
        }
        System.out.println("Tims Update Ended");
        outlog.println("Tims Update Ended");
        outlog.close();
    }

    /**
     * Readhtmlfile pass.
     *
     * @return the array list
     * @throws FileNotFoundException the file not found exception
     */
    public static ArrayList<String> readhtmlfilePass() throws FileNotFoundException {
        ArrayList<String> re = new ArrayList<String>();

        String fEncoding = "UTF-8";
        String tt = "";
        int fcount = 0;
        Scanner scanner = new Scanner(new FileInputStream(fFileName), fEncoding);
        try {
            while (scanner.hasNextLine()) {

                tt = scanner.nextLine();
                tt = tt.trim();

                if (tt.contains("Failed Test Case ID"))
                    fcount = 1;

                if (fcount == 0 && tt.contains("Ttv") && !(tt.contains("Precheck"))
                        && !(tt.contains("Precondition"))) {
                    System.out.println("LINE read: " + tt);

                    String a[] = tt.split("<td>");
                    System.out.println("tcid: " + a[3].substring(a[3].indexOf('T'), 19));
                    System.out.println("Desc: " + a[5].substring(0, a[5].indexOf("<")));
                    System.out.println("status: " + a[6].substring(a[6].indexOf(">") + 1, a[6].indexOf("d") + 1));

                    String aa = a[3].substring(a[3].indexOf('T'), 19) + "~" + a[5].substring(0, a[5].indexOf("<"))
                            + "~" + a[6].substring(a[6].indexOf(">") + 1, a[6].indexOf("d") + 1);
                    re.add(aa);

                }

            }

        } finally {
            scanner.close();
        }
        return re;

    }

    /**
     * Readhtmlfile fail.
     *
     * @return the array list
     * @throws FileNotFoundException the file not found exception
     */
    public static ArrayList<String> readhtmlfileFail() throws FileNotFoundException {
        ArrayList<String> re = new ArrayList<String>();
        String fEncoding = "UTF-8";
        String tt = "";
        int cc = 0;
        Scanner scanner = new Scanner(new FileInputStream(fFileName), fEncoding);
        try {
            while (scanner.hasNextLine()) {

                tt = scanner.nextLine();
                tt = tt.trim();

                if (tt.contains("FAILED TIMS TEST CASES")) {
                    cc = 1;
                }
                if (tt.contains("FAILED NON-TIMS TEST CASE ERROR LIST")) {
                    return re;
                }
                if (cc == 1 && tt.contains("Ttv") && !(tt.contains("Precheck")) && !(tt.contains("Precondition"))) {
                    int charCount = 0;
                    int pos = 0;
                    if (!tt.startsWith("Ttv")) {
                        for (int i = 0; i < tt.length(); i++) {
                            if (tt.charAt(i) == '_') {
                                charCount++;
                                if (charCount == 2) {
                                    pos = i;
                                    break;
                                }
                            }
                        }
                    }

                    String tcid = null;
                    if (charCount == 2 && (!tt.startsWith("Ttv"))) {
                        int k = nthOccurrence(tt, '_', 0);
                        tcid = tt.substring(k + 1, tt.length() - 5);
                        if (!tcid.startsWith("Ttv")) {
                            tcid = tt.substring(16, tt.length() - 5);
                        }
                    } else if (charCount == 2) {
                        tcid = tt.substring(pos - 11, tt.length() - 5);
                    } else {
                        tcid = tt.substring(pos + 16, tt.length() - 5);
                    }
                    //System.out.println(tt);
                    System.out.println(tcid);
                    re.add(tcid);

                }

            }

        } finally {
            scanner.close();
        }
        return re;
    }

    /**
     * Nth occurrence.
     *
     * @param str the str
     * @param c the c
     * @param n the n
     * @return the int
     */
    public static int nthOccurrence(String str, char c, int n) {
        int pos = str.indexOf(c, 0);
        while (n-- > 0 && pos != -1)
            pos = str.indexOf(c, pos + 1);
        return pos;
    }
}