package ca.nexcel.books.actions;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.huihoo.jfox.soaf.container.ServiceFactory;

import ca.nexcel.books.beans.Book;
import ca.nexcel.books.business.BookService;

public class SearchSubmit extends Action {

	private ServiceFactory sf = ServiceFactory.getInstance();

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {

		DynaActionForm searchForm = (DynaActionForm) form;
		String isbn = (String) searchForm.get("isbn");

		BookService bookService = (BookService)sf.getService(BookService.class);
		Book book = bookService.read(isbn.trim());

		if (null == book) {
			ActionErrors errors = new ActionErrors();
			errors.add(ActionErrors.GLOBAL_ERROR, new ActionError(
					"message.notfound"));
			saveErrors(request, errors);
			return mapping.findForward("failure");
		}

		request.setAttribute("book", book);
		return mapping.findForward("success");
	}
}