Example usage for org.apache.wicket.markup.html.pages InternalErrorPage InternalErrorPage

List of usage examples for org.apache.wicket.markup.html.pages InternalErrorPage InternalErrorPage

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.pages InternalErrorPage InternalErrorPage.

Prototype

public InternalErrorPage() 

Source Link

Document

Constructor.

Usage

From source file:org.efaps.mobile.wicket.MobileSession.java

License:Apache License

/**
 *
 *//*from  www  .j  av  a2s.c  om*/
public void openContext() {
    if (isAuthenticated()) {
        try {
            if (!Context.isTMActive()) {
                final ServletWebRequest request = (ServletWebRequest) RequestCycle.get().getRequest();

                final Map<String, String[]> parameters = new HashMap<String, String[]>();
                final IRequestParameters reqPara = request.getRequestParameters();
                for (final String name : reqPara.getParameterNames()) {
                    final List<StringValue> values = reqPara.getParameterValues(name);
                    final String[] valArray = new String[values.size()];
                    int i = 0;
                    for (final StringValue value : values) {
                        valArray[i] = value.toString();
                        i++;
                    }
                    parameters.put(name, valArray);
                }
                final Map<String, Object> sessionAttributes = new HashMap<String, Object>();
                for (final String attribute : getAttributeNames()) {
                    sessionAttributes.put(attribute, getAttribute(attribute));
                }
                Context.begin(this.userName, super.getLocale(), sessionAttributes, parameters, null, true);
                // set the locale in the context and in the session
                setLocale(Context.getThreadContext().getLocale());
                setAttribute(UserAttributesSet.CONTEXTMAPKEY, Context.getThreadContext().getUserAttributes());
                Context.getThreadContext().setPath(request.getContextPath());
            }
        } catch (final EFapsException e) {
            MobileSession.LOG.error("could not initialise the context", e);
            throw new RestartResponseException(new InternalErrorPage());
        }
    }
}

From source file:org.efaps.mobile.wicket.MobileSession.java

License:Apache License

/**
 * Method that closes the opened Context {@link #openContext()}, by
 * committing or rollback it./* w ww.  java  2 s  .co  m*/
 *
 * @see #detach()
 */
public void closeContext() {
    if (isAuthenticated()) {
        try {
            if (!Context.isTMNoTransaction()) {
                if (Context.isTMActive()) {
                    Context.commit();
                } else {
                    Context.rollback();
                }
            }
        } catch (final SecurityException e) {
            throw new RestartResponseException(new InternalErrorPage());
        } catch (final IllegalStateException e) {
            throw new RestartResponseException(new InternalErrorPage());
        } catch (final EFapsException e) {
            throw new RestartResponseException(new InternalErrorPage());
        }
    }
}

From source file:org.pangaea.agrigrid.service.agriculture.gui.img.AddPage.java

