Package org.apache.oodt.cas.webcomponents.workflow.model

Source Code of org.apache.oodt.cas.webcomponents.workflow.model.WorkflowViewer

/**
* 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.cas.webcomponents.workflow.model;

import org.apache.oodt.cas.webcomponents.workflow.WorkflowMgrConn;
import org.apache.oodt.cas.workflow.structs.Workflow;
import org.apache.oodt.cas.workflow.structs.WorkflowTask;
import org.apache.wicket.PageParameters;
import org.apache.wicket.behavior.SimpleAttributeModifier;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
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.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.util.ListModel;

/**
*
* Describe your class here.
*
* @author mattmann
* @version $Revision$
*
*/
public class WorkflowViewer extends Panel {

  private static final long serialVersionUID = -157601650785829792L;

  private final WorkflowMgrConn wm;

  public WorkflowViewer(String id, String wmUrlStr, final String workflowId,
      final Class<? extends WebPage> taskPage) {
    super(id);
    this.wm = new WorkflowMgrConn(wmUrlStr);
    final IModel<Workflow> wModel = new LoadableDetachableModel<Workflow>() {

      @Override
      protected Workflow load() {
        return wm.safeGetWorkflowById(workflowId);
      }
    };

    add(new Label("workflow_id", new PropertyModel<Workflow>(wModel, "id")));
    add(new Label("workflow_name", new PropertyModel<Workflow>(wModel, "name")));

    int numTasks = wModel.getObject().getTasks().size();
    String width = String.valueOf((82 * numTasks) + (115 * (numTasks - 1)));
    String height = "82";
    WebMarkupContainer wTable = new WebMarkupContainer("workflow_model_tbl");
    wTable.add(new SimpleAttributeModifier("width", width));
    wTable.add(new SimpleAttributeModifier("height", height));

    wTable.add(new ListView<WorkflowTask>("tasks", new ListModel<WorkflowTask>(
        wModel.getObject().getTasks())) {

      @Override
      protected void populateItem(ListItem<WorkflowTask> item) {
        final PageParameters params = new PageParameters();
        params.add("id", item.getModelObject().getTaskId());
        Link taskLink = new Link("task_link") {
          /*
           * (non-Javadoc)
           *
           * @see org.apache.wicket.markup.html.link.Link#onClick()
           */
          @Override
          public void onClick() {
            setResponsePage(taskPage, params);
          }
        };
        String taskName = summarizeWords(item.getModelObject().getTaskName(),
            16, 16);
        taskLink.add(new Label("task_name", taskName).setRenderBodyOnly(true));
        item.add(taskLink);

        if (item.getIndex() == wModel.getObject().getTasks().size() - 1) {
          item.add(new WebMarkupContainer("task_arrow").setVisible(false));
        } else {
          item.add(new WebMarkupContainer("task_arrow"));
        }

      }
    });
    add(wTable);

  }

  /**
   * <p>
   * Summarizes a given String of words (the <code>orig</code> parameter), and
   * limits the size of the individual words in the string by the given
   * <code>wordThreshold</code>, and limits the final size of the final
   * summarized word string by the given <code>maxLengthTotal</code>.
   * </p>
   *
   * @param orig
   *          The original String to summarize.
   * @param wordThreshhold
   *          The maximum amount of characters for any given word in the string.
   * @param maxLengthTotal
   *          The maximum final size of the summarized set of words.
   * @return A summarized string.
   */
  private String summarizeWords(String orig, int wordThreshhold,
      int maxLengthTotal) {
    String[] words = orig.split(" ");
    StringBuffer summarizedString = new StringBuffer();

    for (int i = 0; i < words.length; i++) {
      String word = words[i];
      summarizedString.append(word.substring(0, Math.min(wordThreshhold, word
          .length())));
      summarizedString.append(" ");
    }
   
    // add '...' to end of summarized string if applicable
    if (summarizedString.length() > maxLengthTotal) {
      return summarizedString.substring(0,
              Math.min(maxLengthTotal, summarizedString.length()) - 3).toString() + "...";
    } else
      return summarizedString.toString();
  }

}
TOP

Related Classes of org.apache.oodt.cas.webcomponents.workflow.model.WorkflowViewer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.