Package cn.com.template.implement

Source Code of cn.com.template.implement.DefaultTasksTemplate

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cn.com.template.implement;

import cn.com.exceptions.AppException;
import cn.com.manager.CurrentUser;
import cn.com.manager.domains.DataDetails;
import cn.com.elements.AbstractHtmlElementTag;
import cn.com.elements.TagWriter;
import cn.com.elements.containstag.ul.LIElementTag;
import cn.com.elements.containstag.ul.ULElementTag;
import cn.com.elements.singletag.link.LinkElementTag;
import cn.com.template.TasksTemplate;
import cn.com.utils.StringUtil;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.jsp.JspException;
import cn.com.manager.domains.Task;
import cn.com.manager.process.ProcessFactory;
import cn.com.manager.tasks.TasksController;
import cn.com.national.BricksNationality;
import java.util.ArrayList;

/**
*
* @author kete
*/
public class DefaultTasksTemplate implements TasksTemplate {

    private static final String _BLANK_CSS = "";
    private static final String _CONTENT_HINT_FONT = "(";
    private static final String _CONTENT_HINT_FOOT = ")";
    private static final String _CURRENT_PAGE_HREF = "#";
    private static final String _MORE_THAN_10_TASK_HINIT = BricksNationality.getValue("MoreThan10Task");
    private static final String _MY_TASKS = BricksNationality.getValue("MyTasks");
    private static final String _UL_HIDE_CSS = "hide";
    private static final String _PARAMETER_EQUAL_CHAR = "=";
    private static final String _PARAMETER_SIGN_CHAR = "?";

