EXtreme Programming XP Тема 11. XP Для работы по администрированию...

31
eXtreme Programming XP Тема 11 Тема 11

Transcript of EXtreme Programming XP Тема 11. XP Для работы по администрированию...

Page 1: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

eXtreme ProgrammingXPXP

Тема 11Тема 11Тема 11Тема 11

Page 2: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

Для работы по администрированию таблицы Department создаем классы:

DepartmentListController; EnterDepartmentController; DeleteDepartmentController; EnterDepartmentValidator; DelName – командный объект для формы

выбора удаляемого элемента; DeleteDepartmentController.

Page 3: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

Добавляем:<bean name="departmentListController"

class="com.visualpatterns.timex.controller.DepartmentListController">

<property name="departmentManager"><ref bean="departmentManager" />

</property><property name="successView">

<value>departmentlist</value></property>

<property name="applicationSecurityManager"><ref bean="applicationSecurityManager" />

</property>

</bean>

Page 4: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

Валидаторы:

<bean id="deleteDepartmentValidator"

class="com.visualpatterns.timex.controller.DeleteDepartmentValidator" />

<bean id="enterDepartmentValidator"class="com.visualpatterns.timex.controller.EnterDepartmentValidator" />

Менеджер:<bean id="departmentManager"

class="com.visualpatterns.timex.model.DepartmentManager" />

Page 5: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<bean name="enterDepartmentConroller"

class="com.visualpatterns.timex.controller.EnterDepartmentController">

<property name="sessionForm"><value>true</value></property>

<property name="formView“><value>/enterdepartment</value></property>

<property name="successView">

<value>redirect:departmentlist.htm</value>

</property>

<property name="commandClass">

<value>com.visualpatterns.timex.model.Department</value>

</property>

<property name="validator">

<ref bean="enterDepartmentValidator" />

</property>

<property name="departmentManager“><ref bean="departmentManager"/>

</property>

<property name="applicationSecurityManager">

<ref bean="applicationSecurityManager" />

</property>

</bean>

Page 6: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<bean name="deleteDepartmentConroller"

class="com.visualpatterns.timex.controller.DeletDepartmentController"><property name="sessionForm"><value>true</value></property><property

name="formView"><value>/deletedepartment</value></property><property name="successView">

<value>redirect:departmentlist.htm</value></property><property name="commandClass">

<value>com.visualpatterns.timex.controller.DelName</value></property><property name="validator">

<ref bean="deleteDepartmentValidator" /></property><property name="departmentManager">

<ref bean="departmentManager"/></property><property name="applicationSecurityManager">

<ref bean="applicationSecurityManager" /></property>

</bean>

Page 7: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

Назначение перехватчика на файлы:

<bean id="urlMapAuthenticate"

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="interceptors">

<list><ref bean="httpRequestInterceptor" /></list></property><property name="urlMap"><props><prop key="/departmentlist.htm">departmentListController

</prop><prop

key="/enterdepartment.htm">enterDepartmentConroller</prop> <prop key="/deletedepartment.htm">deleteDepartmentConroller</prop>

</props></property>

</bean>

Page 8: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

package com.visualpatterns.timex.controller;

public class SignLogin {

String login, password;

public String getLogin() {return login;}

public void setLogin(String login){this.login=login;}

public String getPassword(){return password;}

public void setPassword(String pass){ password=pass;}

}

Page 9: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

public List getDepartments()

{

List departmentList = null;

SessionFactory SessionFactory=new

Configuration().configure().buildSessionFactory();

Session session =SessionFactory.getCurrentSession();

session.beginTransaction();

try {

departmentList = session.createQuery(

"from Department ORDER BY name").list();

session.getTransaction().commit(); }

catch (HibernateException e){ session.getTransaction().rollback();

throw e;}

return departmentList;

}

Page 10: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

public Department getDepartment(String departmentCode)

{ Department department = null;

SessionFactory SessionFactory=new

Configuration().configure().buildSessionFactory();

Session session =SessionFactory.getCurrentSession();

session.beginTransaction();

try{ department = (Department) session.createQuery(

"from Department" + " where departmentCode = ?").setString(0,

departmentCode).uniqueResult();

session.getTransaction().commit();

SessionFactory.close();}

catch (HibernateException e)

{ session.getTransaction().rollback(); throw e;}

return department;

}

Page 11: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

public void saveDepartment(Department department)

{ SessionFactory SessionFactory=new

Configuration().configure().buildSessionFactory();

Session session =SessionFactory.getCurrentSession();

session.beginTransaction();

try{

session.saveOrUpdate(department);

session.getTransaction().commit();

SessionFactory.close();

}

catch (HibernateException e)

{ session.getTransaction().rollback(); throw e;}

}

Page 12: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

public void deleteDepartment(String departmentCode)

