You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by ma...@apache.org on 2011/11/10 08:06:04 UTC
svn commit: r1200194 - in /oodt/trunk/webapp/components: ./
src/main/java/org/apache/oodt/pcs/
src/main/java/org/apache/oodt/pcs/webcomponents/
src/main/java/org/apache/oodt/pcs/webcomponents/health/
Author: mattmann
Date: Thu Nov 10 07:06:04 2011
New Revision: 1200194
URL: http://svn.apache.org/viewvc?rev=1200194&view=rev
Log:
- OODT-157: refactor HealthMonitor component into the webapp/components package
reflow webapp in OPSUI to take advantage of now componentized HealthMonitor widget. Yay.
Added:
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.css
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.html
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.java
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityAndSortToggler.java
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityToggler.java
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_down.gif (with props)
oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_up.gif (with props)
Modified:
oodt/trunk/webapp/components/pom.xml
Modified: oodt/trunk/webapp/components/pom.xml
URL: http://svn.apache.org/viewvc/oodt/trunk/webapp/components/pom.xml?rev=1200194&r1=1200193&r2=1200194&view=diff
==============================================================================
--- oodt/trunk/webapp/components/pom.xml (original)
+++ oodt/trunk/webapp/components/pom.xml Thu Nov 10 07:06:04 2011
@@ -18,12 +18,12 @@ the License.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.oodt</groupId>
- <artifactId>oodt-core</artifactId>
- <version>0.4-SNAPSHOT</version>
- <relativePath>../../core/pom.xml</relativePath>
- </parent>
+ <parent>
+ <groupId>org.apache.oodt</groupId>
+ <artifactId>oodt-core</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <relativePath>../../core/pom.xml</relativePath>
+ </parent>
<groupId>org.apache.oodt</groupId>
<artifactId>oodt-webapp-components</artifactId>
<packaging>jar</packaging>
@@ -44,7 +44,12 @@ the License.
<groupId>org.apache.oodt</groupId>
<artifactId>cas-workflow</artifactId>
<version>0.4-SNAPSHOT</version>
- </dependency>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.oodt</groupId>
+ <artifactId>pcs-core</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
Added: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.css
URL: http://svn.apache.org/viewvc/oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.css?rev=1200194&view=auto
==============================================================================
--- oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.css (added)
+++ oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.css Thu Nov 10 07:06:04 2011
@@ -0,0 +1,69 @@
+
+#widenoborder{
+ width:100%;
+ border:0px;
+}
+
+#fm_status{
+
+}
+
+#wm_status{
+
+}
+
+#rm_status{
+
+}
+
+#report_date{
+
+}
+
+.roundtable table{
+border-top: 2px solid #bbb8a9;
+border-bottom: 2px solid #bbb8a9;
+border-left: 2px solid #bbb8a9;
+border-right: 2px solid #bbb8a9;
+}
+
+.nowrap{
+ white-space:nowrap;
+}
+
+.heading{
+ font-size:14px;
+ font-weight:bold;
+}
+
+.avg_crawl_time{
+
+}
+
+.num_crawls{
+
+}
+
+.crawler_name{
+
+}
+
+.file_ingest_datetime{
+
+}
+
+.file_path{
+
+}
+
+.status_name{
+
+}
+
+.batch_stub_url{
+
+}
+
+.crawler_name_and_url{
+
+}
Added: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.html
URL: http://svn.apache.org/viewvc/oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.html?rev=1200194&view=auto
==============================================================================
--- oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.html (added)
+++ oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.html Thu Nov 10 07:06:04 2011
@@ -0,0 +1,178 @@
+<wicket:panel>
+<wicket:remove>
+<link rel="stylesheet" type="text/css" href="HealthMonitor.css"/>
+</wicket:remove>
+
+<table id="widenoborder">
+ <tr>
+ <td><font style="font-size:16px;font-weight:bold;">PCS Status</font></td>
+ <td>
+ <table style="text-align:right:">
+ <tr>
+ <td style="text-align:right:">Current Information as of:</td>
+ </tr>
+ <tr>
+ <td style="text-align:right:" wicket:id="report_date" id="report_date">2011-01-01T00:00:00.000Z</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr style="vertical-align:top;">
+ <td>
+ <table>
+ <tr>
+ <td><font class="heading">Server Status:</font></td>
+ </tr>
+ <tr>
+ <td>
+ <div class="roundtable">
+ <table style="width:100px;">
+ <tr>
+ <td class="nowrap" id="fm_status">File Manager (<span wicket:id="fmurl">http://localhost:9000</span>)</td>
+ <td><img wicket:id="fmstatus_icon" src="icon_arrow_up.gif"/></td>
+ </tr>
+ <tr>
+ <td class="nowrap" id="wm_status">Wokflow Manager (<span wicket:id="wmurl">http://localhost:9001</span>)</td>
+ <td><img wicket:id="wmstatus_icon" src="icon_arrow_down.gif"></td>
+ </tr>
+ <tr>
+ <td class="nowrap" id="rm_status">Resource Manager (<span wicket:id="rmurl">http://localhost:9002</span>)</td>
+ <td><img wicket:id="rmstatus_icon" src="icon_arrow_down.gif"></td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><font class="heading">Crawler Status:</font></td>
+ </tr>
+ <tr>
+ <td>
+ <div class="roundtable">
+ <table>
+ <tr wicket:id="crawler_status_list">
+ <td wicket:id="crawler_name_and_url" class="crawler_name_and_url">Local File Crawler (http://localhost:9091)</td>
+ <td><img wicket:id="crawler_status_icon" src="icon_arrow_up.gif" /></td>
+ </tr>
+ <wicket:container wicket:id="crawler_toggler">
+ <wicket:enclosure child="crawler_status_more">
+ <tr>
+ <td wicket:id="crawler_status_more" colspan="2">... ...</td>
+ </tr>
+ </wicket:enclosure>
+ <tr id="crawler_status_options">
+ <td><a wicket:id="crawler_status_showall" href="#">See All</a></td>
+ <td><a wicket:id="crawler_status_hide" "href="#">Hide</a></td>
+ <td><a wicket:id="crawler_status_sort" href="#">Sorting By Status</a></td>
+ <td><a wicket:id="crawler_status_unsort" href="#">Unsort</a></td>
+ </tr>
+ </wicket:container>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><font class="heading">Batch Stub Status:</font></td>
+ </tr>
+ <tr>
+ <td>
+ <div class="roundtable">
+ <table>
+ <tr wicket:id="batch_stub_list">
+ <td class="nowrap"><span wicket:id="batch_stub_url" class="batch_stub_url">http://compute-0-1:2001</span></td>
+ <td><img wicket:id="batch_stub_status_icon" src="icon_arrow_down.gif" /></td>
+ </tr>
+ <wicket:container wicket:id="batch_stub_toggler">
+ <wicket:enclosure child="batch_stub_more">
+ <tr>
+ <td wicket:id="batch_stub_more" colspan="2">... ...</td></tr><tr>
+ </tr>
+ </wicket:enclosure>
+ <tr id="batch_stub_options">
+ <td><a wicket:id="batch_stub_showall" href="#">See All</a></td>
+ <td><a wicket:id="batch_stub_hide" href="#">Hide</a></td>
+ <td><a wicket:id="batch_stub_sort" href="#">Sorting By Status</a></td>
+ <td><a wicket:id="batch_stub_unsort" href="#">Unsort</a></td>
+ </tr>
+ </wicket:container>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td>
+ <table>
+ <tr>
+ <td><font class="heading">Job Processing Status:</font></td>
+ </tr>
+ <tr>
+ <td>
+ <div class="roundtable">
+ <table style="width:100px;">
+ <tr wicket:id="jobstatus_list">
+ <td class="nowrap">
+ <span wicket:id="status_name" class="status_name">QUEUED</span> pipelines
+ </td>
+ <td style="text-align:right">
+ <a href="#" wicket:id="jobstatus_count_link"><span id="status_num_jobs" wicket:id="status_num_jobs">250</span></a>
+ </td>
+ </tr>
+ <wicket:remove>
+ <tr><td class="nowrap"><span class="status_name">STARTED</span> pipelines</td><td style="text-align:right"><a href="#">3</a></td></tr>
+ <tr><td class="nowrap"><span class="status_name">RSUBMIT</span> pipelines</td><td style="text-align:right"><a href="#">45</a></td></tr>
+ <tr><td class="nowrap"><span class="status_name">PGE_EXEC</span> pipelines</td><td style="text-align:right"><a href="#">1000</a></td></tr>
+ <tr><td class="nowrap"><span class="status_name">CRAWLING</span> pipelines</td><td style="text-align:right"><a href="#">4</a></td></tr>
+ <tr><td class="nowrap"><span class="status_name">FINISHED</span> pipelines</td><td style="text-align:right"><a href="#">10000</a></td></tr>
+ </wicket:remove>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><font class="heading">Latest Files Ingested:</font></td>
+ </tr>
+ <tr>
+ <td>
+ <div class="roundtable">
+ <table>
+ <tr wicket:id="file_health_list">
+ <td>
+ <a href="#" wicket:id="view_product_link"><span wicket:id="file_path" class="file_path">/data/archive/products/file1.txt</span></a> at <span wicket:id="file_ingest_datetime" class="file_ingest_datetime">2011-01-01T00:01:01.001Z</span>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><font class="heading">Crawler Statistics:</font></td>
+ </tr>
+ <tr>
+ <td>
+ <div class="roundtable">
+ <table>
+ <tr wicket:id="crawler_health_list">
+ <td class="nowrap" colspan="2"><span wicket:id="crawler_name" class="crawler_name">Local File Crawler</span> Number of Crawls: <span wicket:id="num_crawls" class="num_crawls">32</span> Avg Time: <span wicket:id="avg_crawl_time" class="avg_crawl_time">5</span> sec
+ </td>
+ </tr>
+ <wicket:container wicket:id="crawler_health_toggler">
+ <wicket:enclosure child="crawler_health_more">
+ <tr>
+ <td colspan="2" wicket:id="crawler_health_more">... ...</td>
+ </tr>
+ </wicket:enclosure>
+ <tr>
+ <td><a wicket:id="crawler_health_showall" href="#">See All</a></td>
+ <td><a wicket:id="crawler_health_hide" href="#">Hide</a></td>
+ </tr>
+ </wicket:container>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+</wicket:panel>
\ No newline at end of file
Added: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.java
URL: http://svn.apache.org/viewvc/oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.java?rev=1200194&view=auto
==============================================================================
--- oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.java (added)
+++ oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/HealthMonitor.java Thu Nov 10 07:06:04 2011
@@ -0,0 +1,232 @@
+/**
+ * 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.oodt.pcs.webcomponents.health;
+
+//JDK imports
+import java.util.List;
+
+//OODT imports
+import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.pcs.health.CrawlerHealth;
+import org.apache.oodt.pcs.health.CrawlerStatus;
+import org.apache.oodt.pcs.health.JobHealthStatus;
+import org.apache.oodt.pcs.health.PCSDaemonStatus;
+import org.apache.oodt.pcs.health.PCSHealthMonitorReport;
+import org.apache.oodt.pcs.tools.PCSHealthMonitor;
+import org.apache.oodt.pcs.util.FileManagerUtils;
+
+//Wicket imports
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.ResourceReference;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.util.ListModel;
+
+/**
+ *
+ * A wicket controller for exposing the super awesome power of the
+ * {@link PCSHealthMonitor}.
+ *
+ * @author mattmann
+ * @version $Revision$
+ *
+ */
+public class HealthMonitor extends Panel {
+
+ /**
+ * @param parameters
+ * @throws InstantiationException
+ */
+ public HealthMonitor(String id, String fmUrlStr, String wmUrlStr,
+ String rmUrlStr, String crawlerConfFilePath, String statesFilePath,
+ final Class<? extends WebPage> productBrowser,
+ final Class<? extends WebPage> instancesPage)
+ throws InstantiationException {
+ super(id);
+ PCSHealthMonitor mon = new PCSHealthMonitor(fmUrlStr, wmUrlStr, rmUrlStr,
+ crawlerConfFilePath, statesFilePath);
+ final PCSHealthMonitorReport report = mon.getReport();
+
+ add(new Label("report_date", report.getCreateDateIsoFormat()));
+ add(new Label("fmurl", report.getFmStatus().getUrlStr()));
+ add(new Label("wmurl", report.getWmStatus().getUrlStr()));
+ add(new Label("rmurl", report.getRmStatus().getUrlStr()));
+
+ add(new Image("fmstatus_icon", getUpOrDownArrowRef(report.getFmStatus()
+ .getStatus())));
+ add(new Image("wmstatus_icon", getUpOrDownArrowRef(report.getWmStatus()
+ .getStatus())));
+ add(new Image("rmstatus_icon", getUpOrDownArrowRef(report.getRmStatus()
+ .getStatus())));
+
+ ListModel crawlerStatusListModel = new ListModel(report.getCrawlerStatus());
+ add(new VisibilityAndSortToggler("crawler_toggler",
+ "crawler_status_showall", "crawler_status_hide", "crawler_status_sort",
+ "crawler_status_unsort", "crawler_status_more", crawlerStatusListModel));
+
+ add(new ListView<CrawlerStatus>("crawler_status_list",
+ crawlerStatusListModel) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.wicket.markup.html.list.ListView#populateItem(org.apache
+ * .wicket.markup.html.list.ListItem)
+ */
+ @Override
+ protected void populateItem(ListItem<CrawlerStatus> statusItem) {
+ CrawlerStatus status = statusItem.getModelObject();
+ String statusString = status.getInfo().getCrawlerName() + " ("
+ + status.getCrawlHost() + ":" + status.getInfo().getCrawlerPort()
+ + ")";
+ statusItem.add(new Label("crawler_name_and_url", statusString));
+ statusItem.add(new Image("crawler_status_icon",
+ getUpOrDownArrowRef(status.getStatus())));
+ }
+ });
+
+ ListModel batchStubStatusListModel = new ListModel(
+ report.getBatchStubStatus());
+ add(new VisibilityAndSortToggler("batch_stub_toggler",
+ "batch_stub_showall", "batch_stub_hide", "batch_stub_sort",
+ "batch_stub_unsort", "batch_stub_more", batchStubStatusListModel));
+
+ add(new ListView<PCSDaemonStatus>("batch_stub_list",
+ batchStubStatusListModel) {
+
+ @Override
+ protected void populateItem(ListItem<PCSDaemonStatus> item) {
+ item.add(new Label("batch_stub_url", item.getModelObject().getUrlStr()));
+ item.add(new Image("batch_stub_status_icon", getUpOrDownArrowRef(item
+ .getModelObject().getStatus())));
+
+ }
+ });
+
+ List<JobHealthStatus> jobHealthStatusList = report.getJobHealthStatus();
+ add(new ListView<JobHealthStatus>("jobstatus_list", jobHealthStatusList) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.wicket.markup.html.list.ListView#populateItem(org.apache
+ * .wicket.markup.html.list.ListItem)
+ */
+ @Override
+ protected void populateItem(final ListItem<JobHealthStatus> item) {
+ item.add(new Label("status_name", item.getModelObject().getStatus()));
+ Link<String> countLink = new Link<String>("jobstatus_count_link",
+ new Model<String>(item.getModelObject().getStatus())) {
+
+ @Override
+ public void onClick() {
+ PageParameters params = new PageParameters();
+ params.add("pageNum", "1");
+ params.add("status", getModelObject());
+ setResponsePage(instancesPage, params);
+ }
+ };
+ countLink.add(new Label("status_num_jobs", String.valueOf(item
+ .getModelObject().getNumPipelines())));
+ item.add(countLink);
+ }
+ });
+
+ List<Product> prodList = report.getLatestProductsIngested();
+ final FileManagerUtils fm = new FileManagerUtils(fmUrlStr);
+
+ add(new ListView<Product>("file_health_list", prodList) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.wicket.markup.html.list.ListView#populateItem(org.apache
+ * .wicket.markup.html.list.ListItem)
+ */
+ @Override
+ protected void populateItem(ListItem<Product> item) {
+ final Product product = item.getModelObject();
+ product.setProductType(fm.safeGetProductTypeById(product
+ .getProductType().getProductTypeId()));
+ product.setProductReferences(fm.safeGetProductReferences(product));
+ final Metadata prodMet = fm.safeGetMetadata(product);
+ final String filePath = fm.getFilePath(product);
+
+ Link link = new Link("view_product_link") {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.wicket.markup.html.link.Link#onClick()
+ */
+ @Override
+ public void onClick() {
+ PageParameters params = new PageParameters();
+ params.add("id", product.getProductId());
+ setResponsePage(productBrowser, params);
+ }
+ };
+
+ link.add(new Label("file_path", filePath));
+ item.add(link);
+ item.add(new Label("file_ingest_datetime", prodMet.getMetadata("CAS."
+ + CoreMetKeys.PRODUCT_RECEVIED_TIME)));
+
+ }
+ });
+
+ ListModel crawlerHealthListModel = new ListModel(
+ report.getCrawlerHealthStatus());
+ add(new VisibilityToggler("crawler_health_toggler",
+ "crawler_health_showall", "crawler_health_hide", "crawler_health_more",
+ crawlerHealthListModel));
+
+ add(new ListView<CrawlerHealth>("crawler_health_list",
+ crawlerHealthListModel) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.wicket.markup.html.list.ListView#populateItem(org.apache
+ * .wicket.markup.html.list.ListItem)
+ */
+ @Override
+ protected void populateItem(ListItem<CrawlerHealth> item) {
+ CrawlerHealth health = item.getModelObject();
+ item.add(new Label("crawler_name", health.getCrawlerName()));
+ item.add(new Label("num_crawls", String.valueOf(health.getNumCrawls())));
+ item.add(new Label("avg_crawl_time", String.valueOf(health
+ .getAvgCrawlTime())));
+ }
+ });
+
+ }
+
+ private ResourceReference getUpOrDownArrowRef(String status) {
+ return new ResourceReference(HealthMonitor.class, "icon_arrow_"
+ + status.toLowerCase() + ".gif");
+ }
+
+}
Added: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityAndSortToggler.java
URL: http://svn.apache.org/viewvc/oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityAndSortToggler.java?rev=1200194&view=auto
==============================================================================
--- oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityAndSortToggler.java (added)
+++ oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityAndSortToggler.java Thu Nov 10 07:06:04 2011
@@ -0,0 +1,143 @@
+/**
+ * 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.oodt.pcs.webcomponents.health;
+
+//JDK imports
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Vector;
+
+//OODT imports
+import org.apache.oodt.pcs.health.CrawlerStatus;
+import org.apache.oodt.pcs.health.PCSDaemonStatus;
+
+//Wicket imports
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.util.ListModel;
+
+/**
+ *
+ * Toggles both a show/hide link and a sort/unsort link for displaying
+ * PCSDaemonStatus and CrawlerStatus in the PCS OPSUI gui.
+ *
+ * @author mattmann
+ * @version $Revision$
+ *
+ */
+class VisibilityAndSortToggler extends VisibilityToggler {
+
+ private static final long serialVersionUID = 9003502303473741937L;
+
+ /**
+ * @param id
+ */
+ public VisibilityAndSortToggler(String id, String showLinkId,
+ String hideLinkId, String sortLinkId, String unsortLinkId, String moreId,
+ final ListModel model) {
+ super(id, showLinkId, hideLinkId, moreId, model);
+
+ Link<Link> sortLink = null;
+ Link<Link> unsortLink = null;
+
+ sortLink = new Link<Link>(sortLinkId, new Model<Link>(unsortLink)) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.wicket.markup.html.link.Link#onClick()
+ */
+ @Override
+ public void onClick() {
+ Vector obj = (Vector) model.getObject();
+ sortByStatus(obj);
+ model.setObject(obj);
+ getModelObject().setVisible(true);
+ setVisible(false);
+ }
+ };
+
+ unsortLink = new Link<Link>(unsortLinkId, new Model<Link>(sortLink)) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.wicket.markup.html.link.Link#onClick()
+ */
+ @Override
+ public void onClick() {
+ Vector obj = (Vector) model.getObject();
+ sortByName(obj);
+ model.setObject(obj);
+ getModelObject().setVisible(true);
+ setVisible(false);
+ }
+ };
+
+ unsortLink.setVisible(false);
+ sortLink.setModelObject(unsortLink);
+ unsortLink.setModelObject(sortLink);
+
+ add(sortLink);
+ add(unsortLink);
+
+ }
+
+ private static void sortByStatus(List statusList) {
+ Collections.sort(statusList, new Comparator() {
+
+ public int compare(Object o1, Object o2) {
+ if (o1 instanceof CrawlerStatus) {
+ CrawlerStatus stat1 = (CrawlerStatus) o1;
+ CrawlerStatus stat2 = (CrawlerStatus) o2;
+
+ return stat1.getStatus().compareTo(stat2.getStatus());
+ } else if (o1 instanceof PCSDaemonStatus) {
+ PCSDaemonStatus stat1 = (PCSDaemonStatus) o1;
+ PCSDaemonStatus stat2 = (PCSDaemonStatus) o2;
+
+ return stat1.getStatus().compareTo(stat2.getStatus());
+ } else
+ return 0;
+ }
+
+ });
+ }
+
+ private static void sortByName(List statusList) {
+ Collections.sort(statusList, new Comparator() {
+
+ public int compare(Object o1, Object o2) {
+ if (o1 instanceof CrawlerStatus) {
+ CrawlerStatus stat1 = (CrawlerStatus) o1;
+ CrawlerStatus stat2 = (CrawlerStatus) o2;
+
+ return stat1.getInfo().getCrawlerName()
+ .compareTo(stat2.getInfo().getCrawlerName());
+ } else if (o1 instanceof PCSDaemonStatus) {
+ PCSDaemonStatus stat1 = (PCSDaemonStatus) o1;
+ PCSDaemonStatus stat2 = (PCSDaemonStatus) o2;
+
+ return stat1.getDaemonName().compareTo(stat2.getDaemonName());
+ } else
+ return 0;
+ }
+
+ });
+ }
+
+}
Added: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityToggler.java
URL: http://svn.apache.org/viewvc/oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityToggler.java?rev=1200194&view=auto
==============================================================================
--- oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityToggler.java (added)
+++ oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/VisibilityToggler.java Thu Nov 10 07:06:04 2011
@@ -0,0 +1,122 @@
+/**
+ * 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.oodt.pcs.webcomponents.health;
+
+//JDK imports
+import java.util.List;
+import java.util.Vector;
+
+//Wicket imports
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.util.ListModel;
+
+/**
+ *
+ * Toggles a show/hide link for displaying PCSDaemonStatus and CrawlerStatus in
+ * the PCS OPSUI gui.
+ *
+ * @author mattmann
+ * @version $Revision$
+ *
+ */
+public class VisibilityToggler extends WebMarkupContainer {
+
+ private static final long serialVersionUID = -6325486547078308461L;
+
+ /**
+ * @param id
+ */
+ public VisibilityToggler(String id, String showLinkId, String hideLinkId,
+ String moreId, final ListModel model) {
+ super(id, model);
+
+ Link<Link> showLink = null;
+ Link<Link> hideLink = null;
+ final Vector allStatusList = (Vector) ((Vector) model.getObject()).clone();
+
+ // subset the model
+ model.setObject(subsetModelObject(model.getObject()));
+ final WebMarkupContainer moreComponent = new WebMarkupContainer(moreId);
+ add(moreComponent);
+
+ showLink = new Link<Link>(showLinkId, new Model<Link>(hideLink)) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.wicket.markup.html.link.Link#onClick()
+ */
+ @Override
+ public void onClick() {
+ Vector obj = (Vector) model.getObject();
+ obj.clear();
+ obj.addAll(allStatusList);
+ model.setObject(obj);
+ moreComponent.setVisible(false);
+ getModelObject().setVisible(true);
+ setVisible(false);
+ }
+ };
+
+ hideLink = new Link<Link>(hideLinkId, new Model<Link>(showLink)) {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.wicket.markup.html.link.Link#onClick()
+ */
+ @Override
+ public void onClick() {
+ Vector obj = (Vector) model.getObject();
+ obj.clear();
+ obj.addAll(getTopN(allStatusList, 3));
+ model.setObject(obj);
+ getModelObject().setVisible(true);
+ setVisible(false);
+ moreComponent.setVisible(true);
+ }
+ };
+
+ hideLink.setVisible(false);
+ showLink.setModelObject(hideLink);
+ hideLink.setModelObject(showLink);
+
+ add(showLink);
+ add(hideLink);
+ }
+
+ private static List subsetModelObject(Object obj) {
+ List objList = (List) obj;
+ List subsetList = getTopN(objList, 3);
+ return subsetList;
+ }
+
+ private static List getTopN(List statuses, int topN) {
+ List subset = new Vector();
+ if (statuses != null && statuses.size() > 0) {
+ int numGobble = topN <= statuses.size() ? topN : statuses.size();
+ for (int i = 0; i < numGobble; i++) {
+ Object status = statuses.get(i);
+ subset.add(status);
+ }
+ }
+
+ return subset;
+ }
+
+}
Added: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_down.gif
URL: http://svn.apache.org/viewvc/oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_down.gif?rev=1200194&view=auto
==============================================================================
Binary file - no diff available.
Propchange: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_down.gif
------------------------------------------------------------------------------
svn:executable = *
Propchange: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_down.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_up.gif
URL: http://svn.apache.org/viewvc/oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_up.gif?rev=1200194&view=auto
==============================================================================
Binary file - no diff available.
Propchange: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_up.gif
------------------------------------------------------------------------------
svn:executable = *
Propchange: oodt/trunk/webapp/components/src/main/java/org/apache/oodt/pcs/webcomponents/health/icon_arrow_up.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream