01: /*
02: * Copyright 2006 JBoss Inc
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.drools.rule.builder;
18:
19: import org.drools.lang.descr.BaseDescr;
20: import org.drools.lang.descr.CollectDescr;
21: import org.drools.lang.descr.PatternDescr;
22: import org.drools.rule.Collect;
23: import org.drools.rule.Pattern;
24: import org.drools.rule.RuleConditionElement;
25:
26: /**
27: * @author etirelli
28: *
29: */
30: public class CollectBuilder implements RuleConditionBuilder {
31:
32: public RuleConditionElement build(final RuleBuildContext context,
33: final BaseDescr descr) {
34: return build(context, descr, null);
35: }
36:
37: public RuleConditionElement build(final RuleBuildContext context,
38: final BaseDescr descr, final Pattern prefixPattern) {
39:
40: final CollectDescr collectDescr = (CollectDescr) descr;
41: final PatternBuilder patternBuilder = (PatternBuilder) context
42: .getDialect().getBuilder(PatternDescr.class);
43: final Pattern sourcePattern = (Pattern) patternBuilder.build(
44: context, collectDescr.getInputPattern());
45:
46: if (sourcePattern == null) {
47: return null;
48: }
49:
50: final String className = "collect" + context.getNextId();
51: collectDescr.setClassMethodName(className);
52:
53: Pattern resultPattern = (Pattern) context.getBuildStack()
54: .peek();
55:
56: final Collect collect = new Collect(sourcePattern,
57: resultPattern);
58: return collect;
59: }
60:
61: }
|