initial checkin
[ical-validator.git] / src / main / java / net / bzzt / ical / HomePage.java
blobc91a7be38b461923f77bbe550b440d8200e6ce62
1 package net.bzzt.ical;
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.List;
7 import net.fortuna.ical4j.data.CalendarBuilder;
8 import net.fortuna.ical4j.data.ParserException;
9 import net.fortuna.ical4j.model.Calendar;
10 import net.fortuna.ical4j.model.ValidationException;
11 import net.fortuna.ical4j.util.CompatibilityHints;
12 import net.fortuna.ical4j.util.validation.CollectingValidationResultHandler;
13 import net.fortuna.ical4j.util.validation.ValidationResult;
14 import net.fortuna.ical4j.util.validation.ValidationResultHandler;
16 import org.apache.commons.httpclient.URI;
17 import org.apache.wicket.PageParameters;
18 import org.apache.wicket.Session;
19 import org.apache.wicket.markup.html.WebMarkupContainer;
20 import org.apache.wicket.markup.html.WebPage;
21 import org.apache.wicket.markup.html.form.Form;
22 import org.apache.wicket.markup.html.form.TextArea;
23 import org.apache.wicket.markup.html.form.TextField;
24 import org.apache.wicket.markup.html.form.upload.FileUploadField;
25 import org.apache.wicket.model.CompoundPropertyModel;
26 import org.apache.wicket.util.upload.FileUpload;
27 import org.wicketstuff.annotation.mount.MountPath;
28 import org.wicketstuff.annotation.strategy.MountMixedParam;
30 /**
31 * Homepage
33 @MountPath(path = "validate")
34 @MountMixedParam(parameterNames = { "url" })
35 public class HomePage extends ValidatorLayoutPage {
37 public class SnippetForm extends Form<SnippetForm> {
39 /**
42 private static final long serialVersionUID = 1L;
44 private String snippet;
46 public SnippetForm(String id) {
47 super(id);
48 setDefaultModel(new CompoundPropertyModel<SnippetForm>(this));
50 add(new TextArea<String>("snippet"));
53 /* (non-Javadoc)
54 * @see org.apache.wicket.markup.html.form.Form#onSubmit()
56 @Override
57 protected void onSubmit() {
58 // URI uri = SnippetForm.this.getModelObject().url;
60 // PageParameters parameters = new PageParameters();
61 // parameters.add("url", uri.toString());
62 // setResponsePage(UrlValidationPage.class, parameters);
66 public class FileForm extends Form<FileForm> {
68 /**
71 private static final long serialVersionUID = 1L;
73 private FileUpload file;
75 public FileForm(String id) {
76 super(id);
77 setDefaultModel(new CompoundPropertyModel<FileForm>(this));
79 add(new FileUploadField("file"));
82 /* (non-Javadoc)
83 * @see org.apache.wicket.markup.html.form.Form#onSubmit()
85 @Override
86 protected void onSubmit() {
87 // URI uri = this.getModelObject().url;
89 // PageParameters parameters = new PageParameters();
90 // parameters.add("url", uri.toString());
91 // setResponsePage(UrlValidationPage.class, parameters);
95 private static final long serialVersionUID = 1L;
97 public static WebMarkupContainer getValidationResult(String id, InputStream responseBody,
98 String responseCharSet) throws IOException {
100 // We parse in 'relaxed' mode, so we can report as many errors as
101 // possible when validating
102 CompatibilityHints.setHintEnabled(
103 CompatibilityHints.KEY_RELAXED_PARSING, true);
105 CalendarBuilder builder = new CalendarBuilder();
106 Calendar calendar;
107 try {
108 calendar = builder.build(responseBody);
109 } catch (ParserException e1) {
110 Session.get().error("Error on line " + e1.getLineNo() + ": " + e1.getError());
111 return new WebMarkupContainer(id);
114 CompatibilityHints.setHintEnabled(
115 CompatibilityHints.KEY_RELAXED_PARSING, false);
117 CollectingValidationResultHandler validationResultHandler = new CollectingValidationResultHandler();
118 ValidationResultHandler.set(validationResultHandler);
120 try {
121 calendar.validate(true);
122 } catch (ValidationException e) {
123 throw new IllegalStateException("Iets mis met de handler?"
124 + e.getMessage(), e);
127 List<ValidationResult> results = (List<ValidationResult>) validationResultHandler
128 .getResults();
130 return(new ValidationResultPanel(id, results));
134 // TODO Add any page properties or variables here
137 * Constructor that is invoked when page is invoked without a session.
139 * @param parameters
140 * Page parameters
142 public HomePage(final PageParameters parameters) {
143 add(new UrlFormPanel("urlForm"));
144 add(new FileForm("fileForm"));
145 add(new SnippetForm("snippetForm"));
146 add(new WebMarkupContainer("results"));