{ SessionFactory SessionFactory=new

Configuration().configure().buildSessionFactory();

Session session =SessionFactory.getCurrentSession();

session.beginTransaction();

try{

session.delete(session.load(Department.class, departmentCode));

session.flush();

session.getTransaction().commit();

SessionFactory.close();}

catch (HibernateException e)

{ session.getTransaction().rollback(); throw e;}

}

Page 13: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

package com.visualpatterns.timex.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

import com.visualpatterns.timex.model.Department;

import com.visualpatterns.timex.model.DepartmentManager;

import com.visualpatterns.timex.controller.ApplicationSecurityManager;

public class DepartmentListController implements Controller

{

private DepartmentManager departmentManager;

public static final String MAP_KEY = "departments";

private ApplicationSecurityManager applicationSecurityManager;

private String successView;

Page 14: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

public ModelAndView handleRequest(

HttpServletRequest request,

HttpServletResponse response) throws Exception

{

List departments = departmentManager.getDepartments();

return new ModelAndView(getSuccessView(), MAP_KEY, departments);

}

public ApplicationSecurityManager getApplicationSecurityManager()

{

return applicationSecurityManager;

}

public void setApplicationSecurityManager(ApplicationSecurityManager app)

{

applicationSecurityManager=app;

}

Page 15: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

public DepartmentManager getDepartmentManager()

{ return departmentManager;}

public void setDepartmentManager(DepartmentManager departmentManager)

{ this.departmentManager = departmentManager;}

public String getSuccessView()

{ return successView;}

public void setSuccessView(String successView)

{

this.successView = successView;

}

}

Page 16: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

package com.visualpatterns.timex.controller;

import org.springframework.validation.Errors;

import com.visualpatterns.timex.model.Department;

public class EnterDepartmentValidator implements

org.springframework.validation.Validator

{

public boolean supports(Class clazz)

{ return clazz.equals(Department.class);}

public void validate(Object command, Errors errors)

{

Department log = (Department) command;

if (log == null) return;

String code = log.getDepartmentCode();

if (code.length()>2 || code.length()<2)

errors.reject("error.enterdepartment.codeiswrong");

}

}

Page 17: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

package com.visualpatterns.timex.controller;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;

import org.springframework.web.bind.ServletRequestDataBinder;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.SimpleFormController;

import com.visualpatterns.timex.model.DepartmentManager;

import com.visualpatterns.timex.model.Department;

import com.visualpatterns.timex.model.DepartmentManager;

import com.visualpatterns.timex.controller.ApplicationSecurityManager;

Page 18: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

public class EnterDepartmentController extends SimpleFormController

