All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.artos.framework.parser.FrameworkConfigParser Maven / Gradle / Ivy

Go to download

The Artos "ART OF SYSTEM TESTING" is a framework designed for regression, functional, integration, end to end and/or unit testing.

There is a newer version: 1.0.02
Show newest version
/*******************************************************************************
 * Copyright (C) 2018-2019 Arpit Shah and Artos Contributors
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 ******************************************************************************/
package com.artos.framework.parser;

import java.io.File;
import java.io.FileNotFoundException;

import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;

import org.apache.logging.log4j.Level;
import org.w3c.dom.Attr;
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import com.artos.framework.FWStaticStore;

/**
 * This class is responsible for storing framework Configuration. During test suit execution XML file will be searched at location ./conf
 */
public class FrameworkConfigParser {

	final File fXmlFile = new File(FWStaticStore.CONFIG_BASE_DIR + "framework_configuration.xml");
	String profileName = "Dev";

	// Organisation Info
	private String Organisation_Name = " PTY LTD";
	private String Organisation_Address = "XX, Test Street, Test address";
	private String Organisation_Country = "NewZealand";
	private String Organisation_Contact_Number = "+64 1234567";
	private String Organisation_Email = "[email protected]";
	private String Organisation_Website = "www.theartos.com";

	// Email Settings Info
	private String emailSMTPServer = "smtp.gmail.com";
	private String emailSMTPSSLPort = "587"; // "465";
	private String emailSMTPAuthRequired = "true";
	private String emailSendersName = "John Murray";
	private String emailSendersEmail = "[email protected]";
	private String emailAuthSettingsFilePath = FWStaticStore.CONFIG_BASE_DIR + "user_auth_settings.xml";
	private String emailReceiversEmail = "[email protected]";
	private String emailReceiversName = "Mac Murray";
	private String emailSubject = FWStaticStore.TOOL_NAME + " Email Client";
	private String emailBody = "This is a test Email from " + FWStaticStore.TOOL_NAME;

	// Logger
	private String logLevel = "debug";
	private String logRootDir = FWStaticStore.LOG_BASE_DIR;
	private boolean enableLogDecoration = false;
	private boolean enableTextLog = true;
	private boolean enableHTMLLog = false;
	private boolean enableExtentReport = true;

	// Features
	private boolean enableGUITestSelector = true;
	private boolean enableGUITestSelectorSeqNumber = true;
	private boolean enableOrganisationInfo = true;
	private boolean enableBanner = true;
	private boolean enableEmailClient = false;
	private boolean enableArtosDebug = false;
	private boolean generateEclipseTemplate = true;
	private boolean generateIntelliJTemplate = false;
	private boolean generateTestScript = true;
	private boolean stopOnFail = false;

	/**
	 * Constructor
	 * 
	 * @param createIfNotPresent enables creation of default configuration file if not present
	 * @param profileName profile name for choosing correct framework configuration
	 */
	public FrameworkConfigParser(boolean createIfNotPresent, String profileName) {
		this.profileName = profileName;

		// If profile name is not provided then apply default settings
		// if (null == profileName || "".equals(profileName)) {
		// System.err.println("Profile Name is not provided. Default Framework Config is applied");
		// return;
		// }

		readXMLConfig(createIfNotPresent);
	}

