/*
* $Id: SolveQEAction.java 9841 2012-10-01 20:37:41Z another $
*
* This file is part of the MoSKito software project
* that is hosted at http://moskito.dev.java.net.
*
* All MoSKito files are distributed under MIT License:
*
* Copyright (c) 2006 The MoSKito Project Team.
*
* Permission is hereby granted, free of charge,
* to any person obtaining a copy of this software and
* associated documentation files (the "Software"),
* to deal in the Software without restriction,
* including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit
* persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice
* shall be included in all copies
* or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
* OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
* LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package org.anotheria.moskitodemo.usecases.qe.presentation;
import net.anotheria.maf.action.AbstractAction;
import net.anotheria.maf.action.ActionCommand;
import net.anotheria.maf.action.ActionMapping;
import net.anotheria.maf.bean.FormBean;
import net.anotheria.maf.bean.annotations.Form;
import net.anotheria.moskito.core.dynamic.MoskitoInvokationProxy;
import net.anotheria.moskito.core.predefined.ServiceStatsCallHandler;
import net.anotheria.moskito.core.predefined.ServiceStatsFactory;
import org.anotheria.moskitodemo.usecases.qe.business.IQESolver;
import org.anotheria.moskitodemo.usecases.qe.business.QESolverImpl;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
public class SolveQEAction extends AbstractAction{
private IQESolver solver;
public SolveQEAction(){
solver = (IQESolver) (new MoskitoInvokationProxy(
new QESolverImpl(),
new ServiceStatsCallHandler(),
new ServiceStatsFactory(),
IQESolver.class)).createProxy();
}
@Override
public ActionCommand execute(ActionMapping mapping, @Form(QEParameterForm.class)FormBean af, HttpServletRequest req, HttpServletResponse res) throws Exception {
QEParameterForm form = (QEParameterForm)af;
System.out.println("Called QESolver with form: "+form);
if (form.isEmpty()){
System.out.println("Form is empty!");
return mapping.success();
}
int a=0,b=0,c=0;
List<String> errorMessages = new ArrayList<String>();
try{
a = Integer.parseInt(form.getA());
}catch(NumberFormatException e){
errorMessages.add("Parameter a is not a number: "+form.getA());
}
try{
b = Integer.parseInt(form.getB());
}catch(NumberFormatException e){
errorMessages.add("Parameter b is not a number: "+form.getB());
}
try{
c = Integer.parseInt(form.getC());
}catch(NumberFormatException e){
errorMessages.add("Parameter c is not a number: "+form.getC());
}
System.out.println("Errors: "+errorMessages);
if (errorMessages.size()>0){
req.setAttribute("errors", errorMessages);
return mapping.success();
}
List<Double> solutions = solver.solveQuadrationEquation(a,b,c);
if (solutions.size()==0){
errorMessages.add("No solutions available");
req.setAttribute("errors", errorMessages);
return mapping.findForward("success");
}
System.out.println("Solver: "+solutions);
req.setAttribute("solutions", solutions);
// TODO Auto-generated method stub
return mapping.findForward("success");
}
}