    @Override
    public String content() throws AppException {

        List<Task> tasks = TasksController.userTask(CurrentUser.getUserID(), CurrentUser.getEffectNodes());

        AbstractHtmlElementTag ulElement = null;
        TagWriter writer = null;
        try {
            ulElement = this.mainElement(createTaskTag(tasks));

            writer = new TagWriter(new CharArrayWriter());

            ulElement.doTag(writer);
            return writer.getWritedString();
        } catch (JspException ex) {
            Logger.getLogger(DefaultTasksTemplate.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(DefaultTasksTemplate.class.getName()).log(Level.SEVERE, null, ex);
        } catch (AppException ex) {
            Logger.getLogger(DefaultTasksTemplate.class.getName()).log(Level.SEVERE, null, ex);

        } finally {
            if (writer != null) {
                writer.close();
            }
        }
        return null;
    }

    /**
     * 设定下列表
     * @param tasks
     * @return
     */
    private AbstractHtmlElementTag mainElement(AbstractHtmlElementTag childElement) {
        ULElementTag currentElement = new ULElementTag();
        LIElementTag liElement = null;
        LinkElementTag linkElement = null;
        String cssClass = _UL_HIDE_CSS;
        liElement = new LIElementTag();
        linkElement = new LinkElementTag();
        linkElement.setHref(_CURRENT_PAGE_HREF);

        linkElement.setValue(_MY_TASKS);
        linkElement.setCssClass(cssClass);
        liElement.addChildrenTag(linkElement);
        liElement.addChildrenTag(childElement);
        currentElement.addChildrenTag(liElement);
        return currentElement;
    }

    /**
     * 生成任务菜单
     * @param tasks
     * @param parentElement
     */
    private AbstractHtmlElementTag createTaskTag(List<Task> tasks) throws AppException {
        if (tasks != null) {
            ULElementTag ulElement = new ULElementTag();
            LIElementTag liElement = null;
            LinkElementTag linkElement = null;
            String cssClass = _BLANK_CSS;
            AbstractHtmlElementTag childElement = null;
            int nodeCount = 0;
            Task lastNode = null;
            List<Task> nodeTasks = new ArrayList<Task>(3);
            for (Task m : tasks) {
                if (lastNode == null) {
                    lastNode = m;
                }

                if (!lastNode.getNode().equals(m.getNode())) {

                    liElement = new LIElementTag();
                    linkElement = new LinkElementTag();
                    linkElement.setHref(StringUtil.isEmpty(lastNode.getUrl()) ? _CURRENT_PAGE_HREF : lastNode.getUrl());

                    linkElement.setValue(lastNode.getDisplay() + _CONTENT_HINT_FONT + nodeCount + _CONTENT_HINT_FOOT);
                    linkElement.setCssClass(cssClass);
                    liElement.addChildrenTag(linkElement);
                    childElement = this.createTasksTag(nodeTasks);
                    if (childElement != null) {
                        liElement.addChildrenTag(childElement);
                    }

                    ulElement.addChildrenTag(liElement);
                    nodeCount = 0;
                    nodeTasks.clear();
                    lastNode = m;
                }
                nodeCount++;
                nodeTasks.add(m);

            }
            if (lastNode != null) {

                liElement = new LIElementTag();
                linkElement = new LinkElementTag();
                linkElement.setHref(StringUtil.isEmpty(lastNode.getUrl()) ? _CURRENT_PAGE_HREF : lastNode.getUrl());

                linkElement.setValue(lastNode.getDisplay() + _CONTENT_HINT_FONT + nodeCount + _CONTENT_HINT_FOOT);
                linkElement.setCssClass(cssClass);
                liElement.addChildrenTag(linkElement);
                childElement = this.createTasksTag(nodeTasks);
                if (childElement != null) {
                    liElement.addChildrenTag(childElement);
                }

                ulElement.addChildrenTag(liElement);
            }
            return ulElement;

        }

        return null;
    }

    /**
     * 生成任务菜单列表
     * @param tasks
     * @param parentElement
     */
    private AbstractHtmlElementTag createTasksTag(List<Task> tasks) throws AppException {
        if (tasks != null) {
            ULElementTag ulElement = new ULElementTag();
            LIElementTag liElement = null;
            LinkElementTag linkElement = null;
            String cssClass = _BLANK_CSS;
            AbstractHtmlElementTag childElement = null;
            int idxCount = 0;
            for (Task m : tasks) {
                liElement = new LIElementTag();
                m.setDetails(ProcessFactory.getProcess(m.getNode()).getTaskDetails(m.getTaskid()));
                linkElement = new LinkElementTag();
                linkElement.setHref(StringUtil.isEmpty(m.getUrl()) ? _CURRENT_PAGE_HREF : m.getUrl());

                linkElement.setValue(m.getTaskid() + _CONTENT_HINT_FONT + m.getDetails().size() + _CONTENT_HINT_FOOT);
                linkElement.setCssClass(cssClass);
                liElement.addChildrenTag(linkElement);
                childElement = this.createTaskDetailsTag(m.getDetails());
                if (childElement != null) {
                    liElement.addChildrenTag(childElement);
                }
                if (idxCount++ == 10) {
                    liElement = new LIElementTag();
                    linkElement = new LinkElementTag();
                    linkElement.setHref(_CURRENT_PAGE_HREF);
                    linkElement.setValue(_MORE_THAN_10_TASK_HINIT);
                    linkElement.setCssClass(cssClass);
                    liElement.addChildrenTag(linkElement);
                    ulElement.addChildrenTag(liElement);
                    break;
                }
                ulElement.addChildrenTag(liElement);

            }

            return ulElement;

        }

        return null;
    }

    private AbstractHtmlElementTag createTaskDetailsTag(List<DataDetails> details) {
        if (details != null) {
            ULElementTag ulElement = new ULElementTag();
            LIElementTag liElement = null;
            LinkElementTag linkElement = null;
            String cssClass = _BLANK_CSS;
            int idxCount = 0;
            for (DataDetails m : details) {
                liElement = new LIElementTag();
                linkElement = new LinkElementTag();
                linkElement.setHref(StringUtil.isEmpty(m.getUrl()) ? _CURRENT_PAGE_HREF : getLinkHref(m.getUrl(), m.getParameter(), m.getContent()));

                linkElement.setValue(m.getContent());
                linkElement.setCssClass(cssClass);
                liElement.addChildrenTag(linkElement);
                if (idxCount++ == 10) {
                    liElement = new LIElementTag();
                    linkElement = new LinkElementTag();
                    linkElement.setHref(m.getUrl());
                    linkElement.setValue(_MORE_THAN_10_TASK_HINIT);
                    linkElement.setCssClass(cssClass);
                    liElement.addChildrenTag(linkElement);
                    ulElement.addChildrenTag(liElement);
                    break;
                }
                ulElement.addChildrenTag(liElement);

            }

            return ulElement;

        }

        return null;
    }

    private String getLinkHref(String url, String parameter, String content) {

        StringBuilder builder = new StringBuilder(url);
        if (!StringUtil.isEmpty(parameter)) {

            if (builder.indexOf(_PARAMETER_SIGN_CHAR) == -1) {
                builder.append(_PARAMETER_SIGN_CHAR);
            }

            builder.append(parameter).append(_PARAMETER_EQUAL_CHAR).append(content);
        }
        return builder.toString();
    }
}
TOP

Related Classes of cn.com.template.implement.DefaultTasksTemplate

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.