public AddPage() {
    add(new FeedbackPanel("feedback"));
    form = new Form("form");
    form.setMultiPart(true);/*from w ww  .j a  v  a  2  s  .co  m*/
    add(form);
    form.add(imageField = new FileUploadField("image"));

    form.add(copyright = new TextArea<String>("copyright", new Model<String>()));
    form.add(license = new TextArea<String>("license", new Model<String>()));

    DaoFactory f = DaoFactory.createInstance();
    DaoContext dc = f.getContext();
    dc.beginTransaction();
    try {
        List<Category> cList = new ArrayList<Category>(
                new LinkedHashSet<Category>(DaoFactory.createInstance().getCategoryDao().listAllCategories()));

        category = new CheckBoxMultipleChoice<Category>("category", new Model<ArrayList<Category>>(),
                new WildcardListModel<Category>(cList));

        category.setChoiceRenderer(new IChoiceRenderer<Category>() {
            @Override
            public Object getDisplayValue(Category object) {
                return object.getCategoryId() + "(" + object.getTexts().get("en") + ")";
            }

            @Override
            public String getIdValue(Category object, int index) {
                return object.getCategoryId();
            }
        });
        //      category.setSuffix("&nbsp; ");
        form.add(category);
    } finally {
        dc.commit();
    }

    captionWrapper = new WebMarkupContainer("captionWrapper");
    captionWrapper.setOutputMarkupId(true);
    form.add(captionWrapper);
    captionRepeater = new RepeatingView("captionRepeater");
    captionWrapper.add(captionRepeater);

    form.add(new Button("add") {
        @SuppressWarnings("unchecked")
        @Override
        public void onSubmit() {
            DaoFactory f = DaoFactory.createInstance();
            DaoContext dc = f.getContext();
            HibernateImageDao imgd = f.getImageDao();
            long imageId;
            dc.beginTransaction();
            try {
                // add video
                List<String> captionList = new ArrayList<String>();
                List<Language> captionLangList = new ArrayList<Language>();
                for (int i = 0; i < captionRepeater.size(); i++) {
                    WebMarkupContainer wmc = (WebMarkupContainer) captionRepeater.get(i);
                    captionList.add(((TextArea<String>) wmc.get("caption")).getModelObject());
                    captionLangList.add(((LanguageChoice) wmc.get("captionLang")).getModelObject());
                }

                Image i = imgd.addImage(imageField.getFileUpload().getClientFileName(),
                        copyright.getModelObject(), license.getModelObject(),
                        captionLangList.toArray(new Language[] {}), captionList.toArray(new String[] {}),
                        imageField.getFileUpload().getInputStream());

                for (Category c : category.getModelObject()) {
                    i.getCategories().put(c.getCategoryId(), c);
                }
                imageId = i.getImageId();
                dc.commit();
            } catch (IOException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }

            dc.beginTransaction();
            try {
                // set thumbnail
                FileUpload thumbFile = imageField.getFileUpload();
                String[] fileNames = thumbFile.getClientFileName().split("\\.");
                String format = fileNames[fileNames.length - 1];

                BufferedImage thumb = ImageIO
                        .read(ImageUtil.resize(thumbFile.getInputStream(), thumbWidth, format));
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                BufferedOutputStream os = new BufferedOutputStream(bos);
                try {
                    thumb.flush();
                    ImageIO.write(thumb, format, os);
                    os.flush();
                } finally {
                    os.close();
                }
                byte[] thumbnail = bos.toByteArray();

                imgd.setThumbnail(imageId, thumbnail);

                dc.commit();
            } catch (IOException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (EntityNotFoundException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }

            setResponsePage(new IndexPage());
        }
    });
    form.add(new Link("cancel") {
        @Override
        public void onClick() {
            setResponsePage(new IndexPage());
        }
    });
    form.add(new AjaxSubmitLink("addCaption") {
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> arg1) {
            try {
                setCaptionComponents(captionRepeater);
                target.addComponent(captionWrapper);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (IllegalAccessException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (Throwable e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }
        }
    }.setDefaultFormProcessing(false));

}

From source file:org.pangaea.agrigrid.service.agriculture.gui.img.EditPage.java

public EditPage(long videoId) {
    this.editImageId = videoId;
    DaoFactory f = DaoFactory.createInstance();
    DaoContext dc = f.getContext();//from   w  w  w.  j  av a 2 s .co m
    dc.beginTransaction();
    org.pangaea.agrigrid.service.agriculture.dao.entity.Image v = null;
    byte[] thumbnailObj;
    ArrayList<Category> selectedCList = new ArrayList<Category>();
    List<ImageCaption> captionList = new ArrayList<ImageCaption>();
    try {
        v = f.getImageDao().getImage(videoId);
        Blob b = v.getThumbnail();
        thumbnailObj = b.getBytes(1, (int) b.length());
        for (Category c : v.getCategories().values()) {
            selectedCList.add(c);
        }
        for (ImageCaption vc : v.getCaptions().values()) {
            captionList.add(vc);
        }
        dc.commit();
    } catch (SQLException e) {
        dc.rollback();
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    }
    add(new FeedbackPanel("feedback"));
    form = new Form("form");
    form.setOutputMarkupId(true);
    add(form);

    form.add(new Label("fileName", fileName = v.getFileName()));
    form.add(imageField = new FileUploadField("video"));

    form.add(new Image("thumbnailImage", new ImageThumbnail(thumbnailObj)));

    form.add(copyright = new TextArea<String>("copyright", new Model<String>(v.getCopyright())));
    form.add(license = new TextArea<String>("license", new Model<String>(v.getLicense())));

    dc.beginTransaction();
    try {
        List<Category> cList = new ArrayList<Category>(
                new LinkedHashSet<Category>(DaoFactory.createInstance().getCategoryDao().listAllCategories()));

        category = new CheckBoxMultipleChoice<Category>("category",
                new Model<ArrayList<Category>>(selectedCList), new WildcardListModel<Category>(cList));

        category.setChoiceRenderer(new IChoiceRenderer<Category>() {
            @Override
            public Object getDisplayValue(Category object) {
                return object.getCategoryId() + "(" + object.getTexts().get("en") + ")";
            }

            @Override
            public String getIdValue(Category object, int index) {
                return object.getCategoryId();
            }
        });
        form.add(category);
    } finally {
        dc.commit();
    }

    captionWrapper = new WebMarkupContainer("captionWrapper");
    captionWrapper.setOutputMarkupId(true);
    form.add(captionWrapper);
    captionRepeater = new RepeatingView("captionRepeater");
    captionWrapper.add(captionRepeater);

    try {
        for (ImageCaption vc : captionList) {
            setCaptionComponents(captionRepeater, vc.getText(), new Language(vc.getLanguage()));
        }
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    } catch (IllegalAccessException e) {
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    } catch (Throwable e) {
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    }

    form.add(new Button("edit") {
        @SuppressWarnings("unchecked")
        @Override
        public void onSubmit() {
            FileUpload imageFile = imageField.getFileUpload();

            Map<Language, String> captionMap = new LinkedHashMap<Language, String>();
            for (int i = 0; i < captionRepeater.size(); i++) {
                WebMarkupContainer wmc = (WebMarkupContainer) captionRepeater.get(i);
                TextArea<String> ta = (TextArea<String>) wmc.get("caption");
                LanguageChoice lc = (LanguageChoice) wmc.get("captionLang");
                captionMap.put(lc.getModelObject(), ta.getModelObject());
            }

            DaoFactory f = DaoFactory.createInstance();
            DaoContext dc = f.getContext();
            HibernateImageDao imgd = f.getImageDao();
            dc.beginTransaction();
            try {
                if (imageFile != null) {
                    String[] fileNames = imageFile.getClientFileName().split("\\.");
                    String format = fileNames[fileNames.length - 1];
                    InputStream thumb = ImageUtil.resize(imageFile.getInputStream(), 100, format);
                    imgd.update(editImageId, imageFile == null ? "" : imageFile.getClientFileName(),
                            copyright.getModelObject(), license.getModelObject(), captionMap,
                            category.getModelObject(), imageFile.getInputStream(), thumb);
                } else {
                    imgd.update(editImageId, imageFile == null ? "" : imageFile.getClientFileName(),
                            copyright.getModelObject(), license.getModelObject(), captionMap,
                            category.getModelObject(), null, null);
                }
                dc.commit();
            } catch (NumberFormatException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (IOException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (EntityNotFoundException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (InvalidLanguageTagException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }
            setResponsePage(new IndexPage());
        }
    });
    form.add(new Link("cancel") {
        @Override
        public void onClick() {
            setResponsePage(new IndexPage());
        }
    });
    form.add(new AjaxSubmitLink("addCaption") {
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> arg1) {
            try {
                setCaptionComponents(captionRepeater, "", LanguageUtil.getLanguageList(getLocale()).get(0));
                target.addComponent(captionWrapper);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (IllegalAccessException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (Throwable e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }
        }
    }.setDefaultFormProcessing(false));
}

From source file:org.pangaea.agrigrid.service.agriculture.gui.video.AddPage.java

public AddPage() {
    add(new FeedbackPanel("feedback"));
    form = new Form("form");
    form.setMultiPart(true);//from  www  .  j  av  a  2s . c  o m
    form.setOutputMarkupId(true);
    add(form);
    form.add(video = new FileUploadField("video"));
    form.add(thumbnail = new FileUploadField("thumbnail"));

    form.add(copyright = new TextArea<String>("copyright", new Model<String>()));
    form.add(license = new TextArea<String>("license", new Model<String>()));

    DaoFactory f = DaoFactory.createInstance();
    DaoContext dc = f.getContext();
    dc.beginTransaction();
    try {
        List<Category> cList = new ArrayList<Category>(
                new LinkedHashSet<Category>(DaoFactory.createInstance().getCategoryDao().listAllCategories()));

        category = new CheckBoxMultipleChoice<Category>("category", new Model<ArrayList<Category>>(),
                new WildcardListModel<Category>(cList));

        category.setChoiceRenderer(new IChoiceRenderer<Category>() {
            @Override
            public Object getDisplayValue(Category object) {
                return object.getCategoryId() + "(" + object.getTexts().get("en") + ")";
            }

            @Override
            public String getIdValue(Category object, int index) {
                return object.getCategoryId();
            }
        });
        form.add(category);
    } finally {
        dc.commit();
    }

    captionWrapper = new WebMarkupContainer("captionWrapper");
    captionWrapper.setOutputMarkupId(true);
    form.add(captionWrapper);
    captionRepeater = new RepeatingView("captionRepeater");
    captionWrapper.add(captionRepeater);

    subtitleWrapper = new WebMarkupContainer("subtitleWrapper");
    subtitleWrapper.setOutputMarkupId(true);
    form.add(subtitleWrapper);
    subtitleRepeater = new RepeatingView("subtitleRepeater");
    subtitleWrapper.add(subtitleRepeater);

    form.add(new Button("add") {
        @SuppressWarnings("unchecked")
        @Override
        public void onSubmit() {
            DaoFactory f = DaoFactory.createInstance();
            DaoContext dc = f.getContext();
            HibernateVideoDao vd = f.getVideoDao();
            long videoId;
            dc.beginTransaction();
            try {
                // add video
                List<String> captionList = new ArrayList<String>();
                List<Language> captionLangList = new ArrayList<Language>();
                for (int i = 0; i < captionRepeater.size(); i++) {
                    WebMarkupContainer wmc = (WebMarkupContainer) captionRepeater.get(i);
                    captionList.add(((TextArea<String>) wmc.get("caption")).getModelObject());
                    captionLangList.add(((LanguageChoice) wmc.get("captionLang")).getModelObject());
                }
                Video v = vd.addVideo(video.getFileUpload().getClientFileName(), copyright.getModelObject(),
                        license.getModelObject(), captionLangList.toArray(new Language[] {}),
                        captionList.toArray(new String[] {}), video.getFileUpload().getInputStream());

                for (Category c : category.getModelObject()) {
                    v.getCategories().put(c.getCategoryId(), c);
                }
                videoId = v.getVideoId();
                dc.commit();
            } catch (IOException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }

            dc.beginTransaction();
            try {
                // set thumbnail
                vd.setThumbnail(videoId, thumbnail.getFileUpload().getBytes());
                dc.commit();
            } catch (IOException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (EntityNotFoundException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }

            dc.beginTransaction();
            try {
                // add subtitles
                for (int i = 0; i < subtitleRepeater.size(); i++) {
                    WebMarkupContainer wmc = (WebMarkupContainer) subtitleRepeater.get(i);

                    Map<String, Pair<Long, Long>> subtitle = new LinkedHashMap<String, Pair<Long, Long>>();
                    FileUploadField fuf = ((FileUploadField) wmc.get("subtitleFile"));

                    Document menuDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
                            .parse(fuf.getConvertedInput().getInputStream());
                    XPath xpath = XPathFactory.newInstance().newXPath();
                    NodeList targetList = (NodeList) xpath.evaluate("//Subtitle", menuDoc,
                            XPathConstants.NODESET);
                    for (int j = 0; j < targetList.getLength(); j++) {
                        Node sn = targetList.item(j).getAttributes().getNamedItem("start");
                        long startSec = parseMilliSecond(sn.getTextContent());
                        Node en = targetList.item(j).getAttributes().getNamedItem("end");
                        long endSec = parseMilliSecond(en.getTextContent());
                        String subtitleText = targetList.item(j).getAttributes().getNamedItem("name")
                                .getTextContent();
                        subtitle.put(subtitleText, new Pair<Long, Long>(startSec, endSec));
                    }
                    vd.addSubtitles(videoId, ((LanguageChoice) wmc.get("subtitleLang")).getModelObject(),
                            subtitle);
                }
                dc.commit();
            } catch (IOException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (SAXException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (ParserConfigurationException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (XPathExpressionException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }

            setResponsePage(new IndexPage());
        }
    });
    form.add(new Link("cancel") {
        @Override
        public void onClick() {
            setResponsePage(new IndexPage());
        }
    });
    form.add(new AjaxSubmitLink("addCaption", form) {
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> arg1) {
            try {
                setCaptionComponents(captionRepeater);
                target.addComponent(captionWrapper);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (IllegalAccessException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (Throwable e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }
        }
    }.setDefaultFormProcessing(false));

    form.add(new AjaxSubmitLink("addSubtitle", form) {
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> arg1) {
            try {
                setSubtitleComponents(subtitleRepeater);
                target.addComponent(subtitleWrapper);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (IllegalAccessException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (Throwable e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }
        }
    }.setDefaultFormProcessing(false));
}

From source file:org.pangaea.agrigrid.service.agriculture.gui.video.EditPage.java

public EditPage(long videoId) {
    this.editVideoId = videoId;
    DaoFactory f = DaoFactory.createInstance();
    DaoContext dc = f.getContext();//from w  w w .jav a2  s  .c o m
    dc.beginTransaction();
    Video v = null;
    byte[] thumbnailObj;
    ArrayList<Category> selectedCList = new ArrayList<Category>();
    List<VideoCaption> captionList = new ArrayList<VideoCaption>();
    Set<Subtitle> subtitleSet = new LinkedHashSet<Subtitle>();
    try {
        v = f.getVideoDao().getVideo(videoId);
        Blob b = v.getThumbnail();
        thumbnailObj = b.getBytes(1, (int) b.length());
        for (Category c : v.getCategories().values()) {
            selectedCList.add(c);
        }
        for (VideoCaption vc : v.getCaptions().values()) {
            captionList.add(vc);
        }
        // sort
        Map<Language, Map<Long, Subtitle>> map = new LinkedHashMap<Language, Map<Long, Subtitle>>();
        for (Subtitle st : v.getSubtitles()) {
            Language l = new Language(st.getLanguage());
            Map<Long, Subtitle> subMap = new TreeMap<Long, Subtitle>();
            if (map.containsKey(l)) {
                subMap = map.get(l);
            }
            subMap.put(st.getStartMillis(), st);
            map.put(l, subMap);
        }
        for (Map<Long, Subtitle> subMap : map.values()) {
            subtitleSet.addAll(subMap.values());
        }
        dc.commit();
    } catch (SQLException e) {
        dc.rollback();
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    } catch (InvalidLanguageTagException e) {
        dc.rollback();
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    }
    add(new FeedbackPanel("feedback"));
    form = new Form("form");
    form.setMultiPart(true);
    form.setOutputMarkupId(true);
    add(form);

    form.add(new Label("fileName", fileName = v.getFileName()));
    form.add(video = new FileUploadField("video"));

    form.add(new Image("thumbnailImage", new VideoThumbnail(thumbnailObj)));
    form.add(thumbnail = new FileUploadField("thumbnail"));

    form.add(copyright = new TextArea<String>("copyright", new Model<String>(v.getCopyright())));
    form.add(license = new TextArea<String>("license", new Model<String>(v.getLicense())));

    dc = f.getContext();
    dc.beginTransaction();
    try {
        List<Category> cList = new ArrayList<Category>(
                new LinkedHashSet<Category>(DaoFactory.createInstance().getCategoryDao().listAllCategories()));

        category = new CheckBoxMultipleChoice<Category>("category",
                new Model<ArrayList<Category>>(selectedCList), new WildcardListModel<Category>(cList));

        category.setChoiceRenderer(new IChoiceRenderer<Category>() {
            @Override
            public Object getDisplayValue(Category object) {
                return object.getCategoryId() + "(" + object.getTexts().get("en") + ")";
            }

            @Override
            public String getIdValue(Category object, int index) {
                return object.getCategoryId();
            }
        });
        form.add(category);
    } finally {
        dc.commit();
    }

    captionWrapper = new WebMarkupContainer("captionWrapper");
    captionWrapper.setOutputMarkupId(true);
    form.add(captionWrapper);
    captionRepeater = new RepeatingView("captionRepeater");
    captionWrapper.add(captionRepeater);

    subtitleWrapper = new WebMarkupContainer("subtitleWrapper");
    subtitleWrapper.setOutputMarkupId(true);
    form.add(subtitleWrapper);
    subtitleRepeater = new RepeatingView("subtitleRepeater");
    subtitleWrapper.add(subtitleRepeater);

    try {
        for (VideoCaption vc : captionList) {
            setCaptionComponents(captionRepeater, vc.getText(), new Language(vc.getLanguage()));
        }
        setSubtitleComponents(subtitleRepeater, subtitleSet);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    } catch (IllegalAccessException e) {
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    } catch (Throwable e) {
        e.printStackTrace();
        throw new RestartResponseException(new InternalErrorPage());
    }

    form.add(new Button("edit") {
        @SuppressWarnings("unchecked")
        @Override
        public void onSubmit() {
            FileUpload swf = video.getFileUpload();
            FileUpload image = thumbnail.getFileUpload();

            Map<Language, String> captionMap = new LinkedHashMap<Language, String>();
            for (int i = 0; i < captionRepeater.size(); i++) {
                WebMarkupContainer wmc = (WebMarkupContainer) captionRepeater.get(i);
                TextArea<String> ta = (TextArea<String>) wmc.get("caption");
                LanguageChoice lc = (LanguageChoice) wmc.get("captionLang");
                captionMap.put(lc.getModelObject(), ta.getModelObject());
            }
            Map<Language, Map<String, Pair<Long, Long>>> subtitles = new LinkedHashMap<Language, Map<String, Pair<Long, Long>>>();
            for (int i = 0; i < subtitleRepeater.size(); i++) {
                Map<String, Pair<Long, Long>> subtitle = new LinkedHashMap<String, Pair<Long, Long>>();

                WebMarkupContainer wmc = (WebMarkupContainer) subtitleRepeater.get(i);
                Language l = ((LanguageChoice) wmc.get("subtitleLang")).getModelObject();
                FileUpload fu = ((FileUploadField) wmc.get("subtitleFile")).getConvertedInput();
                if (fu == null) {
                    subtitles.put(l, subtitle);
                    continue;
                }

                try {
                    Document menuDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
                            .parse(fu.getInputStream());
                    XPath xpath = XPathFactory.newInstance().newXPath();
                    NodeList targetList = (NodeList) xpath.evaluate("//Subtitle", menuDoc,
                            XPathConstants.NODESET);
                    for (int j = 0; j < targetList.getLength(); j++) {
                        Node sn = targetList.item(j).getAttributes().getNamedItem("start");
                        Long startSec = parseMilliSecond(sn.getTextContent());
                        Node en = targetList.item(j).getAttributes().getNamedItem("end");
                        Long endSec = parseMilliSecond(en.getTextContent());
                        String subtitleText = targetList.item(j).getAttributes().getNamedItem("name")
                                .getTextContent();
                        subtitle.put(subtitleText, new Pair<Long, Long>(startSec, endSec));
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    throw new RestartResponseException(new InternalErrorPage());
                } catch (SAXException e) {
                    e.printStackTrace();
                    throw new RestartResponseException(new InternalErrorPage());
                } catch (ParserConfigurationException e) {
                    e.printStackTrace();
                    throw new RestartResponseException(new InternalErrorPage());
                } catch (XPathExpressionException e) {
                    e.printStackTrace();
                    throw new RestartResponseException(new InternalErrorPage());
                }

                subtitles.put(l, subtitle);
            }

            DaoFactory f = DaoFactory.createInstance();
            DaoContext dc = f.getContext();
            HibernateVideoDao vd = f.getVideoDao();
            dc.beginTransaction();
            try {
                vd.update(editVideoId, swf == null ? "" : swf.getClientFileName(), copyright.getModelObject(),
                        license.getModelObject(), captionMap, category.getModelObject(), subtitles,
                        swf == null ? null : swf.getInputStream(),
                        image == null ? null : image.getInputStream());
                dc.commit();
            } catch (NumberFormatException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (IOException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (EntityNotFoundException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (InvalidLanguageTagException e) {
                dc.rollback();
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }
            setResponsePage(new IndexPage());
        }
    });
    form.add(new Link("cancel") {
        @Override
        public void onClick() {
            setResponsePage(new IndexPage());
        }
    });
    form.add(new AjaxLink("addCaption") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            try {
                setCaptionComponents(captionRepeater, "", LanguageUtil.getLanguageList(getLocale()).get(0));
                target.addComponent(captionWrapper);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (IllegalAccessException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (Throwable e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }
        }
    });

    form.add(new AjaxLink("addSubtitle") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            try {
                WebMarkupContainer wmc = new WebMarkupContainer(subtitleRepeater.newChildId());
                subtitleRepeater.add(wmc);
                wmc.add(new FileUploadField("subtitleFile"));
                wmc.add(new LanguageChoice("subtitleLang",
                        AgricultureAdminApplication.getApplication().getSupportedLanguage()));
                wmc.add(new WebMarkupContainer("download").setVisible(false));
                wmc.add(new AjaxLink<WebMarkupContainer>("deleteSubtitle", new Model<WebMarkupContainer>(wmc)) {
                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        subtitleRepeater.remove(getModelObject());
                        target.addComponent(subtitleWrapper);
                    }
                });
                target.addComponent(subtitleWrapper);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            } catch (Throwable e) {
                e.printStackTrace();
                throw new RestartResponseException(new InternalErrorPage());
            }
        }
    });
}