	/**
	 * Reads Framework configuration file and set global values so framework configurations is available to everyone
	 * 
	 * @param createIfNotPresent enables creation of default configuration file if not present
	 */
	public void readXMLConfig(boolean createIfNotPresent) {

		try {
			if (!fXmlFile.exists() || !fXmlFile.isFile()) {
				if (createIfNotPresent) {
					fXmlFile.getParentFile().mkdirs();
					writeDefaultConfig(fXmlFile);
				}
			}

			DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
			Document doc = dBuilder.parse(fXmlFile);

			// optional, but recommended
			// read this -
			// http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
			doc.getDocumentElement().normalize();

			readOrganisationInfo(doc);
			readLoggerConfig(doc);
			readFeatures(doc);
			if (isEnableEmailClient()) {
				readEmailConfig(doc);
			}
		} catch (FileNotFoundException fe) {
			System.out.println(fe.getMessage() + "\n" + "Fall back to Default Organisation values");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// ===============================================================
	// Write
	// ===============================================================

	/**
	 * Writes default framework configuration file
	 * 
	 * @param fXmlFile Destination file object
	 * @throws Exception
	 */
	private void writeDefaultConfig(File fXmlFile) throws Exception {
		DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
		SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
		docFactory.setNamespaceAware(true);
		docFactory.setValidating(true);
		Schema schema = sf.newSchema(new StreamSource(FWStaticStore.CONFIG_BASE_DIR + File.separator + "framework_configuration.xsd"));
		docFactory.setSchema(schema);

		DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

		// root elements
		Document doc = docBuilder.newDocument();
		Element rootElement = doc.createElement("configuration");
		rootElement.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:noNamespaceSchemaLocation", "framework_configuration.xsd");
		doc.appendChild(rootElement);

		addOrganisatioInfo(doc, rootElement);
		addLoggerConfig(doc, rootElement);
		addEmailConfig(doc, rootElement);
		addFeatureList(doc, rootElement);

		// write the content into xml file
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
		transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
		DOMSource source = new DOMSource(doc);
		StreamResult result = new StreamResult(fXmlFile);

		transformer.transform(source, result);

	}

	private void addFeatureList(Document doc, Element rootElement) {
		// Features
		Element features = doc.createElement("features");
		features.setAttribute("profile", "dev");
		rootElement.appendChild(features);
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableGUITestSelector())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableGUITestSelector");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableGUITestSelectorSeqNumber())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableGUITestSelectorSeqNumber");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableBanner())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableBanner");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableOrganisationInfo())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableOrganisationInfo");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableEmailClient())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableEmailClient");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableArtosDebug())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableArtosDebug");
			property.setAttributeNode(attr);
		}

		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isGenerateEclipseTemplate())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("generateEclipseTemplate");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isGenerateIntelliJTemplate())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("generateIntelliJTemplate");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isGenerateTestScript())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("generateTestScript");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isStopOnFail())));
			features.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("stopOnFail");
			property.setAttributeNode(attr);
		}
	}

	private void addEmailConfig(Document doc, Element rootElement) {
		// SMTP Settings
		Element smtp_settings = doc.createElement("smtp_settings");
		smtp_settings.setAttribute("profile", "dev");
		rootElement.appendChild(smtp_settings);

		// Properties of Organisation Info
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailSMTPServer()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("ServerAddress");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailSMTPSSLPort()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("SSLPort");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailSMTPAuthRequired()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("SMTPAuth");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailSendersName()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("SendersName");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailSendersEmail()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("SendersEmail");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailAuthSettingsFilePath()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("emailAuthSettingsFilePath");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailReceiversEmail()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("ReceiversEmail");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailReceiversName()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("ReceiversName");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailSubject()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("EmailSubject");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getEmailBody()));
			smtp_settings.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("EmailMessage");
			property.setAttributeNode(attr);
		}
	}

	private void addLoggerConfig(Document doc, Element rootElement) {
		// Logger config elements
		Element logger = doc.createElement("logger");
		logger.setAttribute("profile", "dev");
		rootElement.appendChild(logger);
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getLogLevel()));
			logger.appendChild(property);

			Comment comment = doc.createComment("LogLevel Options : info:debug:trace:fatal:warn:all");
			property.getParentNode().insertBefore(comment, property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("logLevel");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getLogRootDir()));
			logger.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("logRootDir");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableLogDecoration())));
			logger.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableLogDecoration");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableTextLog())));
			logger.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableTextLog");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableHTMLLog())));
			logger.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableHTMLLog");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(Boolean.toString(isEnableExtentReport())));
			logger.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("enableExtentReport");
			property.setAttributeNode(attr);
		}
	}

	private void addOrganisatioInfo(Document doc, Element rootElement) {
		// Organisation Info elements
		Element orgnization_info = doc.createElement("organization_info");
		orgnization_info.setAttribute("profile", "dev");
		rootElement.appendChild(orgnization_info);

		// Properties of Organisation Info
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getOrganisation_Name()));
			orgnization_info.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("Name");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getOrganisation_Address()));
			orgnization_info.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("Address");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getOrganisation_Country()));
			orgnization_info.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("Country");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getOrganisation_Contact_Number()));
			orgnization_info.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("Contact_Number");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getOrganisation_Email()));
			orgnization_info.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("Email");
			property.setAttributeNode(attr);
		}
		{
			Element property = doc.createElement("property");
			property.appendChild(doc.createTextNode(getOrganisation_Website()));
			orgnization_info.appendChild(property);

			Attr attr = doc.createAttribute("name");
			attr.setValue("Website");
			property.setAttributeNode(attr);
		}
	}

	// ===============================================================
	// Read
	// ===============================================================

	/**
	 * Reads logger info from config file
	 * 
	 * @param doc Document object of XML file
	 */
	private void readLoggerConfig(Document doc) {
		// System.out.println("Root element :" +
		// doc.getDocumentElement().getNodeName());
		NodeList nList = doc.getElementsByTagName("logger");

		for (int temp = 0; temp < nList.getLength(); temp++) {
			Node nNode = nList.item(temp);

			Element element = (Element) nNode;

			// If profile is provided then look for configuration with given profile or else take default
			if (element.hasAttributes()) {
				if (profileName == null || !profileName.equals(element.getAttribute("profile").toString().trim())) {
					if (profileName == null || temp == nList.getLength() - 1) {
						System.err.println("[WARNING]: logger profile with name " + profileName + " does not exist. Applying default");
					}
					continue;
				}
			}

			NodeList nChildList = nNode.getChildNodes();
			for (int i = 0; i < nChildList.getLength(); i++) {
				Node nChildNode = nChildList.item(i);
				if (nChildNode.getNodeType() == Node.ELEMENT_NODE) {
					Element eElement = (Element) nChildNode;

					if ("logLevel".equals(eElement.getAttribute("name"))) {
						setLogLevel(eElement.getTextContent());
					} else if ("logRootDir".equals(eElement.getAttribute("name"))) {
						String rootDir = eElement.getTextContent();
						if (rootDir.endsWith("/") || rootDir.endsWith("\\")) {
							setLogRootDir(rootDir);
						} else {
							setLogRootDir(rootDir + File.separator);
						}
					} else if ("enableLogDecoration".equals(eElement.getAttribute("name"))) {
						setEnableLogDecoration(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("enableTextLog".equals(eElement.getAttribute("name"))) {
						setEnableTextLog(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("enableHTMLLog".equals(eElement.getAttribute("name"))) {
						setEnableHTMLLog(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("enableExtentReport".equals(eElement.getAttribute("name"))) {
						setEnableExtentReport(Boolean.parseBoolean(eElement.getTextContent()));
					}
				}
			}

			break;
		}
	}

	/**
	 * Reads features info from config file
	 * 
	 * @param doc Document object of an XML file
	 */
	private void readFeatures(Document doc) {
		// System.out.println("Root element :" +
		// doc.getDocumentElement().getNodeName());
		NodeList nList = doc.getElementsByTagName("features");

		for (int temp = 0; temp < nList.getLength(); temp++) {
			Node nNode = nList.item(temp);

			Element element = (Element) nNode;

			// If profile is provided then look for configuration with given profile or else take default
			if (element.hasAttributes()) {
				if (profileName == null || !profileName.equals(element.getAttribute("profile").toString().trim())) {
					if (profileName == null || temp == nList.getLength() - 1) {
						System.err.println("[WARNING]: features profile with name " + profileName + " does not exist. Applying default");
					}
					continue;
				}
			}

			NodeList nChildList = nNode.getChildNodes();
			for (int i = 0; i < nChildList.getLength(); i++) {
				Node nChildNode = nChildList.item(i);
				if (nChildNode.getNodeType() == Node.ELEMENT_NODE) {
					Element eElement = (Element) nChildNode;

					if ("enableGUITestSelector".equals(eElement.getAttribute("name"))) {
						setEnableGUITestSelector(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("enableGUITestSelectorSeqNumber".equals(eElement.getAttribute("name"))) {
						setEnableGUITestSelectorSeqNumber(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("enableBanner".equals(eElement.getAttribute("name"))) {
						setEnableBanner(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("enableOrganisationInfo".equals(eElement.getAttribute("name"))) {
						setEnableOrganisationInfo(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("enableEmailClient".equals(eElement.getAttribute("name"))) {
						setEnableEmailClient(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("enableArtosDebug".equals(eElement.getAttribute("name"))) {
						setEnableArtosDebug(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("generateEclipseTemplate".equals(eElement.getAttribute("name"))) {
						setGenerateEclipseTemplate(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("generateIntelliJTemplate".equals(eElement.getAttribute("name"))) {
						setGenerateIntelliJTemplate(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("generateTestScript".equals(eElement.getAttribute("name"))) {
						setGenerateTestScript(Boolean.parseBoolean(eElement.getTextContent()));
					} else if ("stopOnFail".equals(eElement.getAttribute("name"))) {
						setStopOnFail(Boolean.parseBoolean(eElement.getTextContent()));
					}
				}
			}

			break;
		}
	}

	/**
	 * Reads organisationInfo from config file
	 * 
	 * @param doc Document object of an XML file
	 */
	private void readOrganisationInfo(Document doc) {
		// System.out.println("Root element :" +
		// doc.getDocumentElement().getNodeName());
		NodeList nList = doc.getElementsByTagName("organization_info");

		for (int temp = 0; temp < nList.getLength(); temp++) {
			Node nNode = nList.item(temp);
			
			Element element = (Element) nNode;

			// If profile is provided then look for configuration with given profile or else take default
			if (element.hasAttributes()) {
				if (profileName == null || !profileName.equals(element.getAttribute("profile").toString().trim())) {
					if (profileName == null || temp == nList.getLength() - 1) {
						System.err.println("[WARNING]: organization_info profile with name " + profileName + " does not exist. Applying default");
					}
					continue;
				}
			}

			NodeList nChildList = nNode.getChildNodes();
			for (int i = 0; i < nChildList.getLength(); i++) {
				Node nChildNode = nChildList.item(i);
				if (nChildNode.getNodeType() == Node.ELEMENT_NODE) {
					Element eElement = (Element) nChildNode;
					// System.out.println(eElement.getNodeName());
					// System.out.println(eElement.getAttribute("name"));
					// System.out.println(eElement.getAttribute("name") +
					// ":" +
					// eElement.getTextContent());
					if ("Name".equals(eElement.getAttribute("name"))) {
						setOrganisation_Name(eElement.getTextContent());
					} else if ("Address".equals(eElement.getAttribute("name"))) {
						setOrganisation_Address(eElement.getTextContent());
					} else if ("Country".equals(eElement.getAttribute("name"))) {
						setOrganisation_Country(eElement.getTextContent());
					} else if ("Contact_Number".equals(eElement.getAttribute("name"))) {
						setOrganisation_Contact_Number(eElement.getTextContent());
					} else if ("Email".equals(eElement.getAttribute("name"))) {
						setOrganisation_Email(eElement.getTextContent());
					} else if ("Website".equals(eElement.getAttribute("name"))) {
						setOrganisation_Website(eElement.getTextContent());
					}
				}
			}

			break;
		}
	}

	private void readEmailConfig(Document doc) {
		NodeList nList = doc.getElementsByTagName("smtp_settings");
		
		for (int temp = 0; temp < nList.getLength(); temp++) {
			Node nNode = nList.item(temp);
			
			Element element = (Element) nNode;

			// If profile is provided then look for configuration with given profile or else take default
			if (element.hasAttributes()) {
				if (profileName == null || !profileName.equals(element.getAttribute("profile").toString().trim())) {
					if (profileName == null || temp == nList.getLength() - 1) {
						System.err.println("[WARNING]: smtp_settings profile with name " + profileName + " does not exist. Applying default");
					}
					continue;
				}
			}

			NodeList nChildList = nNode.getChildNodes();
			for (int i = 0; i < nChildList.getLength(); i++) {
				Node nChildNode = nChildList.item(i);
				if (nChildNode.getNodeType() == Node.ELEMENT_NODE) {
					Element eElement = (Element) nChildNode;
					if ("ServerAddress".equals(eElement.getAttribute("name"))) {
						setEmailSMTPServer(eElement.getTextContent());
					} else if ("SSLPort".equals(eElement.getAttribute("name"))) {
						setEmailSMTPSSLPort(eElement.getTextContent());
					} else if ("SMTPAuth".equals(eElement.getAttribute("name"))) {
						setEmailSMTPAuthRequired(eElement.getTextContent());
					} else if ("SendersEmail".equals(eElement.getAttribute("name"))) {
						setEmailSendersEmail(eElement.getTextContent());
					} else if ("SendersName".equals(eElement.getAttribute("name"))) {
						setEmailSendersName(eElement.getTextContent());
					} else if ("emailAuthSettingsFilePath".equals(eElement.getAttribute("name"))) {
						setEmailAuthSettingsFilePath(eElement.getTextContent());
					} else if ("ReceiversEmail".equals(eElement.getAttribute("name"))) {
						setEmailReceiversEmail(eElement.getTextContent());
					} else if ("ReceiversName".equals(eElement.getAttribute("name"))) {
						setEmailReceiversName(eElement.getTextContent());
					} else if ("EmailSubject".equals(eElement.getAttribute("name"))) {
						setEmailSubject(eElement.getTextContent());
					} else if ("EmailMessage".equals(eElement.getAttribute("name"))) {
						setEmailBody(eElement.getTextContent());
					}
				}
			}

			break;
		}
	}

	/**
	 * Returns Log Level Enum value based on Framework configuration set in XML file
	 * 
	 * @see Level
	 * 
	 * @return LogLevel
	 * @see Level
	 */
	public Level getLoglevelFromXML() {
		String logLevel = getLogLevel();
		if (logLevel.equals("info")) {
			return Level.INFO;
		}
		if (logLevel.equals("all")) {
			return Level.ALL;
		}
		if (logLevel.equals("fatal")) {
			return Level.FATAL;
		}
		if (logLevel.equals("trace")) {
			return Level.TRACE;
		}
		if (logLevel.equals("warn")) {
			return Level.WARN;
		}
		if (logLevel.equals("debug")) {
			return Level.DEBUG;
		}
		return Level.DEBUG;
	}

	public String getOrganisation_Name() {
		return Organisation_Name;
	}

	public void setOrganisation_Name(String organisation_Name) {
		Organisation_Name = organisation_Name;
	}

	public String getOrganisation_Address() {
		return Organisation_Address;
	}

	public void setOrganisation_Address(String organisation_Address) {
		Organisation_Address = organisation_Address;
	}

	public String getOrganisation_Country() {
		return Organisation_Country;
	}

	public void setOrganisation_Country(String organisation_Country) {
		Organisation_Country = organisation_Country;
	}

	public String getOrganisation_Contact_Number() {
		return Organisation_Contact_Number;
	}

	public void setOrganisation_Contact_Number(String organisation_Contact_Number) {
		Organisation_Contact_Number = organisation_Contact_Number;
	}

	public String getOrganisation_Email() {
		return Organisation_Email;
	}

	public void setOrganisation_Email(String organisation_Email) {
		Organisation_Email = organisation_Email;
	}

	public String getOrganisation_Website() {
		return Organisation_Website;
	}

	public void setOrganisation_Website(String organisation_Website) {
		Organisation_Website = organisation_Website;
	}

	public String getLogLevel() {
		return logLevel;
	}

	public void setLogLevel(String logLevel) {
		this.logLevel = logLevel;
	}

	public boolean isEnableLogDecoration() {
		return enableLogDecoration;
	}

	public void setEnableLogDecoration(boolean enableLogDecoration) {
		this.enableLogDecoration = enableLogDecoration;
	}

	public boolean isEnableTextLog() {
		return enableTextLog;
	}

	public void setEnableTextLog(boolean enableTextLog) {
		this.enableTextLog = enableTextLog;
	}

	public boolean isEnableHTMLLog() {
		return enableHTMLLog;
	}

	public void setEnableHTMLLog(boolean enableHTMLLog) {
		this.enableHTMLLog = enableHTMLLog;
	}

	public String getLogRootDir() {
		return logRootDir;
	}

	public void setLogRootDir(String logRootDir) {
		this.logRootDir = logRootDir;
	}

	public boolean isEnableGUITestSelector() {
		return enableGUITestSelector;
	}

	public void setEnableGUITestSelector(boolean enableGUITestSelector) {
		this.enableGUITestSelector = enableGUITestSelector;
	}

	public boolean isEnableBanner() {
		return enableBanner;
	}

	public void setEnableBanner(boolean enableBanner) {
		this.enableBanner = enableBanner;
	}

	public boolean isEnableOrganisationInfo() {
		return enableOrganisationInfo;
	}

	public void setEnableOrganisationInfo(boolean enableOrganisationInfo) {
		this.enableOrganisationInfo = enableOrganisationInfo;
	}

	public boolean isGenerateTestScript() {
		return generateTestScript;
	}

	public void setGenerateTestScript(boolean generateTestScript) {
		this.generateTestScript = generateTestScript;
	}

	public boolean isStopOnFail() {
		return stopOnFail;
	}

	public void setStopOnFail(boolean stopOnFail) {
		this.stopOnFail = stopOnFail;
	}

	public boolean isGenerateEclipseTemplate() {
		return generateEclipseTemplate;
	}

	public void setGenerateEclipseTemplate(boolean generateEclipseTemplate) {
		this.generateEclipseTemplate = generateEclipseTemplate;
	}

	public boolean isEnableExtentReport() {
		return enableExtentReport;
	}

	public void setEnableExtentReport(boolean enableExtentReport) {
		this.enableExtentReport = enableExtentReport;
	}

	public String getEmailSMTPServer() {
		return emailSMTPServer;
	}

	public void setEmailSMTPServer(String emailSMTPServer) {
		this.emailSMTPServer = emailSMTPServer;
	}

	public String getEmailSMTPSSLPort() {
		return emailSMTPSSLPort;
	}

	public void setEmailSMTPSSLPort(String emailSMTPSSLPort) {
		this.emailSMTPSSLPort = emailSMTPSSLPort;
	}

	public String getEmailSMTPAuthRequired() {
		return emailSMTPAuthRequired;
	}

	public void setEmailSMTPAuthRequired(String emailSMTPAuthRequired) {
		this.emailSMTPAuthRequired = emailSMTPAuthRequired;
	}

	public String getEmailSendersName() {
		return emailSendersName;
	}

	public void setEmailSendersName(String emailSendersName) {
		this.emailSendersName = emailSendersName;
	}

	public String getEmailSendersEmail() {
		return emailSendersEmail;
	}

	public void setEmailSendersEmail(String emailSendersEmail) {
		this.emailSendersEmail = emailSendersEmail;
	}

	public String getEmailReceiversEmail() {
		return emailReceiversEmail;
	}

	public void setEmailReceiversEmail(String emailReceiversEmail) {
		this.emailReceiversEmail = emailReceiversEmail;
	}

	public String getEmailReceiversName() {
		return emailReceiversName;
	}

	public void setEmailReceiversName(String emailReceiversName) {
		this.emailReceiversName = emailReceiversName;
	}

	public String getEmailSubject() {
		return emailSubject;
	}

	public void setEmailSubject(String emailSubject) {
		this.emailSubject = emailSubject;
	}

	public String getEmailBody() {
		return emailBody;
	}

	public void setEmailBody(String emailBody) {
		this.emailBody = emailBody;
	}

	public boolean isEnableEmailClient() {
		return enableEmailClient;
	}

	public void setEnableEmailClient(boolean enableEmailClient) {
		this.enableEmailClient = enableEmailClient;
	}

	public String getEmailAuthSettingsFilePath() {
		return emailAuthSettingsFilePath;
	}

	public void setEmailAuthSettingsFilePath(String emailAuthSettingsFilePath) {
		this.emailAuthSettingsFilePath = emailAuthSettingsFilePath;
	}

	public boolean isEnableGUITestSelectorSeqNumber() {
		return enableGUITestSelectorSeqNumber;
	}

	public void setEnableGUITestSelectorSeqNumber(boolean enableGUITestSelectorSeqNumber) {
		this.enableGUITestSelectorSeqNumber = enableGUITestSelectorSeqNumber;
	}

	public boolean isEnableArtosDebug() {
		return enableArtosDebug;
	}

	public void setEnableArtosDebug(boolean enableArtosDebug) {
		this.enableArtosDebug = enableArtosDebug;
	}

	public boolean isGenerateIntelliJTemplate() {
		return generateIntelliJTemplate;
	}

	public void setGenerateIntelliJTemplate(boolean generateIntelliJTemplate) {
		this.generateIntelliJTemplate = generateIntelliJTemplate;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy