3 import java
.io
.IOException
;
4 import java
.io
.InputStream
;
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
;
33 @MountPath(path
= "validate")
34 @MountMixedParam(parameterNames
= { "url" })
35 public class HomePage
extends ValidatorLayoutPage
{
37 public class SnippetForm
extends Form
<SnippetForm
> {
42 private static final long serialVersionUID
= 1L;
44 private String snippet
;
46 public SnippetForm(String id
) {
48 setDefaultModel(new CompoundPropertyModel
<SnippetForm
>(this));
50 add(new TextArea
<String
>("snippet"));
54 * @see org.apache.wicket.markup.html.form.Form#onSubmit()
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
> {
71 private static final long serialVersionUID
= 1L;
73 private FileUpload file
;
75 public FileForm(String id
) {
77 setDefaultModel(new CompoundPropertyModel
<FileForm
>(this));
79 add(new FileUploadField("file"));
83 * @see org.apache.wicket.markup.html.form.Form#onSubmit()
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();
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
);
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
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.
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"));