public abstract class PlSqlParser
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static interface |
PlSqlParser.Issue
An issue in some PL/SQL source detected by the parser
|
static class |
PlSqlParser.Severity
The severity of a PL/SQL parser Issue
|
Modifier | Constructor and Description |
---|---|
protected |
PlSqlParser(DBObjectProvider pro,
PlSqlSourceObject pso,
java.lang.String source)
Create a PlSqlParser for the source on the given PlSqlSourceObject or the
given source String using the given DBObjectProvider
|
Modifier and Type | Method and Description |
---|---|
abstract DBObjectPlSqlFragment |
createFragment(DBObjectPlSqlFragment parentFragment,
java.lang.Object parentParseNode,
java.lang.Object parseNode)
Create a DBObjectPlSqlFragment appropriate for the object represented by
the given parseNode, if any.
|
abstract java.util.List<Tuple<PlSqlToken,PlSqlToken>> |
getAlterStatements()
Returns PlSqlTokens at the start and end of any ALTER statements that
follow the main object definition in the source.
|
abstract java.util.List |
getChildParseNodes(DBObjectPlSqlFragment frag,
java.lang.Object parseNode)
Return a list of child parse nodes from the underlying parser for the given
parse node.
|
abstract int |
getEndOffset(java.lang.Object parseNode)
Return the end offset the in the source for the given parse node.
|
abstract int |
getEndOffsetOfObject()
Get the offset in the source where the definiion of object ends.
|
abstract java.util.List<PlSqlParser.Issue> |
getIssues()
Returns a list of Issues found in the parsed source.
|
abstract java.util.List<PlSqlParser.Issue> |
getIssues(java.lang.String source)
Returns a list of Issues found in the given PL/SQL.
|
java.util.List<java.lang.Integer> |
getLocationOffsets(java.lang.String text)
Finds the offsets in the original source for tokens matching the given text.
|
java.util.List<java.lang.Integer> |
getLocationOffsets(java.lang.String internalName,
int start,
int end)
Finds the offsets between start and end in the original source for tokens
matching the given text.
|
abstract PlSqlToken |
getNameToken()
Get the PlSqlToken representing where the name of object is defined in the
source.
|
abstract java.lang.Object |
getParseNode(DBObjectPlSqlFragment frag)
Find the Parse Node from the underlying pareser implementation that most
closely represents the given DBObjectPlSqlFragment.
|
abstract java.lang.Object |
getParseNode(int offset)
Get an object from the underlying parser that represents the parse node
most closely enclosing the given offset.
|
java.lang.Object |
getPropertyNode(DBObjectPlSqlFragment frag,
java.lang.String property)
Find the node in the parse tree that represents the given property of the
given DBObjectPlSqlFragment.
|
java.lang.Object[] |
getPropertyNodes(DBObjectPlSqlFragment frag,
java.lang.String property)
Find the nodes in the parse tree that represents the given property of the
given DBObjectPlSqlFragment.
|
protected abstract java.lang.Object[] |
getPropertyNodesImpl(DBObjectPlSqlFragment frag,
java.lang.String property)
|
protected DBObjectProvider |
getProvider()
Get the DBObjectProvider
|
PlSqlSourceObject |
getRoot()
Get the root node of the parse tree for the given PL/SQL source
|
abstract PlSqlToken |
getSchemaToken()
Get the PlSqlToken representing where the schema of object is defined in
the source, if any.
|
protected java.lang.String |
getSource()
Get the source being parsed
|
abstract int |
getStartOffset(java.lang.Object parseNode)
Return the start offset in the source for the given parse node.
|
abstract int |
getStartOffsetOfObject()
Get the offset in the source where the definiion of object begins.
|
abstract PlSqlToken |
getTokenAtOffset(int offset)
Find the PlSqlToken that spans the given offset
|
abstract PlSqlToken |
getTypeToken()
Get the PlSqlToken representing the SQL Keyword where the type of object is
defined.
|
abstract boolean |
isWrapped()
Is the source code wrapped?
|
protected PlSqlParser(DBObjectProvider pro, PlSqlSourceObject pso, java.lang.String source)
pro
- The DBObjectProvidersource
- Some PL/SQL source codepso
- PlSqlSourceObject whose source should be parsedpublic final PlSqlSourceObject getRoot()
public abstract PlSqlToken getTokenAtOffset(int offset) throws CancelledException
offset
- The offset into the sourceCancelledException
public abstract boolean isWrapped() throws CancelledException
true
if the source code is wrapped (obfuscated),
false
otherwise.CancelledException
public abstract PlSqlToken getTypeToken() throws CancelledException
CancelledException
public abstract PlSqlToken getSchemaToken() throws CancelledException
CancelledException
public abstract PlSqlToken getNameToken() throws CancelledException
CancelledException
public abstract int getStartOffsetOfObject() throws CancelledException
CancelledException
public abstract int getEndOffsetOfObject() throws CancelledException
CancelledException
public abstract java.util.List<Tuple<PlSqlToken,PlSqlToken>> getAlterStatements() throws CancelledException
CancelledException
public final java.util.List<java.lang.Integer> getLocationOffsets(java.lang.String text) throws CancelledException
CancelledException
public final java.util.List<java.lang.Integer> getLocationOffsets(java.lang.String internalName, int start, int end) throws CancelledException
internalName
- the test to search for, in internal name formatstart
- the offset to search fromend
- the offset to search toCancelledException
public abstract java.lang.Object getParseNode(int offset) throws CancelledException
offset
- CancelledException
public abstract int getStartOffset(java.lang.Object parseNode) throws java.lang.IllegalArgumentException, CancelledException
parseNode
- parse node of the underlying parserjava.lang.IllegalArgumentException
- If the given parse node is not of the
expected class.CancelledException
public abstract int getEndOffset(java.lang.Object parseNode) throws java.lang.IllegalArgumentException, CancelledException
parseNode
- parse node of the underlying parserjava.lang.IllegalArgumentException
- If the given parse node is not of the
expected class.CancelledException
public abstract java.util.List getChildParseNodes(DBObjectPlSqlFragment frag, java.lang.Object parseNode) throws java.lang.IllegalArgumentException, CancelledException
frag
- The DBObjectPlSqlFragment for which the child parse nodes relateparseNode
- parse node of the underlying parserjava.lang.IllegalArgumentException
- If the given parse node is not of the
expected class.CancelledException
protected final DBObjectProvider getProvider()
protected final java.lang.String getSource()
public abstract java.lang.Object getParseNode(DBObjectPlSqlFragment frag) throws CancelledException
frag
- A fragment within the DBObject based fragment heirarchy of
derived objectsCancelledException
public abstract DBObjectPlSqlFragment createFragment(DBObjectPlSqlFragment parentFragment, java.lang.Object parentParseNode, java.lang.Object parseNode) throws CancelledException
parentFragment
- The parent of the DBObjectPlSqlFragment to createparentParseNode
- The parent parse nodeparseNode
- The parse node for which a DBObjectPlSqlFragment is
required.CancelledException
public final java.lang.Object getPropertyNode(DBObjectPlSqlFragment frag, java.lang.String property) throws CancelledException
frag
- A PlSql object for which we want to find a parse node representing
the specified propertyproperty
- for which we want to find a parse nodeCancelledException
getPropertyNodes(oracle.javatools.db.plsql.DBObjectPlSqlFragment, java.lang.String)
public final java.lang.Object[] getPropertyNodes(DBObjectPlSqlFragment frag, java.lang.String property) throws CancelledException
frag
- A PlSql object for which we want to find parse nodes representing
the specified collection propertyproperty
- for which we want to find a parse nodeCancelledException
getPropertyNode(oracle.javatools.db.plsql.DBObjectPlSqlFragment, java.lang.String)
protected abstract java.lang.Object[] getPropertyNodesImpl(DBObjectPlSqlFragment frag, java.lang.String property) throws CancelledException
getPropertyNode(oracle.javatools.db.plsql.DBObjectPlSqlFragment, java.lang.String)
and getPropertyNodes(oracle.javatools.db.plsql.DBObjectPlSqlFragment, java.lang.String)
.frag
- A PlSql object for which we want to find parse nodes representing
the specified collection propertyproperty
- for which we want to find a parse nodeCancelledException
public abstract java.util.List<PlSqlParser.Issue> getIssues() throws CancelledException
NB Because of inconsistencies between what historically has been allowed in
the source property of a PlSqlSourceObject and what is identified as valid PL/SQL
by the parser, this method peforms some pre-processing of the text before it
passes it to getIssues(String)
.
getIssues(String)
.CancelledException
public abstract java.util.List<PlSqlParser.Issue> getIssues(java.lang.String source)
text
- PL/SQL source