1 /*
2 * This file is part of Pease Plate Template Engine.
3 *
4 * Pease Plate Template Engine is free software: you can redistribute
5 * it and/or modify it under the terms of the GNU Lesser General
6 * Public License as published by the Free Software Foundation,
7 * either version 3 of the License, or any later version.
8 *
9 * Pease Plate Template Engine is distributed in the hope that it
10 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
11 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 * See the GNU Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with Pease Plate Template Engine. If not, see
16 * <http://www.gnu.org/licenses/>.
17 *
18 * Copyright (c) 2008 Manfred HANTSCHEL
19 */
20 package org.peaseplate.internal.lang.command;
21
22 import org.peaseplate.TemplateRuntimeException;
23 import org.peaseplate.internal.BuildContext;
24 import org.peaseplate.locator.TemplateLocator;
25
26 public class AndCommand extends AbstractBooleanCommand {
27
28 public AndCommand(TemplateLocator locator, int line, int column, ICommand leftCommand, ICommand rightCommand) {
29 super(locator, line, column, leftCommand, rightCommand);
30 }
31
32 /**
33 * @see org.peaseplate.internal.lang.command.AbstractNumericCommand#getSign()
34 */
35 @Override
36 public String getSign() {
37 return "&&";
38 }
39
40 /**
41 * @see org.peaseplate.internal.lang.command.ICommand#call(BuildContext)
42 */
43 public Object call(BuildContext context) throws TemplateRuntimeException {
44 boolean leftValue = callBooleanLeftCommand(context);
45
46 if (!leftValue)
47 return Boolean.FALSE;
48
49 boolean rightValue = callBooleanRightCommand(context);
50
51 return Boolean.valueOf(leftValue && rightValue);
52 }
53
54 }