Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1002 → Rev 1003

/kickup/tags/release-1.0/src/ak/kickup/core/RegistrationMail.txt
0,0 → 1,19
Ваш e-mail был использован при регистрации на "%eventName%".
Если вы ничего об этом не знаете - просто проигнорируйте это письмо.
 
Если же все верно, и это вы зарегистрировались, то ваш регистрационный
номер: %ident%. Он понадобится, если вы захотите удалить регистрацию
или изменить свои данные.
 
Участие в "%eventName%" стоит %eventPrice% евро на одного взрослого.
Переведите, пожалуйста, деньги на счет:
 
%eventMoneyAccount%
 
В качестве Verwendungszweck укажите ваш номер, %ident%.
 
Если у вас есть вопросы, обращайтесь к организаторам
(%eventAdmins%) по адресу %eventEmail% или телефонам %eventPhones%
 
Если вы хотите еще раз посмотреть информацию о "%eventName%" или
изменить свои данные, то заходите на http://www.26th.net/kickup
/kickup/tags/release-1.0/src/ak/kickup/core/RemindMail.txt
0,0 → 1,16
Высылаем вам запрошенную информацию.
 
Регистрационный номер: %ident%.
 
Участие в "%eventName%" стоит %eventPrice% евро на одного взрослого.
Переведите, пожалуйста, деньги на счет:
 
%eventMoneyAccount%
 
В качестве Verwendungszweck укажите ваш номер, %ident%.
 
Если у вас есть вопросы, обращайтесь к организаторам
(%eventAdmins%) по адресу %eventEmail% или телефонам %eventPhones%
 
Если вы хотите еще раз посмотреть информацию о "%eventName%" или
изменить свои данные, то заходите на http://www.26th.net/kickup
/kickup/tags/release-1.0/src/ak/kickup/core/taglib/ExtendedLinkTag.java
0,0 → 1,244
// based on Jakarta Struts
package ak.kickup.core.taglib;
 
import java.net.MalformedURLException;
import java.util.Map;
import java.util.HashMap;
import javax.servlet.jsp.JspException;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.taglib.logic.IterateTag;
 
import ak.backpath.taglib.ForwardLinkTag;
 
