AstNode.java
/*
** Module : AstNode.java
** Abstract : AST object easily represented in JSON using Jackson.
**
** Copyright (c) 2017, Golden Code Development Corporation.
**
** -#- -I- --Date-- ---------------------------------Description----------------------------------
** 001 ECF 20170523 First version.
*/
/*
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU Affero General Public License as
** published by the Free Software Foundation, either version 3 of the
** License, or (at your option) any later version.
**
** This program 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 Affero General Public License for more details.
**
** You may find a copy of the GNU Affero GPL version 3 at the following
** location: https://www.gnu.org/licenses/agpl-3.0.en.html
**
** Additional terms under GNU Affero GPL version 3 section 7:
**
** Under Section 7 of the GNU Affero GPL version 3, the following additional
** terms apply to the works covered under the License. These additional terms
** are non-permissive additional terms allowed under Section 7 of the GNU
** Affero GPL version 3 and may not be removed by you.
**
** 0. Attribution Requirement.
**
** You must preserve all legal notices or author attributions in the covered
** work or Appropriate Legal Notices displayed by works containing the covered
** work. You may not remove from the covered work any author or developer
** credit already included within the covered work.
**
** 1. No License To Use Trademarks.
**
** This license does not grant any license or rights to use the trademarks
** Golden Code, FWD, any Golden Code or FWD logo, or any other trademarks
** of Golden Code Development Corporation. You are not authorized to use the
** name Golden Code, FWD, or the names of any author or contributor, for
** publicity purposes without written authorization.
**
** 2. No Misrepresentation of Affiliation.
**
** You may not represent yourself as Golden Code Development Corporation or FWD.
**
** You may not represent yourself for publicity purposes as associated with
** Golden Code Development Corporation, FWD, or any author or contributor to
** the covered work, without written authorization.
**
** 3. No Misrepresentation of Source or Origin.
**
** You may not represent the covered work as solely your work. All modified
** versions of the covered work must be marked in a reasonable way to make it
** clear that the modified work is not originating from Golden Code Development
** Corporation or FWD. All modified versions must contain the notices of
** attribution required in this license.
*/
package com.goldencode.p2j.report.server;
import java.util.*;
import com.fasterxml.jackson.annotation.*;
/**
* A single AST node, without object references to its parents or children. This form is more
* suitable for serialization to and deserialization from JSON using Jackson, whereas the
* original {@code Aast} can become too deeply nested a data structure for Jackson to handle.
* Each instance stores the ID of its parent node (if any), so the hierarchy of nodes can be
* restored on the client side.
*/
public class AstNode
{
/** Unique ID */
private long id = 0L;
/** Unique ID of this node's parent, if any */
@JsonProperty("pid")
private long parentId = 0L;
/** Token type */
private int type = -1;
/** Actual starting line number. */
@JsonProperty("l0")
private int actualStartLine = 0;
/** Actual starting column number. */
@JsonProperty("c0")
private int actualStartColumn = 0;
/** Actual ending line number. */
@JsonProperty("l1")
private int actualEndLine = 0;
/** Actual ending column number. */
@JsonProperty("c1")
private int actualEndColumn = 0;
/** Effective starting line number. */
@JsonProperty("el0")
private int effectiveStartLine = 0;
/** Effective starting column number. */
@JsonProperty("ec0")
private int effectiveStartColumn = 0;
/** Effective ending line number. */
@JsonProperty("el1")
private int effectiveEndLine = 0;
/** Effective ending column number. */
@JsonProperty("ec1")
private int effectiveEndColumn = 0;
/** Node text */
private String text = null;
/** Annotations map */
private Map<String, Object> notes = null;
/**
* Getter for ID.
*
* @return Unique AST ID.
*/
public long getId()
{
return id;
}
/**
* Setter for ID.
*
* @param id
* Unique AST ID.
*/
public void setId(long id)
{
this.id = id;
}
/**
* Getter for parent ID.
*
* @return Parent ID.
*/
public long getParentId()
{
return parentId;
}
/**
* Setter for parent ID.
*
* @param parentId
* Parent ID.
*/
public void setParentId(long parentId)
{
this.parentId = parentId;
}
/**
* Getter for token type.
*
* @return Token type.
*/
public int getType()
{
return type;
}
/**
* Setter for token type.
*
* @param type
* Token type.
*/
public void setType(int type)
{
this.type = type;
}
/**
* Getter for actual starting line number.
*
* @return Actual starting line number.
*/
public int getActualStartLine()
{
return actualStartLine;
}
/**
* Setter for actual starting line number.
*
* @param actualStartLine
* Actual starting line number.
*/
public void setActualStartLine(int actualStartLine)
{
this.actualStartLine = actualStartLine;
}
/**
* Getter for actual starting column number.
*
* @return Actual starting column number.
*/
public int getActualStartColumn()
{
return actualStartColumn;
}
/**
* Setter for actual starting column number.
*
* @param actualStartColumn
* Actual starting column number.
*/
public void setActualStartColumn(int actualStartColumn)
{
this.actualStartColumn = actualStartColumn;
}
/**
* Getter for actual ending line number.
*
* @return Actual ending line number.
*/
public int getActualEndLine()
{
return actualEndLine;
}
/**
* Setter for actual ending line number.
*
* @param actualEndLine
* Actual ending line number.
*/
public void setActualEndLine(int actualEndLine)
{
this.actualEndLine = actualEndLine;
}
/**
* Getter for actual ending column number.
*
* @return Actual ending column number.
*/
public int getActualEndColumn()
{
return actualEndColumn;
}
/**
* Setter for actual ending column number.
*
* @param actualEndColumn
* Actual ending column number.
*/
public void setActualEndColumn(int actualEndColumn)
{
this.actualEndColumn = actualEndColumn;
}
/**
* Getter for effective starting line number.
*
* @return Effective starting line number.
*/
public int getEffectiveStartLine()
{
return effectiveStartLine;
}
/**
* Setter for effective starting line number.
*
* @param effectiveStartLine
* Effective starting line number.
*/
public void setEffectiveStartLine(int effectiveStartLine)
{
this.effectiveStartLine = effectiveStartLine;
}
/**
* Getter for effective starting column number.
*
* @return Effective starting column number.
*/
public int getEffectiveStartColumn()
{
return effectiveStartColumn;
}
/**
* Setter for effective starting column number.
*
* @param effectiveStartColumn
* Effective starting column number.
*/
public void setEffectiveStartColumn(int effectiveStartColumn)
{
this.effectiveStartColumn = effectiveStartColumn;
}
/**
* Getter for effective ending line number.
*
* @return Effective ending line number.
*/
public int getEffectiveEndLine()
{
return effectiveEndLine;
}
/**
* Setter for effective ending line number.
*
* @param effectiveEndLine
* Effective ending line number.
*/
public void setEffectiveEndLine(int effectiveEndLine)
{
this.effectiveEndLine = effectiveEndLine;
}
/**
* Getter for effective ending column number.
*
* @return Effective ending column number.
*/
public int getEffectiveEndColumn()
{
return effectiveEndColumn;
}
/**
* Setter for effective ending column number.
*
* @param effectiveEndColumn
* Effective ending column number.
*/
public void setEffectiveEndColumn(int effectiveEndColumn)
{
this.effectiveEndColumn = effectiveEndColumn;
}
/**
* Getter for text.
*
* @return Text.
*/
public String getText()
{
return text;
}
/**
* Setter for text.
*
* @param text
* Text.
*/
public void setText(String text)
{
this.text = text;
}
/**
* Getter for map of annotations.
*
* @return Map of annotations (may be {@code null}.
*/
public Map<String, Object> getNotes()
{
return notes;
}
/**
* Setter for map of annotations.
*
* @param notes
* Map of annotations (may be {@code null}.
*/
public void setNotes(Map<String, Object> notes)
{
this.notes = notes;
}
}