| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.nutch.webui.pages.crawls; |
| |
| import java.util.List; |
| |
| import org.apache.nutch.webui.client.model.Crawl; |
| import org.apache.nutch.webui.model.SeedList; |
| import org.apache.nutch.webui.service.CrawlService; |
| import org.apache.nutch.webui.service.SeedListService; |
| import org.apache.wicket.ajax.AjaxRequestTarget; |
| import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; |
| import org.apache.wicket.markup.html.basic.Label; |
| import org.apache.wicket.markup.html.form.ChoiceRenderer; |
| import org.apache.wicket.markup.html.form.DropDownChoice; |
| import org.apache.wicket.markup.html.form.Form; |
| import org.apache.wicket.markup.html.form.TextField; |
| import org.apache.wicket.model.IModel; |
| import org.apache.wicket.model.Model; |
| import org.apache.wicket.spring.injection.annot.SpringBean; |
| |
| import com.google.common.collect.Lists; |
| |
| import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel; |
| import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal; |
| import de.agilecoders.wicket.core.markup.html.bootstrap.form.BootstrapForm; |
| |
| public class CrawlPanel extends Modal { |
| private static final int MAX_ROUNDS = 10; |
| |
| private BootstrapForm<Crawl> form; |
| |
| @SpringBean |
| private CrawlService crawlService; |
| |
| @SpringBean |
| private SeedListService seedListService; |
| |
| private NotificationPanel notificationPanel; |
| |
| public CrawlPanel(String markupId) { |
| super(markupId); |
| header(Model.of("Crawl")); |
| |
| notificationPanel = new NotificationPanel("notificationPanel"); |
| notificationPanel.setOutputMarkupId(true); |
| add(notificationPanel); |
| |
| form = new BootstrapForm<>("crawlForm"); |
| form.add(new Label("crawlId")); |
| form.add(new TextField<String>("crawlName").setRequired(true)); |
| |
| form.add(new DropDownChoice<>("numberOfRounds", getNumbersOfRounds())); |
| form.add(new DropDownChoice<>("seedList", |
| seedListService.findAll(), new ChoiceRenderer<>("name")) |
| .setRequired(true)); |
| |
| addButton(new AjaxSubmitLink("button", form) { |
| @Override |
| protected void onSubmit(AjaxRequestTarget target, Form<?> ajaxForm) { |
| crawlService.saveCrawl(form.getModelObject()); |
| target.add(this.getPage()); |
| } |
| |
| protected void onError(AjaxRequestTarget target, Form<?> form) { |
| target.add(notificationPanel); |
| }; |
| }.setBody(Model.of("Save"))); |
| add(form); |
| } |
| |
| public void setModel(IModel<Crawl> model) { |
| form.setModel(model); |
| } |
| |
| private List<Integer> getNumbersOfRounds() { |
| List<Integer> numbers = Lists.newArrayList(); |
| for (int i = 1; i <= MAX_ROUNDS; i++) { |
| numbers.add(i); |
| } |
| return numbers; |
| } |
| |
| } |