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

			SearchCustomerName form = formBeanFactory.create(request);
			request.setAttribute("form", form);

			// presented (we assume for the first time).
			if (!form.isPresent()) {
				//request.getSession().setAttribute("users", new CustomerBean());
				return "e_customermanage.jsp";
			}
			// check any other errors from JSP
			errors.addAll(form.getValidationErrors());
			if (errors.size() != 0) {
				return "e_customermanage.jsp";
			}
			// check if the customer username exist
			// return -1 means this user not existed
			Transaction.begin();
			//int customer_id = customerDAO.getCustomerId(form.getUsername());

			 CustomerBean [] cbs = customerDAO.getRelateCustomers(form.getUsername());
			 System.out.println(cbs.length);
			 for(CustomerBean c:cbs){
				 System.out.println(c.getFirstname());
			 }
			/*if (customer_id == -1) {
				errors.add("Invalid User Name");
				Transaction.commit();
				return "e_customermanage.jsp";
			}
			CustomerBean cb = customerDAO.read(customer_id);*/
			 if(cbs.length==0){
				 errors.add("No related user");
				return "e_customermanage.jsp";
			 }
			/*
			 * send customer bean to jsp as "users" could add other params like
			 * first name, last name
			 */
			request.setAttribute("users", cbs);
			Transaction.commit();
			return "e_customermanage.jsp";
		} catch (RollbackException e) {
			errors.add(e.toString());
			return "e_customermanage.jsp";
		} catch (FormBeanException e) {
			errors.add(e.getMessage());
			return "e_customermanage.jsp";
		} catch (Exception e) {
			errors.add(e.getMessage());
			return "e_customermanage.jsp";
		} finally {
			if (Transaction.isActive())
				Transaction.rollback();
		}
	}