org.asteriskjava.config.Category Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of asterisk-java Show documentation
Show all versions of asterisk-java Show documentation
The free Java library for Asterisk PBX integration.
package org.asteriskjava.config;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Category extends ConfigElement {
private String name;
private boolean template;
private final List baseCategories = new ArrayList<>();
private final List elements = new ArrayList<>();
/**
* The last object in the list will get assigned any trailing comments when EOF is hit.
*/
//private String trailingComment;
public Category(String name) {
if (name == null) {
throw new IllegalArgumentException("Name must not be null");
}
this.name = name;
}
public Category(String filename, int lineno, String name) {
super(filename, lineno);
this.name = name;
}
/**
* Returns the name of this category.
*
* @return the name of this category.
*/
public String getName() {
return name;
}
/**
* Checks if this category is a template.
*
* @return true
if this category is a template, false
otherwise.
*/
public boolean isTemplate() {
return template;
}
void markAsTemplate() {
template = true;
}
/**
* Returns a list of categories this category inherits from.
*
* @return a list of categories this category inherits from, never null
.
*/
public List getBaseCategories() {
return baseCategories;
}
void addBaseCategory(Category baseCategory) {
baseCategories.add(baseCategory);
}
public List getElements() {
return elements;
}
public void addElement(ConfigElement element) {
if (element instanceof Category) {
throw new IllegalArgumentException("Nested categories are not allowed");
}
elements.add(element);
}
public String format() {
StringBuilder sb = new StringBuilder();
format(sb);
for (ConfigElement e : elements) {
sb.append("\n");
e.format(sb);
}
return sb.toString();
}
@Override
protected StringBuilder rawFormat(StringBuilder sb) {
sb.append("[").append(name).append("]");
if (isTemplate() || !getBaseCategories().isEmpty()) {
sb.append("(");
if (isTemplate()) {
sb.append("!");
if (!getBaseCategories().isEmpty()) {
sb.append(",");
}
}
Iterator inheritsFromIterator = getBaseCategories().iterator();
while (inheritsFromIterator.hasNext()) {
sb.append(inheritsFromIterator.next().getName());
if (inheritsFromIterator.hasNext()) {
sb.append(",");
}
}
sb.append(")");
}
return sb;
}
@Override
public String toString() {
return name;
}
}