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

com.hp.octane.integrations.services.pullrequestsandbranches.factory.FetchUtils Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2017-2025 Open Text
 *
 * OpenText is a trademark of Open Text.
 * The only warranties for products and services of Open Text and
 * its affiliates and licensors ("Open Text") are as may be set forth
 * in the express warranty statements accompanying such products and services.
 * Nothing herein should be construed as constituting an additional warranty.
 * Open Text shall not be liable for technical or editorial errors or
 * omissions contained herein. The information contained herein is subject
 * to change without notice.
 *
 * Except as specifically indicated otherwise, this document contains
 * confidential information and a valid license is required for possession,
 * use or copying. If this work is provided to the U.S. Government,
 * consistent with FAR 12.211 and 12.212, Commercial Computer Software,
 * Computer Software Documentation, and Technical Data for Commercial Items are
 * licensed to the U.S. Government under vendor's standard commercial license.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.hp.octane.integrations.services.pullrequestsandbranches.factory;

import com.hp.octane.integrations.utils.SdkStringUtils;

import java.time.Instant;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FetchUtils {

    private static String REGEX_PREFIX = "regex:";

    /**
     * This function build compiled patters
     *
     * @param patterns list of patterns, separated by the '|' character. The wildcard '*' can be used. Example: master|dev*branch)
     * @return list of patterns
     */
    public static List buildPatterns(String patterns) {
        List compiledPatterns = new LinkedList<>();
        if (SdkStringUtils.isNotEmpty(patterns)) {
            if (patterns.toLowerCase().startsWith(REGEX_PREFIX)) {
                String pattern = patterns.substring(REGEX_PREFIX.length()).trim();
                if (!pattern.isEmpty()) {
                    compiledPatterns.add(Pattern.compile(pattern));
                }
            } else {
                String[] patternsArr = patterns.split("[|]");
                for (String str : patternsArr) {
                    String pattern = str.trim();
                    if (!pattern.isEmpty()) {
                        compiledPatterns.add(Pattern.compile(pattern.replace(".", "\\.").replace("*", ".*"), Pattern.CASE_INSENSITIVE));
                    }
                }
            }
        }

        return compiledPatterns;
    }

    public static boolean isBranchMatch(List patterns, String branch) {

        if (patterns.isEmpty()) {
            return true;
        } else {
            for (Pattern pattern : patterns) {
                if (pattern.matcher(branch).find()) {
                    return true;
                }
            }
            return false;
        }
    }


    /**
     * Parse ISO8601DateString (format:YYYY-MM-DDTHH:MM:SSZ) to long
     *
     * @param dateStr String to convert
     * @return long represents date
     */
    public static Long convertISO8601DateStringToLong(String dateStr) {
        if (dateStr == null || dateStr.isEmpty()) {
            return null;
        }
        //All timestamps return in ISO 8601 format:YYYY-MM-DDTHH:MM:SSZ
        return Instant.parse(dateStr).getEpochSecond() * 1000;
    }

    /**
     * return in ISO 8601 format:YYYY-MM-DDTHH:MM:SSZ
     *
     * @param date date to convert to String format
     * @return formated string
     */
    public static String convertLongToISO8601DateString(long date) {
        return Instant.ofEpochMilli(date).toString();
    }

    /**
     * Get short name of repository : repo owner/repo_name
     * @param url repo url from which to take short name
     * @return repo short name
     */
    public static String getRepoShortName(String url) {
        //https://github.houston.softwaregrp.net/Octane/syncx.git=>Octane/syncx.git
        String patternStr = "^.*[/:](.*/.*)$";
        Pattern pattern = Pattern.compile(patternStr);
        Matcher matcher = pattern.matcher(url);
        if (matcher.find() && matcher.groupCount() == 1) {
            return matcher.group(1);
        } else {
            return url;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy