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

com.liferay.jenkins.results.parser.job.property.JobPropertyFactory Maven / Gradle / Ivy

/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

package com.liferay.jenkins.results.parser.job.property;

import com.liferay.jenkins.results.parser.JenkinsResultsParserUtil;
import com.liferay.jenkins.results.parser.Job;
import com.liferay.jenkins.results.parser.TestSuiteJob;

import java.io.File;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Michael Hashimoto
 */
public class JobPropertyFactory {

	public static JobProperty newJobProperty(String basePropertyName, Job job) {
		return newJobProperty(
			basePropertyName, null, null, job, null, null, true);
	}

	public static JobProperty newJobProperty(
		String basePropertyName, Job job, File testBaseDir,
		JobProperty.Type type) {

		return newJobProperty(
			basePropertyName, null, null, job, testBaseDir, type, true);
	}

	public static JobProperty newJobProperty(
		String basePropertyName, String testSuiteName, String testBatchName,
		Job job, File testBaseDir, JobProperty.Type type,
		boolean useBasePropertyName) {

		StringBuilder sb = new StringBuilder();

		sb.append(basePropertyName);
		sb.append("_");

		if (JenkinsResultsParserUtil.isNullOrEmpty(testSuiteName) &&
			(job instanceof TestSuiteJob)) {

			TestSuiteJob testSuiteJob = (TestSuiteJob)job;

			testSuiteName = testSuiteJob.getTestSuiteName();
		}

		sb.append(testSuiteName);
		sb.append("_");
		sb.append(testBatchName);
		sb.append("_");
		sb.append(job.getJobName());

		if (testBaseDir != null) {
			sb.append("_");
			sb.append(JenkinsResultsParserUtil.getCanonicalPath(testBaseDir));
		}

		if (type == null) {
			if (testBaseDir != null) {
				type = JobProperty.Type.DEFAULT_TEST_DIR;
			}
			else {
				type = JobProperty.Type.DEFAULT;
			}
		}

		sb.append("_");
		sb.append(type);
		sb.append("_");
		sb.append(useBasePropertyName);

		String key = sb.toString();

		JobProperty jobProperty = _jobProperties.get(key);

		if (jobProperty != null) {
			return jobProperty;
		}

		if (type == JobProperty.Type.DEFAULT_TEST_DIR) {
			jobProperty = new DefaultTestDirProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName);
		}
		else if ((type == JobProperty.Type.EXCLUDE_GLOB) ||
				 (type == JobProperty.Type.FILTER_GLOB) ||
				 (type == JobProperty.Type.INCLUDE_GLOB)) {

			if (testBatchName.equals("modules-integration-analytics-cloud") &&
				(testBaseDir == null)) {

				testBaseDir = new File(
					"/opt/dev/projects/github/com-liferay-osb-asah-private");
			}

			jobProperty = new DefaultGlobJobProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName);
		}
		else if ((type == JobProperty.Type.MODULE_EXCLUDE_GLOB) ||
				 (type == JobProperty.Type.MODULE_INCLUDE_GLOB)) {

			jobProperty = new ModuleGlobJobProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName);
		}
		else if (type == JobProperty.Type.MODULE_TEST_DIR) {
			jobProperty = new ModuleTestDirJobProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName);
		}
		else if (type == JobProperty.Type.PLUGIN_TEST_DIR) {
			jobProperty = new PluginTestDirProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName);
		}
		else if (type == JobProperty.Type.QA_WEBSITES_TEST_DIR) {
			jobProperty = new QAWebsitesTestDirJobProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName);
		}
		else {
			jobProperty = new DefaultJobProperty(
				job, type, basePropertyName, useBasePropertyName, testSuiteName,
				testBatchName);
		}

		_jobProperties.put(key, jobProperty);

		return _jobProperties.get(key);
	}

	public static JobProperty newJobProperty(
		String basePropertyName, String testSuiteName, String testBatchName,
		String ruleName, Job job, File testBaseDir, JobProperty.Type type,
		boolean useBasePropertyName) {

		StringBuilder sb = new StringBuilder();

		sb.append(basePropertyName);
		sb.append("_");

		if (JenkinsResultsParserUtil.isNullOrEmpty(testSuiteName) &&
			(job instanceof TestSuiteJob)) {

			TestSuiteJob testSuiteJob = (TestSuiteJob)job;

			testSuiteName = testSuiteJob.getTestSuiteName();
		}

		sb.append(testSuiteName);
		sb.append("_");

		if (testBatchName != null) {
			sb.append(testBatchName);
			sb.append("_");
		}

		sb.append(ruleName);
		sb.append("_");
		sb.append(job.getJobName());

		if (testBaseDir != null) {
			sb.append("_");
			sb.append(JenkinsResultsParserUtil.getCanonicalPath(testBaseDir));
		}

		if (type == null) {
			if (testBaseDir != null) {
				type = JobProperty.Type.DEFAULT_TEST_DIR;
			}
			else {
				type = JobProperty.Type.DEFAULT;
			}
		}

		sb.append("_");
		sb.append(type);
		sb.append("_");
		sb.append(useBasePropertyName);

		String key = sb.toString();

		JobProperty jobProperty = _jobProperties.get(key);

		if (jobProperty != null) {
			return jobProperty;
		}

		if (type == JobProperty.Type.DEFAULT_TEST_DIR) {
			jobProperty = new DefaultTestDirProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName, ruleName);
		}
		else if ((type == JobProperty.Type.EXCLUDE_GLOB) ||
				 (type == JobProperty.Type.FILTER_GLOB) ||
				 (type == JobProperty.Type.INCLUDE_GLOB)) {

			if (testBatchName.equals("modules-integration-analytics-cloud") &&
				(testBaseDir == null)) {

				testBaseDir = new File(
					"/opt/dev/projects/github/com-liferay-osb-asah-private");
			}

			jobProperty = new DefaultGlobJobProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName, ruleName);
		}
		else if ((type == JobProperty.Type.MODULE_EXCLUDE_GLOB) ||
				 (type == JobProperty.Type.MODULE_INCLUDE_GLOB)) {

			jobProperty = new ModuleGlobJobProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName, ruleName);
		}
		else if (type == JobProperty.Type.MODULE_TEST_DIR) {
			jobProperty = new ModuleTestDirJobProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName, ruleName);
		}
		else if (type == JobProperty.Type.PLUGIN_TEST_DIR) {
			jobProperty = new PluginTestDirProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName, ruleName);
		}
		else if (type == JobProperty.Type.QA_WEBSITES_TEST_DIR) {
			jobProperty = new QAWebsitesTestDirJobProperty(
				job, type, testBaseDir, basePropertyName, useBasePropertyName,
				testSuiteName, testBatchName, ruleName);
		}
		else {
			jobProperty = new DefaultJobProperty(
				job, type, basePropertyName, useBasePropertyName, testSuiteName,
				testBatchName, ruleName);
		}

		_jobProperties.put(key, jobProperty);

		return _jobProperties.get(key);
	}

	private static final Map _jobProperties =
		new HashMap<>();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy