Hi,

We're working on a wicket/spring/hibernate webapp (research
repository) and today i was working on an 'Add Publication Panel'. i
added some
validation today but whenever i click on the link that shows the panel
in the main content area it takes like 10/15 seconds to show it.
Tomcat
doesn't show any errors and everything is working. here's my Add
Publication Panel. i have no idea as to what could be causing this.

here's my panel's .java

public class AddPublicationPanel extends BasicPanel {

    @SpringBean
    private IBrowseService browseService;
    @SpringBean
    private IAddEditService addEditService;

    @SpringBean
    private IBook book;
    @SpringBean
    private IConferencePaper conferencePaper;
    @SpringBean
    private ITechnicalReport technicalReport;
    @SpringBean
    private IWorkshop workshop;
    @SpringBean
    private IArticle article;
    @SpringBean
    private IBookChapter bookChapter;
    @SpringBean(name = "book")
    private IPublication publication;

    private List<Short> year;
    private List<Byte> month;

    private Form form;
    private WebMarkupContainer detailsBook, detailsConferencePaper,
            detailsTechnicalReport, detailsWorkshop, detailsArticle,
            detailsBookChapter, detailsCurrent;
    private AjaxFallbackLink addAuthor, removeAuthor;

    private AutoCompleteTextFieldUser[] authors;

    public AddPublicationPanel() {
        super("block", "Add Publication");

        initLists();
        initCommon();
        initDetails();

    }

