/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.query.sql.lang;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.teiid.designer.query.sql.IToken;
import org.teiid.designer.query.sql.lang.IComment;
import org.teiid.query.parser.AbstractToken;
import org.teiid.runtime.client.admin.StringConstants;
/**
*
*/
public class Comment implements IComment, StringConstants {
private String text = EMPTY_STRING;
private int line = -1;
private int column = -1;
private int offset = -1;
private boolean isMultiLine = true;
private List<? extends IToken> preTokens = null;
/**
* Default Constructor
*/
public Comment() {}
/**
* Convenience Constructor for tests
* @param text
* @param offset
*/
public Comment(String text, int offset) {
this.text = text;
this.offset = offset;
}
/**
* @return the text
*/
@Override
public String getText() {
return this.text;
}
/**
* @param text the text to set
*/
public void setText(String text) {
this.text = text;
}
/**
* @return the line
*/
@Override
public int getLine() {
return this.line;
}
/**
* @param line the line to set
*/
public void setLine(int line) {
this.line = line;
}
/**
* @return the column
*/
@Override
public int getColumn() {
return this.column;
}
/**
* @param column the column to set
*/
public void setColumn(int column) {
this.column = column;
}
/**
* @return the offset
*/
@Override
public int getOffset() {
return this.offset;
}
/**
* @param offset the offset to set
*/
public void setOffset(int offset) {
this.offset = offset;
}
/**
* @return the preTokens
*/
@Override
public List<? extends IToken> getPreTokens() {
if (this.preTokens == null)
return Collections.emptyList();
return this.preTokens;
}
/**
* @param preTokens the preTokens to set
*/
public void setPreTokens(List<? extends AbstractToken> preTokens) {
this.preTokens = new LinkedList(preTokens);
}
/**
* @return the isMultiLine
*/
@Override
public boolean isMultiLine() {
return this.isMultiLine;
}
/**
* @param isMultiLine the isMultiLine to set
*/
public void setMultiLine(boolean isMultiLine) {
this.isMultiLine = isMultiLine;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + this.column;
result = prime * result + (this.isMultiLine ? 1231 : 1237);
result = prime * result + this.line;
result = prime * result + this.offset;
result = prime * result + ((this.preTokens == null) ? 0 : this.preTokens.hashCode());
result = prime * result + ((this.text == null) ? 0 : this.text.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Comment other = (Comment)obj;
if (this.column != other.column)
return false;
if (this.isMultiLine != other.isMultiLine)
return false;
if (this.line != other.line)
return false;
if (this.offset != other.offset)
return false;
if (this.preTokens == null) {
if (other.preTokens != null)
return false;
} else if (!this.preTokens.equals(other.preTokens))
return false;
if (this.text == null) {
if (other.text != null)
return false;
} else if (!this.text.equals(other.text))
return false;
return true;
}
@Override
@SuppressWarnings( "nls" )
public String toString() {
StringBuffer txt = new StringBuffer("Comment [text=" + this.text + ", line=" + this.line + ", column=" + this.column
+ ", offset=" + this.offset + ", isMultiLine=" + this.isMultiLine);
txt.append(", preTokens=");
if (this.preTokens == null || this.preTokens.isEmpty())
txt.append("[]");
else {
Iterator<? extends IToken> iterator = this.preTokens.iterator();
while (iterator.hasNext()) {
IToken token = iterator.next();
txt.append(token.getText());
txt.append(SPACE).append(AT).append(SPACE);
txt.append(token.getOffset());
if (iterator.hasNext())
txt.append(COMMA).append(SPACE);
}
}
txt.append("]");
return txt.toString();
}
}