From 4c13bf3ccd19a58c55f60bc28986b901d1cebf77 Mon Sep 17 00:00:00 2001 From: James Moger Date: Fri, 2 Mar 2012 18:56:45 -0500 Subject: [PATCH] Whoops. Missed adding LucenePage. --- src/com/gitblit/wicket/pages/LucenePage.java | 109 +++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/com/gitblit/wicket/pages/LucenePage.java diff --git a/src/com/gitblit/wicket/pages/LucenePage.java b/src/com/gitblit/wicket/pages/LucenePage.java new file mode 100644 index 00000000..75df3145 --- /dev/null +++ b/src/com/gitblit/wicket/pages/LucenePage.java @@ -0,0 +1,109 @@ +/* + * Copyright 2012 gitblit.com. + * + * Licensed 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 com.gitblit.wicket.pages; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.PageParameters; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.data.DataView; +import org.apache.wicket.markup.repeater.data.ListDataProvider; +import org.apache.wicket.model.Model; +import org.eclipse.jgit.lib.Repository; + +import com.gitblit.GitBlit; +import com.gitblit.models.SearchResult; +import com.gitblit.utils.LuceneUtils; +import com.gitblit.wicket.WicketUtils; +import com.gitblit.wicket.panels.LinkPanel; + +public class LucenePage extends RootPage { + + public LucenePage() { + super(); + setup(null); + } + + public LucenePage(PageParameters params) { + super(params); + setup(params); + } + + private void setup(PageParameters params) { + setupPage("", ""); + final List results = new ArrayList(); + ListDataProvider resultsDp = new ListDataProvider(results); + final DataView resultsView = new DataView("searchResults", resultsDp) { + private static final long serialVersionUID = 1L; + public void populateItem(final Item item) { + SearchResult sr = item.getModelObject(); + switch(sr.type) { + case commit: { + Label icon = WicketUtils.newIcon("type", "icon-refresh"); + WicketUtils.setHtmlTooltip(icon, "commit"); + item.add(icon); + item.add(new LinkPanel("summary", null, sr.summary, CommitPage.class, WicketUtils.newObjectParameter(sr.repository, sr.id))); + break; + } + case blob: { + Label icon = WicketUtils.newIcon("type", "icon-file"); + WicketUtils.setHtmlTooltip(icon, "blob"); + item.add(icon); + item.add(new LinkPanel("summary", null, sr.id, BlobPage.class, WicketUtils.newPathParameter(sr.repository, sr.branch, sr.id))); + break; + } + case issue: { + Label icon = WicketUtils.newIcon("type", "icon-file"); + WicketUtils.setHtmlTooltip(icon, "issue"); + item.add(icon); + item.add(new Label("summary", "issue: " + sr.id)); + break; + } + } + item.add(new Label("repository", sr.repository)); + item.add(new Label("branch", sr.branch)); + item.add(new Label("author", sr.author)); + item.add(WicketUtils.createTimestampLabel("date", sr.date, getTimeZone())); + } + }; + + final Model fragment = new Model(); + Form form = new Form("searchForm") { + @Override + public void onSubmit() { + String f = fragment.getObject(); + List repositories = new ArrayList(); + for (String r : GitBlit.self().getRepositoryList()) { + repositories.add(GitBlit.self().getRepository(r)); + } + List srs = LuceneUtils.search(f, 100, repositories.toArray(new Repository[repositories.size()])); + results.clear(); + results.addAll(srs); + for (Repository r : repositories) { + r.close(); + } + resultsView.setVisible(true); + } + }; + form.add(new TextField("fragment", fragment)); + add(form); + add(resultsView.setVisible(false)); + } +} -- 2.39.5