Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 8 → Rev 9

/it-ru/trunk/src/ak/itru/core/action/AdminEventAction.java
24,13 → 24,28
import ak.itru.util.UserException;
import ak.itru.core.model.Event;
import ak.itru.core.model.EventManager;
import ak.itru.core.model.EventAct;
import ak.itru.core.model.EventApartment;
import ak.itru.core.model.Act;
import ak.itru.core.model.ActManager;
import ak.itru.core.model.Apartment;
import ak.itru.core.model.ApartmentManager;
import ak.itru.core.form.EventActBean;
import ak.itru.core.form.EventApartmentBean;
 
public final class AdminEventAction
extends Action
implements ErrorHandlerX
{
public void handleErrors(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if("submit".equals(mapping.getParameter())) {
initLists(request); // FIXME: if a list is changed between "edit" and "submit" then indicies are wrong
}
}
 
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
42,11 → 57,12
return mapping.findForward("default");
}
else if("edit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("id"));
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("id"));
Event event;
List acts = new ArrayList(ActManager.getInstance().listActs());
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
List acts = new ArrayList(ActManager.getInstance().listActs());
List apartments = new ArrayList(ApartmentManager.getInstance().listApartments());
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
this, request, "EventEditForm");
 
if(eventId == null) {
69,6 → 85,7
showForm.set("comment", event.getComment());
}
 
// acts
EventActBean[] a = new EventActBean[acts.size()];
Collections.sort(acts, ActManager.NAME_COMPARATOR);
for(int i = 0; i < acts.size(); i++) {
77,6 → 94,17
}
showForm.set("acts", a);
 
// apartments
EventApartmentBean[] ap = new EventApartmentBean[apartments.size()];
Collections.sort(apartments, ApartmentManager.NAME_COMPARATOR);
for(int i = 0; i < apartments.size(); i++) {
Apartment apartment = (Apartment)apartments.get(i);
ap[i] = new EventApartmentBean(apartment, (event == null)
? null : event.getApartment(apartment.getId()));
}
showForm.set("apartments", ap);
 
initLists(request);
return mapping.findForward("default");
}
else if("delete".equals(mapping.getParameter())) {
89,9 → 117,9
return null;
}
else if("submit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("id"));
Event event;
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("id"));
Event event;
 
if(eventId == null) {
event = EventManager.getInstance().create();
100,6 → 128,56
event = EventManager.getInstance().get(eventId);
}
 
// acts
EventActBean[] acts = (EventActBean[])theForm.get("acts");
for(int i = 0; i < acts.length; i++) {
// FIXME: validate act id
 
// get bean
Long actId = StringConverter.parseLong(acts[i].getActId());
Act act = ActManager.getInstance().get(actId);
EventAct eventAct = event.getAct(actId);
 
if(acts[i].getSelected() == null || !acts[i].getSelected().booleanValue()) {
if(eventAct != null) event.removeAct(eventAct);
}
else {
if(eventAct == null) {
eventAct = EventManager.getInstance().createAct();
eventAct.setEvent(event);
eventAct.setAct(act);
event.addAct(eventAct);
}
eventAct.setComment(acts[i].getComment());
}
}
 
// apartments
EventApartmentBean[] apartments = (EventApartmentBean[])theForm.get("apartments");
for(int i = 0; i < apartments.length; i++) {
// FIXME: validate apartment id, distance
 
// get bean
Long apartmentId = StringConverter.parseLong(apartments[i].getApartmentId());
Apartment apartment = ApartmentManager.getInstance().get(apartmentId);
EventApartment eventApartment = event.getApartment(apartmentId);
 
if(apartments[i].getSelected() == null || !apartments[i].getSelected().booleanValue()) {
if(eventApartment != null) event.removeApartment(eventApartment);
}
else {
if(eventApartment == null) {
eventApartment = EventManager.getInstance().createApartment();
eventApartment.setEvent(event);
eventApartment.setApartment(apartment);
event.addApartment(eventApartment);
}
eventApartment.setDistance(StringConverter.parseNumber(apartments[i].getDistance()));
eventApartment.setComment(apartments[i].getComment());
}
}
 
// name
String name = (String)theForm.get("name");
if(EventManager.getInstance().nameExists(event, name)) {
throw new UserException("ak.itru.core.event.name.nonunique");
106,6 → 184,7
}
event.setName(name);
 
// others
event.setPlace((String)theForm.get("place"));
event.setAddress((String)theForm.get("address"));
event.setTransportDesc((String)theForm.get("transport"));
118,6 → 197,7
event.setEnabled((Boolean)theForm.get("enabled"));
event.setComment((String)theForm.get("comment"));
 
// save
EventManager.getInstance().save(event);
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
return null;
126,4 → 206,16
throw new Exception("unknown mapping parameter");
}
}
 
private void initLists(HttpServletRequest request)
throws Exception
{
List acts = new ArrayList(ActManager.getInstance().listActs());
List apartments = new ArrayList(ApartmentManager.getInstance().listApartments());
 
Collections.sort(acts, ActManager.NAME_COMPARATOR);
request.setAttribute("actList", new ObjectList(acts));
Collections.sort(apartments, ApartmentManager.NAME_COMPARATOR);
request.setAttribute("apartmentList", new ObjectList(apartments));
}
}