    private void initCommon() {
        add(new FeedbackPanel("feedback"));
        add(form = new Form("form", new CompoundPropertyModel(
publication)) {
            protected void onSubmit() {
                switch (publication.getPublicationType()) {
                case BOOK:
                    break;
                case BOOK_CHAPTER:
                    break;
                case ARTICLE:
                    break;
                case CONFERENCE_PAPER:
                    break;
                case WORKSHOP:
                    break;
                case TECHNICAL_REPORT:
                    break;
                }
            }
        });
        // title
        form.add(new TextField("title").setRequired(true).add(
                StringValidator.maximumLength(128)));
        // year
        form.add(new DropDownChoice("year", year));
        // month
        form.add(new DropDownChoice("month", month, new ChoiceRenderer() {
            @Override
            public Object getDisplayValue(Object object) {
                return (new DateFormatSymbols().getMonths())[((Byte) object)
                        .intValue()];
            }
        }));
        // abstractText
        form.add(new TextArea("abstractText").add(StringValidator
                .maximumLength(2048))); //
required??????????????????????????????
        // reproducible
        form.add(new CheckBox("reproducible"));
        // passwordProtected
        form.add(new CheckBox("passwordProtected"));
        // keywords
        form.add(new TextField("keywords").add(
                new PatternValidator("(\\s*\\w+\\s*,*\\s*)*,*\\s*")).add(
                StringValidator.maximumLength(2048)));

        // authors (internal & external)
        authors = new AutoCompleteTextFieldUser[10];
        for (int i = 0; i < 10; i++)
            // use model to set authors (internal & external)
            // later*****************
            form.add((authors[i] = new AutoCompleteTextFieldUser("author" + i))
                    .setVisible(false).setOutputMarkupId(true)
                    .setOutputMarkupPlaceholderTag(true));
        authors[0].setRequired(true).setVisible(true);

        form.add((addAuthor = (new AjaxFallbackLink("add") {

            @Override
            public void onClick(AjaxRequestTarget target) {

                int pointer;
                for (pointer = 0; pointer < 10; pointer++) {
                    if (!authors[pointer].isVisible()) {
                        break;
                    }
                }
                if (pointer < 10) {
                    authors[pointer].setVisible(true);
                    if (pointer == 9)
                        this.setVisible(false);
                    if (pointer > 0)
                        removeAuthor.setVisible(true);

                    if (target != null) {
                        target.addComponent(authors[pointer]);
                        target.addComponent(removeAuthor);
                        target.addComponent(this);
                    }
                }

            }

        })).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
        form.add((removeAuthor = (new AjaxFallbackLink("remove") {

            @Override
            public void onClick(AjaxRequestTarget target) {

                int pointer;
                for (pointer = 0; pointer < 10; pointer++) {
                    if (!authors[pointer].isVisible()) {
                        break;
                    }
                }
                pointer--;
                if (pointer > 0)
                    authors[pointer].setVisible(false);
                if (pointer == 1)
                    this.setVisible(false);
                if (pointer <= 9)
                    addAuthor.setVisible(true);

                if (target != null) {
                    target.addComponent(authors[pointer]);
                    target.addComponent(addAuthor);
                    target.addComponent(this);
                }

            }
        })).setVisible(false).setOutputMarkupId(true)
                .setOutputMarkupPlaceholderTag(true));

        // departments
        form.add(new ListMultipleChoice("departments",
                new LoadableDetachableModel() {

                    @Override
                    protected Object load() {

                        return browseService.findAllDepartments();
                    }

                }, new ChoiceRenderer("name", "id")).setRequired(true));

        // publicationType
        form.add((new DropDownChoice("publicationType", Arrays
                .asList(PublicationType.values()), new ChoiceRenderer(
                "displayName", "id")).setRequired(true))
                .add(new AjaxFormComponentUpdatingBehavior("onchange") {

                    @Override
                    protected void onUpdate(AjaxRequestTarget target) {
                        target.addComponent(detailsArticle);
                        target.addComponent(detailsBook);
                        target.addComponent(detailsBookChapter);
                        target.addComponent(detailsConferencePaper);
                        target.addComponent(detailsTechnicalReport);
                        target.addComponent(detailsWorkshop);

                        if (publication.getPublicationType() == null) {
                            detailsCurrent.setVisible(false);
                        } else {
                            if (publication.getPublicationType().getId() == 0) {
                                replaceDetails(detailsArticle).setModel(
                                        new CompoundPropertyModel(article));
                                publication = article;
                            } else {
                                if
(publication.getPublicationType().getId() == 1) {
                                    replaceDetails(detailsBook).setModel(
                                            new CompoundPropertyModel(book));
                                    publication = book;
                                } else {
                                    if (publication.getPublicationType()
                                            .getId() == 2) {
                                        replaceDetails(detailsBookChapter)
                                                .setModel(
                                                        new
CompoundPropertyModel(
                                                                bookChapter));
                                        publication = bookChapter;

                                    } else {
                                        if (publication.getPublicationType()
                                                .getId() == 3) {
                                            replaceDetails(
                                                    detailsConferencePaper)
                                                    .setModel(
                                                            new
CompoundPropertyModel(

conferencePaper));
                                            publication = conferencePaper;

                                        } else {
                                            if (publication
                                                    .getPublicationType()
                                                    .getId() == 4) {
                                                replaceDetails(
                                                        detailsTechnicalReport)
                                                        .setModel(
                                                                new
CompoundPropertyModel(

 technicalReport));
                                                publication = technicalReport;

                                            } else {
                                                if (publication
                                                        .getPublicationType()
                                                        .getId() == 5) {
                                                    replaceDetails(
                                                            detailsWorkshop)
                                                            .setModel(

new CompoundPropertyModel(

     workshop));
                                                    publication = workshop;

                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                    }
                }));

        // clear button
        form.add((new AjaxFallbackButton("clear", form) {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form form) {
                form.clearInput();

                if (target != null)
                    target.addComponent(form);
            }
        }).setDefaultFormProcessing(false));
    }

    private void initDetails() {
        // article
        (detailsArticle = new WebMarkupContainer("detailsArticle")).setVisible(
                false).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(
                true);
        detailsArticle
                .add(
                        new TextField("journalName").setRequired(true).add(
                                StringValidator.maximumLength(128)))
                .add(
                        new TextField("volume").add(NumberValidator.range(0,
                                Short.MAX_VALUE)))
                .add(
                        new TextField("issue").add(NumberValidator.range(0,
                                Long.MAX_VALUE)))
                .add(
                        new TextField("pages")
                                .add(StringValidator.maximumLength(64))
                                .add(
                                        new PatternValidator(

"(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")));

        // book
        (detailsBook = new WebMarkupContainer("detailsBook")).setVisible(false)
                .setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
        detailsBook.add(
                new TextField("ISBN").setRequired(true).add(
                        StringValidator.lengthBetween(10, 13)))
                .add(
                        new TextField("series").add(StringValidator
                                .maximumLength(128))).add(
                        new TextField("edition").add(StringValidator
                                .maximumLength(64))).add(
                        new TextField("volume").add(NumberValidator.range(0,
                                Short.MAX_VALUE))).add(
                        new TextField("publisher.name").setRequired(true).add(
                                StringValidator.maximumLength(128))).add(
                        new TextField("publisher.address").add(StringValidator
                                .maximumLength(128)));

        // book chapter
        (detailsBookChapter = new WebMarkupContainer("detailsBookChapter"))
                .setVisible(false).setOutputMarkupId(true)
                .setOutputMarkupPlaceholderTag(true);
        detailsBookChapter
                .add(
                        new TextField("bookISBN").setRequired(true).add(
                                StringValidator.lengthBetween(10, 13)))
                .add(
                        new TextField("bookTitle").setRequired(true).add(
                                StringValidator.maximumLength(128)))
                .add(
                        new TextField("series").add(StringValidator
                                .maximumLength(128)))
                .add(
                        new TextField("edition").add(StringValidator
                                .maximumLength(64)))
                .add(
                        new TextField("volume").add(
                                NumberValidator.range(0, 32767)).setType(
                                Short.class))
                .add(
                        new TextField("pages")
                                .setRequired(true)
                                .add(StringValidator.maximumLength(64))
                                .add(
                                        new PatternValidator(

"(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")))
                .add(
                        new TextField("publisher.name").setRequired(true).add(
                                StringValidator.maximumLength(128))).add(
                        new TextField("publisher.address").add(StringValidator
                                .maximumLength(128)));

        // conference paper
        (detailsConferencePaper = new WebMarkupContainer(
                "detailsConferencePaper")).setVisible(false).setOutputMarkupId(
                true).setOutputMarkupPlaceholderTag(true);
        detailsConferencePaper
                .add(
                        new TextField("conferenceBookTitle").setRequired(true)
                                .add(StringValidator.maximumLength(128)))
                .add(
                        new TextField("conferenceAddress").add(StringValidator
                                .maximumLength(128)))
                .add(
                        new TextField("pages")
                                .add(StringValidator.maximumLength(64))
                                .add(
                                        new PatternValidator(

"(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")))
                .add(
                        new TextField("editors").add(StringValidator
                                .maximumLength(256))).add(
                        new TextField("sponsors").add(StringValidator
                                .maximumLength(512))).add(
                        new TextField("publisher.address").add(StringValidator
                                .maximumLength(128))).add(
                        new TextField("publisher.name").setRequired(true).add(
                                StringValidator.maximumLength(128)));

        // technical report
        (detailsTechnicalReport = new WebMarkupContainer(
                "detailsTechnicalReport")).setVisible(false).setOutputMarkupId(
                true).setOutputMarkupPlaceholderTag(true);
        detailsTechnicalReport.add(
                new DropDownChoice("type", Arrays.asList(TechnicalReportType
                        .values()), new ChoiceRenderer("displayName", "id")))
                .add(
                        new TextField("institution").setRequired(true).add(
                                StringValidator.maximumLength(128))).add(
                        new TextField("institutionAddress").add(StringValidator
                                .maximumLength(128)));
        // setting the default value of the technical report type to
        // PRIMARY_RESEARCH
        technicalReport.setType(TechnicalReportType.PRIMARY_RESEARCH);

        // workshop
        (detailsWorkshop = new WebMarkupContainer("detailsWorkshop"))
                .setVisible(false).setOutputMarkupId(true)
                .setOutputMarkupPlaceholderTag(true);
        detailsWorkshop.add(
                new TextField("workshopTitle").setRequired(true).add(
                        StringValidator.maximumLength(128))).add(
                new TextField("workshopNumber").add(NumberValidator.range(0,
                        Long.MAX_VALUE))).add(
                new TextField("workshopAddress").add(StringValidator
                        .maximumLength(128)));

        detailsCurrent = detailsBook;

        form.add(detailsArticle).add(detailsBook).add(detailsBookChapter).add(
                detailsConferencePaper).add(detailsConferencePaper).add(
                detailsTechnicalReport).add(detailsWorkshop);
    }

    private void initLists() {
        // years
        year = new ArrayList<Short>();
        for (short i = (short)
Calendar.getInstance().get(Calendar.YEAR); i >= 1950; i--) {
            year.add(new Short(i));
        }
        // setting the default value of year to current year
        publication.setYear(new Short((short) Calendar.getInstance().get(
                Calendar.YEAR)));

        // months
        month = new ArrayList<Byte>();
        for (byte i = 0; i < 12; i++) {
            month.add(new Byte((byte) i));
        }
    }

    private Form replaceDetails(WebMarkupContainer replacement) {
        detailsCurrent.setVisible(false);
        (detailsCurrent = replacement).setVisible(true);
        return form;
    }
}

Reply via email to