package vwl.presentation; import java.net.*; import org.w3c.dom.html.*; import com.lutris.xml.xmlc.*; import com.lutris.util.*; import com.lutris.appserver.server.Enhydra; import com.lutris.appserver.server.httpPresentation.*; import com.lutris.appserver.server.session.SessionData; import com.lutris.dods.builder.generator.query.*; import com.lutris.logging.*; import vwl.data.*; import vwl.business.*; public class Winzer implements HttpPresentation { private static final String SESSION_KEY="Winzer_key", EVENT="event", NAME="name", LAND="land", REGION="region", NOTIZ="notiz", EVENT_EMPTY="showEmpty", EVENT_ADD="processAdd", EVENT_RETRY="retry"; private Data iData = new Data(); private HttpPresentationComms iComms; public void run(HttpPresentationComms comms) throws HttpPresentationException { iComms = comms; String event = iComms.request.getParameter(EVENT); if (event == null) showEmptyPage(); else if (event.equals(EVENT_ADD)) processAdd(); else if (event.equals(EVENT_RETRY)) processRetry(); else showEmptyPage(); } private void showEmptyPage() throws HttpPresentationException { WinzerHTML page = new WinzerHTMLImpl(); clearForm(page); iComms.response.writeHTML(page); } private void processRetry() throws HttpPresentationException { WinzerHTML page = new WinzerHTMLImpl(); clearForm(page); fillForm(page); iComms.response.writeHTML(page); } private void clearForm(WinzerHTML page) { HTMLInputElement ie = (HTMLInputElement) page.getElementWinzerName(); ie.setValue(""); ie = (HTMLInputElement) page.getElementWinzerLand(); ie.setValue(""); ie = (HTMLInputElement) page.getElementWinzerRegion(); ie.setValue(""); HTMLTextAreaElement tae = (HTMLTextAreaElement) page.getElementWinzerNotiz(); tae.getFirstChild().setNodeValue(""); } private void fillForm(WinzerHTML page) throws HttpPresentationException { try { iData = (Data) iComms.session.getSessionData().get(SESSION_KEY); } catch (Exception e) { iData = new Data(); } HTMLInputElement ie; if (iData.iName != null) { ie = (HTMLInputElement) page.getElementWinzerName(); ie.setValue(iData.iName); } if (iData.iLand != null) { ie = (HTMLInputElement) page.getElementWinzerLand(); ie.setValue(iData.iLand); } if (iData.iRegion != null) { ie = (HTMLInputElement) page.getElementWinzerRegion(); ie.setValue(iData.iRegion); } if (iData.iNotiz != null) { HTMLTextAreaElement tae = (HTMLTextAreaElement) page.getElementWinzerNotiz(); tae.getFirstChild().setNodeValue(iData.iNotiz); } } private void processAdd() throws HttpPresentationException { try { readParams(); WinzerBO winzer = new WinzerBO(); winzer.setName(iData.iName); winzer.setLand(iData.iLand); if (iData.iRegion != null) winzer.setRegion(iData.iRegion); if (iData.iNotiz != null) winzer.setNotiz(iData.iNotiz); winzer.commit(); writeRes("Datensatz erfolgreich geschrieben"); } catch (RefAssertionException rae) { Throwable t = rae.getCause(); if (t instanceof IncompleteDataException) writeRes("Daten fehlen!"); else if (t instanceof NonUniqueDataException) writeRes("Winzer innerhalb der Region schon vorhanden!"); else writeRes(t.getMessage()); } catch (Exception e) { writeRes(e.getMessage()); } } private void readParams() throws HttpPresentationException, KeywordValueException { iData.iName = iComms.request.getParameter(NAME); iData.iLand = iComms.request.getParameter(LAND); iData.iRegion = iComms.request.getParameter(REGION); iData.iNotiz = iComms.request.getParameter(NOTIZ); iComms.session.getSessionData().set(SESSION_KEY,iData); } private void writeRes(String msg) throws HttpPresentationException { WinzerOkHTML page = new WinzerOkHTMLImpl(); page.setTextWinzerOkH2(msg); if (iData.iName != null) { page.setTextWinzerOkName(iData.iName); } if (iData.iLand != null) { page.setTextWinzerOkLand(iData.iLand); } if (iData.iRegion != null) { page.setTextWinzerOkRegion(iData.iRegion); } if (iData.iNotiz != null) { page.setTextWinzerOkNotiz(iData.iNotiz); } iComms.response.writeHTML(page); } static class Data { protected String iName, iLand, iRegion, iNotiz; } }