com.almworks.jira.structure.api.folder.Folder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of structure-api Show documentation
Show all versions of structure-api Show documentation
Public API for the Structure Plugin for JIRA
The newest version!
package com.almworks.jira.structure.api.folder;
import com.almworks.jira.structure.api.util.Limits;
import com.almworks.jira.structure.api.util.StructureUtil;
import com.atlassian.annotations.PublicApi;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@PublicApi
public final class Folder {
@NotNull
private final String myName;
@Nullable
private final Long myOwningStructure;
private Folder(@NotNull String name, @Nullable Long owningStructure) {
myName = StructureUtil.nonBlank(name);
myOwningStructure = owningStructure;
}
@NotNull
public String getName() {
return myName;
}
@Nullable
public Long getOwningStructure() {
return myOwningStructure;
}
@NotNull
public static Builder named(@NotNull String name) {
return new Builder(name);
}
@NotNull
public static Builder copy(@NotNull Folder folder) {
return new Builder(folder.getName()).setOwningStructure(folder.getOwningStructure());
}
@PublicApi
public static final class Builder {
@NotNull
private String myName;
@Nullable
private Long myOwningStructure;
private Builder(@NotNull String name) {
myName = checkName(name);
}
@NotNull
public Builder setName(@NotNull String name) {
myName = checkName(name);
return this;
}
private String checkName(String name) {
if (StringUtils.isBlank(name)) {
throw new IllegalArgumentException("Folder name must not be blank.");
}
return StringUtils.abbreviate(name, Limits.MAX_NAME_LENGTH);
}
@NotNull
public Builder setOwningStructure(@Nullable Long owningStructure) {
myOwningStructure = owningStructure;
return this;
}
@NotNull
public Folder build() {
return new Folder(myName, myOwningStructure);
}
}
}