public class ExtendedLinkTag
extends ForwardLinkTag
{
protected boolean backpath = false;
 
public boolean getBackpath()
{
return this.backpath;
}
 
public void setBackpath(boolean backpath)
{
this.backpath = backpath;
}
 
protected String paramId2 = null;
 
public String getParamId2()
{
return this.paramId2;
}
 
public void setParamId2(String paramId2)
{
this.paramId2 = paramId2;
}
 
protected String paramName2 = null;
 
public String getParamName2()
{
return this.paramName2;
}
 
public void setParamName2(String paramName2)
{
this.paramName2 = paramName2;
}
 
protected String paramProperty2 = null;
 
public String getParamProperty2()
{
return this.paramProperty2;
}
 
public void setParamProperty2(String paramProperty2)
{
this.paramProperty2 = paramProperty2;
}
 
protected String paramScope2 = null;
 
public String getParamScope2()
{
return this.paramScope2;
}
 
public void setParamScope2(String paramScope2)
{
this.paramScope2 = paramScope2;
}
 
protected String paramId3 = null;
 
public String getParamId3()
{
return this.paramId3;
}
 
public void setParamId3(String paramId3)
{
this.paramId3 = paramId3;
}
 
protected String paramName3 = null;
 
public String getParamName3()
{
return this.paramName3;
}
 
public void setParamName3(String paramName3)
{
this.paramName3 = paramName3;
}
 
protected String paramProperty3 = null;
 
public String getParamProperty3()
{
return this.paramProperty3;
}
 
public void setParamProperty3(String paramProperty3)
{
this.paramProperty3 = paramProperty3;
}
 
protected String paramScope3 = null;
 
public String getParamScope3()
{
return this.paramScope3;
}
 
public void setParamScope3(String paramScope3)
{
this.paramScope3 = paramScope3;
}
 
protected String paramId4 = null;
 
public String getParamId4()
{
return this.paramId4;
}
 
public void setParamId4(String paramId4)
{
this.paramId4 = paramId4;
}
 
protected String paramName4 = null;
 
public String getParamName4()
{
return this.paramName4;
}
 
public void setParamName4(String paramName4)
{
this.paramName4 = paramName4;
}
 
protected String paramProperty4 = null;
 
public String getParamProperty4()
{
return this.paramProperty4;
}
 
public void setParamProperty4(String paramProperty4)
{
this.paramProperty4 = paramProperty4;
}
 
protected String paramScope4 = null;
 
public String getParamScope4()
{
return this.paramScope4;
}
 
public void setParamScope4(String paramScope4)
{
this.paramScope4 = paramScope4;
}
 
public void release()
{
super.release();
backpath = false;
paramId2 = null;
paramName2 = null;
paramProperty2 = null;
paramScope2 = null;
paramId3 = null;
paramName3 = null;
paramProperty3 = null;
paramScope3 = null;
paramId4 = null;
paramName4 = null;
paramProperty4 = null;
paramScope4 = null;
}
 
protected String calculateURL()
throws JspException
{
Map params = RequestUtils.computeParameters(pageContext, paramId, paramName, paramProperty, paramScope,
name, property, scope, transaction);
 
Map params2 = RequestUtils.computeParameters(pageContext, paramId2, paramName2, paramProperty2, paramScope2,
null, null, null, false);
if(params2 != null) params.putAll(params2);
 
Map params3 = RequestUtils.computeParameters(pageContext, paramId3, paramName3, paramProperty3, paramScope3,
null, null, null, false);
if(params3 != null) params.putAll(params3);
 
Map params4 = RequestUtils.computeParameters(pageContext, paramId4, paramName4, paramProperty4, paramScope4,
null, null, null, false);
if(params4 != null) params.putAll(params4);
 
if(indexed) {
IterateTag iterateTag = (IterateTag) findAncestorWithClass(this, IterateTag.class);
if(iterateTag == null) {
JspException e = new JspException(messages.getMessage("indexed.noEnclosingIterate"));
RequestUtils.saveException(pageContext, e);
throw e;
}
 
if(params == null) params = new HashMap();
if(indexId != null)
params.put(indexId, Integer.toString(iterateTag.getIndex()));
else
params.put("index", Integer.toString(iterateTag.getIndex()));
}
 
String url = null;
try {
url = RequestUtils.computeURL(pageContext, forward, href, page, action, params, anchor, false);
}
catch(MalformedURLException ex) {
RequestUtils.saveException(pageContext, ex);
throw new JspException(messages.getMessage("rewrite.url", ex.toString()));
}
 
if(url == null || !backpath) return url;
 
// add backpath
String forwardParams = findBackPath().getForwardParams();
if(forwardParams == null) return url;
 
forwardParams = forwardParams.replaceAll("&", "&");
if(url.indexOf("?") > 0)
return url + "&" + backPathParam + "=" + forwardParams;
else
return url + "?" + backPathParam + "=" + forwardParams;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/taglib/CurrentLinkTag.java
0,0 → 1,231
// based on Jakarta Struts
package ak.kickup.core.taglib;
 
import java.net.MalformedURLException;
import java.util.Map;
import java.util.HashMap;
import javax.servlet.jsp.JspException;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.taglib.logic.IterateTag;
 
import ak.backpath.taglib.ForwardLinkTag;
 
public class CurrentLinkTag
extends ForwardLinkTag
{
protected String paramId2 = null;
 
public String getParamId2()
{
return this.paramId2;
}
 
public void setParamId2(String paramId2)
{
this.paramId2 = paramId2;
}
 
protected String paramName2 = null;
 
public String getParamName2()
{
return this.paramName2;
}
 
public void setParamName2(String paramName2)
{
this.paramName2 = paramName2;
}
 
protected String paramProperty2 = null;
 
public String getParamProperty2()
{
return this.paramProperty2;
}
 
public void setParamProperty2(String paramProperty2)
{
this.paramProperty2 = paramProperty2;
}
 
protected String paramScope2 = null;
 
public String getParamScope2()
{
return this.paramScope2;
}
 
public void setParamScope2(String paramScope2)
{
this.paramScope2 = paramScope2;
}
 
protected String paramId3 = null;
 
public String getParamId3()
{
return this.paramId3;
}
 
public void setParamId3(String paramId3)
{
this.paramId3 = paramId3;
}
 
protected String paramName3 = null;
 
public String getParamName3()
{
return this.paramName3;
}
 
public void setParamName3(String paramName3)
{
this.paramName3 = paramName3;
}
 
protected String paramProperty3 = null;
 
public String getParamProperty3()
{
return this.paramProperty3;
}
 
public void setParamProperty3(String paramProperty3)
{
this.paramProperty3 = paramProperty3;
}
 
protected String paramScope3 = null;
 
public String getParamScope3()
{
return this.paramScope3;
}
 
public void setParamScope3(String paramScope3)
{
this.paramScope3 = paramScope3;
}
 
protected String paramId4 = null;
 
public String getParamId4()
{
return this.paramId4;
}
 
public void setParamId4(String paramId4)
{
this.paramId4 = paramId4;
}
 
protected String paramName4 = null;
 
public String getParamName4()
{
return this.paramName4;
}
 
public void setParamName4(String paramName4)
{
this.paramName4 = paramName4;
}
 
protected String paramProperty4 = null;
 
public String getParamProperty4()
{
return this.paramProperty4;
}
 
public void setParamProperty4(String paramProperty4)
{
this.paramProperty4 = paramProperty4;
}
 
protected String paramScope4 = null;
 
public String getParamScope4()
{
return this.paramScope4;
}
 
public void setParamScope4(String paramScope4)
{
this.paramScope4 = paramScope4;
}
 
public void release()
{
super.release();
paramId2 = null;
paramName2 = null;
paramProperty2 = null;
paramScope2 = null;
paramId3 = null;
paramName3 = null;
paramProperty3 = null;
paramScope3 = null;
paramId4 = null;
paramName4 = null;
paramProperty4 = null;
paramScope4 = null;
}
 
protected String calculateURL()
throws JspException
{
Map params = RequestUtils.computeParameters(pageContext, paramId, paramName, paramProperty, paramScope,
name, property, scope, transaction);
 
Map params2 = RequestUtils.computeParameters(pageContext, paramId2, paramName2, paramProperty2, paramScope2,
null, null, null, false);
if(params2 != null) params.putAll(params2);
 
Map params3 = RequestUtils.computeParameters(pageContext, paramId3, paramName3, paramProperty3, paramScope3,
null, null, null, false);
if(params3 != null) params.putAll(params3);
 
Map params4 = RequestUtils.computeParameters(pageContext, paramId4, paramName4, paramProperty4, paramScope4,
null, null, null, false);
if(params4 != null) params.putAll(params4);
 
if(indexed) {
IterateTag iterateTag = (IterateTag) findAncestorWithClass(this, IterateTag.class);
if(iterateTag == null) {
JspException e = new JspException(messages.getMessage("indexed.noEnclosingIterate"));
RequestUtils.saveException(pageContext, e);
throw e;
}
 
if(params == null) params = new HashMap();
if(indexId != null)
params.put(indexId, Integer.toString(iterateTag.getIndex()));
else
params.put("index", Integer.toString(iterateTag.getIndex()));
}
 
String url = null;
try {
url = RequestUtils.computeURL(pageContext, forward, href, page, action, params, anchor, false);
}
catch(MalformedURLException ex) {
RequestUtils.saveException(pageContext, ex);
throw new JspException(messages.getMessage("rewrite.url", ex.toString()));
}
 
if(url == null) return null;
 
// add backpath
String currentParams = findBackPath().getCurrentParams();
if(currentParams == null) return url;
 
currentParams = currentParams.replaceAll("&", "&");
if(url.indexOf("?") > 0)
return url + "&" + backPathParam + "=" + currentParams;
else
return url + "?" + backPathParam + "=" + currentParams;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/taglib/ExtendedWriteTag.java
0,0 → 1,48
// based on Jakarta Struts
package ak.kickup.core.taglib;
 
import javax.servlet.jsp.JspException;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.util.ResponseUtils;
import org.apache.struts.taglib.bean.WriteTag;
 
public class ExtendedWriteTag extends WriteTag
{
protected boolean filterBr = false;
 
public boolean getFilterBr()
{
return filterBr;
}
 
public void setFilterBr(boolean filterBr)
{
this.filterBr = filterBr;
}
 
public int doStartTag()
throws JspException
{
if(ignore) {
if(RequestUtils.lookup(pageContext, name, scope) == null)
return SKIP_BODY;
}
 
Object value = RequestUtils.lookup(pageContext, name, property, scope);
if(value == null) return SKIP_BODY;
 
String output = formatValue(value);
if(filter) output = ResponseUtils.filter(output);
if(filterBr) output = output.replaceAll("\n", "<br>");
 
ResponseUtils.write(pageContext, output);
 
return SKIP_BODY;
}
 
public void release()
{
super.release();
filterBr = false;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/CoreResources.properties
0,0 → 1,49
ak.kickup.core.act.name.nonunique=Мероприятие с таким названием уже существует
ak.kickup.core.apartment.name.nonunique=Гостиница с таким названием уже существует
ak.kickup.core.event.name.nonunique=Пьянка с таким названием уже существует
ak.kickup.core.participant.email.nonunique=Этот e-mail уже зарегистрирован на эту пьянку. Если вы забыли свой номер - обратитесь к организаторам.
ak.kickup.core.participant.email.nonunique.admin=Этот e-mail уже зарегистрирован на эту пьянку
ak.kickup.core.access.denied=Сюда нельзя!
ak.kickup.core.event.edit.id.wrong=Неизвестная пьянка, выбирайти из списка
ak.kickup.core.event.edit.name.required=Название обязательно
ak.kickup.core.event.edit.admins.required=Имена организаторов обязательны
ak.kickup.core.event.edit.email.required=e-mail обязателен
ak.kickup.core.event.edit.email.wrong=Некорректный e-mail
ak.kickup.core.event.edit.start.wrong=Дата начала должна быть в виде ДД.ММ.ГГГГ
ak.kickup.core.event.edit.stop.wrong=Дата окончания должна быть в виде ДД.ММ.ГГГГ
ak.kickup.core.event.edit.lastreg.wrong=Дата окончания регистрации должна быть в виде ДД.ММ.ГГГГ
ak.kickup.core.event.edit.lastunreg.wrong=Последний срок отказа должен быть в виде ДД.ММ.ГГГГ
ak.kickup.core.event.edit.price.wrong=Цена должна быть числом, например 12,35
ak.kickup.core.event.edit.distance.wrong=Расстояние должно быть числом, например 4,5
ak.kickup.core.act.edit.id.wrong=Неизвестное мероприятие, выбирайти из списка
ak.kickup.core.act.edit.name.required=Название обязательно
ak.kickup.core.act.delete.usedbyevent=Это мероприятие используется в пьянках, не могу удалить
ak.kickup.core.act.delete.usedbyparticipant=Это мероприятие используется участниками, не могу удалить
ak.kickup.core.apartment.edit.id.wrong=Неизвестная гостиница, выбирайти из списка
ak.kickup.core.apartment.edit.name.required=Название обязательно
ak.kickup.core.apartment.edit.price.wrong=Цена должна быть числом, например 12,35
ak.kickup.core.apartment.delete.usedbyevent=Эта гостиница используется в пьянках, не могу удалить
ak.kickup.core.participant.edit.id.wrong=Неизвестный участник, выбирайти из списка
ak.kickup.core.participant.edit.event.wrong=Неизвестная пьянка, выбирайти из списка
ak.kickup.core.participant.edit.nick.required=Ник обязателен
ak.kickup.core.participant.edit.email.required=e-mail обязателен
ak.kickup.core.participant.edit.email.wrong=Некорректный e-mail
ak.kickup.core.participant.edit.persons.required=Количество не указано
ak.kickup.core.participant.edit.persons.wrong=Количество должно быть положительным целым числом
ak.kickup.core.participant.edit.freetransport.wrong=Количество мест в машине должно быть целым числом
ak.kickup.core.participant.edit.departure.wrong=Время отправления дожно быть, например, 20.10.2004 13:55
ak.kickup.core.participant.edit.freesleep.wrong=Количество спальных мест должно быть целым числом
ak.kickup.core.participant.edit.ident.required=Вы не указали ваш номер
ak.kickup.core.participant.edit.ident.wrong=Неизвестный номер
ak.kickup.core.participant.edit.registration.unavailable=Время регистрации прошло
ak.kickup.core.participant.edit.unregistration.unavailable=Время отмены регистрации прошло
ak.kickup.core.participant.edit.payed.wrong=Оплаченная сумма должна быть числом, например 12,35
ak.kickup.core.participant.remind.email.required=Вы не указали свой e-mail
ak.kickup.core.participant.remind.email.wrong=Некорректный e-mail
ak.kickup.core.participant.remind.email.notfound=Этот e-mail не зарегистрирован
ak.kickup.core.mail.send.error=Не могу отправить вам e-mail. Проверьте свой адрес и обратитесь к организаторам.
ak.kickup.core.mail.read.error=Не могу отправить вам e-mail. Ошибка в системе.
ak.kickup.core.mail.subject=Registration for {0}
ak.kickup.core.remindmail.subject=Registration number remind for {0}
 
org.apache.struts.taglib.bean.format.sql.timestamp=dd.MM.yyyy HH:mm:ss.SSS
/kickup/tags/release-1.0/src/ak/kickup/core/mail/Messages.java
0,0 → 1,116
package ak.kickup.core.mail;
 
import java.util.*;
import java.io.*;
import java.text.MessageFormat;
 
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
 
import ak.kickup.util.UserException;
import ak.kickup.util.StringConverter;
import ak.kickup.core.model.Participant;
 
public abstract class Messages
{
public static final String HOST = "localhost";
public static final String CHARSET = "windows-1251";
 
public static void send(String from, String to, String subject, String body)
throws UserException
{
try {
Properties props = new Properties();
props.put("mail.smtp.host", HOST);
 
Session session = Session.getInstance(props, null);
MimeMessage msg = new MimeMessage(session);
InternetAddress[] address = { new InternetAddress(to) };
 
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject, CHARSET);
msg.setSentDate(new Date());
msg.setText(body, CHARSET);
 
Transport.send(msg);
}
catch(Exception ex) {
throw new UserException("ak.kickup.core.mail.send.error");
}
}
 
public static void sendRegistrationMessage(Participant participant, String ip)
throws UserException
{
prepareMail(participant, ip, "ak.kickup.core.mail.subject", "ak/kickup/core/RegistrationMail.txt");
}
 
public static void sendRemindMessage(Participant participant, String ip)
throws UserException
{
prepareMail(participant, ip, "ak.kickup.core.remindmail.subject", "ak/kickup/core/RemindMail.txt");
}
 
private static void prepareMail(Participant participant, String ip, String subjectKey, String messageFile)
throws UserException
{
String subject;
StringBuffer message = new StringBuffer();
 
// get subject
ResourceBundle res = ResourceBundle.getBundle("ak/kickup/core/CoreResources");
String subjectString = res.getString(subjectKey);
subject = MessageFormat.format(subjectString,
new String[] { participant.getEvent().getName() } );
 
// read message template
try {
ClassLoader cl = Messages.class.getClassLoader();
if(cl == null) cl = ClassLoader.getSystemClassLoader();
 
BufferedReader file = new BufferedReader(new InputStreamReader(cl.getResourceAsStream(
messageFile), "UTF-8"));
char[] buf = new char[2048];
int bufLen;
while((bufLen = file.read(buf)) >= 0) {
message.append(buf);
}
}
catch(Exception ex) {
throw new UserException("ak.kickup.core.mail.read.error");
}
 
// replace tokens
replace(message, "ident", participant.getIdent());
replace(message, "eventName", participant.getEvent().getName());
replace(message, "eventPrice",
StringConverter.toCurrency(participant.getEvent().getPrice()));
replace(message, "eventMoneyAccount", participant.getEvent().getMoneyAccount());
replace(message, "eventAdmins", participant.getEvent().getAdmins());
replace(message, "eventEmail", participant.getEvent().getEmail());
replace(message, "eventPhones", participant.getEvent().getPhones());
replace(message, "", "%");
 
// send message
send(participant.getEvent().getEmail(), participant.getEmail(),
subject, message.toString());
}
 
private static void replace(StringBuffer message, String token, String value)
{
if(value == null) value = "";
 
String s = "%" + token + "%";
int slen = s.length();
int vlen = value.length();
int pos = 0;
while((pos = message.indexOf(s, pos)) >= 0) {
message.replace(pos, pos + slen, value);
pos += vlen;
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/ParticipantAction.java
0,0 → 1,343
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.strutsx.RequestUtilsX;
import ak.strutsx.ErrorHandlerX;
 
import ak.kickup.util.StringConverter;
import ak.kickup.util.UserException;
import ak.kickup.util.ModelSecurityException;
import ak.kickup.core.model.Participant;
import ak.kickup.core.model.ParticipantManager;
import ak.kickup.core.model.Event;
import ak.kickup.core.model.EventManager;
import ak.kickup.core.model.ParticipantAct;
import ak.kickup.core.model.EventAct;
import ak.kickup.core.form.ParticipantActBean;
import ak.kickup.core.mail.Messages;
 
public final class ParticipantAction
extends Action
implements ErrorHandlerX
{
public void handleErrors(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if("submit".equals(mapping.getParameter()) || "update".equals(mapping.getParameter())
|| "unregister".equals(mapping.getParameter()) || "login".equals(mapping.getParameter())
|| "remind".equals(mapping.getParameter()))
{
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = (eventId == null)
? null : EventManager.getInstance().get(eventId, true);
request.setAttribute("event", event);
 
if("submit".equals(mapping.getParameter()) || "update".equals(mapping.getParameter()))
initLists(request, event);
}
 
if("update".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
String ident = ((String)theForm.get("ident")).trim();
request.setAttribute("participant",
(ident == null) ? null : ParticipantManager.getInstance().findForIdent(ident));
}
}
 
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if("list".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
List list = new ArrayList(event.getParticipantCollection());
Collections.sort(list, ParticipantManager.NICK_COMPARATOR);
request.setAttribute("participants", list);
request.setAttribute("event", event);
return mapping.findForward("default");
}
else if("ident".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
request.setAttribute("event", event);
return mapping.findForward("default");
}
else if("register".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
this, request, "ParticipantRegisterForm");
 
showForm.set("emailPublic", Boolean.TRUE);
 
// acts
List acts = new ArrayList(event.getActCollection());
ParticipantActBean[] a = new ParticipantActBean[acts.size()];
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR);
for(int i = 0; i < acts.size(); i++) {
EventAct act = (EventAct)acts.get(i);
a[i] = new ParticipantActBean(act.getAct(), null);
}
showForm.set("acts", a);
 
request.setAttribute("event", event);
initLists(request, event);
return mapping.findForward("default");
}
else if("login".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
String ident = ((String)theForm.get("ident")).trim();
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
this, request, "ParticipantRegisterEditForm");
 
request.setAttribute("event", event);
 
Participant participant = ParticipantManager.getInstance().findForIdent(ident);
if(participant == null) {
Thread.sleep(1000);
throw new UserException("ak.kickup.core.participant.edit.ident.wrong");
}
 
// acts
List acts = new ArrayList(event.getActCollection());
ParticipantActBean[] a = new ParticipantActBean[acts.size()];
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR);
for(int i = 0; i < acts.size(); i++) {
EventAct act = (EventAct)acts.get(i);
a[i] = new ParticipantActBean(act.getAct(),
participant.getAct(act.getAct().getId()));
}
showForm.set("acts", a);
 
// others
showForm.set("emailPublic", participant.getEmailPublic());
showForm.set("name", participant.getName());
showForm.set("phone", participant.getPhone());
showForm.set("persons", StringConverter.toString(participant.getPersons()));
showForm.set("fromZip", participant.getFromZip());
showForm.set("fromCity", participant.getFromCity());
showForm.set("departure", StringConverter.toDateTime(participant.getDeparture()));
showForm.set("freeTransport", StringConverter.toString(participant.getFreeTransport()));
showForm.set("transportComment", participant.getTransportComment());
showForm.set("freeSleep", StringConverter.toString(participant.getFreeSleep()));
showForm.set("sleepComment", participant.getSleepComment());
showForm.set("comment", participant.getComment());
 
request.setAttribute("participant", participant);
initLists(request, event);
return mapping.findForward("default");
}
else if("unregister".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
String ident = ((String)theForm.get("ident")).trim();
Participant participant = ParticipantManager.getInstance().findForIdent(ident);
 
request.setAttribute("event", event);
 
if(participant == null) {
Thread.sleep(1000);
throw new UserException("ak.kickup.core.participant.edit.ident.wrong");
}
 
if(!event.isUnregistrationAvailable()) {
throw new UserException(
"ak.kickup.core.participant.edit.unregistration.unavailable");
}
 
ParticipantManager.getInstance().delete(participant);
return mapping.findForward("default");
}
else if("submit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
Participant participant = ParticipantManager.getInstance().create();
 
if(!event.isRegistrationAvailable()) {
request.setAttribute("event", event);
throw new UserException(
"ak.kickup.core.participant.edit.registration.unavailable");
}
 
// acts
ParticipantActBean[] acts = (ParticipantActBean[])theForm.get("acts");
for(int i = 0; i < acts.length; i++) {
// get bean
Long actId = StringConverter.parseLong(acts[i].getActId());
EventAct act = event.getAct(actId);
ParticipantAct participantAct = participant.getAct(actId);
 
if(acts[i].getSelected() == null || !acts[i].getSelected().booleanValue()) {
if(participantAct != null) participant.removeAct(participantAct);
}
else {
if(participantAct == null) {
participantAct = ParticipantManager.getInstance().createAct();
participantAct.setParticipant(participant);
participantAct.setAct(act.getAct());
participant.addAct(participantAct);
}
participantAct.setComment(acts[i].getComment());
}
}
 
// bind
participant.setIdent(ParticipantManager.getInstance().generateIdent());
participant.setEvent(event);
 
// email
String email = (String)theForm.get("email");
if(ParticipantManager.getInstance().emailExists(participant, email)) {
request.setAttribute("event", event);
initLists(request, event);
throw new UserException("ak.kickup.core.participant.email.nonunique");
}
participant.setEmail(email);
 
// others
participant.setNick((String)theForm.get("nick"));
participant.setEmailPublic((Boolean)theForm.get("emailPublic"));
participant.setName((String)theForm.get("name"));
participant.setPhone((String)theForm.get("phone"));
participant.setPersons(StringConverter.parseInteger(theForm.get("persons")));
participant.setFromZip((String)theForm.get("fromZip"));
participant.setFromCity((String)theForm.get("fromCity"));
participant.setDeparture(StringConverter.parseDateTime(theForm.get("departure")));
participant.setFreeTransport(StringConverter.parseInteger(theForm.get("freeTransport")));
participant.setTransportComment((String)theForm.get("transportComment"));
participant.setFreeSleep(StringConverter.parseInteger(theForm.get("freeSleep")));
participant.setSleepComment((String)theForm.get("sleepComment"));
participant.setComment((String)theForm.get("comment"));
 
ParticipantManager.getInstance().save(participant);
 
try {
Messages.sendRegistrationMessage(participant, request.getRemoteAddr());
}
catch(Exception ex) {
request.setAttribute("event", event);
initLists(request, event);
throw ex;
}
 
request.setAttribute("event", event);
request.setAttribute("participant", participant);
return mapping.findForward("default");
}
else if("update".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
String ident = ((String)theForm.get("ident")).trim();
Participant participant = ParticipantManager.getInstance().findForIdent(ident);
 
if(participant == null) {
Thread.sleep(1000);
request.setAttribute("event", event);
throw new ModelSecurityException();
}
 
// acts
ParticipantActBean[] acts = (ParticipantActBean[])theForm.get("acts");
for(int i = 0; i < acts.length; i++) {
// get bean
Long actId = StringConverter.parseLong(acts[i].getActId());
EventAct act = event.getAct(actId);
ParticipantAct participantAct = participant.getAct(actId);
 
if(acts[i].getSelected() == null || !acts[i].getSelected().booleanValue()) {
if(participantAct != null) participant.removeAct(participantAct);
}
else {
if(participantAct == null) {
participantAct = ParticipantManager.getInstance().createAct();
participantAct.setParticipant(participant);
participantAct.setAct(act.getAct());
participant.addAct(participantAct);
}
participantAct.setComment(acts[i].getComment());
}
}
 
// others
participant.setEmailPublic((Boolean)theForm.get("emailPublic"));
participant.setName((String)theForm.get("name"));
participant.setPhone((String)theForm.get("phone"));
participant.setPersons(StringConverter.parseInteger(theForm.get("persons")));
participant.setFromZip((String)theForm.get("fromZip"));
participant.setFromCity((String)theForm.get("fromCity"));
participant.setDeparture(StringConverter.parseDateTime(theForm.get("departure")));
participant.setFreeTransport(StringConverter.parseInteger(theForm.get("freeTransport")));
participant.setTransportComment((String)theForm.get("transportComment"));
participant.setFreeSleep(StringConverter.parseInteger(theForm.get("freeSleep")));
participant.setSleepComment((String)theForm.get("sleepComment"));
participant.setComment((String)theForm.get("comment"));
 
ParticipantManager.getInstance().save(participant);
 
request.setAttribute("event", event);
request.setAttribute("participant", participant);
return mapping.findForward("default");
}
else if("remind".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
String email = ((String)theForm.get("email")).trim();
 
request.setAttribute("event", event);
 
Participant participant = ParticipantManager.getInstance().findForEmail(email);
 
if(participant == null) {
Thread.sleep(1000);
throw new UserException("ak.kickup.core.participant.remind.email.notfound");
}
 
try {
Messages.sendRemindMessage(participant, request.getRemoteAddr());
}
catch(Exception ex) {
throw ex;
}
 
return mapping.findForward("default");
}
else {
throw new Exception("unknown mapping parameter");
}
}
 
private void initLists(HttpServletRequest request, Event event)
throws Exception
{
List acts = new ArrayList(event.getActCollection());
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR);
request.setAttribute("actList", new ObjectList(acts));
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/EventAction.java
0,0 → 1,59
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.strutsx.RequestUtilsX;
import ak.strutsx.ErrorHandlerX;
 
import ak.kickup.util.StringConverter;
import ak.kickup.util.UserException;
import ak.kickup.core.model.Event;
import ak.kickup.core.model.EventManager;
 
public final class EventAction
extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if("list".equals(mapping.getParameter())) {
List list = new ArrayList(EventManager.getInstance().listEvents(true));
Collections.sort(list, EventManager.START_COMPARATOR);
request.setAttribute("events", list);
return mapping.findForward("default");
}
else if("show".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("id"));
Event event = EventManager.getInstance().get(eventId, true);
List acts = new ArrayList(event.getActCollection());
List apartments = new ArrayList(event.getApartmentCollection());
 
request.setAttribute("event", event);
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR);
request.setAttribute("acts", acts);
Collections.sort(apartments, EventManager.APARTMENT_NAME_COMPARATOR);
request.setAttribute("apartments", apartments);
 
return mapping.findForward("default");
}
else {
throw new Exception("unknown mapping parameter");
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/ActAction.java
0,0 → 1,62
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.strutsx.RequestUtilsX;
import ak.strutsx.ErrorHandlerX;
 
import ak.kickup.util.StringConverter;
import ak.kickup.util.UserException;
import ak.kickup.util.ModelSecurityException;
import ak.kickup.core.model.Participant;
import ak.kickup.core.model.ParticipantManager;
import ak.kickup.core.model.Event;
import ak.kickup.core.model.EventManager;
import ak.kickup.core.model.ParticipantAct;
import ak.kickup.core.model.EventAct;
import ak.kickup.core.mail.Messages;
 
public final class ActAction
extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if("list".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
Long actId = StringConverter.parseLong(theForm.get("act"));
EventAct act = event.getAct(actId);
List list;
 
if(act == null) throw new UserException("ak.kickup.core.act.edit.id.wrong");
 
list = new ArrayList(ParticipantManager.getInstance().listForAct(act));
Collections.sort(list, ParticipantManager.ACT_NICK_COMPARATOR);
request.setAttribute("list", list);
request.setAttribute("event", event);
request.setAttribute("act", act);
 
return mapping.findForward("default");
}
else {
throw new Exception("unknown mapping parameter");
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/AdminEventAction.java
0,0 → 1,232
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.strutsx.RequestUtilsX;
import ak.strutsx.ErrorHandlerX;
import ak.backpath.BackPath;
 
import ak.kickup.util.StringConverter;
import ak.kickup.util.UserException;
import ak.kickup.core.model.Event;
import ak.kickup.core.model.EventManager;
import ak.kickup.core.model.EventAct;
import ak.kickup.core.model.EventApartment;
import ak.kickup.core.model.Act;
import ak.kickup.core.model.ActManager;
import ak.kickup.core.model.Apartment;
import ak.kickup.core.model.ApartmentManager;
import ak.kickup.core.form.EventActBean;
import ak.kickup.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
{
if("list".equals(mapping.getParameter())) {
List list = new ArrayList(EventManager.getInstance().listEvents(false));
Collections.sort(list, EventManager.START_COMPARATOR);
request.setAttribute("events", list);
return mapping.findForward("default");
}
else if("edit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("id"));
Event event;
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) {
event = EventManager.getInstance().create();
showForm.set("enabled", Boolean.TRUE);
}
else {
event = EventManager.getInstance().get(eventId, false);
showForm.set("name", event.getName());
showForm.set("email", event.getEmail());
showForm.set("admins", event.getAdmins());
showForm.set("phones", event.getPhones());
showForm.set("place", event.getPlace());
showForm.set("address", event.getAddress());
showForm.set("transport", event.getTransportDesc());
showForm.set("start", StringConverter.toDate(event.getStart()));
showForm.set("stop", StringConverter.toDate(event.getStop()));
showForm.set("lastreg", StringConverter.toDate(event.getLastRegister()));
showForm.set("lastunreg", StringConverter.toDate(event.getLastUnregister()));
showForm.set("price", StringConverter.toCurrency(event.getPrice()));
showForm.set("account", event.getMoneyAccount());
showForm.set("enabled", event.getEnabled());
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++) {
Act act = (Act)acts.get(i);
a[i] = new EventActBean(act, event.getAct(act.getId()));
}
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())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("id"));
Event event = EventManager.getInstance().get(eventId, false);
 
EventManager.getInstance().delete(event);
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
return null;
}
else if("submit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("id"));
Event event;
 
if(eventId == null) {
event = EventManager.getInstance().create();
}
else {
event = EventManager.getInstance().get(eventId, false);
}
 
// acts
EventActBean[] acts = (EventActBean[])theForm.get("acts");
for(int i = 0; i < acts.length; i++) {
// 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++) {
// 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);
}
 
try {
eventApartment.setDistance(StringConverter.parseNumber(apartments[i].getDistance()));
}
catch(Exception ex) { // the distance cannot be parsed
initLists(request);
throw new UserException("ak.kickup.core.event.edit.distance.wrong");
}
 
eventApartment.setComment(apartments[i].getComment());
}
}
 
// name
String name = (String)theForm.get("name");
if(EventManager.getInstance().nameExists(event, name)) {
initLists(request);
throw new UserException("ak.kickup.core.event.name.nonunique");
}
event.setName(name);
 
// others
event.setEmail((String)theForm.get("email"));
event.setAdmins((String)theForm.get("admins"));
event.setPhones((String)theForm.get("phones"));
event.setPlace((String)theForm.get("place"));
event.setAddress((String)theForm.get("address"));
event.setTransportDesc((String)theForm.get("transport"));
event.setStart(StringConverter.parseDate(theForm.get("start")));
event.setStop(StringConverter.parseDate(theForm.get("stop")));
event.setLastRegister(StringConverter.parseDate(theForm.get("lastreg")));
event.setLastUnregister(StringConverter.parseDate(theForm.get("lastunreg")));
event.setPrice(StringConverter.parseCurrency(theForm.get("price")));
event.setMoneyAccount((String)theForm.get("account"));
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;
}
else {
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));
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/AdminParticipantAction.java
0,0 → 1,235
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.strutsx.RequestUtilsX;
import ak.strutsx.ErrorHandlerX;
import ak.backpath.BackPath;
 
