package org.ovirt.engine.core.common.businessentities;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.ovirt.engine.core.common.utils.ValidationUtils;
import org.ovirt.engine.core.compat.Guid;
public class Tags implements Serializable {
private static final long serialVersionUID = -6566155246916011274L;
private Guid id;
@Size(min = 1, max = BusinessEntitiesDefinitions.TAG_NAME_SIZE)
@Pattern(regexp = ValidationUtils.NO_SPECIAL_CHARACTERS_I18N, message = "VALIDATION_TAGS_INVALID_TAG_NAME")
private String name;
@Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
private String description;
private Guid parent;
private Boolean readonly;
private TagsType type;
private List<Tags> _children;
public Tags() {
_children = new ArrayList<>();
type = TagsType.GeneralTag;
}
public Tags(String description, Guid parent_id, Boolean isReadonly, Guid tag_id, String tag_name) {
this();
this.description = description;
this.parent = parent_id;
this.readonly = isReadonly;
this.id = tag_id;
this.name = tag_name;
}
@Override
public int hashCode() {
return Objects.hash(
id,
_children,
description,
parent,
readonly,
name,
type
);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof Tags)) {
return false;
}
Tags other = (Tags) obj;
return Objects.equals(id, other.id)
&& Objects.equals(_children, other._children)
&& Objects.equals(description, other.description)
&& Objects.equals(parent, other.parent)
&& Objects.equals(readonly, other.readonly)
&& Objects.equals(name, other.name)
&& type == other.type;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public Guid getParentId() {
return this.parent;
}
public void setParentId(Guid parent) {
this.parent = parent;
}
public Boolean getIsReadonly() {
return this.readonly;
}
public void setIsReadonly(Boolean readOnly) {
this.readonly = readOnly;
}
public Guid getTagId() {
return this.id;
}
public void setTagId(Guid id) {
this.id = id;
}
public String getTagName() {
return this.name;
}
public void setTagName(String name) {
this.name = name;
}
public TagsType getType() {
return this.type;
}
public void setType(TagsType type) {
this.type = type;
}
public List<Tags> getChildren() {
return _children;
}
public void setChildren(List<Tags> children) {
_children = children;
}
public StringBuilder getTagIdAndChildrenIds() {
StringBuilder builder = new StringBuilder();
builder.append("'").append(getTagId()).append("'");
for (Tags tag : _children) {
builder.append(",").append(tag.getTagIdAndChildrenIds());
}
return builder;
}
public StringBuilder getTagNameAndChildrenNames() {
StringBuilder builder = new StringBuilder();
builder.append("'").append(getTagName()).append("'");
for (Tags tag : _children) {
builder.append("," + tag.getTagNameAndChildrenNames());
}
return builder;
}
public void getTagIdAndChildrenIdsAsList(HashSet<Guid> tagIds) {
tagIds.add(getTagId());
for (Tags tag : _children) {
tag.getTagIdAndChildrenIdsAsList(tagIds);
}
}
}