Class PrefixSearchVisitor
- java.lang.Object
-
- net.ssehub.easy.varModel.model.AbstractVisitor
-
- net.ssehub.easy.varModel.model.search.PrefixSearchVisitor
-
- All Implemented Interfaces:
IConstraintTreeVisitor,ICustomDatatypeVisitor,IModelVisitor
public class PrefixSearchVisitor extends AbstractVisitor implements IConstraintTreeVisitor
Realizes a visitor which searches for a given prefix in a given context and returns all matching model elements.- Author:
- Holger Eichelberger
-
-
Field Summary
Fields Modifier and Type Field Description private SearchContextcontextprivate DatatypeVisitordatatypeVisitorprivate booleaninInterfaceprivate java.util.HashSet<java.lang.Object>inResultprivate static java.util.List<PrefixSearchVisitor>INSTANCESprivate java.util.Stack<Project>nestingprivate java.lang.Stringprefixprivate java.lang.Class<?>[]restrictionsprivate java.util.List<SearchResult>result
-
Constructor Summary
Constructors Modifier Constructor Description privatePrefixSearchVisitor()Constructs an instances.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcheckName(java.lang.String name, java.lang.Object element)Checks a name for inclusion.private voidcheckName(ModelElement element)Checks a modelelementfor inclusion.private java.lang.StringcheckType(IDatatype type, ModelElement element)Checks atypefor inclusion.voidclear()Clears the results for reusing this instance.static PrefixSearchVisitorgetInstance(java.lang.String prefix, DatatypeVisitor datatypeVisitor, SearchContext context, java.lang.Class<?>... restrictions)Obtains a (pooled) instance.java.util.List<SearchResult>getResult()Returns the collected results.private voidprepareInstance(java.lang.String prefix, DatatypeVisitor datatypeVisitor, SearchContext context, java.lang.Class<?>... restrictions)Prepares a (reused) instance.static voidrelease(PrefixSearchVisitor visitor)Releases a given visitor.private booleanresultContains(java.lang.Object object)Returns whether theobjectis part of the result.voidvisitAnnotationVariable(AttributeVariable variable)Visits aAttributeVariable.voidvisitAttribute(Attribute attribute)Method for visiting an attribute.voidvisitAttributeAssignment(AttributeAssignment assignment)Visits an attribute assignment.voidvisitBlockExpression(BlockExpression block)Visits the block.voidvisitComment(Comment comment)Visits a comment.voidvisitComment(Comment comment)Method for visiting a comment.voidvisitCompound(Compound compound)Method for visiting a compound.voidvisitCompoundAccess(CompoundAccess access)Visits a compound access node.voidvisitCompoundAccessStatement(CompoundAccessStatement access)Visits a compound access statement (may occur in freeze blocks.voidvisitCompoundInitializer(CompoundInitializer init)Visits a compound initializer.voidvisitConstantValue(ConstantValue value)Visits a constant value.voidvisitConstraint(Constraint constraint)Method for visiting a constraint.voidvisitContainerInitializer(ContainerInitializer init)Visits a container initializer.voidvisitContainerOperationCall(ContainerOperationCall call)Visits a container operation call (e.g.voidvisitDecisionVariableDeclaration(DecisionVariableDeclaration decl)This method is used for visiting a decision variable declaration.voidvisitDeferInitExpression(DeferInitExpression expression)Visits a default init expression.voidvisitDerivedDatatype(DerivedDatatype datatype)Method for visiting a derived datatype.voidvisitEnum(Enum eenum)Method for visiting an enum.voidvisitEnumLiteral(EnumLiteral literal)Method for visiting an enum literal.voidvisitFreezeBlock(FreezeBlock freeze)Method for visiting a freeze block.voidvisitIfThen(IfThen ifThen)Visits an if-then-else expression.voidvisitLet(Let let)Visits a let expression.voidvisitMultiAndExpression(MultiAndExpression expression)Visits a multi-and expression.voidvisitOclFeatureCall(OCLFeatureCall call)Visits an OCL feature call.voidvisitOperationDefinition(OperationDefinition opdef)Method for visiting an operation definition.voidvisitOrderedEnum(OrderedEnum eenum)Method for visiting an ordered enum.voidvisitParenthesis(Parenthesis parenthesis)Visits a parenthesis.voidvisitPartialEvaluationBlock(PartialEvaluationBlock block)Method for visiting a partial evaluation block.voidvisitProject(Project project)Method for visiting a project.voidvisitProjectImport(ProjectImport pImport)This method is used for visiting a ProjectImport.voidvisitProjectInterface(ProjectInterface iface)Method for visiting a project interface.voidvisitReference(Reference reference)Method for visiting a reference.voidvisitSelf(Self self)Visits self.voidvisitSequence(Sequence sequence)Method for visiting a sequence.voidvisitSet(Set set)Method for visiting a set.voidvisitUnresolvedExpression(UnresolvedExpression expression)Visits an unresolved expression.voidvisitVariable(Variable variable)Visits a variable.
-
-
-
Field Detail
-
INSTANCES
private static final java.util.List<PrefixSearchVisitor> INSTANCES
-
result
private java.util.List<SearchResult> result
-
inResult
private java.util.HashSet<java.lang.Object> inResult
-
restrictions
private java.lang.Class<?>[] restrictions
-
prefix
private java.lang.String prefix
-
datatypeVisitor
private DatatypeVisitor datatypeVisitor
-
context
private SearchContext context
-
nesting
private java.util.Stack<Project> nesting
-
inInterface
private boolean inInterface
-
-
Method Detail
-
getInstance
public static final PrefixSearchVisitor getInstance(java.lang.String prefix, DatatypeVisitor datatypeVisitor, SearchContext context, java.lang.Class<?>... restrictions)
Obtains a (pooled) instance. The result must be released byrelease(PrefixSearchVisitor).- Parameters:
prefix- the name search prefixdatatypeVisitor- the visitor for obtaining full type namescontext- the search context (may be null)restrictions- type restrictions on search results (may be null)- Returns:
- the visitor
-
release
public static final void release(PrefixSearchVisitor visitor)
Releases a given visitor. Do not usevisitorafterwards.- Parameters:
visitor- the visitor to be released
-
prepareInstance
private void prepareInstance(java.lang.String prefix, DatatypeVisitor datatypeVisitor, SearchContext context, java.lang.Class<?>... restrictions)Prepares a (reused) instance.- Parameters:
prefix- the name search prefixdatatypeVisitor- the visitor for obtaining full type namescontext- the search context (may be null)restrictions- type restrictions on search results (may be null)
-
getResult
public java.util.List<SearchResult> getResult()
Returns the collected results.- Returns:
- the results
-
clear
public void clear()
Clears the results for reusing this instance.
-
checkName
private void checkName(java.lang.String name, java.lang.Object element)Checks a name for inclusion.- Parameters:
name- the name to be checkedelement- the element associated withname
-
checkName
private void checkName(ModelElement element)
Checks a modelelementfor inclusion. This method checks the simple and the qualified name ofelement.- Parameters:
element- the element to be checked
-
checkType
private java.lang.String checkType(IDatatype type, ModelElement element)
Checks atypefor inclusion.- Parameters:
type- the type to be checkedelement- the element which uses or definestype- Returns:
- the explicated name of the type using
datatypeVisitor
-
resultContains
private boolean resultContains(java.lang.Object object)
Returns whether theobjectis part of the result.- Parameters:
object- the object to check for- Returns:
trueifobjectis part of the result,falseelse
-
visitProjectImport
public void visitProjectImport(ProjectImport pImport)
Description copied from interface:IModelVisitorThis method is used for visiting a ProjectImport.- Specified by:
visitProjectImportin interfaceIModelVisitor- Parameters:
pImport- One ProjectImport which should be visited.
-
visitDecisionVariableDeclaration
public void visitDecisionVariableDeclaration(DecisionVariableDeclaration decl)
Description copied from interface:IModelVisitorThis method is used for visiting a decision variable declaration.- Specified by:
visitDecisionVariableDeclarationin interfaceIModelVisitor- Parameters:
decl- One declaration which should be visited.
-
visitAttribute
public void visitAttribute(Attribute attribute)
Description copied from interface:IModelVisitorMethod for visiting an attribute.- Specified by:
visitAttributein interfaceIModelVisitor- Parameters:
attribute- The attribute which should be visited.
-
visitConstraint
public void visitConstraint(Constraint constraint)
Description copied from interface:IModelVisitorMethod for visiting a constraint.- Specified by:
visitConstraintin interfaceIModelVisitor- Parameters:
constraint- The constraint which should be visited.
-
visitFreezeBlock
public void visitFreezeBlock(FreezeBlock freeze)
Description copied from interface:IModelVisitorMethod for visiting a freeze block.- Specified by:
visitFreezeBlockin interfaceIModelVisitor- Parameters:
freeze- The freeze block which should be visited.
-
visitOperationDefinition
public void visitOperationDefinition(OperationDefinition opdef)
Description copied from interface:IModelVisitorMethod for visiting an operation definition.- Specified by:
visitOperationDefinitionin interfaceIModelVisitor- Parameters:
opdef- The operation definition which should be visited.
-
visitPartialEvaluationBlock
public void visitPartialEvaluationBlock(PartialEvaluationBlock block)
Description copied from interface:IModelVisitorMethod for visiting a partial evaluation block.- Specified by:
visitPartialEvaluationBlockin interfaceIModelVisitor- Parameters:
block- The partial evaluation block which should be visited.
-
visitProject
public void visitProject(Project project)
Description copied from interface:IModelVisitorMethod for visiting a project.- Specified by:
visitProjectin interfaceIModelVisitor- Overrides:
visitProjectin classAbstractVisitor- Parameters:
project- The project which should be visited.
-
visitEnum
public void visitEnum(Enum eenum)
Description copied from interface:ICustomDatatypeVisitorMethod for visiting an enum.- Specified by:
visitEnumin interfaceICustomDatatypeVisitor- Overrides:
visitEnumin classAbstractVisitor- Parameters:
eenum- The enum which should be visited.
-
visitCompound
public void visitCompound(Compound compound)
Description copied from interface:ICustomDatatypeVisitorMethod for visiting a compound.- Specified by:
visitCompoundin interfaceICustomDatatypeVisitor- Overrides:
visitCompoundin classAbstractVisitor- Parameters:
compound- The compound which should be visited.
-
visitProjectInterface
public void visitProjectInterface(ProjectInterface iface)
Description copied from interface:IModelVisitorMethod for visiting a project interface.- Specified by:
visitProjectInterfacein interfaceIModelVisitor- Parameters:
iface- The interface which should be visited.
-
visitOrderedEnum
public void visitOrderedEnum(OrderedEnum eenum)
Description copied from interface:ICustomDatatypeVisitorMethod for visiting an ordered enum.- Specified by:
visitOrderedEnumin interfaceICustomDatatypeVisitor- Overrides:
visitOrderedEnumin classAbstractVisitor- Parameters:
eenum- The enum which should be visited.
-
visitDerivedDatatype
public void visitDerivedDatatype(DerivedDatatype datatype)
Description copied from interface:ICustomDatatypeVisitorMethod for visiting a derived datatype.- Specified by:
visitDerivedDatatypein interfaceICustomDatatypeVisitor- Parameters:
datatype- The datatype which should be visited.
-
visitEnumLiteral
public void visitEnumLiteral(EnumLiteral literal)
Description copied from interface:ICustomDatatypeVisitorMethod for visiting an enum literal.- Specified by:
visitEnumLiteralin interfaceICustomDatatypeVisitor- Parameters:
literal- The literal which should be visited.
-
visitReference
public void visitReference(Reference reference)
Description copied from interface:ICustomDatatypeVisitorMethod for visiting a reference.- Specified by:
visitReferencein interfaceICustomDatatypeVisitor- Parameters:
reference- The reference which should be visited.
-
visitSequence
public void visitSequence(Sequence sequence)
Description copied from interface:ICustomDatatypeVisitorMethod for visiting a sequence.- Specified by:
visitSequencein interfaceICustomDatatypeVisitor- Parameters:
sequence- The sequence which should be visited.
-
visitSet
public void visitSet(Set set)
Description copied from interface:ICustomDatatypeVisitorMethod for visiting a set.- Specified by:
visitSetin interfaceICustomDatatypeVisitor- Parameters:
set- The set which should be visited.
-
visitConstantValue
public void visitConstantValue(ConstantValue value)
Description copied from interface:IConstraintTreeVisitorVisits a constant value.- Specified by:
visitConstantValuein interfaceIConstraintTreeVisitor- Parameters:
value- the value which should be visited
-
visitVariable
public void visitVariable(Variable variable)
Description copied from interface:IConstraintTreeVisitorVisits a variable.- Specified by:
visitVariablein interfaceIConstraintTreeVisitor- Parameters:
variable- the variable which should be visited
-
visitAnnotationVariable
public void visitAnnotationVariable(AttributeVariable variable)
Description copied from interface:IConstraintTreeVisitorVisits aAttributeVariable.- Specified by:
visitAnnotationVariablein interfaceIConstraintTreeVisitor- Parameters:
variable- the attribute variable which should be visited
-
visitParenthesis
public void visitParenthesis(Parenthesis parenthesis)
Description copied from interface:IConstraintTreeVisitorVisits a parenthesis.- Specified by:
visitParenthesisin interfaceIConstraintTreeVisitor- Parameters:
parenthesis- the parenthesis which should be visited
-
visitContainerInitializer
public void visitContainerInitializer(ContainerInitializer init)
Description copied from interface:IConstraintTreeVisitorVisits a container initializer.- Specified by:
visitContainerInitializerin interfaceIConstraintTreeVisitor- Parameters:
init- the container initializer node
-
visitCompoundInitializer
public void visitCompoundInitializer(CompoundInitializer init)
Description copied from interface:IConstraintTreeVisitorVisits a compound initializer.- Specified by:
visitCompoundInitializerin interfaceIConstraintTreeVisitor- Parameters:
init- the compound initializer node
-
visitComment
public void visitComment(Comment comment)
Description copied from interface:IConstraintTreeVisitorVisits a comment.- Specified by:
visitCommentin interfaceIConstraintTreeVisitor- Parameters:
comment- the comment node which should be visited
-
visitOclFeatureCall
public void visitOclFeatureCall(OCLFeatureCall call)
Description copied from interface:IConstraintTreeVisitorVisits an OCL feature call.- Specified by:
visitOclFeatureCallin interfaceIConstraintTreeVisitor- Parameters:
call- the feature call which should be visited
-
visitDeferInitExpression
public void visitDeferInitExpression(DeferInitExpression expression)
Description copied from interface:IConstraintTreeVisitorVisits a default init expression.- Specified by:
visitDeferInitExpressionin interfaceIConstraintTreeVisitor- Parameters:
expression- the expression
-
visitMultiAndExpression
public void visitMultiAndExpression(MultiAndExpression expression)
Description copied from interface:IConstraintTreeVisitorVisits a multi-and expression.- Specified by:
visitMultiAndExpressionin interfaceIConstraintTreeVisitor- Parameters:
expression- the expression to be visited
-
visitLet
public void visitLet(Let let)
Description copied from interface:IConstraintTreeVisitorVisits a let expression.- Specified by:
visitLetin interfaceIConstraintTreeVisitor- Parameters:
let- the let expression which should be visited
-
visitIfThen
public void visitIfThen(IfThen ifThen)
Description copied from interface:IConstraintTreeVisitorVisits an if-then-else expression.- Specified by:
visitIfThenin interfaceIConstraintTreeVisitor- Parameters:
ifThen- the if-then-else expression which should be visited
-
visitContainerOperationCall
public void visitContainerOperationCall(ContainerOperationCall call)
Description copied from interface:IConstraintTreeVisitorVisits a container operation call (e.g. quantors, iterators).- Specified by:
visitContainerOperationCallin interfaceIConstraintTreeVisitor- Parameters:
call- the container operation call
-
visitCompoundAccess
public void visitCompoundAccess(CompoundAccess access)
Description copied from interface:IConstraintTreeVisitorVisits a compound access node.- Specified by:
visitCompoundAccessin interfaceIConstraintTreeVisitor- Parameters:
access- the compound access node
-
visitUnresolvedExpression
public void visitUnresolvedExpression(UnresolvedExpression expression)
Description copied from interface:IConstraintTreeVisitorVisits an unresolved expression. Please note that an unresolved expression may represent a leaf as well as an inner tree node. Typically, visitors shall continue visiting transparently atUnresolvedExpression.getActualExpression().- Specified by:
visitUnresolvedExpressionin interfaceIConstraintTreeVisitor- Parameters:
expression- the expression
-
visitComment
public void visitComment(Comment comment)
Description copied from interface:IModelVisitorMethod for visiting a comment.- Specified by:
visitCommentin interfaceIModelVisitor- Parameters:
comment- the comment to visit
-
visitAttributeAssignment
public void visitAttributeAssignment(AttributeAssignment assignment)
Description copied from interface:IModelVisitorVisits an attribute assignment.- Specified by:
visitAttributeAssignmentin interfaceIModelVisitor- Parameters:
assignment- the assignment to visit
-
visitCompoundAccessStatement
public void visitCompoundAccessStatement(CompoundAccessStatement access)
Description copied from interface:IModelVisitorVisits a compound access statement (may occur in freeze blocks.- Specified by:
visitCompoundAccessStatementin interfaceIModelVisitor- Parameters:
access- the access statement
-
visitSelf
public void visitSelf(Self self)
Description copied from interface:IConstraintTreeVisitorVisits self.- Specified by:
visitSelfin interfaceIConstraintTreeVisitor- Parameters:
self- the self object to visit
-
visitBlockExpression
public void visitBlockExpression(BlockExpression block)
Description copied from interface:IConstraintTreeVisitorVisits the block.- Specified by:
visitBlockExpressionin interfaceIConstraintTreeVisitor- Parameters:
block- the block to be visited
-
-