use a profiler.

-igor

On Thu, Aug 13, 2009 at 9:10 AM, Mostafa Mohamed<es.most...@gmail.com> wrote:
> 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