////////////////////////////////////////////////////////////////////////////////
// checkstyle: Checks Java source code for adherence to a set of rules.
// Copyright (C) 2001-2017 the original author or authors.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
////////////////////////////////////////////////////////////////////////////////
package com.puppycrawl.tools.checkstyle.checks.javadoc;
import java.util.Arrays;
import com.puppycrawl.tools.checkstyle.api.DetailNode;
import com.puppycrawl.tools.checkstyle.utils.JavadocUtils;
/**
* Implementation of DetailNode interface that is mutable.
*
* @author Baratali Izmailov
*
*/
public class JavadocNodeImpl implements DetailNode {
/**
* Empty array of {@link DetailNode} type.
*/
public static final JavadocNodeImpl[] EMPTY_DETAIL_NODE_ARRAY = new JavadocNodeImpl[0];
/**
* Node index among parent's children.
*/
private int index;
/**
* Node type.
*/
private int type;
/**
* Node's text content.
*/
private String text;
/**
* Line number.
*/
private int lineNumber;
/**
* Column number.
*/
private int columnNumber;
/**
* Array of child nodes.
*/
private DetailNode[] children;
/**
* Parent node.
*/
private DetailNode parent;
@Override
public int getType() {
return type;
}
@Override
public String getText() {
return text;
}
@Override
public int getLineNumber() {
return lineNumber;
}
@Override
public int getColumnNumber() {
return columnNumber;
}
@Override
public DetailNode[] getChildren() {
DetailNode[] nodeChildren = EMPTY_DETAIL_NODE_ARRAY;
if (children != null) {
nodeChildren = Arrays.copyOf(children, children.length);
}
return nodeChildren;
}
@Override
public DetailNode getParent() {
return parent;
}
@Override
public int getIndex() {
return index;
}
/**
* Sets node's type.
* @param type Node's type.
*/
public void setType(int type) {
this.type = type;
}
/**
* Sets node's text content.
* @param text Node's text content.
*/
public void setText(String text) {
this.text = text;
}
/**
* Sets line number.
* @param lineNumber Line number.
*/
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
/**
* Sets column number.
* @param columnNumber Column number.
*/
public void setColumnNumber(int columnNumber) {
this.columnNumber = columnNumber;
}
/**
* Sets array of child nodes.
* @param children Array of child nodes.
*/
public void setChildren(DetailNode... children) {
this.children = Arrays.copyOf(children, children.length);
}
/**
* Sets parent node.
* @param parent Parent node.
*/
public void setParent(DetailNode parent) {
this.parent = parent;
}
/**
* Sets node's index among parent's children.
* @param index Node's index among parent's children.
*/
public void setIndex(int index) {
this.index = index;
}
@Override
public String toString() {
return JavadocUtils.getTokenName(type)
+ "[" + lineNumber + "x" + columnNumber + "]";
}
}