public String perform(HttpServletRequest request) {
		List<String> errors = new ArrayList<String>();
		request.setAttribute("errors", errors);

		try {
			CreateCustomerForm form = formBeanFactory.create(request);
			request.setAttribute("form", form);

			// If no params were passed, return with no errors so that the form
			// will be
			// presented (we assume for the first time).
			if (!form.isPresent()) {
				return "e_create_customer.jsp";
			}

			// Any validation errors?
			errors.addAll(form.getValidationErrors());
			if (errors.size() != 0) {
				return "e_create_customer.jsp";
			}

			Transaction.begin();
			if (customerDAO.getCustomerId(form.getUserName()) != -1) {
				errors.add("UserName is already existed!");
				Transaction.commit();
				return "e_create_customer.jsp";
			}
			Transaction.commit();

			// Look up the user
			CustomerBean cb = new CustomerBean();
			cb.setUsername(form.getUserName());
			cb.setAddr1(form.getAddress1());
			cb.setAddr2(form.getAddress2());
			cb.setCash(dataConversion.convertFromStringToThreeDigitLong(form
					.getCash()));
			cb.setCity(form.getCity());
			cb.setFirstname(form.getFirstName());
			cb.setLastname(form.getLastName());
			cb.setPassword(form.getPassword());
			cb.setState(form.getState());
			cb.setTempcash(dataConversion
					.convertFromStringToThreeDigitLong(form.getCash()));
			cb.setZip(form.getZip());
			Transaction.begin();
			customerDAO.createAutoIncrement(cb);
			request.setAttribute("message", "new customer has been added");
			Transaction.commit();
			return "e_success.jsp";
		} catch (FormBeanException e) {
			errors.add(e.getMessage());
			return "e_create_customer.jsp";
		} catch (RollbackException e) {
			return "e_create_customer.jsp";
		} catch (Exception e) {
			errors.add(e.getMessage());
			return "e_create_customer.jsp";
		} finally {
			if (Transaction.isActive())
				Transaction.rollback();
		}
	}