From 7e3195892cc2e64996eb296d9c06ddf6d9e0020c Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 13 Sep 2011 12:29:49 +0200 Subject: [PATCH] improve plugin overview --- .../PluginInformationNameComparator.java | 72 +++++++++++++++++++ .../sonia/scm/plugin/rest/ViewResource.java | 39 +++++++++- .../src/main/webapp/detail.html | 46 ++++++++++++ scm-plugin-backend/src/main/webapp/index.html | 4 +- 4 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 scm-plugin-backend/src/main/java/sonia/scm/plugin/PluginInformationNameComparator.java create mode 100644 scm-plugin-backend/src/main/webapp/detail.html diff --git a/scm-plugin-backend/src/main/java/sonia/scm/plugin/PluginInformationNameComparator.java b/scm-plugin-backend/src/main/java/sonia/scm/plugin/PluginInformationNameComparator.java new file mode 100644 index 0000000000..9c464bbb01 --- /dev/null +++ b/scm-plugin-backend/src/main/java/sonia/scm/plugin/PluginInformationNameComparator.java @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.plugin; + +//~--- non-JDK imports -------------------------------------------------------- + +import sonia.scm.util.Util; + +//~--- JDK imports ------------------------------------------------------------ + +import java.util.Comparator; + +/** + * + * @author Sebastian Sdorra + */ +public class PluginInformationNameComparator + implements Comparator +{ + + /** Field description */ + public static final PluginInformationNameComparator INSTANCE = + new PluginInformationNameComparator(); + + //~--- methods -------------------------------------------------------------- + + /** + * Method description + * + * + * @param p1 + * @param p2 + * + * @return + */ + @Override + public int compare(PluginInformation p1, PluginInformation p2) + { + return Util.compare(p1.getName(), p2.getName()); + } +} diff --git a/scm-plugin-backend/src/main/java/sonia/scm/plugin/rest/ViewResource.java b/scm-plugin-backend/src/main/java/sonia/scm/plugin/rest/ViewResource.java index 27ef5c7234..95061afff8 100644 --- a/scm-plugin-backend/src/main/java/sonia/scm/plugin/rest/ViewResource.java +++ b/scm-plugin-backend/src/main/java/sonia/scm/plugin/rest/ViewResource.java @@ -36,13 +36,17 @@ package sonia.scm.plugin.rest; //~--- non-JDK imports -------------------------------------------------------- import com.google.inject.Inject; + import sonia.scm.plugin.PluginBackend; import sonia.scm.plugin.PluginInformation; +import sonia.scm.plugin.PluginInformationNameComparator; //~--- JDK imports ------------------------------------------------------------ import com.sun.jersey.api.view.Viewable; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -81,7 +85,7 @@ public class ViewResource @GET public Viewable overview() { - List plugins = backend.getPlugins(); + List plugins = getPluginOverview(); Map vars = new HashMap(); vars.put("plugins", plugins); @@ -89,6 +93,39 @@ public class ViewResource return new Viewable("/index", vars); } + //~--- get methods ---------------------------------------------------------- + + /** + * Method description + * + * + * @return + */ + private List getPluginOverview() + { + List allPlugins = backend.getPlugins(); + + Collections.sort(allPlugins, PluginInformationComparator.INSTANCE); + + List plugins = new ArrayList(); + String pid = ""; + + for (PluginInformation p : allPlugins) + { + String currentPid = p.getGroupId().concat(":").concat(p.getArtifactId()); + + if (!currentPid.equals(pid)) + { + pid = currentPid; + plugins.add(p); + } + } + + Collections.sort(plugins, PluginInformationNameComparator.INSTANCE); + + return plugins; + } + //~--- fields --------------------------------------------------------------- /** Field description */ diff --git a/scm-plugin-backend/src/main/webapp/detail.html b/scm-plugin-backend/src/main/webapp/detail.html new file mode 100644 index 0000000000..70b45f5632 --- /dev/null +++ b/scm-plugin-backend/src/main/webapp/detail.html @@ -0,0 +1,46 @@ + + + + + + + + + +

SCM-Manager Plugin-Backend

+ + + + \ No newline at end of file diff --git a/scm-plugin-backend/src/main/webapp/index.html b/scm-plugin-backend/src/main/webapp/index.html index 80e6a12770..e2871267c8 100644 --- a/scm-plugin-backend/src/main/webapp/index.html +++ b/scm-plugin-backend/src/main/webapp/index.html @@ -43,7 +43,9 @@