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

com.atlassian.bamboo.specs.api.builders.permission.EnvironmentPermissions Maven / Gradle / Ivy

package com.atlassian.bamboo.specs.api.builders.permission;

import com.atlassian.bamboo.specs.api.builders.BambooOid;
import com.atlassian.bamboo.specs.api.builders.RootEntityPropertiesBuilder;
import com.atlassian.bamboo.specs.api.builders.deployment.Deployment;
import com.atlassian.bamboo.specs.api.model.permission.EnvironmentPermissionsProperties;
import com.atlassian.bamboo.specs.api.model.permission.PermissionsProperties;
import com.atlassian.bamboo.specs.api.util.EntityPropertiesBuilders;
import org.jetbrains.annotations.NotNull;

import static com.atlassian.bamboo.specs.api.validators.common.ImporterUtils.checkNotBlank;
import static com.atlassian.bamboo.specs.api.validators.common.ImporterUtils.checkNotNull;

/**
 * Entity representing permissions for deployment environments.
 * Note that this object needs to be published separately from {@link Deployment} environment belongs to.
 * Pre-existing permissions that are not defined in associated {@link Permissions} object are revoked when this object is published.
 */
public class EnvironmentPermissions extends RootEntityPropertiesBuilder {

    public static final String TYPE = "environment permission";

    private BambooOid deploymentOid;
    private String deploymentName;
    private String environmentName;
    private Permissions permissions;

    @Override
    protected EnvironmentPermissionsProperties build() {
        final PermissionsProperties permissionProperties = permissions != null
                ? EntityPropertiesBuilders.build(permissions)
                : null;
        if (deploymentOid != null) {
            return new EnvironmentPermissionsProperties(EntityPropertiesBuilders.build(deploymentOid), environmentName, permissionProperties);
        } else {
            return new EnvironmentPermissionsProperties(deploymentName, environmentName, permissionProperties);
        }
    }

    public EnvironmentPermissions(final BambooOid deploymentOid) {
        checkNotNull("deploymentOid", deploymentOid);
        this.deploymentOid = deploymentOid;
    }

    public EnvironmentPermissions(final String deploymentProjectName) {
        checkNotBlank("deployment project name", deploymentProjectName);
        this.deploymentName = deploymentProjectName;
    }

    public EnvironmentPermissions(final String deploymentProjectName, final String environmentName) {
        checkNotBlank("deployment project name", deploymentProjectName);
        checkNotBlank("environment name", environmentName);
        this.deploymentName = deploymentProjectName;
        this.environmentName = environmentName;
    }

    public EnvironmentPermissions deploymentProjectName(final String deploymentProjectName) {
        checkNotBlank("deployment project name", deploymentProjectName);
        this.deploymentName = deploymentProjectName;
        return this;
    }

    public EnvironmentPermissions environmentName(@NotNull final String environmentName) {
        checkNotBlank("environment name", environmentName);
        this.environmentName = environmentName;
        return this;
    }

    public EnvironmentPermissions permissions(final Permissions permissions) {
        checkNotNull("permissions", permissions);
        this.permissions = permissions;
        return this;
    }

    public String getDeploymentName() {
        return deploymentName;
    }

    public String getEnvironmentName() {
        return environmentName;
    }

    @Override
    public String humanReadableType() {
        return TYPE;
    }

    @Override
    public String humanReadableId() {
        final StringBuilder id = new StringBuilder();
        id.append(TYPE);
        id.append(" for deployment ");
        if (deploymentOid != null) {
            id.append(deploymentOid);
        } else {
            id.append(deploymentName);
        }
        id.append(" environment ");
        id.append(environmentName);
        return id.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy