01: /* Copyright (c) 2006-2007, Vladimir Nikic
02: All rights reserved.
03:
04: Redistribution and use of this software in source and binary forms,
05: with or without modification, are permitted provided that the following
06: conditions are met:
07:
08: * Redistributions of source code must retain the above
09: copyright notice, this list of conditions and the
10: following disclaimer.
11:
12: * Redistributions in binary form must reproduce the above
13: copyright notice, this list of conditions and the
14: following disclaimer in the documentation and/or other
15: materials provided with the distribution.
16:
17: * The name of Web-Harvest may not be used to endorse or promote
18: products derived from this software without specific prior
19: written permission.
20:
21: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22: AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24: ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25: LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26: CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27: SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28: INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30: ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31: POSSIBILITY OF SUCH DAMAGE.
32:
33: You can contact Vladimir Nikic by sending e-mail to
34: nikic_vladimir@yahoo.com. Please include the word "Web-Harvest" in the
35: subject line.
36: */
37: package org.webharvest.runtime.processors;
38:
39: import org.webharvest.definition.*;
40: import org.webharvest.runtime.Scraper;
41: import org.webharvest.runtime.ScraperContext;
42: import org.webharvest.runtime.templaters.BaseTemplater;
43: import org.webharvest.runtime.variables.EmptyVariable;
44: import org.webharvest.runtime.variables.IVariable;
45: import org.webharvest.utils.CommonUtil;
46:
47: /**
48: * Conditional processor.
49: */
50: public class CaseProcessor extends BaseProcessor {
51:
52: private CaseDef caseDef;
53:
54: public CaseProcessor(CaseDef caseDef) {
55: super (caseDef);
56: this .caseDef = caseDef;
57: }
58:
59: public IVariable execute(Scraper scraper, ScraperContext context) {
60: IfDef[] ifDefs = caseDef.getIfDefs();
61:
62: if (ifDefs != null) {
63: for (int i = 0; i < ifDefs.length; i++) {
64: String condition = BaseTemplater.execute(ifDefs[i]
65: .getCondition(), scraper.getScriptEngine());
66: if (CommonUtil.isBooleanTrue(condition)) {
67: IVariable ifResult = getBodyListContent(ifDefs[i],
68: scraper, context);
69: debug(ifDefs[i], scraper, ifResult);
70: return ifResult;
71: }
72: }
73: }
74:
75: BaseElementDef elseDef = caseDef.getElseDef();
76: if (elseDef != null) {
77: IVariable elseResult = getBodyListContent(elseDef, scraper,
78: context);
79: debug(elseDef, scraper, elseResult);
80: return elseResult;
81: }
82:
83: return new EmptyVariable();
84: }
85:
86: }
|