View Javadoc

1   /*
2    * Copyright 2004-2006 the Seasar Foundation and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
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, 
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.seasar.tuigwaa.plugin.basic;
17  
18  import org.seasar.tuigwaa.cms.core.CmsRequest;
19  import org.seasar.tuigwaa.cms.core.CmsResponse;
20  import org.seasar.tuigwaa.plugin.AbstractPlugin;
21  import org.seasar.tuigwaa.plugin.PluginException;
22  import org.seasar.tuigwaa.plugin.PluginRequest;
23  
24  
25  /***
26   * @author nishioka
27   */
28  public class CalcPlugin extends AbstractPlugin {
29  
30  	public String doHTMLView(CmsRequest request, CmsResponse response,
31  			PluginRequest prequest) throws PluginException {
32  
33  		String[] args = prequest.getArgs();
34  		if (args == null || args.length < 3) {
35  			throw new PluginException("illegal arguments");
36  		}
37  
38  		String op = args[0];
39  
40  		double left = 0;
41  		double right =0;
42  		try {
43  			left = Double.parseDouble(args[1]);
44  			right = Double.parseDouble(args[2]);
45  		} catch (NumberFormatException nfe) {
46  			throw new PluginException(nfe);
47  		}
48  		double answer = calculate(op, left, right);
49  
50  		String ret = "" + answer;
51  		if (ret.endsWith(".0")) {
52  			ret = ret.substring(0, ret.length() - 2);
53  		}
54  		return ret;
55  	}
56  
57  	protected double calculate(String op, double left, double right) {
58  
59  		double answer = 0;
60  		if ("+".equals(op)) {
61  			answer = left + right;
62  		} else if ("-".equals(op)) {
63  			answer = left - right;
64  		} else if ("*".equals(op)) {
65  			answer = left * right;
66  		} else if ("/".equals(op)) {
67  			if (right != 0) {
68  				answer = left / right;
69  			}
70  		}
71  		return answer;
72  	}
73  
74  }