/*
 * Copyright 2014-2023 Aleksandr Mashchenko.
 *
 * 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.amashchenko.maven.plugin.gitflow;

/**
 * Git flow configuration.
 * 
 */
public class GitFlowConfig {
    /** Name of the production branch. */
    private String productionBranch;
    /** Name of the development branch. */
    private String developmentBranch;
    /** Prefix of the feature branch. */
    private String featureBranchPrefix;
    /** Prefix of the release branch. */
    private String releaseBranchPrefix;
    /** Prefix of the hotfix branch. */
    private String hotfixBranchPrefix;
    /** Prefix of the support branch. */
    private String supportBranchPrefix;
    /** Prefix of the version tag. */
    private String versionTagPrefix;
    /** Name of the default remote. */
    private String origin;

    /**
     * Default constructor.
     */
    public GitFlowConfig() {
        this.productionBranch = System.getProperty("gitFlowConfig.productionBranch", "master");
        this.developmentBranch = System.getProperty("gitFlowConfig.developmentBranch", "develop");
        this.featureBranchPrefix = System.getProperty("gitFlowConfig.featureBranchPrefix", "feature/");
        this.releaseBranchPrefix = System.getProperty("gitFlowConfig.releaseBranchPrefix", "release/");
        this.hotfixBranchPrefix = System.getProperty("gitFlowConfig.hotfixBranchPrefix", "hotfix/");
        this.supportBranchPrefix = System.getProperty("gitFlowConfig.supportBranchPrefix", "support/");
        this.versionTagPrefix = System.getProperty("gitFlowConfig.versionTagPrefix", "");
        this.origin = System.getProperty("gitFlowConfig.origin", "origin");
    }

    /**
     * @return the productionBranch
     */
    public String getProductionBranch() {
        return productionBranch;
    }

    /**
     * @param productionBranch
     *            the productionBranch to set
     */
    public void setProductionBranch(String productionBranch) {
        this.productionBranch = productionBranch;
    }

    /**
     * @return the developmentBranch
     */
    public String getDevelopmentBranch() {
        return developmentBranch;
    }

    /**
     * @param developmentBranch
     *            the developmentBranch to set
     */
    public void setDevelopmentBranch(String developmentBranch) {
        this.developmentBranch = developmentBranch;
    }

    /**
     * @return the featureBranchPrefix
     */
    public String getFeatureBranchPrefix() {
        return featureBranchPrefix;
    }

    /**
     * @param featureBranchPrefix
     *            the featureBranchPrefix to set
     */
    public void setFeatureBranchPrefix(String featureBranchPrefix) {
        this.featureBranchPrefix = featureBranchPrefix;
    }

    /**
     * @return the releaseBranchPrefix
     */
    public String getReleaseBranchPrefix() {
        return releaseBranchPrefix;
    }

    /**
     * @param releaseBranchPrefix
     *            the releaseBranchPrefix to set
     */
    public void setReleaseBranchPrefix(String releaseBranchPrefix) {
        this.releaseBranchPrefix = releaseBranchPrefix;
    }

    /**
     * @return the hotfixBranchPrefix
     */
    public String getHotfixBranchPrefix() {
        return hotfixBranchPrefix;
    }

    /**
     * @param hotfixBranchPrefix
     *            the hotfixBranchPrefix to set
     */
    public void setHotfixBranchPrefix(String hotfixBranchPrefix) {
        this.hotfixBranchPrefix = hotfixBranchPrefix;
    }

    /**
     * @return the supportBranchPrefix
     */
    public String getSupportBranchPrefix() {
        return supportBranchPrefix;
    }

    /**
     * @param supportBranchPrefix
     *            the supportBranchPrefix to set
     */
    public void setSupportBranchPrefix(String supportBranchPrefix) {
        this.supportBranchPrefix = supportBranchPrefix;
    }

    /**
     * @return the versionTagPrefix
     */
    public String getVersionTagPrefix() {
        return versionTagPrefix;
    }

    /**
     * @param versionTagPrefix
     *            the versionTagPrefix to set
     */
    public void setVersionTagPrefix(String versionTagPrefix) {
        this.versionTagPrefix = versionTagPrefix;
    }

    /**
     * @return the origin
     */
    public String getOrigin() {
        return origin;
    }

    /**
     * @param origin
     *            the origin to set
     */
    public void setOrigin(String origin) {
        this.origin = origin;
    }
}