import ak.kickup.util.StringConverter;
import ak.kickup.util.UserException;
import ak.kickup.core.model.Participant;
import ak.kickup.core.model.ParticipantManager;
import ak.kickup.core.model.Event;
import ak.kickup.core.model.EventManager;
import ak.kickup.core.model.ParticipantAct;
import ak.kickup.core.model.EventAct;
import ak.kickup.core.form.ParticipantActBean;
import ak.kickup.core.mail.Messages;
 
public final class AdminParticipantAction
extends Action
implements ErrorHandlerX
{
public void handleErrors(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if("submit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
if(eventId != null) {
Event event = EventManager.getInstance().get(eventId, false);
Long participantId = StringConverter.parseLong(theForm.get("id"));
Participant participant;
if(participantId == null) {
participant = ParticipantManager.getInstance().create();
}
else {
participant = ParticipantManager.getInstance().get(participantId);
}
request.setAttribute("event", event);
request.setAttribute("participant", participant);
 
initLists(request, event);
// 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
{
if("list".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, false);
List list = new ArrayList(event.getParticipantCollection());
Collections.sort(list, ParticipantManager.NICK_COMPARATOR);
request.setAttribute("participants", list);
request.setAttribute("event", event);
return mapping.findForward("default");
}
else if("edit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, false);
Long participantId = StringConverter.parseLong(theForm.get("id"));
Participant participant;
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
this, request, "ParticipantEditForm");
 
if(participantId == null) {
participant = ParticipantManager.getInstance().create();
}
else {
participant = ParticipantManager.getInstance().get(participantId);
showForm.set("nick", participant.getNick());
showForm.set("email", participant.getEmail());
showForm.set("emailPublic", participant.getEmailPublic());
showForm.set("name", participant.getName());
showForm.set("phone", participant.getPhone());
showForm.set("persons", StringConverter.toString(participant.getPersons()));
showForm.set("fromZip", participant.getFromZip());
showForm.set("fromCity", participant.getFromCity());
showForm.set("departure", StringConverter.toDateTime(participant.getDeparture()));
showForm.set("freeTransport", StringConverter.toString(participant.getFreeTransport()));
showForm.set("transportComment", participant.getTransportComment());
showForm.set("freeSleep", StringConverter.toString(participant.getFreeSleep()));
showForm.set("sleepComment", participant.getSleepComment());
showForm.set("payed", StringConverter.toCurrency(participant.getPayed()));
showForm.set("comment", participant.getComment());
showForm.set("privateComment", participant.getPrivateComment());
}
 
// acts
List acts = new ArrayList(event.getActCollection());
ParticipantActBean[] a = new ParticipantActBean[acts.size()];
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR);
for(int i = 0; i < acts.size(); i++) {
EventAct act = (EventAct)acts.get(i);
a[i] = new ParticipantActBean(act.getAct(),
participant.getAct(act.getAct().getId()));
}
showForm.set("acts", a);
 
initLists(request, event);
request.setAttribute("event", event);
request.setAttribute("participant", participant);
return mapping.findForward("default");
}
else if("delete".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long participantId = StringConverter.parseLong(theForm.get("id"));
Participant participant = ParticipantManager.getInstance().get(participantId);
 
ParticipantManager.getInstance().delete(participant);
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
return null;
}
else if("submit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long participantId = StringConverter.parseLong(theForm.get("id"));
Participant participant;
Event event;
boolean newParticipant;
 
// get instance
if(participantId == null) {
Long eventId = StringConverter.parseLong(theForm.get("event"));
event = EventManager.getInstance().get(eventId, false);
 
participant = ParticipantManager.getInstance().create();
participant.setIdent(ParticipantManager.getInstance().generateIdent());
participant.setEvent(event);
newParticipant = true;
}
else {
participant = ParticipantManager.getInstance().get(participantId);
event = participant.getEvent();
newParticipant = false;
}
 
// acts
ParticipantActBean[] acts = (ParticipantActBean[])theForm.get("acts");
for(int i = 0; i < acts.length; i++) {
// get bean
Long actId = StringConverter.parseLong(acts[i].getActId());
EventAct act = event.getAct(actId);
ParticipantAct participantAct = participant.getAct(actId);
 
if(acts[i].getSelected() == null || !acts[i].getSelected().booleanValue()) {
if(participantAct != null) participant.removeAct(participantAct);
}
else {
if(participantAct == null) {
participantAct = ParticipantManager.getInstance().createAct();
participantAct.setParticipant(participant);
participantAct.setAct(act.getAct());
participant.addAct(participantAct);
}
participantAct.setComment(acts[i].getComment());
}
}
 
// email
String email = (String)theForm.get("email");
if(ParticipantManager.getInstance().emailExists(participant, email)) {
request.setAttribute("event", event);
request.setAttribute("participant", participant);
initLists(request, event);
throw new UserException("ak.kickup.core.participant.email.nonunique.admin");
}
participant.setEmail(email);
 
// others
participant.setNick((String)theForm.get("nick"));
participant.setEmailPublic((Boolean)theForm.get("emailPublic"));
participant.setName((String)theForm.get("name"));
participant.setPhone((String)theForm.get("phone"));
participant.setPersons(StringConverter.parseInteger(theForm.get("persons")));
participant.setFromZip((String)theForm.get("fromZip"));
participant.setFromCity((String)theForm.get("fromCity"));
participant.setDeparture(StringConverter.parseDateTime(theForm.get("departure")));
participant.setFreeTransport(StringConverter.parseInteger(theForm.get("freeTransport")));
participant.setTransportComment((String)theForm.get("transportComment"));
participant.setFreeSleep(StringConverter.parseInteger(theForm.get("freeSleep")));
participant.setSleepComment((String)theForm.get("sleepComment"));
participant.setPayed(StringConverter.parseCurrency(theForm.get("payed")));
participant.setComment((String)theForm.get("comment"));
participant.setPrivateComment((String)theForm.get("privateComment"));
 
ParticipantManager.getInstance().save(participant);
if(newParticipant) {
try {
Messages.sendRegistrationMessage(participant, null);
}
catch(Exception ex) {
request.setAttribute("event", event);
request.setAttribute("participant", participant);
initLists(request, event);
throw ex;
}
}
 
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
return null;
}
else {
throw new Exception("unknown mapping parameter");
}
}
 
private void initLists(HttpServletRequest request, Event event)
throws Exception
{
List acts = new ArrayList(event.getActCollection());
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR);
request.setAttribute("actList", new ObjectList(acts));
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/TransportAction.java
0,0 → 1,41
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.kickup.util.StringConverter;
import ak.kickup.core.model.Event;
import ak.kickup.core.model.EventManager;
import ak.kickup.core.model.Participant;
import ak.kickup.core.model.ParticipantManager;
 
public final class TransportAction
extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
List list = new ArrayList(ParticipantManager.getInstance().listFreeTransport(event));
Collections.sort(list, ParticipantManager.FROM_ZIP_COMPARATOR);
request.setAttribute("participants", list);
request.setAttribute("event", event);
return mapping.findForward("default");
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/AdminApartmentAction.java
0,0 → 1,106
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.strutsx.RequestUtilsX;
import ak.strutsx.ErrorHandlerX;
import ak.backpath.BackPath;
 
import ak.kickup.util.StringConverter;
import ak.kickup.util.UserException;
import ak.kickup.core.model.Apartment;
import ak.kickup.core.model.ApartmentManager;
import ak.kickup.core.model.EventManager;
 
public final class AdminApartmentAction
extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if("list".equals(mapping.getParameter())) {
List list = new ArrayList(ApartmentManager.getInstance().listApartments());
Collections.sort(list, ApartmentManager.NAME_COMPARATOR);
request.setAttribute("apartments", list);
return mapping.findForward("default");
}
else if("edit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long apartmentId = StringConverter.parseLong(theForm.get("id"));
Apartment apartment;
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
this, request, "ApartmentEditForm");
 
if(apartmentId == null) {
apartment = ApartmentManager.getInstance().create();
}
else {
apartment = ApartmentManager.getInstance().get(apartmentId);
showForm.set("name", apartment.getName());
showForm.set("address", apartment.getAddress());
showForm.set("price", StringConverter.toCurrency(apartment.getPrice()));
showForm.set("url", apartment.getUrl());
showForm.set("comment", apartment.getComment());
}
 
return mapping.findForward("default");
}
else if("delete".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long apartmentId = StringConverter.parseLong(theForm.get("id"));
Apartment apartment = ApartmentManager.getInstance().get(apartmentId);
 
if(!EventManager.getInstance().allowDeleteApartment(apartment))
throw new UserException("ak.kickup.core.apartment.delete.usedbyevent");
 
ApartmentManager.getInstance().delete(apartment);
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
return null;
}
else if("submit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long apartmentId = StringConverter.parseLong(theForm.get("id"));
Apartment apartment;
 
if(apartmentId == null) {
apartment = ApartmentManager.getInstance().create();
}
else {
apartment = ApartmentManager.getInstance().get(apartmentId);
}
 
String name = (String)theForm.get("name");
if(ApartmentManager.getInstance().nameExists(apartment, name)) {
throw new UserException("ak.kickup.core.apartment.name.nonunique");
}
apartment.setName(name);
 
apartment.setAddress((String)theForm.get("address"));
apartment.setPrice(StringConverter.parseCurrency(theForm.get("price")));
apartment.setUrl((String)theForm.get("url"));
apartment.setComment((String)theForm.get("comment"));
 
ApartmentManager.getInstance().save(apartment);
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
return null;
}
else {
throw new Exception("unknown mapping parameter");
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/AdminActAction.java
0,0 → 1,104
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.strutsx.RequestUtilsX;
import ak.strutsx.ErrorHandlerX;
import ak.backpath.BackPath;
 
import ak.kickup.util.StringConverter;
import ak.kickup.util.UserException;
import ak.kickup.core.model.Act;
import ak.kickup.core.model.ActManager;
import ak.kickup.core.model.EventManager;
import ak.kickup.core.model.ParticipantManager;
 
public final class AdminActAction
extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
if("list".equals(mapping.getParameter())) {
List list = new ArrayList(ActManager.getInstance().listActs());
Collections.sort(list, ActManager.NAME_COMPARATOR);
request.setAttribute("acts", list);
return mapping.findForward("default");
}
else if("edit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long actId = StringConverter.parseLong(theForm.get("id"));
Act act;
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
this, request, "ActEditForm");
 
if(actId == null) {
act = ActManager.getInstance().create();
}
else {
act = ActManager.getInstance().get(actId);
showForm.set("name", act.getName());
showForm.set("comment", act.getComment());
}
 
return mapping.findForward("default");
}
else if("delete".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long actId = StringConverter.parseLong(theForm.get("id"));
Act act = ActManager.getInstance().get(actId);
 
if(!EventManager.getInstance().allowDeleteAct(act))
throw new UserException("ak.kickup.core.act.delete.usedbyevent");
 
if(!ParticipantManager.getInstance().allowDeleteAct(act))
throw new UserException("ak.kickup.core.act.delete.usedbyparticipant");
 
ActManager.getInstance().delete(act);
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
return null;
}
else if("submit".equals(mapping.getParameter())) {
DynaActionForm theForm = (DynaActionForm)form;
Long actId = StringConverter.parseLong(theForm.get("id"));
Act act;
 
if(actId == null) {
act = ActManager.getInstance().create();
}
else {
act = ActManager.getInstance().get(actId);
}
 
String name = (String)theForm.get("name");
if(ActManager.getInstance().nameExists(act, name)) {
throw new UserException("ak.kickup.core.act.name.nonunique");
}
act.setName(name);
 
act.setComment((String)theForm.get("comment"));
 
ActManager.getInstance().save(act);
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
return null;
}
else {
throw new Exception("unknown mapping parameter");
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/ApartmentAction.java
0,0 → 1,46
package ak.kickup.core.action;
 
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
 
import ak.kickup.util.StringConverter;
import ak.kickup.core.model.Event;
import ak.kickup.core.model.EventManager;
import ak.kickup.core.model.Participant;
import ak.kickup.core.model.ParticipantManager;
 
public final class ApartmentAction
extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
DynaActionForm theForm = (DynaActionForm)form;
Long eventId = StringConverter.parseLong(theForm.get("event"));
Event event = EventManager.getInstance().get(eventId, true);
List list = new ArrayList(ParticipantManager.getInstance().listFreeSleep(event));
List apartments = new ArrayList(event.getApartmentCollection());
 
Collections.sort(list, ParticipantManager.NICK_COMPARATOR);
request.setAttribute("participants", list);
request.setAttribute("event", event);
Collections.sort(apartments, EventManager.APARTMENT_NAME_COMPARATOR);
request.setAttribute("apartments", apartments);
 
return mapping.findForward("default");
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/ObjectList.java
0,0 → 1,23
package ak.kickup.core.action;
 
import java.util.List;
 
public class ObjectList
{
private List objects;
 
public ObjectList(List objects)
{
this.objects = objects;
}
 
public List getObjects()
{
return objects;
}
 
public void setObjects(List objects)
{
this.objects = objects;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/action/UserExceptionHandler.java
0,0 → 1,62
package ak.kickup.core.action;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.Globals;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ExceptionHandler;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.config.ExceptionConfig;
 
import org.apache.log4j.Logger;
 
import ak.strutsx.ErrorHandlerX;
 
import ak.kickup.util.UserException;
import ak.kickup.util.FormException;
 
public final class UserExceptionHandler
extends ExceptionHandler
{
private static final Logger logger = Logger.getLogger(UserExceptionHandler.class);
 
public ActionForward execute(Exception ex, ExceptionConfig config,
ActionMapping mapping, ActionForm formInstance,
HttpServletRequest request, HttpServletResponse response)
throws ServletException
{
if(!(ex instanceof UserException))
throw new ServletException("Unknown type of exception: " + ex.getClass());
 
UserException userEx = (UserException)ex;
logger.info("begin exception handle:" + userEx.getMessage());
 
// try to get property for this exception if any
String property = ActionMessages.GLOBAL_MESSAGE;
if(userEx instanceof FormException) {
FormException formEx = (FormException)userEx;
if(formEx.getProperty() != null)
property = formEx.getProperty();
}
 
// create new error message
ActionErrors errors = (ActionErrors)request.getAttribute(Globals.ERROR_KEY);
if(errors == null) {
errors = new ActionErrors();
request.setAttribute(Globals.ERROR_KEY, errors);
}
errors.add(property, new ActionError(userEx.getMessage(), userEx.getValues()));
 
// find forward
if(mapping.getInput() == null)
return mapping.findForward("error");
else
return mapping.getInputForward();
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/ParticipantManager.java
0,0 → 1,344
package ak.kickup.core.model;
 
import java.util.*;
import java.io.UnsupportedEncodingException;
import net.sf.hibernate.*;
import net.sf.hibernate.type.Type;
import ak.kickup.util.HibernateUtil;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
public class ParticipantManager
{
private static ParticipantManager participantManager = null;
private static boolean registered = false;
 
public static ParticipantManager getInstance()
{
return participantManager;
}
 
protected static void register()
{
synchronized(ParticipantManager.class) {
if(registered) return;
 
registered = true;
try {
HibernateUtil.getConfiguration().addResource(
"ak/kickup/core/model/Participant.hbm.xml");
HibernateUtil.getConfiguration().addResource(
"ak/kickup/core/model/ParticipantAct.hbm.xml");
 
participantManager = new ParticipantManager();
}
catch(Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex.getMessage());
}
}
}
 
static {
register();
}
 
private ParticipantManager()
{
}
 
public Participant create()
throws ModelException
{
Participant p = new Participant();
p.init();
return p;
}
 
public Participant get(Long id)
throws ModelException
{
try {
return (Participant)HibernateUtil.currentSession().load(Participant.class, id);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public Participant findForIdent(String ident)
throws ModelException
{
try {
List list = HibernateUtil.currentSession().find(
"from Participant where ident = ?",
ident, Hibernate.STRING );
 
if(list.size() == 0)
return null;
else
return (Participant)list.get(0);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public Participant findForEmail(String email)
throws ModelException
{
try {
List list = HibernateUtil.currentSession().find(
"from Participant where email = ?",
email, Hibernate.STRING );
 
if(list.size() == 0)
return null;
else
return (Participant)list.get(0);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public boolean emailExists(Participant participant, String email)
throws ModelException
{
try {
if(participant.getId() == null)
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Participant where email=? and event=?",
new Object[] { email, participant.getEvent() },
new Type[] { Hibernate.STRING, Hibernate.entity(Event.class) } )
.next()).intValue() > 0;
else
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Participant p where email=? and event=? and p!=?",
new Object[] { email, participant.getEvent(), participant },
new Type[] { Hibernate.STRING, Hibernate.entity(Event.class),
Hibernate.entity(Participant.class) } )
.next()).intValue() > 0;
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public String generateIdent()
throws ModelException
{
String ident;
 
do {
byte[] buf = new byte[6];
 
for(int i = 0; i < buf.length; i++) {
buf[i] = (byte)(Math.random() * 10 + 48);
}
 
try {
ident = new String(buf, "ascii");
}
catch(UnsupportedEncodingException ex) {
throw new ModelException(ex);
}
} while(identExists(ident));
 
return ident;
}
 
public boolean identExists(String ident)
throws ModelException
{
try {
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Participant where ident = ?",
ident, Hibernate.STRING)
.next()).intValue() > 0;
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public void save(Participant participant)
throws ModelException
{
try {
HibernateUtil.currentSession().saveOrUpdate(participant);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public void delete(Participant participant)
throws ModelException
{
try {
participant.getEvent().removeParticipant(participant);
HibernateUtil.currentSession().delete(participant);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public Collection listFreeTransport(Event event)
throws ModelException
{
try {
return HibernateUtil.currentSession().find(
"from Participant where event = ? and free_transport > 0",
event, Hibernate.entity(Event.class));
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public Collection listFreeSleep(Event event)
throws ModelException
{
try {
return HibernateUtil.currentSession().find(
"from Participant where event = ? and free_sleep > 0",
event, Hibernate.entity(Event.class));
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public Collection listForAct(EventAct act)
throws ModelException
{
try {
return HibernateUtil.currentSession().find(
"select pa from Participant as p, ParticipantAct as pa"
+ " where p.event = ? and pa.participant = p and pa.act = ?",
new Object[] { act.getEvent(), act.getAct() },
new Type[] { Hibernate.entity(Event.class), Hibernate.entity(Act.class) } );
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public ParticipantAct createAct()
throws ModelException
{
return new ParticipantAct();
}
 
public boolean allowDeleteAct(Act act)
throws ModelException
{
try {
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from ParticipantAct where act=?",
act, Hibernate.entity(Act.class))
.next()).intValue() == 0;
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public static final Comparator NICK_COMPARATOR = new NickComparator();
public static final Comparator ACT_NICK_COMPARATOR = new ActNickComparator();
public static final Comparator FROM_ZIP_COMPARATOR = new FromZipComparator();
 
private static class NickComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof Participant) || !(o2 instanceof Participant))
throw new ClassCastException("not a Participant");
 
Participant a1 = (Participant)o1;
Participant a2 = (Participant)o2;
 
if(a1 == null && a2 == null)
return 0;
else if(a1 == null && a2 != null)
return -1;
else if(a1 != null && a2 == null)
return 1;
else
return a1.getNick().compareToIgnoreCase(a2.getNick());
}
 
public boolean equals(Object obj)
{
return (obj instanceof NickComparator);
}
}
 
private static class ActNickComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof ParticipantAct) || !(o2 instanceof ParticipantAct))
throw new ClassCastException("not a ParticipantAct");
 
ParticipantAct a1 = (ParticipantAct)o1;
ParticipantAct a2 = (ParticipantAct)o2;
 
if(a1 == null && a2 == null)
return 0;
else if(a1 == null && a2 != null)
return -1;
else if(a1 != null && a2 == null)
return 1;
else
return a1.getParticipant().getNick().compareToIgnoreCase(a2.getParticipant().getNick());
}
 
public boolean equals(Object obj)
{
return (obj instanceof ActNickComparator);
}
}
 
private static class FromZipComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof Participant) || !(o2 instanceof Participant))
throw new ClassCastException("not a Participant");
 
Participant a1 = (Participant)o1;
Participant a2 = (Participant)o2;
 
if((a1 == null || a1.getFromZip() == null) && (a2 == null || a2.getFromZip() == null))
return 0;
else if((a1 == null || a1.getFromZip() == null) && (a2 != null && a2.getFromZip() != null))
return -1;
else if((a1 != null && a1.getFromZip() == null) && (a2 == null || a2.getFromZip() == null))
return 1;
else
return a1.getFromZip().compareToIgnoreCase(a2.getFromZip());
}
 
public boolean equals(Object obj)
{
return (obj instanceof FromZipComparator);
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/Event.java
0,0 → 1,453
package ak.kickup.core.model;
 
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Collections;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Date;
import java.util.Map;
import java.util.HashMap;
import java.util.Calendar;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
/**
*
* @hibernate.class table="events"
*/
public class Event
extends GeneralModelObject
{
private String name;
private String email;
private String admins;
private String phones;
private String place;
private String address;
private String transportDesc;
private Date start;
private Date stop;
private Date lastRegister;
private Date lastUnregister;
private BigDecimal price;
private String moneyAccount;
private Boolean enabled;
private String comment;
private Collection acts; // Collection(EventAct)
private Map actsMap = new HashMap(); // Map(Long id -> EventAct)
private Collection apartments; // Collection(EventApartment)
private Map apartmentsMap = new HashMap(); // Map(Long id -> EventApartment)
private Collection participants; // Collection(EventAct)
 
protected Event()
{
}
 
protected void init()
{
acts = new ArrayList();
apartments = new ArrayList();
participants = new ArrayList();
}
 
/**
*
* @hibernate.property
*/
public String getName()
{
return name;
}
 
public void setName(String name)
{
this.name = name;
}
 
/**
*
* @hibernate.property
*/
public String getEmail()
{
return email;
}
 
public void setEmail(String email)
{
this.email = email;
}
 
/**
*
* @hibernate.property
*/
public String getAdmins()
{
return admins;
}
 
public void setAdmins(String admins)
{
this.admins = admins;
}
 
/**
*
* @hibernate.property
*/
public String getPhones()
{
return phones;
}
 
public void setPhones(String phones)
{
this.phones = phones;
}
 
/**
*
* @hibernate.property
*/
public String getPlace()
{
return place;
}
 
public void setPlace(String place)
{
this.place = place;
}
 
/**
*
* @hibernate.property
*/
public String getAddress()
{
return address;
}
 
public void setAddress(String address)
{
this.address = address;
}
 
/**
*
* @hibernate.property column="transport_desc"
*/
public String getTransportDesc()
{
return transportDesc;
}
 
public void setTransportDesc(String transportDesc)
{
this.transportDesc = transportDesc;
}
 
/**
*
* @hibernate.property
*/
public Date getStart()
{
return start;
}
 
public void setStart(Date start)
{
this.start = start;
}
 
/**
*
* @hibernate.property
*/
public Date getStop()
{
return stop;
}
 
public void setStop(Date stop)
{
this.stop = stop;
}
 
/**
*
* @hibernate.property column="last_register"
*/
public Date getLastRegister()
{
return lastRegister;
}
 
public void setLastRegister(Date lastRegister)
{
this.lastRegister = lastRegister;
}
 
/**
*
* @hibernate.property column="last_unregister"
*/
public Date getLastUnregister()
{
return lastUnregister;
}
 
public void setLastUnregister(Date lastUnregister)
{
this.lastUnregister = lastUnregister;
}
 
/**
*
* @hibernate.property
*/
public BigDecimal getPrice()
{
return price;
}
 
public void setPrice(BigDecimal price)
{
this.price = price;
}
 
/**
*
* @hibernate.property column="money_account"
*/
public String getMoneyAccount()
{
return moneyAccount;
}
 
public void setMoneyAccount(String moneyAccount)
{
this.moneyAccount = moneyAccount;
}
 
/**
*
* @hibernate.property
*/
public Boolean getEnabled()
{
return enabled;
}
 
public void setEnabled(Boolean enabled)
{
this.enabled = enabled;
}
 
/**
*
* @hibernate.property
*/
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
 
/**
* @return Collection(EventAct)
*
* @hibernate.bag inverse="true" cascade="all-delete-orphan" lazy="true"
* @hibernate.collection-key column="event"
* @hibernate.collection-one-to-many class="ak.kickup.core.model.EventAct"
*/
protected Collection getActs()
{
return acts;
}
 
public Collection getActCollection()
{
return Collections.unmodifiableCollection(acts);
}
 
/**
* @param destinations Collection(EventAct)
*/
protected void setActs(Collection acts)
{
this.acts = acts;
 
actsMap.clear();
if(acts != null) {
for(Iterator i = acts.iterator(); i.hasNext(); ) {
EventAct a = (EventAct)i.next();
if(a.getAct() != null)
actsMap.put(a.getAct().getId(), a);
}
}
}
 
public EventAct getAct(Long actId)
{
return (EventAct)actsMap.get(actId);
}
 
public void addAct(EventAct act)
{
acts.add(act);
actsMap.put(act.getAct().getId(), act);
}
 
public void removeAct(EventAct act)
{
acts.remove(act);
actsMap.remove(act.getAct().getId());
}
 
/**
* @return Collection(EventApartment)
*
* @hibernate.bag inverse="true" cascade="all-delete-orphan" lazy="true"
* @hibernate.collection-key column="event"
* @hibernate.collection-one-to-many class="ak.kickup.core.model.EventApartment"
*/
protected Collection getApartments()
{
return apartments;
}
 
public Collection getApartmentCollection()
{
return Collections.unmodifiableCollection(apartments);
}
 
/**
* @param destinations Collection(EventApartment)
*/
protected void setApartments(Collection apartments)
{
this.apartments = apartments;
 
apartmentsMap.clear();
if(apartments != null) {
for(Iterator i = apartments.iterator(); i.hasNext(); ) {
EventApartment a = (EventApartment)i.next();
if(a.getApartment() != null)
apartmentsMap.put(a.getApartment().getId(), a);
}
}
}
 
public EventApartment getApartment(Long apartmentId)
{
return (EventApartment)apartmentsMap.get(apartmentId);
}
 
public void addApartment(EventApartment apartment)
{
apartments.add(apartment);
apartmentsMap.put(apartment.getApartment().getId(), apartment);
}
 
public void removeApartment(EventApartment apartment)
{
apartments.remove(apartment);
apartmentsMap.remove(apartment.getApartment().getId());
}
 
public boolean isRegistrationAvailable()
{
if(enabled == null || !enabled.booleanValue()) return false;
 
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
 
Date now = cal.getTime();
 
if(lastRegister == null) {
return (start == null || !start.before(now));
}
else {
return !lastRegister.before(now);
}
}
 
public boolean isUnregistrationAvailable()
{
if(enabled == null || !enabled.booleanValue()) return false;
 
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
 
Date now = cal.getTime();
 
if(lastUnregister == null) {
return (start == null || !start.before(now));
}
else {
return !lastUnregister.before(now);
}
}
 
public int getParticipantCount()
{
return participants.size();
}
 
public int getPersonCount()
{
int count = 0;
 
for(Iterator i = participants.iterator(); i.hasNext(); ) {
Participant p = (Participant)i.next();
if(p.getPersons() != null)
count += p.getPersons().intValue();
}
 
return count;
}
 
/**
* @return Collection(Participant)
*
* @hibernate.bag inverse="true" cascade="all-delete-orphan" lazy="true"
* @hibernate.collection-key column="event"
* @hibernate.collection-one-to-many class="ak.kickup.core.model.Participant"
*/
protected Collection getParticipants()
{
return participants;
}
 
public Collection getParticipantCollection()
{
return Collections.unmodifiableCollection(participants);
}
 
/**
* @param destinations Collection(Participant)
*/
protected void setParticipants(Collection participants)
{
this.participants = participants;
}
 
protected void removeParticipant(Participant participant)
{
participants.remove(participant);
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/Participant.java
0,0 → 1,387
package ak.kickup.core.model;
 
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;
import java.util.HashMap;
import java.util.Collections;
import java.util.Collection;
import java.util.Iterator;
import java.util.ArrayList;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
/**
*
* @hibernate.class table="participants"
*/
public class Participant
extends GeneralModelObject
{
public static final int PAYED_NULL = 0; // event price is nto defined
public static final int PAYED_NONE = 1; // noit yet payed
public static final int PAYED_LESS = 2; // payed but less then needed
public static final int PAYED_EXACTLY = 3; // payed exactly as needed
public static final int PAYED_MORE = 4; // payed more then needed
 
private String ident;
private String nick;
private String email;
private Boolean emailPublic;
private String name;
private String phone;
private Event event;
private Integer persons;
private String fromZip;
private String fromCity;
private Date departure;
private Integer freeTransport;
private String transportComment;
private Integer freeSleep;
private String sleepComment;
private BigDecimal payed;
private String comment;
private String privateComment;
private Collection acts; // Collection(ParticipantAct)
private Map actsMap = new HashMap(); // Map(Long id -> ParticipantAct)
 
protected Participant()
{
}
 
protected void init()
{
acts = new ArrayList();
}
 
/**
*
* @hibernate.property
*/
public String getIdent()
{
return ident;
}
 
public void setIdent(String ident)
{
this.ident = ident;
}
 
/**
*
* @hibernate.property
*/
public String getNick()
{
return nick;
}
 
public void setNick(String nick)
{
this.nick = nick;
}
 
/**
*
* @hibernate.property
*/
public String getEmail()
{
return email;
}
 
public void setEmail(String email)
{
this.email = email;
}
 
/**
*
* @hibernate.property column="email_public"
*/
public Boolean getEmailPublic()
{
return emailPublic;
}
 
public void setEmailPublic(Boolean emailPublic)
{
this.emailPublic = emailPublic;
}
 
/**
*
* @hibernate.property
*/
public String getName()
{
return name;
}
 
public void setName(String name)
{
this.name = name;
}
 
/**
*
* @hibernate.property
*/
public String getPhone()
{
return phone;
}
 
public void setPhone(String phone)
{
this.phone = phone;
}
 
/**
*
* @hibernate.many-to-one
*/
public Event getEvent()
{
return event;
}
 
public void setEvent(Event event)
{
this.event = event;
}
 
/**
*
* @hibernate.property
*/
public Integer getPersons()
{
return persons;
}
 
public void setPersons(Integer persons)
{
this.persons = persons;
}
 
/**
*
* @hibernate.property column="from_zip"
*/
public String getFromZip()
{
return fromZip;
}
 
public void setFromZip(String fromZip)
{
this.fromZip = fromZip;
}
 
/**
*
* @hibernate.property column="from_city"
*/
public String getFromCity()
{
return fromCity;
}
 
public void setFromCity(String fromCity)
{
this.fromCity = fromCity;
}
 
/**
*
* @hibernate.property
*/
public Date getDeparture()
{
return departure;
}
 
public void setDeparture(Date departure)
{
this.departure = departure;
}
 
/**
*
* @hibernate.property column="free_transport"
*/
public Integer getFreeTransport()
{
return freeTransport;
}
 
public void setFreeTransport(Integer freeTransport)
{
this.freeTransport = freeTransport;
}
 
/**
*
* @hibernate.property column="transport_comment"
*/
public String getTransportComment()
{
return transportComment;
}
 
public void setTransportComment(String transportComment)
{
this.transportComment = transportComment;
}
 
/**
*
* @hibernate.property column="free_sleep"
*/
public Integer getFreeSleep()
{
return freeSleep;
}
 
public void setFreeSleep(Integer freeSleep)
{
this.freeSleep = freeSleep;
}
 
/**
*
* @hibernate.property column="sleep_comment"
*/
public String getSleepComment()
{
return sleepComment;
}
 
public void setSleepComment(String sleepComment)
{
this.sleepComment = sleepComment;
}
 
/**
*
* @hibernate.property
*/
public BigDecimal getPayed()
{
return payed;
}
 
public void setPayed(BigDecimal payed)
{
this.payed = payed;
}
 
public BigDecimal getMustPay()
{
if(event == null || event.getPrice() == null || persons == null) return null;
 
return new BigDecimal(event.getPrice().doubleValue() * persons.intValue());
}
 
public int getPayedStatus()
{
if(event == null || event.getPrice() == null || persons == null) return PAYED_NULL;
if(payed == null) return PAYED_NONE;
 
double needed = event.getPrice().doubleValue() * persons.intValue();
double p = payed.doubleValue();
 
if(Math.abs(needed - p) < 0.001) return PAYED_EXACTLY;
else if(needed < p) return PAYED_MORE;
else return PAYED_LESS;
}
 
/**
*
* @hibernate.property
*/
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
 
/**
*
* @hibernate.property column="private_comment"
*/
public String getPrivateComment()
{
return privateComment;
}
 
public void setPrivateComment(String privateComment)
{
this.privateComment = privateComment;
}
 
/**
* @return Collection(ParticipantAct)
*
* @hibernate.bag inverse="true" cascade="all-delete-orphan" lazy="true"
* @hibernate.collection-key column="participant"
* @hibernate.collection-one-to-many class="ak.kickup.core.model.ParticipantAct"
*/
protected Collection getActs()
{
return acts;
}
 
public Collection getActCollection()
{
return Collections.unmodifiableCollection(acts);
}
 
/**
* @param destinations Collection(ParticipantAct)
*/
protected void setActs(Collection acts)
{
this.acts = acts;
 
actsMap.clear();
if(acts != null) {
for(Iterator i = acts.iterator(); i.hasNext(); ) {
ParticipantAct a = (ParticipantAct)i.next();
if(a.getAct() != null)
actsMap.put(a.getAct().getId(), a);
}
}
}
 
public ParticipantAct getAct(Long actId)
{
return (ParticipantAct)actsMap.get(actId);
}
 
public void addAct(ParticipantAct act)
{
acts.add(act);
actsMap.put(act.getAct().getId(), act);
}
 
public void removeAct(ParticipantAct act)
{
acts.remove(act);
actsMap.remove(act.getAct().getId());
}
 
public boolean equals(Object o)
{
if(o == null || !(o instanceof Participant)) return false;
 
Participant p = (Participant)o;
return (getId() != null) && (p.getId() != null) && (getId().equals(p.getId()));
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/EventManager.java
0,0 → 1,313
package ak.kickup.core.model;
 
import java.util.*;
import net.sf.hibernate.*;
import net.sf.hibernate.type.Type;
import ak.kickup.util.HibernateUtil;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
public class EventManager
{
private static EventManager eventManager = null;
private static boolean registered = false;
 
public static EventManager getInstance()
{
return eventManager;
}
 
protected static void register()
{
synchronized(EventManager.class) {
if(registered) return;
 
registered = true;
try {
HibernateUtil.getConfiguration().addResource(
"ak/kickup/core/model/Event.hbm.xml");
HibernateUtil.getConfiguration().addResource(
"ak/kickup/core/model/EventAct.hbm.xml");
HibernateUtil.getConfiguration().addResource(
"ak/kickup/core/model/EventApartment.hbm.xml");
 
eventManager = new EventManager();
}
catch(Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex.getMessage());
}
}
}
 
static {
register();
}
 
private EventManager()
{
}
 
public Event create()
throws ModelException
{
Event e = new Event();
e.init();
return e;
}
 
public Event get(Long id, boolean enabledOnly)
throws ModelException
{
Event event;
 
try {
event = (Event)HibernateUtil.currentSession().load(Event.class, id);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
 
if(enabledOnly && (event.getEnabled() == null || !event.getEnabled().booleanValue()))
throw new ModelSecurityException();
 
return event;
}
 
public boolean nameExists(Event event, String name)
throws ModelException
{
try {
if(event.getId() == null)
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Event where name = ?",
name, Hibernate.STRING)
.next()).intValue() > 0;
else
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Event e where name = ? and e != ?",
new Object[] { name, event },
new Type[] { Hibernate.STRING, Hibernate.entity(Event.class) } )
.next()).intValue() > 0;
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public void save(Event event)
throws ModelException
{
try {
HibernateUtil.currentSession().saveOrUpdate(event);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public void delete(Event event)
throws ModelException
{
try {
HibernateUtil.currentSession().delete(event);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public Collection listEvents(boolean enabledOnly)
throws ModelException
{
try {
if(enabledOnly) {
return HibernateUtil.currentSession().find(
"from Event where enabled=?",
Boolean.TRUE, Hibernate.BOOLEAN);
}
else {
return HibernateUtil.currentSession().find("from Event");
}
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public EventAct createAct()
throws ModelException
{
return new EventAct();
}
 
public boolean allowDeleteAct(Act act)
throws ModelException
{
try {
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from EventAct where act=?",
act, Hibernate.entity(Act.class))
.next()).intValue() == 0;
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public EventApartment createApartment()
throws ModelException
{
return new EventApartment();
}
 
public boolean allowDeleteApartment(Apartment apartment)
throws ModelException
{
try {
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from EventApartment where apartment=?",
apartment, Hibernate.entity(Apartment.class))
.next()).intValue() == 0;
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
protected void deleteApartments(Apartment apartment)
throws ModelException
{
try {
HibernateUtil.currentSession().delete(
"from EventApartment where apartment=?",
apartment, Hibernate.entity(Apartment.class));
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public static final Comparator NAME_COMPARATOR = new NameComparator();
public static final Comparator START_COMPARATOR = new StartComparator();
 
private static class NameComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof Event) || !(o2 instanceof Event))
throw new ClassCastException("not a Event");
 
Event a1 = (Event)o1;
Event a2 = (Event)o2;
 
if(a1 == null && a2 == null)
return 0;
else if(a1 == null && a2 != null)
return -1;
else if(a1 != null && a2 == null)
return 1;
else
return a1.getName().compareToIgnoreCase(a2.getName());
}
 
public boolean equals(Object obj)
{
return (obj instanceof NameComparator);
}
}
 
private static class StartComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof Event) || !(o2 instanceof Event))
throw new ClassCastException("not a Event");
 
Event a1 = (Event)o1;
Event a2 = (Event)o2;
 
if((a1 == null || a1.getStart() == null) && (a2 == null || a2.getStart() == null))
return 0;
else if((a1 == null || a1.getStart() == null) && (a2 != null && a2.getStart() != null))
return -1;
else if((a1 != null && a1.getStart() != null) && (a2 == null || a2.getStart() == null))
return 1;
else
return a1.getStart().compareTo(a2.getStart());
}
 
public boolean equals(Object obj)
{
return (obj instanceof StartComparator);
}
}
 
public static final Comparator ACT_NAME_COMPARATOR = new ActNameComparator();
 
private static class ActNameComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof EventAct) || !(o2 instanceof EventAct))
throw new ClassCastException("not a EventAct");
 
EventAct a1 = (EventAct)o1;
EventAct a2 = (EventAct)o2;
 
if(a1 == null && a2 == null)
return 0;
else if(a1 == null && a2 != null)
return -1;
else if(a1 != null && a2 == null)
return 1;
else
return a1.getAct().getName().compareToIgnoreCase(a2.getAct().getName());
}
 
public boolean equals(Object obj)
{
return (obj instanceof ActNameComparator);
}
}
 
public static final Comparator APARTMENT_NAME_COMPARATOR = new ApartmentNameComparator();
 
private static class ApartmentNameComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof EventApartment) || !(o2 instanceof EventApartment))
throw new ClassCastException("not a EventApartment");
 
EventApartment a1 = (EventApartment)o1;
EventApartment a2 = (EventApartment)o2;
 
if(a1 == null && a2 == null)
return 0;
else if(a1 == null && a2 != null)
return -1;
else if(a1 != null && a2 == null)
return 1;
else
return a1.getApartment().getName().compareToIgnoreCase(a2.getApartment().getName());
}
 
public boolean equals(Object obj)
{
return (obj instanceof ApartmentNameComparator);
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/ParticipantAct.java
0,0 → 1,64
package ak.kickup.core.model;
 
import java.util.Date;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
/**
*
* @hibernate.class table="participant_acts"
*/
public class ParticipantAct
extends GeneralModelObject
{
private Participant participant;
private Act act;
private String comment;
private Date modStamp;
 
protected ParticipantAct()
{
}
 
/**
*
* @hibernate.many-to-one
*/
public Participant getParticipant()
{
return participant;
}
 
public void setParticipant(Participant participant)
{
this.participant = participant;
}
 
/**
*
* @hibernate.many-to-one
*/
public Act getAct()
{
return act;
}
 
public void setAct(Act act)
{
this.act = act;
}
 
/**
*
* @hibernate.property
*/
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/ActManager.java
0,0 → 1,151
package ak.kickup.core.model;
 
import java.util.*;
import net.sf.hibernate.*;
import net.sf.hibernate.type.Type;
import ak.kickup.util.HibernateUtil;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
public class ActManager
{
private static ActManager actManager = null;
private static boolean registered = false;
 
public static ActManager getInstance()
{
return actManager;
}
 
protected static void register()
{
synchronized(ActManager.class) {
if(registered) return;
 
registered = true;
try {
HibernateUtil.getConfiguration().addResource(
"ak/kickup/core/model/Act.hbm.xml");
 
actManager = new ActManager();
}
catch(Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex.getMessage());
}
}
}
 
static {
register();
}
 
private ActManager()
{
}
 
public Act create()
throws ModelException
{
return new Act();
}
 
public Act get(Long id)
throws ModelException
{
try {
return (Act)HibernateUtil.currentSession().load(Act.class, id);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public boolean nameExists(Act act, String name)
throws ModelException
{
try {
if(act.getId() == null)
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Act where name = ?",
name, Hibernate.STRING)
.next()).intValue() > 0;
else
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Act a where name = ? and a != ?",
new Object[] { name, act },
new Type[] { Hibernate.STRING, Hibernate.entity(Act.class) } )
.next()).intValue() > 0;
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public void save(Act act)
throws ModelException
{
try {
HibernateUtil.currentSession().saveOrUpdate(act);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public void delete(Act act)
throws ModelException
{
try {
HibernateUtil.currentSession().delete(act);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public Collection listActs()
throws ModelException
{
try {
return HibernateUtil.currentSession().find("from Act");
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public static final Comparator NAME_COMPARATOR = new NameComparator();
 
private static class NameComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof Act) || !(o2 instanceof Act))
throw new ClassCastException("not a Act");
 
Act a1 = (Act)o1;
Act a2 = (Act)o2;
 
if(a1 == null && a2 == null)
return 0;
else if(a1 == null && a2 != null)
return -1;
else if(a1 != null && a2 == null)
return 1;
else
return a1.getName().compareToIgnoreCase(a2.getName());
}
 
public boolean equals(Object obj)
{
return (obj instanceof NameComparator);
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/GeneralModelObject.java
0,0 → 1,37
package ak.kickup.core.model;
 
import java.util.Date;
 
public abstract class GeneralModelObject
{
private Long id;
private Date modStamp;
 
/**
*
* @hibernate.id generator-class="native"
*/
public Long getId()
{
return id;
}
 
protected void setId(Long id)
{
this.id = id;
}
 
/**
*
* @hibernate.timestamp column="mod_stamp"
*/
public Date getModStamp()
{
return modStamp;
}
 
public void setModStamp(Date modStamp)
{
this.modStamp = modStamp;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/ApartmentManager.java
0,0 → 1,151
package ak.kickup.core.model;
 
import java.util.*;
import net.sf.hibernate.*;
import net.sf.hibernate.type.Type;
import ak.kickup.util.HibernateUtil;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
public class ApartmentManager
{
private static ApartmentManager apartmentManager = null;
private static boolean registered = false;
 
public static ApartmentManager getInstance()
{
return apartmentManager;
}
 
protected static void register()
{
synchronized(ApartmentManager.class) {
if(registered) return;
 
registered = true;
try {
HibernateUtil.getConfiguration().addResource(
"ak/kickup/core/model/Apartment.hbm.xml");
 
apartmentManager = new ApartmentManager();
}
catch(Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex.getMessage());
}
}
}
 
static {
register();
}
 
private ApartmentManager()
{
}
 
public Apartment create()
throws ModelException
{
return new Apartment();
}
 
public Apartment get(Long id)
throws ModelException
{
try {
return (Apartment)HibernateUtil.currentSession().load(Apartment.class, id);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public boolean nameExists(Apartment apartment, String name)
throws ModelException
{
try {
if(apartment.getId() == null)
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Apartment where name = ?",
name, Hibernate.STRING)
.next()).intValue() > 0;
else
return ((Integer)HibernateUtil.currentSession().iterate(
"select count(*) from Apartment a where name = ? and a != ?",
new Object[] { name, apartment },
new Type[] { Hibernate.STRING, Hibernate.entity(Apartment.class) } )
.next()).intValue() > 0;
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public void save(Apartment apartment)
throws ModelException
{
try {
HibernateUtil.currentSession().saveOrUpdate(apartment);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public void delete(Apartment apartment)
throws ModelException
{
try {
HibernateUtil.currentSession().delete(apartment);
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public Collection listApartments()
throws ModelException
{
try {
return HibernateUtil.currentSession().find("from Apartment");
}
catch(HibernateException ex)
{
throw new ModelException(ex);
}
}
 
public static final Comparator NAME_COMPARATOR = new NameComparator();
 
private static class NameComparator
implements Comparator
{
public int compare(Object o1, Object o2)
{
if(!(o1 instanceof Apartment) || !(o2 instanceof Apartment))
throw new ClassCastException("not a Apartment");
 
Apartment a1 = (Apartment)o1;
Apartment a2 = (Apartment)o2;
 
if(a1 == null && a2 == null)
return 0;
else if(a1 == null && a2 != null)
return -1;
else if(a1 != null && a2 == null)
return 1;
else
return a1.getName().compareToIgnoreCase(a2.getName());
}
 
public boolean equals(Object obj)
{
return (obj instanceof NameComparator);
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/Act.java
0,0 → 1,56
package ak.kickup.core.model;
 
import java.util.Date;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
/**
*
* @hibernate.class table="acts"
*/
public class Act
extends GeneralModelObject
{
private String name;
private String comment;
 
protected Act()
{
}
 
/**
*
* @hibernate.property
*/
public String getName()
{
return name;
}
 
public void setName(String name)
{
this.name = name;
}
 
/**
*
* @hibernate.property
*/
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
 
public boolean equals(Object o)
{
if(o == null || !(o instanceof Act)) return false;
 
Act a = (Act)o;
return (getId() != null) && (a.getId() != null) && (getId().equals(a.getId()));
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/EventAct.java
0,0 → 1,64
package ak.kickup.core.model;
 
import java.util.Date;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
/**
*
* @hibernate.class table="event_acts"
*/
public class EventAct
extends GeneralModelObject
{
private Event event;
private Act act;
private String comment;
private Date modStamp;
 
protected EventAct()
{
}
 
/**
*
* @hibernate.many-to-one
*/
public Event getEvent()
{
return event;
}
 
public void setEvent(Event event)
{
this.event = event;
}
 
/**
*
* @hibernate.many-to-one
*/
public Act getAct()
{
return act;
}
 
public void setAct(Act act)
{
this.act = act;
}
 
/**
*
* @hibernate.property
*/
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/Apartment.java
0,0 → 1,101
package ak.kickup.core.model;
 
import java.math.BigDecimal;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
/**
*
* @hibernate.class table="apartments"
*/
public class Apartment
extends GeneralModelObject
{
private String name;
private String address;
private BigDecimal price;
private String url;
private String comment;
 
protected Apartment()
{
}
 
/**
*
* @hibernate.property
*/
public String getName()
{
return name;
}
 
public void setName(String name)
{
this.name = name;
}
 
/**
*
* @hibernate.property
*/
public String getAddress()
{
return address;
}
 
public void setAddress(String address)
{
this.address = address;
}
 
/**
*
* @hibernate.property
*/
public BigDecimal getPrice()
{
return price;
}
 
public void setPrice(BigDecimal price)
{
this.price = price;
}
 
/**
*
* @hibernate.property
*/
public String getUrl()
{
return url;
}
 
public void setUrl(String url)
{
this.url = url;
}
 
/**
*
* @hibernate.property
*/
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
 
public boolean equals(Object o)
{
if(o == null || !(o instanceof Apartment)) return false;
 
Apartment a = (Apartment)o;
return (getId() != null) && (a.getId() != null) && (getId().equals(a.getId()));
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/model/EventApartment.java
0,0 → 1,80
package ak.kickup.core.model;
 
import java.math.BigDecimal;
import java.util.Date;
import ak.kickup.util.ModelException;
import ak.kickup.util.ModelSecurityException;
 
/**
*
* @hibernate.class table="event_apartments"
*/
public class EventApartment
extends GeneralModelObject
{
private Event event;
private Apartment apartment;
private BigDecimal distance;
private String comment;
private Date modStamp;
 
protected EventApartment()
{
}
 
/**
*
* @hibernate.many-to-one
*/
public Event getEvent()
{
return event;
}
 
public void setEvent(Event event)
{
this.event = event;
}
 
/**
*
* @hibernate.many-to-one
*/
public Apartment getApartment()
{
return apartment;
}
 
public void setApartment(Apartment apartment)
{
this.apartment = apartment;
}
 
/**
*
* @hibernate.property
*/
public BigDecimal getDistance()
{
return distance;
}
 
public void setDistance(BigDecimal distance)
{
this.distance = distance;
}
 
/**
*
* @hibernate.property
*/
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/form/ParticipantActBean.java
0,0 → 1,53
package ak.kickup.core.form;
 
import ak.kickup.util.StringConverter;
import ak.kickup.core.model.ParticipantAct;
import ak.kickup.core.model.Act;
 
public final class ParticipantActBean
{
private String actId;
private String comment;
private Boolean selected;
 
public ParticipantActBean()
{
}
 
public ParticipantActBean(Act act, ParticipantAct info)
{
this.actId = StringConverter.toString(act.getId());
this.comment = (info == null) ? null : info.getComment();
this.selected = Boolean.valueOf(info != null);
}
 
public String getActId()
{
return actId;
}
 
public void setActId(String actId)
{
this.actId = actId;
}
 
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
 
public Boolean getSelected()
{
return selected;
}
 
public void setSelected(Boolean selected)
{
this.selected = selected;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/form/EventActBean.java
0,0 → 1,53
package ak.kickup.core.form;
 
import ak.kickup.util.StringConverter;
import ak.kickup.core.model.EventAct;
import ak.kickup.core.model.Act;
 
public final class EventActBean
{
private String actId;
private String comment;
private Boolean selected;
 
public EventActBean()
{
}
 
public EventActBean(Act act, EventAct info)
{
this.actId = StringConverter.toString(act.getId());
this.comment = (info == null) ? null : info.getComment();
this.selected = Boolean.valueOf(info != null);
}
 
public String getActId()
{
return actId;
}
 
public void setActId(String actId)
{
this.actId = actId;
}
 
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
 
public Boolean getSelected()
{
return selected;
}
 
public void setSelected(Boolean selected)
{
this.selected = selected;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/form/EventApartmentBean.java
0,0 → 1,65
package ak.kickup.core.form;
 
import ak.kickup.util.StringConverter;
import ak.kickup.core.model.EventApartment;
import ak.kickup.core.model.Apartment;
 
public final class EventApartmentBean
{
private String apartmentId;
private String distance;
private String comment;
private Boolean selected;
 
public EventApartmentBean()
{
}
 
public EventApartmentBean(Apartment apartment, EventApartment info)
{
this.apartmentId = StringConverter.toString(apartment.getId());
this.distance = (info == null) ? null : StringConverter.toNumber(info.getDistance());
this.comment = (info == null) ? null : info.getComment();
this.selected = Boolean.valueOf(info != null);
}
 
public String getApartmentId()
{
return apartmentId;
}
 
public void setApartmentId(String apartmentId)
{
this.apartmentId = apartmentId;
}
 
public String getDistance()
{
return distance;
}
 
public void setDistance(String distance)
{
this.distance = distance;
}
 
public String getComment()
{
return comment;
}
 
public void setComment(String comment)
{
this.comment = comment;
}
 
public Boolean getSelected()
{
return selected;
}
 
public void setSelected(Boolean selected)
{
this.selected = selected;
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/servlet/LocaleServlet.java
0,0 → 1,29
package ak.kickup.core.servlet;
 
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
import org.apache.struts.Globals;
 
public class LocaleServlet
extends HttpServlet
implements HttpSessionListener
{
public void init()
throws ServletException
{
super.init();
Locale.setDefault(new Locale("ru", "DE"));
}
 
public void sessionCreated(HttpSessionEvent se)
{
se.getSession().setAttribute(Globals.LOCALE_KEY, Locale.getDefault());
}
 
public void sessionDestroyed(HttpSessionEvent se)
{
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/servlet/HibernateFilter.java
0,0 → 1,106
package ak.kickup.core.servlet;
 
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.io.IOException;
import java.net.URLEncoder;
import java.security.Principal;
import java.security.AccessControlException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.log4j.Logger;
 
import net.sf.hibernate.HibernateException;
 
import ak.kickup.util.HibernateUtil;
import ak.kickup.util.ModelException;
 
public class HibernateFilter
implements Filter
{
private static final Logger logger = Logger.getLogger(HibernateFilter.class);
 
private FilterConfig filterConfig;
 
public void init(FilterConfig filterConfig)
throws ServletException
{
// get config
this.filterConfig = filterConfig;
 
if(filterConfig != null) {
// register hibernate classes
String toRegister = filterConfig.getInitParameter("register");
if(toRegister != null) {
String[] registers = toRegister.split("\\s*;\\s*");
 
for(int i = 0; i < registers.length; i++) {
try {
String name = registers[i].trim();
if(name.equals("")) continue;
 
Class cl = Class.forName(name);
}
catch(Exception ex) {
logger.error("cannot register class", ex);
}
}
}
}
}
 
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException
{
try {
logger.info("begin transaction");
HibernateUtil.beginTransaction();
 
chain.doFilter(request, response);
 
if(HibernateUtil.isTransactionOpen()) {
logger.info("commit transaction");
HibernateUtil.commitTransaction();
}
}
catch(Exception ex) {
logger.error("exception by program execution", ex);
try {
if(HibernateUtil.isTransactionOpen()) {
logger.info("rollback transaction");
HibernateUtil.rollbackTransaction();
}
}
catch(Exception ex2) {
logger.error("cannot rollback transaction", ex2);
}
 
if(ex instanceof ServletException)
throw (ServletException)ex;
else
throw new ServletException("Internal server error");
}
 
try {
HibernateUtil.closeSession();
}
catch(Exception ex) {
logger.error("cannot close session", ex);
}
}
 
public void destroy()
{
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/servlet/ProfilerFilter.java
0,0 → 1,47
package ak.kickup.core.servlet;
 
import java.io.IOException;
import java.net.URLEncoder;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.log4j.Logger;
 
/**
* Prints out time of request execution.
*/
public class ProfilerFilter
implements Filter
{
private static final Logger logger = Logger.getLogger(ProfilerFilter.class);
 
public void init(FilterConfig filterConfig)
throws ServletException
{
}
 
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException
{
logger.debug("begin");
 
long t1 = System.currentTimeMillis();
chain.doFilter(request, response);
long t2 = System.currentTimeMillis();
 
logger.info((t2 - t1) + " ms");
}
 
public void destroy()
{
}
}
/kickup/tags/release-1.0/src/ak/kickup/core/servlet/EncodingFilter.java
0,0 → 1,37
package ak.kickup.core.servlet;
 
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
public class EncodingFilter
implements Filter
{
public static final String ENCODING = "UTF-8";
 
private FilterConfig filterConfig;
 
public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}
 
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException
{
if(request.getCharacterEncoding() == null)
request.setCharacterEncoding(ENCODING);
 
chain.doFilter(request, response);
}
 
public void destroy()
{
}
}
/kickup/tags/release-1.0/src/ak/kickup/util/Validator.java
0,0 → 1,79
package ak.kickup.util;
 
import java.math.BigDecimal;
import java.util.Date;
import java.text.NumberFormat;
import java.text.ParseException;
 
import javax.servlet.http.HttpServletRequest;
 
import org.apache.commons.validator.Field;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.ValidatorUtil;
 
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.validator.Resources;
 
public class Validator
{
public static BigDecimal validateNumber(Object bean, ValidatorAction va, Field field,
ActionErrors errors, HttpServletRequest request)
{
String value = null;
if((bean == null) || (bean instanceof String))
value = (String)bean;
else
value = ValidatorUtil.getValueAsString(bean, field.getProperty());
 
if(value == null || "".equals(value)) return null;
 
try {
return new BigDecimal(NumberFormat.getInstance().parse(value).doubleValue());
}
catch(ParseException ex) {
errors.add(field.getKey(), Resources.getActionError(request, va, field));
return null;
}
}
 
public static BigDecimal validateCurrency(Object bean, ValidatorAction va, Field field,
ActionErrors errors, HttpServletRequest request)
{
String value = null;
if((bean == null) || (bean instanceof String))
value = (String)bean;
else
value = ValidatorUtil.getValueAsString(bean, field.getProperty());
 
if(value == null || "".equals(value)) return null;
 
try {
return new BigDecimal(NumberFormat.getInstance().parse(value).doubleValue());
}
catch(ParseException ex) {
errors.add(field.getKey(), Resources.getActionError(request, va, field));
return null;
}
}
 
public static Date validateDateTime(Object bean, ValidatorAction va, Field field,
ActionErrors errors, HttpServletRequest request)
{
String value = null;
if((bean == null) || (bean instanceof String))
value = (String)bean;
else
value = ValidatorUtil.getValueAsString(bean, field.getProperty());
 
if(value == null || "".equals(value)) return null;
 
try {
return StringConverter.DATE_TIME_FORMAT.parse(value);
}
catch(ParseException ex) {
errors.add(field.getKey(), Resources.getActionError(request, va, field));
return null;
}
}
}
/kickup/tags/release-1.0/src/ak/kickup/util/StringConverter.java
0,0 → 1,122
package ak.kickup.util;
 
import java.math.BigDecimal;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.NumberFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
 
public abstract class StringConverter
{
public static final DateFormat DATE_TIME_FORMAT = new SimpleDateFormat("dd.MM.yyyy HH:mm");
 
public static boolean isEmpty(Object o)
{
if(o == null)
return true;
else if((o instanceof String) && ((String)o).equals(""))
return true;
else
return false;
}
 
public static String preparse(Object o)
{
if(o instanceof String) {
String s = (String)o;
if(s == null || s.equals(""))
return null;
else
return s;
}
else {
throw new ClassCastException("String is expected, but it is " + o.getClass());
}
}
 
public static Long parseLong(Object o)
throws NumberFormatException
{
String s = preparse(o);
return (s == null) ? null : new Long(s);
}
 
public static Integer parseInteger(Object o)
throws NumberFormatException
{
String s = preparse(o);
return (s == null) ? null : new Integer(s);
}
 
public static BigDecimal parseNumber(Object o)
throws NumberFormatException, ParseException
{
String s = preparse(o);
return (s == null)
? null : new BigDecimal(NumberFormat.getInstance().parse(s).doubleValue());
}
 
public static String toNumber(Number n)
{
if(n == null)
return null;
else
return (new DecimalFormat()).format(n);
}
 
public static BigDecimal parseCurrency(Object o)
throws NumberFormatException, ParseException
{
String s = preparse(o);
return (s == null)
? null : new BigDecimal(NumberFormat.getInstance().parse(s).doubleValue());
}
 
public static String toCurrency(Number n)
{
if(n == null)
return null;
else
return (new DecimalFormat("0.00")).format(n);
}
 
public static Date parseDate(Object o)
throws NumberFormatException, ParseException
{
String s = preparse(o);
return (s == null) ? null : DateFormat.getDateInstance().parse(s);
}
 
public static String toDate(Date d)
{
if(d == null)
return null;
else
return DateFormat.getDateInstance().format(d);
}
 
public static Date parseDateTime(Object o)
throws NumberFormatException, ParseException
{
String s = preparse(o);
return (s == null) ? null : DATE_TIME_FORMAT.parse(s);
}
 
public static String toDateTime(Date d)
{
if(d == null)
return null;
else
return DATE_TIME_FORMAT.format(d);
}
 
public static String toString(Object o)
{
if(o == null)
return null;
else
return o.toString();
}
}
/kickup/tags/release-1.0/src/ak/kickup/util/ModelSecurityException.java
0,0 → 1,10
package ak.kickup.util;
 
public class ModelSecurityException
extends ModelException
{
public ModelSecurityException()
{
super("ak.kickup.core.access.denied");
}
}
/kickup/tags/release-1.0/src/ak/kickup/util/UserException.java
0,0 → 1,28
package ak.kickup.util;
 
public class UserException
extends Exception
{
private Object[] values;
 
public UserException()
{
this(null, null);
}
 
public UserException(String message)
{
this(message, null);
}
 
public UserException(String message, Object[] values)
{
super(message);
this.values = values;
}
 
public Object[] getValues()
{
return values;
}
}
/kickup/tags/release-1.0/src/ak/kickup/util/HibernateUtil.java
0,0 → 1,109
package ak.kickup.util;
 
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
 
public class HibernateUtil
{
private static Configuration configuration;
private static SessionFactory sessionFactory;
private static final ThreadLocal hibernateBean = new ThreadLocal();
 
public static Configuration getConfiguration()
throws HibernateException
{
if(configuration == null)
configuration = new Configuration();
 
return configuration;
}
 
public static SessionFactory getSessionFactory()
throws HibernateException
{
if(sessionFactory == null)
sessionFactory = getConfiguration().configure().buildSessionFactory();
 
return sessionFactory;
}
 
private static HibernateBean currentBean()
throws HibernateException
{
HibernateBean hb = (HibernateBean)hibernateBean.get();
 
if(hb == null) {
hb = new HibernateBean();
hb.session = getSessionFactory().openSession();
hibernateBean.set(hb);
}
return hb;
}
 
public static Session currentSession()
throws HibernateException
{
return currentBean().session;
}
 
public static void closeSession()
throws HibernateException, ModelException
{
HibernateBean hb = (HibernateBean)hibernateBean.get();
 
if(hb == null)
throw new ModelException("No session found for this thread");
 
hibernateBean.set(null);
hb.session.close();
}
 
public static void beginTransaction()
throws HibernateException, ModelException
{
HibernateBean hb = (HibernateBean)hibernateBean.get();
 
if(hb != null && hb.transaction != null)
throw new ModelException("Transaction is already open");
 
currentBean().transaction = currentSession().beginTransaction();
}
 
public static boolean isTransactionOpen()
throws HibernateException, ModelException
{
HibernateBean hb = (HibernateBean)hibernateBean.get();
 
return (hb != null) && (hb.transaction != null);
}
 
public static void commitTransaction()
throws HibernateException, ModelException
{
HibernateBean hb = (HibernateBean)hibernateBean.get();
 
if(hb == null || hb.transaction == null)
throw new ModelException("No open transaction");
 
hb.transaction.commit();
hb.transaction = null;
}
 
public static void rollbackTransaction()
throws HibernateException, ModelException
{
HibernateBean hb = (HibernateBean)hibernateBean.get();
 
if(hb == null || hb.transaction == null)
throw new ModelException("No open transaction");
 
hb.transaction.rollback();
hb.transaction = null;
}
 
static class HibernateBean
{
public Session session;
public Transaction transaction;
}
}
/kickup/tags/release-1.0/src/ak/kickup/util/ModelException.java
0,0 → 1,44
package ak.kickup.util;
 
public class ModelException
extends Exception
{
private Exception chainedException;
 
public ModelException()
{
this(null, null);
}
 
public ModelException(String message)
{
this(message, null);
}
 
public ModelException(Exception chainedException)
{
this(null, chainedException);
}
 
public ModelException(String message, Exception chainedException)
{
super(message);
this.chainedException = chainedException;
}
 
public Exception getChainedException()
{
return chainedException;
}
 
public void setChainedException(Exception chainedException)
{
this.chainedException = chainedException;
}
 
public String toString()
{
return super.toString()
+ (chainedException == null ? "" : "\n" + chainedException.toString());
}
}
/kickup/tags/release-1.0/src/ak/kickup/util/FormException.java
0,0 → 1,39
package ak.kickup.util;
 
public class FormException
extends UserException
{
private String property;
 
public FormException()
{
this(null, null, null);
}
 
public FormException(String message)
{
this(message, null, null);
}
 
public FormException(String message, String property)
{
this(message, property, null);
}
 
public FormException(String message, String property, Object[] values)
{
super(message, values);
this.property = property;
}
 
public String getProperty()
{
return property;
}
 
public String toString()
{
return super.toString()
+ (property == null ? "" : " for " + property);
}
}