package org.openbakery.racecontrol.plugin.rcsv.web; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.model.PropertyModel; import org.openbakery.racecontrol.data.RaceEntry; import org.openbakery.racecontrol.service.RaceEntryService; import org.openbakery.racecontrol.service.ServiceLocateException; import org.openbakery.racecontrol.service.ServiceLocator; import org.openbakery.racecontrol.web.RaceControlPage; import org.openbakery.racecontrol.web.bean.Visibility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.text.SimpleDateFormat; import java.util.List; /** * Created by IntelliJ IDEA. * User: rene * Date: 19.03.12 * Time: 18:10 * To change this template use File | Settings | File Templates. */ public class RCSVPage extends RaceControlPage { private static Logger log = LoggerFactory.getLogger(RCSVPage.class); private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); public RCSVPage() { this(new RCSV()); } public RCSVPage(RCSV rcsv) { Form<RaceEntry> form = new Form<RaceEntry>("form"); add(form); List<RaceEntry> raceEntryList = getRaceEntryService().getRaceEntries(); DropDownChoice<RaceEntry> userChoice = new DropDownChoice<RaceEntry>("raceEntry", new PropertyModel<RaceEntry>(rcsv, "RaceEntry"), raceEntryList, createRaceEntryRenderer()); form.add(userChoice); if (raceEntryList.size() == 1) { rcsv.setRaceEntry(raceEntryList.get(0)); } form.add(new RCSVGenerateButton("generate", rcsv)); log.debug("race entries: {}", raceEntryList); } @Override public String getPageTitle() { return "RCSV Export"; } @Override public Visibility getVisibility() { return Visibility.AUTHENTICATED; } public RaceEntryService getRaceEntryService() { ServiceLocator serviceLocator = getSession().getServiceLocator(); try { return (RaceEntryService) serviceLocator.getService(RaceEntryService.class); } catch (ServiceLocateException e) { error("Internal error!"); log.error(e.getMessage(), e); } return null; } public IChoiceRenderer<RaceEntry> createRaceEntryRenderer() { return new IChoiceRenderer<RaceEntry>() { private static final long serialVersionUID = 1L; public String getDisplayValue(RaceEntry raceEntry) { return raceEntry.getTrack() + "-" + DATE_FORMAT.format(raceEntry.getStartTime()); } public String getIdValue(RaceEntry raceEntry, int index) { return Integer.toString(raceEntry.getId()); } }; } }