{

private DepartmentManager departmentManager = null;

private ApplicationSecurityManager applicationSecurityManager;

public static final String TID = "tid";

protected Object formBackingObject(HttpServletRequest request)

{ if (request.getParameter(TID) != null

&& request.getParameter(TID).trim().length() > 0)

{ String code1="";

try{ code1=new String(request.getParameter(TID).

trim().getBytes("ISO-8859-1"),"Cp1251");

}

catch(Exception e){}

return departmentManager.getDepartment(code1);

}

Department department = new Department(); return department;

}

Page 19: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

protected ModelAndView onSubmit( HttpServletRequest request,

HttpServletResponse response, Object command, BindException errors)

{ Department department = (Department) command;

try{ String code1=new String(department.getDepartmentCode().getBytes("ISO-8859-1"),"Cp1251");

String name1=new String(department.getName().getBytes("ISO-8859-1"),"Cp1251");

department.setDepartmentCode(code1);department.setName(name1);

} catch(Exception e){}

departmentManager.saveDepartment(department);

try{ String message=new String(getMessageSourceAccessor().getMessage("message.enterdepartment.savesuccess").getBytes("ISO-8859-1"),"Cp1251");

request.getSession().setAttribute("message",message);

}

catch(Exception e){}

return new ModelAndView(getSuccessView());}

// также следует добавить все set и get-методы для свойств класса

Page 20: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

package com.visualpatterns.timex.controller;

import org.springframework.validation.Errors;

import com.visualpatterns.timex.controller.SignLogin;

public class SignInValidator implements

org.springframework.validation.Validator

{

public boolean supports(Class clazz)

{ return clazz.equals(SignLogin.class); }

public void validate(Object command, Errors errors)

{ SignLogin log = (SignLogin) command;

if (log == null) return;

String login = log.getLogin();

String password = log.getPassword();

if (!(login.equals("admin") && password.equals("admin")))

errors.reject("error.login.invalid");

}

}

Page 21: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

package com.visualpatterns.timex.controller;

import org.springframework.validation.Errors;

import com.visualpatterns.timex.controller.DelName;

public class DeleteDepartmentValidator implements

org.springframework.validation.Validator

{

public boolean supports(Class clazz)

{ return clazz.equals(DelName.class);}

public void validate(Object command, Errors errors)

{

DelName log = (DelName) command;

if (log == null) return;

String code = log.getCode();

if (code.length()!=2)

errors.reject("error.login.invalid");

}

}

Page 22: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

package com.visualpatterns.timex.controller;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;

import org.springframework.web.bind.ServletRequestDataBinder;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.SimpleFormController;

import com.visualpatterns.timex.model.DepartmentManager;

import com.visualpatterns.timex.model.Department;

import com.visualpatterns.timex.controller.DelName;

import com.visualpatterns.timex.controller.ApplicationSecurityManager;

Page 23: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

public class DeletDepartmentController extends SimpleFormController

{

private DepartmentManager departmentManager = null;

private ApplicationSecurityManager applicationSecurityManager;

protected Object formBackingObject(HttpServletRequest request)

{

return new DelName();

}

protected Map referenceData(HttpServletRequest request) throws Exception

{

// для создания списка выбора

HashMap model = new HashMap();

model.put("departments", departmentManager.getDepartments());

return model;

}

Page 24: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

protected ModelAndView onSubmit(

HttpServletRequest request,

HttpServletResponse response,

Object command,

BindException errors)

{

DelName code= (DelName) command;

String code1="";

try{

code1=new String(code.getCode().getBytes("ISO-8859-1"),"Cp1251");

}catch(Exception e){}

departmentManager.deleteDepartment(code1);

request.getSession().setAttribute("message",getMessageSourceAccessor().

getMessage("message.deletedepartment.deletesuccess"));

return new ModelAndView(getSuccessView());

}

// а также get и set-методы для всех свойств контроллера

Page 25: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<%@ page contentType="text/html; charset=windows-1251" %>

<html>

<head>

<title>Список всех отделов</title>

</head>

<body>

<h1>Список всех отделов</h1>

<div align="right" nowrap="nowrap"><a href="signout.htm">Выйти из системы</a></div>

<p align="center">

<!-- status messages -->

<c:if test="${not empty message}">

<font color="green"><c:out value="${message}" /></font>

<c:set var="message" value="" scope="session" />

</c:if></p>

Page 26: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<p align="center"><a href="enterdepartment.htm">Добавить отдел</a>

</p>

<p align="center"><a href="deletedepartment.htm">Удалить отдел</a>

</p>

<table border="1" align="center" cellpadding="8" cellspacing="0">

<tr><th>Code</th><th>Name</th></tr>

<c:forEach items="${departments}" var="department">

<tr><td align="center">

<a href='enterdepartment.htm?tid=<c:out value="${department.departmentCode}"/>'><c:out value="${department.departmentCode}"/></a>

</td>

<td align="center"><c:out value="${department.name}" /></td>

</tr>

</c:forEach>

</table>

</body>

</html>

Page 27: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<%@ page contentType="text/html; charset=windows-1251" %>

<html>

<head><title>Добавление/редактирование отдела</title></head>

<body>

<form method="post">

<h1>Информация об отделе</h1>

<a href="signout.htm" align="rignt">Выйти из системы</a></td>

<tr>

<td colspan="2" align="center">

<center><spring:bind path="command.*">

<c:if test="${not empty status.errorMessages}">

<c:forEach var="error" items="${status.errorMessages}">

<font color="red"><c:out value="${error}" escapeXml="false" />

</font> <br />

</c:forEach>

</c:if> </spring:bind>

Page 28: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<c:if test="${not empty message}">

<font color="green"><c:out value="${message}" /></font>

<c:set var="message" value="" scope="session" />

</c:if></center><br/>

<table border="1" align="center">

<tr> <th>Код отдела</th> <th>Название отдела</th> </tr>

<tr> <td><spring:bind path="command.departmentCode">

<input name='<c:out value="${status.expression}"/>'

value='<c:out value="${status.value}"/>' type="text" size="4"

maxlength="6">

</spring:bind></td>

<td><spring:bind path="command.name">

<input name='<c:out value="${status.expression}"/>'

value='<c:out value="${status.value}"/>' type="text" size="4"

maxlength="6“> </spring:bind></td>

</tr></table>

Page 29: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<p align="center"><input name="save" type="submit" value="Save"> <input

name="cancel" type="button" value="Cancel"

onClick="javascript:window.location='departmentlist.htm'"> <br> <br>

</p>

</td>

</tr>

</table>

</form>

</body>

</html>

Page 30: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<%@ page contentType="text/html; charset=windows-1251" %>

<html>

<head><title>Удаление отдела</title></head>

<body>

<form method="post">

<h1>Выберите отдел для удаления</h1>

<a href="signout.htm" align="rignt">Выйти из системы</a></td>

<tr><spring:bind path="command.code">

<select name='<c:out value="${status.expression}"/>'>

<option value=""></option>

<c:forEach items="${departments}" var="department">

<option value='<c:out value="${department.departmentCode}"/>'>

<c:out value="${department.name}"/>

</option>

</c:forEach>

</select>

Page 31: EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController;

XPXP

<br/><br/></spring:bind>

<p align="center"><input name="save" type="submit" value="Save"> <input

name="cancel" type="button" value="Cancel"

onClick="javascript:window.location='departmentlist.htm'"> <br>

<br>

</p>

</form>

</body>

</html>