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

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

There is a newer version: 10.2.3-m01
Show newest version
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.BambooOidProperties;
import com.atlassian.bamboo.specs.api.model.permission.DeploymentPermissionsProperties;
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 projects.
 * Note that this object needs to be published separately from associated {@link Deployment}.
 * Pre-existing permissions that are not defined in associated {@link Permissions} object are revoked when this object is published.
 */
public class DeploymentPermissions extends RootEntityPropertiesBuilder {
    public static final String TYPE = "deployment permission";

    private BambooOidProperties deploymentOid;
    private String deploymentName;
    private Permissions permissions;

    @Override
    protected DeploymentPermissionsProperties build() {
        if (deploymentOid != null) {
            return new DeploymentPermissionsProperties(deploymentOid, EntityPropertiesBuilders.build(permissions));
        } else {
            return new DeploymentPermissionsProperties(deploymentName, EntityPropertiesBuilders.build(permissions));
        }
    }

    public DeploymentPermissions(@NotNull final BambooOid deploymentOid) {
        this(EntityPropertiesBuilders.build(checkNotNull("deploymentOid", deploymentOid)));
    }

    public DeploymentPermissions(@NotNull final BambooOidProperties deploymentOid) {
        checkNotNull("deploymentOid", deploymentOid);
        this.deploymentOid = deploymentOid;
    }

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

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

    public String getDeploymentName() {
        return deploymentName;
    }

    public static DeploymentPermissions createForDeployment(@NotNull final Deployment deployment) {
        if (deployment.getOid() != null) {
            return new DeploymentPermissions(deployment.getOid());
        } else {
            return new DeploymentPermissions(deployment.getName());
        }
    }

    @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);
        }
        return id.toString();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy