[jboss-svn-commits] JBL Code SVN: r20339 - labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/descr.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 5 10:06:37 EDT 2008
Author: porcelli
Date: 2008-06-05 10:06:37 -0400 (Thu, 05 Jun 2008)
New Revision: 20339
Modified:
labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
Log:
JavavaDoc ;)
Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java 2008-06-05 14:04:29 UTC (rev 20338)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java 2008-06-05 14:06:37 UTC (rev 20339)
@@ -15,6 +15,14 @@
*/
public class DescrFactory {
+ /**
+ * Factory method that creates a PackageDescr based on a identifier list.
+ *
+ * @param idList
+ * identifier list that composes package, may be null
+ * @return PackageDescr filled
+ * @see PackageDescr
+ */
public PackageDescr createPackage(List<DroolsTree> idList) {
PackageDescr packageDescr = new PackageDescr(
createDotedIdFromList(idList));
@@ -32,6 +40,19 @@
return packageDescr;
}
+ /**
+ * Factory method that creates an AttributeDescr based on name and value.
+ *
+ * If value is single or double quoted, the quotes are removed. And if value
+ * is null AttributeDescr is setted to true (boolean value).
+ *
+ * @param attributeName
+ * attribute name
+ * @param value
+ * attribute value, may be null (default value is true)
+ * @return AttributeDescr filled
+ * @see AttributeDescr
+ */
public AttributeDescr createAttribute(DroolsTree attributeName,
DroolsTree value) {
AttributeDescr attributeDescr = new AttributeDescr(attributeName
@@ -42,12 +63,7 @@
attributeDescr.setStartCharacter(getStartOffsetLocation(attributeName));
if (null != value) {
- if (value.getText().startsWith("\"") || value.getText().startsWith("'")) {
- attributeDescr.setValue(value.getText().substring(1,
- value.getText().length() - 1));
- } else {
- attributeDescr.setValue(value.getText());
- }
+ attributeDescr.setValue(getCleanId(value));
attributeDescr.setEndLocation(getLineLocation(value),
getEndOffsetLocation(value));
attributeDescr.setEndCharacter(getEndOffsetLocation(value));
@@ -61,6 +77,18 @@
return attributeDescr;
}
+ /**
+ * Factory method that creates a FunctionImportDescr.
+ *
+ * @param importStart
+ * import statement, used to get offset location
+ * @param idList
+ * identifier list that composes imported function
+ * @param dotStar
+ * token that represents a ".*", may be null
+ * @return FunctionImportDescr filled
+ * @see FunctionImportDescr
+ */
public FunctionImportDescr createFunctionImport(DroolsTree importStart,
List<DroolsTree> idList, DroolsTree dotStar) {
@@ -68,6 +96,18 @@
new FunctionImportDescr(), importStart, idList, dotStar);
}
+ /**
+ * Factory method that creates an ImportDescr.
+ *
+ * @param importStart
+ * import statement, used to get offset location
+ * @param idList
+ * identifier list that composes import
+ * @param dotStar
+ * token that represents a ".*", may be null
+ * @return ImportDescr filled
+ * @see ImportDescr
+ */
public ImportDescr createImport(DroolsTree importStart,
List<DroolsTree> idList, DroolsTree dotStar) {
@@ -75,6 +115,21 @@
dotStar);
}
+ /**
+ * Generic method that creates import
+ *
+ * @param importDescr
+ * import descriptor (FunctionImportDescr or ImportDescr)
+ * @param importStart
+ * import statement, used to get offset location
+ * @param idList
+ * identifier list that composes imported name
+ * @param dotStar
+ * token that represents a ".*", may be null
+ * @return ImportDescr filled
+ * @see FunctionImportDescr
+ * @see ImportDescr
+ */
private ImportDescr createGenericImport(ImportDescr importDescr,
DroolsTree importStart, List<DroolsTree> idList, DroolsTree dotStar) {
ImportDescr genericImport = importDescr;
@@ -103,6 +158,18 @@
return genericImport;
}
+ /**
+ * Factory method that creates a GlobalDescr.
+ *
+ * @param start
+ * global statement, used to get offset location
+ * @param dataType
+ * dataType descriptor (generated by createDataType method)
+ * @param globalId
+ * global identifier
+ * @return GlobalDescr filled
+ * @see GlobalDescr
+ */
public GlobalDescr createGlobal(DroolsTree start, BaseDescr dataType,
DroolsTree globalId) {
GlobalDescr globalDescr = new GlobalDescr();
@@ -119,6 +186,23 @@
return globalDescr;
}
+ /**
+ * Factory method that creates a FunctionDescr.
+ *
+ * @param start
+ * function statement, used to get offset location
+ * @param dataType
+ * dataType descriptor (generated by createDataType method), may
+ * be null
+ * @param functionId
+ * function identifier
+ * @param params
+ * a list, that contains pair of parameter name and data type
+ * @param content
+ * chunk data
+ * @return FunctionDescr filled
+ * @see FunctionDescr
+ */
public FunctionDescr createFunction(DroolsTree start, BaseDescr dataType,
DroolsTree functionId, List<Map<BaseDescr, BaseDescr>> params,
DroolsTree content) {
@@ -147,6 +231,20 @@
return functionDescr;
}
+ /**
+ * Factory method that creates a FactTemplateDescr.
+ *
+ * @param start
+ * template statement, used to get offset location
+ * @param id
+ * template identifier
+ * @param slotList
+ * a slot list
+ * @param end
+ * end statement, used to get offset location
+ * @return FactTemplateDescr filled
+ * @see FactTemplateDescr
+ */
public FactTemplateDescr createFactTemplate(DroolsTree start,
DroolsTree id, List<FieldTemplateDescr> slotList, DroolsTree end) {
FactTemplateDescr factTemplateDescr = new FactTemplateDescr(
@@ -164,6 +262,16 @@
return factTemplateDescr;
}
+ /**
+ * Factory method that creates a FieldTemplateDescr.
+ *
+ * @param dataType
+ * dataType descriptor (generated by createDataType method)
+ * @param id
+ * field template identifier
+ * @return FieldTemplateDescr filled
+ * @see FieldTemplateDescr
+ */
public FieldTemplateDescr createFieldTemplate(BaseDescr dataType,
DroolsTree id) {
FieldTemplateDescr fieldTemplateDescr = new FieldTemplateDescr();
@@ -179,6 +287,24 @@
return fieldTemplateDescr;
}
+ /**
+ * Factory method that creates a QueryDescr.
+ *
+ * @param start
+ * query statement, used to get offset location
+ * @param id
+ * query identifier
+ * @param params
+ * a list, that contains pair of parameter name and data type,
+ * may be null. Parameter without data type Object is assumed.
+ * @param andDescr
+ * AndDescr returned by lhs block
+ * @param end
+ * end statement, used to get offset location
+ * @return QueryDescr filled
+ * @see QueryDescr
+ * @see AndDescr
+ */
public QueryDescr createQuery(DroolsTree start, DroolsTree id,
List<Map<BaseDescr, BaseDescr>> params, AndDescr andDescr,
DroolsTree end) {
@@ -199,8 +325,10 @@
}
}
}
- queryDescr.setParameters(paramList.toArray(new String[paramList.size()]));
- queryDescr.setParameterTypes(dataTypeList.toArray(new String[dataTypeList.size()]));
+ queryDescr.setParameters(paramList.toArray(new String[paramList
+ .size()]));
+ queryDescr.setParameterTypes(dataTypeList
+ .toArray(new String[dataTypeList.size()]));
}
queryDescr.setLhs(andDescr);
@@ -213,6 +341,22 @@
return queryDescr;
}
+ /**
+ * Factory method that creates a RuleDescr.
+ *
+ * @param start
+ * rule statement, used to get offset location
+ * @param id
+ * rule identifier
+ * @param attributeList
+ * attribute list
+ * @param andDescr
+ * AndDescr returned by lhs block, may be null
+ * @param content
+ * chunk data
+ * @return RuleDescr filled
+ * @see RuleDescr
+ */
public RuleDescr createRule(DroolsTree start, DroolsTree id,
List<AttributeDescr> attributeList, AndDescr andDescr,
DroolsTree content) {
@@ -245,7 +389,8 @@
idx++;
buf = buf.substring(idx, buf.length() - 3);
ruleDescr.setConsequence(buf);
- ruleDescr.setConsequenceLocation(getLineLocation(content), getColumnLocation(content));
+ ruleDescr.setConsequenceLocation(getLineLocation(content),
+ getColumnLocation(content));
ruleDescr.setLocation(getLineLocation(start), getColumnLocation(start));
ruleDescr.setEndCharacter(getEndOffsetLocation(content));
@@ -253,8 +398,34 @@
return ruleDescr;
}
- // LHS
- public BaseDescr createOr(DroolsTree start, List<BaseDescr> lhsList) {
+ /**
+ * Factory method that creates an Argument.
+ *
+ * @param id
+ * argument identifier
+ * @param rightList
+ * right square list
+ * @return BaseDescr (argument info) filled.
+ */
+ public BaseDescr createArgument(DroolsTree id, List<DroolsTree> rightList) {
+ List<DroolsTree> idList = new ArrayList<DroolsTree>(1);
+ idList.add(id);
+ return createGenericBaseDescr(idList, rightList);
+ }
+
+ // LHS Start
+ /**
+ * Factory method that creates an OrDescr. This method handles prefixed and
+ * infixed formats.
+ *
+ * @param start
+ * "or" statement or symbol, used to get offset location
+ * @param lhsList
+ * binded descriptor list
+ * @return OrDescr filled.
+ * @see OrDescr
+ */
+ public OrDescr createOr(DroolsTree start, List<BaseDescr> lhsList) {
OrDescr or = new OrDescr();
or.setLocation(getColumnLocation(start), getColumnLocation(start));
or.setStartCharacter(getStartOffsetLocation(start));
@@ -267,7 +438,18 @@
return or;
}
- public BaseDescr createAnd(DroolsTree start, List<BaseDescr> lhsList) {
+ /**
+ * Factory method that creates an AndDescr. This method handles prefixed and
+ * infixed formats.
+ *
+ * @param start
+ * "and" statement or symbol, used to get offset location
+ * @param lhsList
+ * binded descriptor list
+ * @return AndDescr filled.
+ * @see AndDescr
+ */
+ public AndDescr createAnd(DroolsTree start, List<BaseDescr> lhsList) {
AndDescr and = new AndDescr();
and.setLocation(getColumnLocation(start), getColumnLocation(start));
and.setStartCharacter(getStartOffsetLocation(start));
@@ -280,7 +462,17 @@
return and;
}
- public BaseDescr createExists(DroolsTree start, BaseDescr baseDescr) {
+ /**
+ * Factory method that creates an ExistsDescr.
+ *
+ * @param start
+ * exists statement, used to get offset location
+ * @param baseDescr
+ * binded descriptor
+ * @return ExistsDescr filled.
+ * @see ExistsDescr
+ */
+ public ExistsDescr createExists(DroolsTree start, BaseDescr baseDescr) {
ExistsDescr exists = new ExistsDescr();
exists.setLocation(getColumnLocation(start), getColumnLocation(start));
exists.setStartCharacter(getStartOffsetLocation(start));
@@ -290,7 +482,17 @@
return exists;
}
- public BaseDescr createNot(DroolsTree start, BaseDescr baseDescr) {
+ /**
+ * Factory method that creates a NotDescr.
+ *
+ * @param start
+ * not statement, used to get offset location
+ * @param baseDescr
+ * binded descriptor
+ * @return NotDescr filled.
+ * @see NotDescr
+ */
+ public NotDescr createNot(DroolsTree start, BaseDescr baseDescr) {
NotDescr not = new NotDescr();
not.setLocation(getColumnLocation(start), getColumnLocation(start));
not.setStartCharacter(getStartOffsetLocation(start));
@@ -300,7 +502,17 @@
return not;
}
- public BaseDescr createEval(DroolsTree start, DroolsTree content) {
+ /**
+ * Factory method that creates an EvalDescr.
+ *
+ * @param start
+ * eval statement, used to get offset location
+ * @param content
+ * chunk data
+ * @return EvalDescr filled.
+ * @see EvalDescr
+ */
+ public EvalDescr createEval(DroolsTree start, DroolsTree content) {
EvalDescr eval = new EvalDescr();
eval.setLocation(getColumnLocation(start), getColumnLocation(start));
eval.setStartCharacter(getStartOffsetLocation(start));
@@ -310,7 +522,17 @@
return eval;
}
- public BaseDescr createForAll(DroolsTree start, List<BaseDescr> lhsList) {
+ /**
+ * Factory method that creates a ForallDescr.
+ *
+ * @param start
+ * forall statement, used to get offset location
+ * @param lhsList
+ * binded descriptor list
+ * @return ForallDescr filled.
+ * @see ForallDescr
+ */
+ public ForallDescr createForAll(DroolsTree start, List<BaseDescr> lhsList) {
ForallDescr forAll = new ForallDescr();
forAll.setLocation(getColumnLocation(start), getColumnLocation(start));
forAll.setStartCharacter(getStartOffsetLocation(start));
@@ -324,11 +546,40 @@
return forAll;
}
- public AccumulateDescr createAccumulate(){
+ /**
+ * Factory method that creates a PatternDescr.
+ *
+ * @param from
+ * lhs pattern
+ * @param fromSource
+ * generic pattern source
+ * @return PatternDescr filled.
+ * @see PatternDescr
+ */
+ public PatternDescr setupFrom(BaseDescr from, PatternSourceDescr fromSource) {
+ PatternDescr tempFrom = (PatternDescr) from;
+ tempFrom.setSource(fromSource);
+ return tempFrom;
+ }
+
+ /**
+ * Factory method that creates an empty AccumulateDescr.
+ */
+ public AccumulateDescr createAccumulate() {
return new AccumulateDescr();
}
- public PatternSourceDescr createAccumulate(DroolsTree start,
+ /**
+ * Factory method that creates an AccumulateDescr.
+ *
+ * @param start
+ * accumulate statement, used to get offset location
+ * @param baseDescr
+ * binded descriptor
+ * @return AccumulateDescr filled.
+ * @see AccumulateDescr
+ */
+ public AccumulateDescr createAccumulate(DroolsTree start,
BaseDescr baseDescr) {
AccumulateDescr accumulate = new AccumulateDescr();
accumulate.setLocation(getColumnLocation(start),
@@ -339,8 +590,39 @@
return accumulate;
}
- public PatternSourceDescr createEntryPoint(DroolsTree start,
- DroolsTree entryId) {
+ /**
+ * Factory method that creates a CollectDescr.
+ *
+ * @param start
+ * collect statement, used to get offset location
+ * @param baseDescr
+ * binded descriptor
+ * @return CollectDescr filled.
+ * @see CollectDescr
+ */
+ public CollectDescr createCollect(DroolsTree start, BaseDescr baseDescr) {
+ CollectDescr collect = new CollectDescr();
+ collect.setLocation(getColumnLocation(start), getColumnLocation(start));
+ collect.setStartCharacter(getStartOffsetLocation(start));
+ collect
+ .setEndLocation(baseDescr.getEndLine(), baseDescr
+ .getEndColumn());
+ collect.setEndCharacter(baseDescr.getEndCharacter());
+ collect.setInputPattern((PatternDescr) baseDescr);
+ return collect;
+ }
+
+ /**
+ * Factory method that creates an EntryPointDescr.
+ *
+ * @param start
+ * entry point statement, used to get offset location
+ * @param entryId
+ * entry point identifier
+ * @return EntryPointDescr filled.
+ * @see EntryPointDescr
+ */
+ public EntryPointDescr createEntryPoint(DroolsTree start, DroolsTree entryId) {
EntryPointDescr entryPoint = new EntryPointDescr();
entryPoint.setLocation(getColumnLocation(start),
getColumnLocation(start));
@@ -352,19 +634,80 @@
return entryPoint;
}
- public PatternSourceDescr createCollect(DroolsTree start,
- BaseDescr baseDescr) {
- CollectDescr collect = new CollectDescr();
- collect.setLocation(getColumnLocation(start), getColumnLocation(start));
- collect.setStartCharacter(getStartOffsetLocation(start));
- collect
- .setEndLocation(baseDescr.getEndLine(), baseDescr
- .getEndColumn());
- collect.setEndCharacter(baseDescr.getEndCharacter());
- collect.setInputPattern((PatternDescr) baseDescr);
- return collect;
+ /**
+ * Method that setups the AccumulateDescr, setting all the chunk data
+ *
+ * @param accumulateParam
+ * accumulate descriptor
+ * @param start
+ * start (init) statement, used to get offset location
+ * @param initChunk
+ * init chunk data
+ * @param actionChunk
+ * action chunk data
+ * @param resultChunk
+ * result chunk data
+ * @param reverseChunk
+ * reverse chunk data, may be null
+ * @return AccumulateDescr filled
+ * @see AccumulateDescr
+ */
+ public AccumulateDescr setupAccumulateInit(
+ PatternSourceDescr accumulateParam, DroolsTree start,
+ DroolsTree initChunk, DroolsTree actionChunk,
+ DroolsTree resultChunk, DroolsTree reverseChunk) {
+ AccumulateDescr accumulate = (AccumulateDescr) accumulateParam;
+ accumulate.setEndCharacter(getEndOffsetLocation(resultChunk));
+ accumulate.setInitCode(initChunk.getText().substring(1,
+ initChunk.getText().length() - 1));
+ accumulate.setActionCode(actionChunk.getText().substring(1,
+ actionChunk.getText().length() - 1));
+ accumulate.setResultCode(resultChunk.getText().substring(1,
+ resultChunk.getText().length() - 1));
+ if (reverseChunk != null) {
+ accumulate.setReverseCode(reverseChunk.getText().substring(1,
+ reverseChunk.getText().length() - 1));
+ }
+
+ return accumulate;
}
+ /**
+ * Method that setups the AccumulateDescr, setting identifier and expression
+ * chunk data
+ *
+ * @param accumulateParam
+ * accumulate descriptor
+ * @param id
+ * accumulate identifier
+ * @param expressionChunk
+ * chunk data
+ * @return AccumulateDescr filled
+ * @see AccumulateDescr
+ */
+ public AccumulateDescr setupAccumulateId(
+ PatternSourceDescr accumulateParam, DroolsTree id,
+ DroolsTree expressionChunk) {
+ AccumulateDescr accumulate = (AccumulateDescr) accumulateParam;
+ accumulate.setEndCharacter(getEndOffsetLocation(expressionChunk));
+
+ accumulate.setExternalFunction(true);
+ accumulate.setFunctionIdentifier(id.getText());
+ accumulate.setExpression(expressionChunk.getText().substring(1,
+ expressionChunk.getText().length() - 1));
+ return accumulate;
+ }
+
+ /**
+ * Factory method that creates an AccessorDescr.
+ *
+ * @param id
+ * accessor identifier
+ * @param chunk
+ * chunk data, may be null
+ * @return AccessorDescr filled
+ * @see AccessorDescr
+ */
public AccessorDescr createAccessor(DroolsTree id, DroolsTree chunk) {
AccessorDescr accessor = new AccessorDescr(id.getText());
accessor.setLocation(getLineLocation(id), getColumnLocation(id));
@@ -383,6 +726,40 @@
return accessor;
}
+ /**
+ * Setup the char offset for AccessorDescr.
+ *
+ * @param accessorDescr
+ * descriptor
+ * @return AccessorDescr with char offset filled
+ */
+ public AccessorDescr setupAccessorOffset(AccessorDescr accessorDescr) {
+ if (null != accessorDescr.getInvokers()
+ && accessorDescr.getInvokers().size() > 0) {
+ BaseDescr desc = (BaseDescr) accessorDescr.getInvokers().get(
+ accessorDescr.getInvokers().size() - 1);
+ accessorDescr.setEndCharacter(desc.getEndCharacter());
+ }
+ return accessorDescr;
+ }
+
+ /**
+ * Factory method that based on parenChunk parameter defines if it creates a
+ * FieldAccessDescr or a MethodAccessDescr.
+ *
+ * @param start
+ * start (dot) token, used to get offset location
+ * @param id
+ * identifier
+ * @param squareChunk
+ * square chunk data, may be null
+ * @param parenChunk
+ * paren chunk data, may be null
+ * @return DeclarativeInvokerDescr filled.
+ * @see DeclarativeInvokerDescr
+ * @see FieldAccessDescr
+ * @see MethodAccessDescr
+ */
public DeclarativeInvokerDescr createExpressionChain(DroolsTree start,
DroolsTree id, DroolsTree squareChunk, DroolsTree parenChunk) {
DeclarativeInvokerDescr declarativeInvoker = null;
@@ -408,16 +785,13 @@
return declarativeInvoker;
}
- public AccessorDescr setupAccessorOffset(AccessorDescr accessorDescr) {
- if (null != accessorDescr.getInvokers()
- && accessorDescr.getInvokers().size() > 0) {
- BaseDescr desc = (BaseDescr) accessorDescr.getInvokers().get(
- accessorDescr.getInvokers().size() - 1);
- accessorDescr.setEndCharacter(desc.getEndCharacter());
- }
- return accessorDescr;
- }
-
+ /**
+ * Factory method that creates a FromDescr.
+ *
+ * @param accessor
+ * binded accessor descriptor
+ * @return FromDescr filled
+ */
public FromDescr createFromSource(AccessorDescr accessor) {
FromDescr from = new FromDescr();
from.setDataSource(accessor);
@@ -425,45 +799,18 @@
return from;
}
- public BaseDescr setupFrom(BaseDescr from, PatternSourceDescr fromSource) {
- PatternDescr tempFrom = (PatternDescr) from;
- tempFrom.setSource(fromSource);
- return tempFrom;
- }
-
- public AccumulateDescr setupAccumulateInit(
- PatternSourceDescr accumulateParam, DroolsTree start,
- DroolsTree initChunk, DroolsTree actionChunk,
- DroolsTree resultChunk, DroolsTree reverseChunk) {
- AccumulateDescr accumulate = (AccumulateDescr) accumulateParam;
- accumulate.setEndCharacter(getEndOffsetLocation(resultChunk));
- accumulate.setInitCode(initChunk.getText().substring(1,
- initChunk.getText().length() - 1));
- accumulate.setActionCode(actionChunk.getText().substring(1,
- actionChunk.getText().length() - 1));
- accumulate.setResultCode(resultChunk.getText().substring(1,
- resultChunk.getText().length() - 1));
- if (reverseChunk != null) {
- accumulate.setReverseCode(reverseChunk.getText().substring(1,
- reverseChunk.getText().length() - 1));
- }
-
- return accumulate;
- }
-
- public AccumulateDescr setupAccumulateId(
- PatternSourceDescr accumulateParam, DroolsTree id,
- DroolsTree expressionChunk) {
- AccumulateDescr accumulate = (AccumulateDescr) accumulateParam;
- accumulate.setEndCharacter(getEndOffsetLocation(expressionChunk));
-
- accumulate.setExternalFunction(true);
- accumulate.setFunctionIdentifier(id.getText());
- accumulate.setExpression(expressionChunk.getText().substring(1,
- expressionChunk.getText().length() - 1));
- return accumulate;
- }
-
+ /**
+ * Factory method that creates a PatternDescr.
+ *
+ * FieldBindingDescr holds the original field descriptor, first it is
+ * necessary add the field and later the bindind field info.
+ *
+ * @param dataType
+ * pattern data type
+ * @param exprList
+ * binded expression list, may be null or empty
+ * @return
+ */
public PatternDescr createPattern(BaseDescr dataType,
List<BaseDescr> exprList) {
PatternDescr pattern = new PatternDescr();
@@ -505,6 +852,19 @@
return pattern;
}
+ /**
+ * Method that setups a pattern binding.
+ *
+ * The fact may be an or descriptor and the or elements should be binded.
+ *
+ * @param label
+ * bind identifier
+ * @param fact
+ * fact descriptor
+ * @return fact binded.
+ * @see PatternDescr
+ * @see OrDescr
+ */
public BaseDescr setupPatternBiding(DroolsTree label, BaseDescr fact) {
fact.setStartCharacter(getStartOffsetLocation(label));
if (fact instanceof OrDescr) {
@@ -518,7 +878,19 @@
return fact;
}
- public BaseDescr createFactOr(DroolsTree start, BaseDescr left,
+ /**
+ * Factory method that creates an OrDescr.
+ *
+ * @param start
+ * "or" statement or symbol, used to get offset location
+ * @param left
+ * left descriptor
+ * @param right
+ * right descriptor
+ * @return OrDescr filled.
+ * @see OrDescr
+ */
+ public OrDescr createFactOr(DroolsTree start, BaseDescr left,
BaseDescr right) {
OrDescr or = new OrDescr();
or.addDescr(left);
@@ -526,128 +898,180 @@
return or;
}
- public BaseDescr createStringLiteralRestriction(DroolsTree s) {
- LiteralRestrictionDescr stringLit = new LiteralRestrictionDescr();
- stringLit.setType(LiteralRestrictionDescr.TYPE_STRING);
- stringLit.setText(s.getText().substring(1, s.getText().length() - 1));
- return stringLit;
+ /**
+ * Setup FieldConstraintDescr
+ *
+ * @param field
+ * field descriptor
+ * @param descr
+ * binded descriptor
+ * @return FieldConstraintDescr filled
+ * @see FieldConstraintDescr
+ */
+ public FieldConstraintDescr setupFieldConstraint(
+ FieldConstraintDescr field, BaseDescr descr) {
+ if (null != descr && descr instanceof RestrictionDescr) {
+ field.getRestriction().addOrMerge((RestrictionDescr) descr);
+ }
+ return field;
}
- public BaseDescr createIntLiteralRestriction(DroolsTree i) {
- LiteralRestrictionDescr intLit = new LiteralRestrictionDescr();
- intLit.setType(LiteralRestrictionDescr.TYPE_NUMBER);
- intLit.setText(i.getText());
- return intLit;
+ /**
+ * Factory method that creates a FieldBindingDescr.
+ *
+ * @param label
+ * bind identifier
+ * @param descr
+ * binded field constraint descriptor
+ * @return FieldBindingDescr filled
+ * @see FieldBindingDescr
+ */
+ public FieldBindingDescr createFieldBinding(DroolsTree label,
+ BaseDescr descr) {
+ FieldBindingDescr fieldBiding = new FieldBindingDescr();
+ fieldBiding.setLocation(getLineLocation(label),
+ getColumnLocation(label));
+ fieldBiding.setStartCharacter(getStartOffsetLocation(label));
+ FieldConstraintDescr fieldConstraint = (FieldConstraintDescr) descr;
+ fieldBiding.setIdentifier(label.getText());
+ fieldBiding.setFieldName(fieldConstraint.getFieldName());
+ fieldBiding.setFieldConstraint(fieldConstraint);
+ return fieldBiding;
}
- public BaseDescr createFloatLiteralRestriction(DroolsTree f) {
- LiteralRestrictionDescr floatLit = new LiteralRestrictionDescr();
- floatLit.setType(LiteralRestrictionDescr.TYPE_NUMBER);
- floatLit.setText(f.getText());
- return floatLit;
- }
-
- public BaseDescr createBoolLiteralRestriction(DroolsTree b) {
- LiteralRestrictionDescr boolLit = new LiteralRestrictionDescr();
- boolLit.setType(LiteralRestrictionDescr.TYPE_BOOLEAN);
- boolLit.setText(b.getText());
- return boolLit;
- }
-
- public BaseDescr createNullLiteralRestriction(DroolsTree n) {
- LiteralRestrictionDescr nullLit = new LiteralRestrictionDescr();
- nullLit.setType(LiteralRestrictionDescr.TYPE_NULL);
- nullLit.setText(null);
- return nullLit;
- }
-
- public BaseDescr createReturnValue(DroolsTree pc) {
- ReturnValueRestrictionDescr returnValue = new ReturnValueRestrictionDescr();
- returnValue.setContent(pc.getText().substring(1,
+ /**
+ * Factory method that creates a PredicateDescr.
+ *
+ * @param pc
+ * chunk data
+ * @return PredicateDescr filled
+ * @see PredicateDescr
+ */
+ public PredicateDescr createPredicate(DroolsTree pc) {
+ PredicateDescr predicate = new PredicateDescr();
+ predicate.setContent(pc.getText().subSequence(1,
pc.getText().length() - 1));
- returnValue.setLocation(getLineLocation(pc), getColumnLocation(pc));
- returnValue.setStartCharacter(getStartOffsetLocation(pc));
- returnValue.setEndCharacter(getEndOffsetLocation(pc));
- return returnValue;
+ predicate.setEndCharacter(getEndOffsetLocation(pc));
+ return predicate;
}
- public BaseDescr createAccessorElement(DroolsTree id,
- List<DroolsTree> squareChunk) {
- BaseDescr element = new BaseDescr();
- element.setLocation(getLineLocation(id), getColumnLocation(id));
- element.setStartCharacter(getStartOffsetLocation(id));
- element.setEndCharacter(getEndOffsetLocation(id));
- StringBuilder sb = new StringBuilder();
- sb.append(id.getText());
- if (null != squareChunk && squareChunk.size() > 0) {
- for (DroolsTree chunk : squareChunk) {
- sb.append(chunk.getText());
+ /**
+ * Method that setups descriptor with operator and negated information.
+ *
+ * This method just setups EvaluatorBasedRestrictionDescr descriptors.
+ *
+ * @param operator
+ * operator
+ * @param not
+ * negated operator
+ * @param descr
+ * descriptor
+ * @return descriptor setted.
+ * @see EvaluatorBasedRestrictionDescr
+ */
+ public BaseDescr setupRestriction(DroolsTree operator, DroolsTree not,
+ BaseDescr descr) {
+ if (descr instanceof EvaluatorBasedRestrictionDescr) {
+ EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) descr;
+ evaluator.setEvaluator(operator.getText());
+ if (null == not) {
+ evaluator.setNegated(false);
+ } else {
+ evaluator.setNegated(true);
}
- element.setEndCharacter(getEndOffsetLocation(squareChunk
- .get(squareChunk.size() - 1)));
}
- element.setText(sb.toString());
- return element;
+ return descr;
}
- public BaseDescr createAccessorPath(List<BaseDescr> aeList) {
- StringBuilder sb = new StringBuilder();
- sb.append(aeList.get(0).getText());
- if (aeList.size() > 1) {
- for (int i = 1; i < aeList.size(); i++) {
- sb.append(".");
- sb.append(aeList.get(i).getText());
- }
+ /**
+ * Method that setups descriptor with operator and negated information.
+ *
+ * This method just setups EvaluatorBasedRestrictionDescr descriptors.
+ *
+ * @param operator
+ * operator
+ * @param not
+ * negated operator
+ * @param descr
+ * descriptor
+ * @param param
+ * parameter
+ * @return descriptor setted.
+ * @see EvaluatorBasedRestrictionDescr
+ */
+ public BaseDescr setupRestriction(DroolsTree operator, DroolsTree not,
+ BaseDescr descr, DroolsTree param) {
+ BaseDescr retDescr = setupRestriction(operator, not, descr);
+ if (null != param && descr instanceof EvaluatorBasedRestrictionDescr) {
+ EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) descr;
+ evaluator.setParameterText(param.getText().substring(1,
+ param.getText().length() - 1));
}
+ return retDescr;
+ }
- EvaluatorBasedRestrictionDescr evaluator;
- String name = sb.toString();
- if (name.indexOf('.') > -1 || name.indexOf('[') > -1) {
- evaluator = new QualifiedIdentifierRestrictionDescr();
+ /**
+ * Factory method that creates a RestrictionConnectiveDescr.
+ *
+ * RestrictionConnectiveDescr is just a syntax suggar to implement severals
+ * "ORs" or "ANDs".
+ *
+ * @param not
+ * negated operator
+ * @param exprList
+ * binded expression descriptor list
+ * @return RestrictionConnectiveDescr filled.
+ * @see RestrictionConnectiveDescr
+ */
+ public RestrictionConnectiveDescr createRestrictionConnective(
+ DroolsTree not, List<BaseDescr> exprList) {
+
+ RestrictionConnectiveDescr group;
+ String op = null;
+
+ if (null == not) {
+ op = "==";
+ group = new RestrictionConnectiveDescr(
+ RestrictionConnectiveDescr.OR);
} else {
- evaluator = new VariableRestrictionDescr();
+ op = "!=";
+ group = new RestrictionConnectiveDescr(
+ RestrictionConnectiveDescr.AND);
}
- evaluator.setText(name);
- return evaluator;
- }
-
- public FieldConstraintDescr createFieldConstraint(List<BaseDescr> aeList) {
- StringBuilder sb = new StringBuilder();
- sb.append(aeList.get(0).getText());
- if (aeList.size() > 1) {
- for (int i = 1; i < aeList.size(); i++) {
- sb.append(".");
- sb.append(aeList.get(i).getText());
+ for (BaseDescr baseDescr : exprList) {
+ if (baseDescr instanceof EvaluatorBasedRestrictionDescr) {
+ EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) baseDescr;
+ evaluator.setEvaluator(op);
+ evaluator.setNegated(false);
+ group.addRestriction(evaluator);
}
}
- FieldConstraintDescr fieldConstraint = new FieldConstraintDescr(sb
- .toString());
- fieldConstraint.setLocation(aeList.get(0).getLine(), aeList.get(0)
- .getColumn());
- fieldConstraint.setStartCharacter(aeList.get(0).getStartCharacter());
- fieldConstraint.setEndCharacter(aeList.get(aeList.size() - 1)
- .getEndCharacter());
- return fieldConstraint;
+ return group;
}
- public BaseDescr createFieldBinding(DroolsTree label, BaseDescr descr) {
- FieldBindingDescr fieldBiding = new FieldBindingDescr();
- fieldBiding.setLocation(getLineLocation(label),
- getColumnLocation(label));
- fieldBiding.setStartCharacter(getStartOffsetLocation(label));
- FieldConstraintDescr fieldConstraint = (FieldConstraintDescr) descr;
- fieldBiding.setIdentifier(label.getText());
- fieldBiding.setFieldName(fieldConstraint.getFieldName());
- fieldBiding.setFieldConstraint(fieldConstraint);
- return fieldBiding;
- }
-
+ /**
+ * Factory method that creates a RestrictionConnectiveDescr of type OR or an
+ * OrDescr (based on left paramater).
+ *
+ * If left parameter is a kind of RestrictionDescr (except for
+ * PredicateDescr), this method creates a RestrictionConnectiveDescr, if not
+ * creates an OrDescr.
+ *
+ * @param left
+ * left descriptor
+ * @param right
+ * right descriptor
+ * @return RestrictionConnectiveDescr or OrDescr filled.
+ * @see RestrictionConnectiveDescr
+ * @see OrDescr
+ */
public BaseDescr createOrRestrictionConnective(BaseDescr left,
- BaseDescr right) {
+ BaseDescr right) {
BaseDescr or = null;
- if (left instanceof RestrictionDescr && !(left instanceof PredicateDescr)) {
+ if (left instanceof RestrictionDescr
+ && !(left instanceof PredicateDescr)) {
RestrictionConnectiveDescr restOr = new RestrictionConnectiveDescr(
RestrictionConnectiveDescr.OR);
restOr.addOrMerge((RestrictionDescr) left);
@@ -664,10 +1088,27 @@
}
+ /**
+ * Factory method that creates a RestrictionConnectiveDescr of type AND or
+ * an AndDescr (based on left paramater).
+ *
+ * If left parameter is a kind of RestrictionDescr (except for
+ * PredicateDescr), this method creates a RestrictionConnectiveDescr, if not
+ * creates an AndDescr.
+ *
+ * @param left
+ * left descriptor
+ * @param right
+ * right descriptor
+ * @return RestrictionConnectiveDescr or AndDescr filled.
+ * @see RestrictionConnectiveDescr
+ * @see AndDescr
+ */
public BaseDescr createAndRestrictionConnective(BaseDescr left,
BaseDescr right) {
BaseDescr and = null;
- if (left instanceof RestrictionDescr && !(left instanceof PredicateDescr)) {
+ if (left instanceof RestrictionDescr
+ && !(left instanceof PredicateDescr)) {
RestrictionConnectiveDescr restAnd = new RestrictionConnectiveDescr(
RestrictionConnectiveDescr.AND);
restAnd.addOrMerge((RestrictionDescr) left);
@@ -683,94 +1124,209 @@
return and;
}
- public BaseDescr createRestrictionConnective(DroolsTree not,
- List<BaseDescr> exprList) {
+ /**
+ * Factory method that creates an EvaluatorBasedRestrictionDescr.
+ *
+ * @param aeList
+ * accessor element list
+ * @return EvaluatorBasedRestrictionDescr filled.
+ * @see EvaluatorBasedRestrictionDescr
+ */
+ public BaseDescr createAccessorPath(List<BaseDescr> aeList) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(aeList.get(0).getText());
+ if (aeList.size() > 1) {
+ for (int i = 1; i < aeList.size(); i++) {
+ sb.append(".");
+ sb.append(aeList.get(i).getText());
+ }
+ }
- RestrictionConnectiveDescr group;
- String op = null;
-
- if (null == not) {
- op = "==";
- group = new RestrictionConnectiveDescr(
- RestrictionConnectiveDescr.OR);
+ EvaluatorBasedRestrictionDescr evaluator;
+ String name = sb.toString();
+ if (name.indexOf('.') > -1 || name.indexOf('[') > -1) {
+ evaluator = new QualifiedIdentifierRestrictionDescr();
} else {
- op = "!=";
- group = new RestrictionConnectiveDescr(
- RestrictionConnectiveDescr.AND);
+ evaluator = new VariableRestrictionDescr();
}
+ evaluator.setText(name);
- for (BaseDescr baseDescr : exprList) {
- if (baseDescr instanceof EvaluatorBasedRestrictionDescr) {
- EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) baseDescr;
- evaluator.setEvaluator(op);
- evaluator.setNegated(false);
- group.addRestriction(evaluator);
- }
- }
+ return evaluator;
+ }
- return group;
+ /**
+ * Factory method that creates a LiteralRestrictionDescr of String type,
+ * also remove the quotes.
+ *
+ * @param s
+ * string data
+ * @return LiteralRestrictionDescr filled
+ * @see LiteralRestrictionDescr
+ */
+ public LiteralRestrictionDescr createStringLiteralRestriction(DroolsTree s) {
+ LiteralRestrictionDescr stringLit = new LiteralRestrictionDescr();
+ stringLit.setType(LiteralRestrictionDescr.TYPE_STRING);
+ stringLit.setText(s.getText().substring(1, s.getText().length() - 1));
+ return stringLit;
}
- public BaseDescr setupRestriction(DroolsTree operator, DroolsTree not,
- BaseDescr descr, DroolsTree param) {
- BaseDescr retDescr = setupRestriction(operator, not, descr);
- if (null != param && descr instanceof EvaluatorBasedRestrictionDescr) {
- EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) descr;
- evaluator.setParameterText(param.getText().substring(1,
- param.getText().length() - 1));
- }
- return retDescr;
+ /**
+ * Factory method that creates a LiteralRestrictionDescr of Number type.
+ *
+ * @param i
+ * integer data
+ * @return LiteralRestrictionDescr filled
+ * @see LiteralRestrictionDescr
+ */
+ public LiteralRestrictionDescr createIntLiteralRestriction(DroolsTree i) {
+ LiteralRestrictionDescr intLit = new LiteralRestrictionDescr();
+ intLit.setType(LiteralRestrictionDescr.TYPE_NUMBER);
+ intLit.setText(i.getText());
+ return intLit;
}
- public BaseDescr setupRestriction(DroolsTree operator, DroolsTree not,
- BaseDescr descr) {
- if (descr instanceof EvaluatorBasedRestrictionDescr) {
- EvaluatorBasedRestrictionDescr evaluator = (EvaluatorBasedRestrictionDescr) descr;
- evaluator.setEvaluator(operator.getText());
- if (null == not) {
- evaluator.setNegated(false);
- } else {
- evaluator.setNegated(true);
- }
- }
- return descr;
+ /**
+ * Factory method that creates a LiteralRestrictionDescr of Number type.
+ *
+ * @param f
+ * float data
+ * @return LiteralRestrictionDescr filled
+ * @see LiteralRestrictionDescr
+ */
+ public LiteralRestrictionDescr createFloatLiteralRestriction(DroolsTree f) {
+ LiteralRestrictionDescr floatLit = new LiteralRestrictionDescr();
+ floatLit.setType(LiteralRestrictionDescr.TYPE_NUMBER);
+ floatLit.setText(f.getText());
+ return floatLit;
}
- public BaseDescr createPredicate(DroolsTree pc) {
- PredicateDescr predicate = new PredicateDescr();
- predicate.setContent(pc.getText().subSequence(1,
+ /**
+ * Factory method that creates a LiteralRestrictionDescr of Boolean type.
+ *
+ * @param b
+ * boolean data
+ * @return LiteralRestrictionDescr filled
+ * @see LiteralRestrictionDescr
+ */
+ public LiteralRestrictionDescr createBoolLiteralRestriction(DroolsTree b) {
+ LiteralRestrictionDescr boolLit = new LiteralRestrictionDescr();
+ boolLit.setType(LiteralRestrictionDescr.TYPE_BOOLEAN);
+ boolLit.setText(b.getText());
+ return boolLit;
+ }
+
+ /**
+ * Factory method that creates a LiteralRestrictionDescr of Null type.
+ *
+ * @param n
+ * null data
+ * @return LiteralRestrictionDescr filled
+ * @see LiteralRestrictionDescr
+ */
+ public LiteralRestrictionDescr createNullLiteralRestriction(DroolsTree n) {
+ LiteralRestrictionDescr nullLit = new LiteralRestrictionDescr();
+ nullLit.setType(LiteralRestrictionDescr.TYPE_NULL);
+ nullLit.setText(null);
+ return nullLit;
+ }
+
+ /**
+ * Factory method that creates a ReturnValueRestrictionDescr.
+ *
+ * @param pc
+ * chunk data
+ * @return ReturnValueRestrictionDescr filled
+ * @see ReturnValueRestrictionDescr
+ */
+ public ReturnValueRestrictionDescr createReturnValue(DroolsTree pc) {
+ ReturnValueRestrictionDescr returnValue = new ReturnValueRestrictionDescr();
+ returnValue.setContent(pc.getText().substring(1,
pc.getText().length() - 1));
- predicate.setEndCharacter(getEndOffsetLocation(pc));
- return predicate;
+ returnValue.setLocation(getLineLocation(pc), getColumnLocation(pc));
+ returnValue.setStartCharacter(getStartOffsetLocation(pc));
+ returnValue.setEndCharacter(getEndOffsetLocation(pc));
+ return returnValue;
}
- public BaseDescr setupFieldConstraint(FieldConstraintDescr field,
- BaseDescr descr) {
- if (null != descr && descr instanceof RestrictionDescr) {
- field.getRestriction().addOrMerge((RestrictionDescr) descr);
+ /**
+ * Factory method that creates a FieldConstraintDescr.
+ *
+ * @param aeList
+ * accessor element descriptor list
+ * @return FieldConstraintDescr filled.
+ */
+ public FieldConstraintDescr createFieldConstraint(List<BaseDescr> aeList) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(aeList.get(0).getText());
+ if (aeList.size() > 1) {
+ for (int i = 1; i < aeList.size(); i++) {
+ sb.append(".");
+ sb.append(aeList.get(i).getText());
+ }
}
- return field;
+ FieldConstraintDescr fieldConstraint = new FieldConstraintDescr(sb
+ .toString());
+ fieldConstraint.setLocation(aeList.get(0).getLine(), aeList.get(0)
+ .getColumn());
+ fieldConstraint.setStartCharacter(aeList.get(0).getStartCharacter());
+ fieldConstraint.setEndCharacter(aeList.get(aeList.size() - 1)
+ .getEndCharacter());
+
+ return fieldConstraint;
}
- private String getCleanId(DroolsTree id) {
- String cleanedId = id.getText();
- if (cleanedId.startsWith("\"")) {
- cleanedId = cleanedId.substring(1, cleanedId.length() - 1);
+ /**
+ * Factory method that creates an accessor element descriptor.
+ *
+ * @param id
+ * accessor identifier
+ * @param squareChunk
+ * chunk data
+ * @return BaseDescr accessor descriptor filled.
+ */
+ public BaseDescr createAccessorElement(DroolsTree id,
+ List<DroolsTree> squareChunk) {
+ BaseDescr element = new BaseDescr();
+ element.setLocation(getLineLocation(id), getColumnLocation(id));
+ element.setStartCharacter(getStartOffsetLocation(id));
+ element.setEndCharacter(getEndOffsetLocation(id));
+ StringBuilder sb = new StringBuilder();
+ sb.append(id.getText());
+ if (null != squareChunk && squareChunk.size() > 0) {
+ for (DroolsTree chunk : squareChunk) {
+ sb.append(chunk.getText());
+ }
+ element.setEndCharacter(getEndOffsetLocation(squareChunk
+ .get(squareChunk.size() - 1)));
}
- return cleanedId;
+ element.setText(sb.toString());
+ return element;
}
+ /**
+ * A factory method that returns a data type descriptor.
+ *
+ * @param idList
+ * identifier list
+ * @param rightList
+ * right square list, may be null
+ * @return BaseDescr data type filled.
+ */
public BaseDescr createDataType(List<DroolsTree> idList,
List<DroolsTree> rightList) {
return createGenericBaseDescr(idList, rightList);
}
- public BaseDescr createArgument(DroolsTree id, List<DroolsTree> rightList) {
- List<DroolsTree> idList = new ArrayList<DroolsTree>(1);
- idList.add(id);
- return createGenericBaseDescr(idList, rightList);
- }
-
+ /**
+ * Helper method that creates a full identifier descriptor with correct char
+ * offset.
+ *
+ * @param idList
+ * identifiers
+ * @param rightList
+ * right square list, may be null
+ * @return BaseDescr filled.
+ */
private BaseDescr createGenericBaseDescr(List<DroolsTree> idList,
List<DroolsTree> rightList) {
int endLine = getLineLocation(idList.get(idList.size() - 1));
@@ -800,6 +1356,13 @@
return baseDescr;
}
+ /**
+ * Helper method returns a dotted identifier based on identifier list.
+ *
+ * @param idList
+ * identifiers
+ * @return dotted identifier
+ */
private String createDotedIdFromList(List<DroolsTree> idList) {
StringBuilder sb = new StringBuilder();
@@ -814,19 +1377,63 @@
return sb.toString();
}
+ /**
+ * Helper method that returns a tree text without initial and final quotes
+ * (if it starts with).
+ *
+ * @param tree
+ * tree
+ * @return text without quotes
+ */
+ private String getCleanId(DroolsTree id) {
+ String cleanedId = id.getText();
+ if (cleanedId.startsWith("\"") || cleanedId.startsWith("'")) {
+ cleanedId = cleanedId.substring(1, cleanedId.length() - 1);
+ }
+ return cleanedId;
+ }
+
+ /**
+ * Helper method that returns line location
+ *
+ * @param tree
+ * tree
+ * @return line location
+ */
private int getLineLocation(DroolsTree tree) {
return tree.getLine();
}
+ /**
+ * Helper method that returns column location
+ *
+ * @param tree
+ * tree
+ * @return column location
+ */
private int getColumnLocation(DroolsTree tree) {
return tree.getCharPositionInLine();
}
+ /**
+ * Helper method that returns start char offset
+ *
+ * @param tree
+ * tree
+ * @return start char offset
+ */
+ private int getStartOffsetLocation(DroolsTree tree) {
+ return tree.getStartCharOffset();
+ }
+
+ /**
+ * Helper method that returns end char offset
+ *
+ * @param tree
+ * tree
+ * @return end char offset
+ */
private int getEndOffsetLocation(DroolsTree tree) {
return tree.getEndCharOffset();
}
-
- private int getStartOffsetLocation(DroolsTree tree) {
- return tree.getStartCharOffset();
- }
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list