You are viewing a plain text version of this content. The canonical link for it is here.
Posted to graffito-commits@incubator.apache.org by cl...@apache.org on 2006/09/20 19:37:21 UTC
svn commit: r448311 [9/25] - in /incubator/graffito/trunk: ./ api/
api/src/java/org/apache/portals/graffito/context/
api/src/java/org/apache/portals/graffito/exception/
api/src/java/org/apache/portals/graffito/services/core/
api/src/java/org/apache/por...
Modified: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/SearchPortlet.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/SearchPortlet.java?view=diff&rev=448311&r1=448310&r2=448311
==============================================================================
--- incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/SearchPortlet.java (original)
+++ incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/SearchPortlet.java Wed Sep 20 12:37:05 2006
@@ -1,333 +1,333 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation.
- *
- * 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 org.apache.portals.graffito.portlets;
-
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.util.List;
-
-import javax.portlet.ActionRequest;
-import javax.portlet.ActionResponse;
-import javax.portlet.PortletConfig;
-import javax.portlet.PortletException;
-import javax.portlet.PortletRequest;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
-
-import org.apache.portals.graffito.exception.ContentManagementException;
-import org.apache.portals.graffito.model.dm.Document;
-import org.apache.portals.graffito.services.search.Filter;
-import org.apache.portals.graffito.services.search.SearchResults;
-import org.apache.portals.messaging.PortletMessaging;
-import org.apache.webapp.admin.TreeControl;
-import org.apache.webapp.admin.TreeControlNode;
-
-
-/**
- * CMS Search
- *
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
- * @version $Id: CMSSearchPortlet.java,v 1.4 2005/02/22 02:00:51 david Exp $
- */
-public class SearchPortlet extends AbstractTreePortlet
-{
- public final static String PORTLET_URL = "portlet_url";
-
- /** the selected leaf node in the tree view */
- public final static String REQUEST_SELECT_NODE = "select_node";
- public final static String REQUEST_NODE = "node";
-
- private static final String SEARCH_MESSAGE = "search_message";
- private static final String SEARCH_STRING = "search_string";
- //TODO: localize this message
- private static final String NOT_FOUND = "No matching documents found for search criteria.";
-
- //TODO: config via portlet.xml
- private int perPage = 10;
-
- public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException
- {
- response.setContentType("text/html");
-
- TreeControl control = (TreeControl) request.getPortletSession().getAttribute("search_tree");
- if (control != null)
- {
- request.setAttribute("search_tree", control);
- }
-
- Object anchor = request.getPortletSession().getAttribute("tree_anchor");
- if(anchor != null)
- {
- request.setAttribute("tree_anchor", anchor);
- //request.getPortletSession().removeAttribute("tree_anchor");
- }
-
- String next = (String) request.getPortletSession().getAttribute("next");
- if(next != null)
- {
- request.setAttribute("next", next);
- request.getPortletSession().removeAttribute("next");
- }
-
- String prev = (String) request.getPortletSession().getAttribute("prev");
- if(prev != null)
- {
- request.setAttribute("prev", prev);
- request.getPortletSession().removeAttribute("prev");
- }
-
- Object refresh = request.getPortletSession().getAttribute("refresh_page");
- if(refresh != null)
- {
- request.getPortletSession().removeAttribute("refresh_page");
- request.setAttribute("refresh_page", refresh);
- }
-
- String searchMessage = (String) PortletMessaging.consume(request, SEARCH_MESSAGE);
- request.setAttribute(SEARCH_MESSAGE, searchMessage);
-
- String searchString = (String) PortletMessaging.receive(request, "Search", SEARCH_STRING);
- request.setAttribute(SEARCH_STRING, searchString);
-
- super.doView(request, response);
- }
-
- public void processAction(ActionRequest actionRequest, ActionResponse actionResponse)
- throws PortletException,
- IOException
- {
- String searchString = actionRequest.getParameter("search");
- TreeControl control = (TreeControl) actionRequest.getPortletSession().getAttribute("search_tree");
- if (searchString != null && searchString.trim().length() > 0)
- {
- control = doSearch(actionRequest, searchString);
- if(control == null)
- {
- PortletMessaging.publish(actionRequest, SEARCH_MESSAGE, NOT_FOUND);
- }
- else
- {
- List results = (List) actionRequest.getPortletSession().getAttribute("search_results");
- if(perPage < results.size())
- {
- actionRequest.getPortletSession().setAttribute("next", Integer.toString(perPage));
- }
- if (results.size() == 0)
- {
- control = null;
- PortletMessaging.publish(actionRequest, SEARCH_MESSAGE, NOT_FOUND);
- }
- }
- PortletMessaging.publish(actionRequest, "Search", SEARCH_STRING, searchString);
- }
- //assert control != null
-
- String start = actionRequest.getParameter("start");
- if(start != null)
- {
- int startInt = Integer.parseInt(start);
- List results = (List) actionRequest.getPortletSession().getAttribute("search_results");
-
- int end = startInt + perPage;
- if(end > results.size())
- {
- end = results.size();
- }
- List subList = results.subList(startInt, end);
- try {
- control = this.buildCmsTree(subList);
- actionRequest.getPortletSession().setAttribute("search_tree", control);
- } catch (ContentManagementException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- if(startInt > 0)
- {
- int prev = startInt - perPage;
- actionRequest.getPortletSession().setAttribute("prev", Integer.toString(prev));
- }
- int next = startInt + perPage;
- if(next < results.size())
- {
- actionRequest.getPortletSession().setAttribute("next", Integer.toString(next));
- }
- }
-
- if (control == null)
- {
- actionRequest.getPortletSession().setAttribute("search_tree", null);
- }
- else
- {
- // expand or contact non-leaf nodes
- String node = actionRequest.getParameter(REQUEST_NODE);
- if (node != null)
- {
- TreeControlNode controlNode = control.findNode(node);
- if (controlNode != null)
- {
- if(controlNode.isLazy() && !controlNode.isLoaded())
- {
- try {
- loader.loadChildren(controlNode);
- } catch (ContentManagementException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- controlNode.setExpanded(!controlNode.isExpanded());
- actionRequest.getPortletSession().setAttribute("tree_anchor", node);
-
- if(controlNode.isExpanded() && controlNode != control.getRoot())
- {
- TreeControlNode[] siblings = controlNode.getParent().findChildren();
- for(int i=0; i<siblings.length; i++)
- {
- TreeControlNode sibling = siblings[i];
- if(sibling != controlNode)
- {
- sibling.setExpanded(false);
- }
- }
- }
- }
- }
-
- // select a node
- String selectedNode = actionRequest.getParameter(REQUEST_SELECT_NODE);
- if (selectedNode != null)
- {
- selectNode(actionRequest, control, selectedNode);
- actionRequest.getPortletSession().setAttribute("tree_anchor", selectedNode);
- }
- }
- }
-
- private TreeControl doSearch(ActionRequest request, String searchString)
- {
- Filter filter = search.newFilter();
- filter.setScope(this.getInitParameter("scope"));
- filter.addFullTextSearch(searchString);
- SearchResults results = null;
- try
- {
- results = search.searchCmsObjects(filter);
- if (results.size() > 0)
- {
- List resultList = results.getResults();
- int end = perPage;
- if(perPage > resultList.size())
- {
- end = resultList.size();
- }
- List subList = resultList.subList(0, end);
- TreeControl control = buildCmsTree(subList);
- request.getPortletSession().setAttribute("search_tree", control);
- request.getPortletSession().setAttribute("search_results", resultList);
- return control;
- }
- }
- catch (ContentManagementException e)
- {
- System.err.println("Failed to search on search string: " + searchString + ", " + e.toString());
- }
- // handle case where nothing found
- if (results == null)
- results = new SearchResults();
- List resultList = results.getResults();
- //List subList = resultList.subList(0,perPage);
- TreeControlNode root = loader.createRootNode("Search Results", "SEARCH_DOMAIN");
- TreeControl control = new TreeControl(root);
- request.getPortletSession().setAttribute("search_tree", control);
- request.getPortletSession().setAttribute("search_results", resultList);
- return control;
- }
-
- private TreeControl buildCmsTree(List results) throws ContentManagementException
- {
- TreeControlNode root = loader.createRootNode("Search Results", "SEARCH_DOMAIN");
- TreeControl treeControl = new TreeControl(root);
- for (int ix = 0; ix < results.size(); ix++)
- {
- Document document = (Document)results.get(ix);
- /*
- String key = document.getProperty("reference");
- String dt = document.getProperty("displayTitle");
- TreeControlNode docNode =
- new TreeControlNode(
- key,
- "document.gif",
- document.getProperty("displayTitle"),
- PORTLET_URL,
- null,
- false,
- "DOC_DOMAIN",
- "Document");
- */
- // refToURIMap.put(document.getProperty("reference"), document.getUri());
- TreeControlNode docNode = loader.createDocumentNode(document);
- root.addChild(docNode);
- }
-
- return treeControl;
- }
-
- private void selectNode(PortletRequest actionRequest, TreeControl control, String selectedNode)
- {
- System.out.println("selected node = " + selectedNode);
- control.selectNode(selectedNode);
- TreeControlNode child = control.findNode(selectedNode);
- if (child != null)
- {
- String domain = child.getDomain();
- /*
- if (domain.equals("FOLDER_DOMAIN"))
- {
- if (selectedNode != null)
- {
- System.out.println("posting selected node = " + selectedNode);
-
- actionRequest.getPortletSession().setAttribute(
- "current_folder", selectedNode,
- PortletSession.APPLICATION_SCOPE);
- }
- }
- */
- if(domain.equals("DOC_DOMAIN") || domain.equals("ANCHOR_DOMAIN"))
- {
- String uri = selectedNode; //(String) this.refToURIMap.get(selectedNode);
- //String uri = loader.getURIFromNodeName(selectedNode);
- try
- {
- PortletMessaging.publish(actionRequest, "FileDisplayer", "current_file", uri);
- }
- catch (NotSerializableException e)
- {}
-
- actionRequest.getPortletSession().setAttribute("refresh_page", Boolean.TRUE);
- }
- }
- }
-
-
-
- public void init(PortletConfig config) throws PortletException
- {
- super.init(config);
- }
-
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ *
+ * 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 org.apache.portals.graffito.portlets;
+
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.util.List;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.portals.graffito.exception.ContentManagementException;
+import org.apache.portals.graffito.model.dm.Document;
+import org.apache.portals.graffito.services.search.Filter;
+import org.apache.portals.graffito.services.search.SearchResults;
+import org.apache.portals.messaging.PortletMessaging;
+import org.apache.webapp.admin.TreeControl;
+import org.apache.webapp.admin.TreeControlNode;
+
+
+/**
+ * CMS Search
+ *
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @version $Id: CMSSearchPortlet.java,v 1.4 2005/02/22 02:00:51 david Exp $
+ */
+public class SearchPortlet extends AbstractTreePortlet
+{
+ public final static String PORTLET_URL = "portlet_url";
+
+ /** the selected leaf node in the tree view */
+ public final static String REQUEST_SELECT_NODE = "select_node";
+ public final static String REQUEST_NODE = "node";
+
+ private static final String SEARCH_MESSAGE = "search_message";
+ private static final String SEARCH_STRING = "search_string";
+ //TODO: localize this message
+ private static final String NOT_FOUND = "No matching documents found for search criteria.";
+
+ //TODO: config via portlet.xml
+ private int perPage = 10;
+
+ public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException
+ {
+ response.setContentType("text/html");
+
+ TreeControl control = (TreeControl) request.getPortletSession().getAttribute("search_tree");
+ if (control != null)
+ {
+ request.setAttribute("search_tree", control);
+ }
+
+ Object anchor = request.getPortletSession().getAttribute("tree_anchor");
+ if(anchor != null)
+ {
+ request.setAttribute("tree_anchor", anchor);
+ //request.getPortletSession().removeAttribute("tree_anchor");
+ }
+
+ String next = (String) request.getPortletSession().getAttribute("next");
+ if(next != null)
+ {
+ request.setAttribute("next", next);
+ request.getPortletSession().removeAttribute("next");
+ }
+
+ String prev = (String) request.getPortletSession().getAttribute("prev");
+ if(prev != null)
+ {
+ request.setAttribute("prev", prev);
+ request.getPortletSession().removeAttribute("prev");
+ }
+
+ Object refresh = request.getPortletSession().getAttribute("refresh_page");
+ if(refresh != null)
+ {
+ request.getPortletSession().removeAttribute("refresh_page");
+ request.setAttribute("refresh_page", refresh);
+ }
+
+ String searchMessage = (String) PortletMessaging.consume(request, SEARCH_MESSAGE);
+ request.setAttribute(SEARCH_MESSAGE, searchMessage);
+
+ String searchString = (String) PortletMessaging.receive(request, "Search", SEARCH_STRING);
+ request.setAttribute(SEARCH_STRING, searchString);
+
+ super.doView(request, response);
+ }
+
+ public void processAction(ActionRequest actionRequest, ActionResponse actionResponse)
+ throws PortletException,
+ IOException
+ {
+ String searchString = actionRequest.getParameter("search");
+ TreeControl control = (TreeControl) actionRequest.getPortletSession().getAttribute("search_tree");
+ if (searchString != null && searchString.trim().length() > 0)
+ {
+ control = doSearch(actionRequest, searchString);
+ if(control == null)
+ {
+ PortletMessaging.publish(actionRequest, SEARCH_MESSAGE, NOT_FOUND);
+ }
+ else
+ {
+ List results = (List) actionRequest.getPortletSession().getAttribute("search_results");
+ if(perPage < results.size())
+ {
+ actionRequest.getPortletSession().setAttribute("next", Integer.toString(perPage));
+ }
+ if (results.size() == 0)
+ {
+ control = null;
+ PortletMessaging.publish(actionRequest, SEARCH_MESSAGE, NOT_FOUND);
+ }
+ }
+ PortletMessaging.publish(actionRequest, "Search", SEARCH_STRING, searchString);
+ }
+ //assert control != null
+
+ String start = actionRequest.getParameter("start");
+ if(start != null)
+ {
+ int startInt = Integer.parseInt(start);
+ List results = (List) actionRequest.getPortletSession().getAttribute("search_results");
+
+ int end = startInt + perPage;
+ if(end > results.size())
+ {
+ end = results.size();
+ }
+ List subList = results.subList(startInt, end);
+ try {
+ control = this.buildCmsTree(subList);
+ actionRequest.getPortletSession().setAttribute("search_tree", control);
+ } catch (ContentManagementException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ if(startInt > 0)
+ {
+ int prev = startInt - perPage;
+ actionRequest.getPortletSession().setAttribute("prev", Integer.toString(prev));
+ }
+ int next = startInt + perPage;
+ if(next < results.size())
+ {
+ actionRequest.getPortletSession().setAttribute("next", Integer.toString(next));
+ }
+ }
+
+ if (control == null)
+ {
+ actionRequest.getPortletSession().setAttribute("search_tree", null);
+ }
+ else
+ {
+ // expand or contact non-leaf nodes
+ String node = actionRequest.getParameter(REQUEST_NODE);
+ if (node != null)
+ {
+ TreeControlNode controlNode = control.findNode(node);
+ if (controlNode != null)
+ {
+ if(controlNode.isLazy() && !controlNode.isLoaded())
+ {
+ try {
+ loader.loadChildren(controlNode);
+ } catch (ContentManagementException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ controlNode.setExpanded(!controlNode.isExpanded());
+ actionRequest.getPortletSession().setAttribute("tree_anchor", node);
+
+ if(controlNode.isExpanded() && controlNode != control.getRoot())
+ {
+ TreeControlNode[] siblings = controlNode.getParent().findChildren();
+ for(int i=0; i<siblings.length; i++)
+ {
+ TreeControlNode sibling = siblings[i];
+ if(sibling != controlNode)
+ {
+ sibling.setExpanded(false);
+ }
+ }
+ }
+ }
+ }
+
+ // select a node
+ String selectedNode = actionRequest.getParameter(REQUEST_SELECT_NODE);
+ if (selectedNode != null)
+ {
+ selectNode(actionRequest, control, selectedNode);
+ actionRequest.getPortletSession().setAttribute("tree_anchor", selectedNode);
+ }
+ }
+ }
+
+ private TreeControl doSearch(ActionRequest request, String searchString)
+ {
+ Filter filter = search.newFilter();
+ filter.setScope(this.getInitParameter("scope"));
+ filter.addFullTextSearch(searchString);
+ SearchResults results = null;
+ try
+ {
+ results = search.searchCmsObjects(filter);
+ if (results.size() > 0)
+ {
+ List resultList = results.getResults();
+ int end = perPage;
+ if(perPage > resultList.size())
+ {
+ end = resultList.size();
+ }
+ List subList = resultList.subList(0, end);
+ TreeControl control = buildCmsTree(subList);
+ request.getPortletSession().setAttribute("search_tree", control);
+ request.getPortletSession().setAttribute("search_results", resultList);
+ return control;
+ }
+ }
+ catch (ContentManagementException e)
+ {
+ System.err.println("Failed to search on search string: " + searchString + ", " + e.toString());
+ }
+ // handle case where nothing found
+ if (results == null)
+ results = new SearchResults();
+ List resultList = results.getResults();
+ //List subList = resultList.subList(0,perPage);
+ TreeControlNode root = loader.createRootNode("Search Results", "SEARCH_DOMAIN");
+ TreeControl control = new TreeControl(root);
+ request.getPortletSession().setAttribute("search_tree", control);
+ request.getPortletSession().setAttribute("search_results", resultList);
+ return control;
+ }
+
+ private TreeControl buildCmsTree(List results) throws ContentManagementException
+ {
+ TreeControlNode root = loader.createRootNode("Search Results", "SEARCH_DOMAIN");
+ TreeControl treeControl = new TreeControl(root);
+ for (int ix = 0; ix < results.size(); ix++)
+ {
+ Document document = (Document)results.get(ix);
+ /*
+ String key = document.getProperty("reference");
+ String dt = document.getProperty("displayTitle");
+ TreeControlNode docNode =
+ new TreeControlNode(
+ key,
+ "document.gif",
+ document.getProperty("displayTitle"),
+ PORTLET_URL,
+ null,
+ false,
+ "DOC_DOMAIN",
+ "Document");
+ */
+ // refToURIMap.put(document.getProperty("reference"), document.getUri());
+ TreeControlNode docNode = loader.createDocumentNode(document);
+ root.addChild(docNode);
+ }
+
+ return treeControl;
+ }
+
+ private void selectNode(PortletRequest actionRequest, TreeControl control, String selectedNode)
+ {
+ System.out.println("selected node = " + selectedNode);
+ control.selectNode(selectedNode);
+ TreeControlNode child = control.findNode(selectedNode);
+ if (child != null)
+ {
+ String domain = child.getDomain();
+ /*
+ if (domain.equals("FOLDER_DOMAIN"))
+ {
+ if (selectedNode != null)
+ {
+ System.out.println("posting selected node = " + selectedNode);
+
+ actionRequest.getPortletSession().setAttribute(
+ "current_folder", selectedNode,
+ PortletSession.APPLICATION_SCOPE);
+ }
+ }
+ */
+ if(domain.equals("DOC_DOMAIN") || domain.equals("ANCHOR_DOMAIN"))
+ {
+ String uri = selectedNode; //(String) this.refToURIMap.get(selectedNode);
+ //String uri = loader.getURIFromNodeName(selectedNode);
+ try
+ {
+ PortletMessaging.publish(actionRequest, "FileDisplayer", "current_file", uri);
+ }
+ catch (NotSerializableException e)
+ {}
+
+ actionRequest.getPortletSession().setAttribute("refresh_page", Boolean.TRUE);
+ }
+ }
+ }
+
+
+
+ public void init(PortletConfig config) throws PortletException
+ {
+ super.init(config);
+ }
+
+}
Propchange: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/SearchPortlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/TreePortlet.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/TreePortlet.java?view=diff&rev=448311&r1=448310&r2=448311
==============================================================================
--- incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/TreePortlet.java (original)
+++ incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/TreePortlet.java Wed Sep 20 12:37:05 2006
@@ -1,250 +1,250 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation.
- *
- * 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 org.apache.portals.graffito.portlets;
-
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.portlet.ActionRequest;
-import javax.portlet.ActionResponse;
-import javax.portlet.PortletConfig;
-import javax.portlet.PortletException;
-import javax.portlet.PortletRequest;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
-
-import org.apache.portals.graffito.exception.ContentManagementException;
-import org.apache.portals.graffito.model.core.Folder;
-import org.apache.portals.graffito.model.dm.Document;
-import org.apache.portals.messaging.PortletMessaging;
-import org.apache.webapp.admin.TreeControl;
-import org.apache.webapp.admin.TreeControlNode;
-
-import org.apache.portals.graffito.portlets.tree.CMSTreeLoader;
-
-
-
-/**
- * CMS Tree Portlet
- *
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
- * @version $Id: CMSTreePortlet.java,v 1.2 2005/02/18 01:10:56 david Exp $
- */
-public class TreePortlet extends AbstractTreePortlet
-{
- public final static String PORTLET_ACTION = "portlet_action";
- public final static String PORTLET_URL = "portlet_url";
- public final static String CURRENT_FOLDER = "current_folder";
- public final static String CURRENT_PAGE = "current_page";
- public final static String CURRENT_USER = "current_user";
- public final static String REQUEST_NODE = "node";
- /** the selected leaf node in the tree view */
- public final static String REQUEST_SELECT_NODE = "select_node";
-
- protected final static String TARGET = "_parent";
-
- protected String xmlIndex;
-
- public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException
- {
- response.setContentType("text/html");
-
- TreeControl control = (TreeControl) request.getPortletSession().getAttribute("j2_tree");
- String refreshNow = request.getParameter("refreshNow");
- if (control == null || refreshNow != null)
- {
- control = buildCmsTree(this.getInitParameter("scope"), getRootLabel(), "DTB_DOMAIN");
- request.getPortletSession().setAttribute("j2_tree", control);
- }
-
- Object anchor = request.getPortletSession().getAttribute("tree_anchor");
- if(anchor != null)
- {
- request.setAttribute("tree_anchor", anchor);
- //request.getPortletSession().removeAttribute("tree_anchor");
- }
-
- Object refresh = request.getPortletSession().getAttribute("refresh_page");
- if(refresh != null)
- {
- request.getPortletSession().removeAttribute("refresh_page");
- request.setAttribute("refresh_page", refresh);
- }
-
-
- request.setAttribute("j2_tree", control);
-
- super.doView(request, response);
- }
-
- public void processAction(ActionRequest actionRequest, ActionResponse actionResponse)
- throws PortletException,
- IOException
- {
- String refresh = actionRequest.getParameter("refresh_page");
- if (refresh != null)
- {
- actionResponse.setRenderParameter("refreshNow", "true");
- }
- Object reset = actionRequest.getParameter("reset_page");
- if(reset != null)
- {
- //attempt to fix safari bug. if processAction
- return;
- }
-
- TreeControl control = (TreeControl) actionRequest.getPortletSession().getAttribute("j2_tree");
- //assert control != null
- if (control != null)
- {
- // expand or contact non-leaf nodes
- String node = actionRequest.getParameter(REQUEST_NODE);
- if (node != null)
- {
- TreeControlNode controlNode = control.findNode(node);
- if (controlNode != null)
- {
- if(controlNode.isLazy() && !controlNode.isLoaded())
- {
- try {
- loader.loadChildren(controlNode);
- } catch (ContentManagementException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- controlNode.setExpanded(!controlNode.isExpanded());
- actionRequest.getPortletSession().setAttribute("tree_anchor", node);
-
- if(controlNode.isExpanded() && controlNode != control.getRoot())
- {
- TreeControlNode[] siblings = controlNode.getParent().findChildren();
- for(int i=0; i<siblings.length; i++)
- {
- TreeControlNode sibling = siblings[i];
- if(sibling != controlNode)
- {
- sibling.setExpanded(false);
- }
- }
- }
- }
- }
-
- // select a node
- String selectedNode = actionRequest.getParameter(REQUEST_SELECT_NODE);
- if (selectedNode != null)
- {
- selectNode(actionRequest, control, selectedNode);
- actionRequest.getPortletSession().setAttribute("tree_anchor", selectedNode);
- }
- }
- }
-
- private void selectNode(PortletRequest actionRequest, TreeControl control, String selectedNode)
- {
- System.out.println("selected node = " + selectedNode);
- control.selectNode(selectedNode);
- TreeControlNode child = control.findNode(selectedNode);
- if (child != null)
- {
- String domain = child.getDomain();
- /*
- if (domain.equals("FOLDER_DOMAIN"))
- {
- if (selectedNode != null)
- {
- System.out.println("posting selected node = " + selectedNode);
-
- actionRequest.getPortletSession().setAttribute(
- "current_folder", selectedNode,
- PortletSession.APPLICATION_SCOPE);
- }
- }
- */
- if(domain.equals("DOC_DOMAIN") || domain.equals("ANCHOR_DOMAIN"))
- {
- //String uri = loader.getURIFromNodeName(selectedNode);
- String uri = selectedNode; //(String) refToURIMap.get(selectedNode);
- try
- {
- PortletMessaging.publish(actionRequest, "FileDisplayer", "current_file", uri);
- }
- catch (NotSerializableException e)
- {}
-
- actionRequest.getPortletSession().setAttribute("refresh_page", Boolean.TRUE);
- }
- }
- }
-
- public TreeControl buildCmsTree(String folderRoot, String label, String rootDomain)
- {
- TreeControlNode root = loader.createRootNode(label, rootDomain);
- TreeControl treeControl = new TreeControl(root);
-
- if (null == cms)
- return treeControl;
-
- // load from CMS
- try
- {
- Collection topLevel = cms.getFolders(folderRoot);
- Collections.sort((List)topLevel, getComparator("root"));
- Iterator top = topLevel.iterator();
- while (top.hasNext())
- {
- Folder topFolder = (Folder)top.next();
- TreeControlNode node = loader.createFolderNode(topFolder);
- root.addChild(node);
- if(cms.getFolders(topFolder.getUri()).size() > 0)
- {
- node.setLeaf(false);
- }
- }
-
- // then get documents
- Collection docLevel = cms.getContents(folderRoot);
- Collections.sort((List)docLevel, getComparator("folder"));
- Iterator docs = docLevel.iterator();
- while (docs.hasNext())
- {
- Document doc = (Document)docs.next();
- TreeControlNode issueNode = loader.createDocumentNode(doc);
- root.addChild(issueNode);
- }
-
- }
- catch (ContentManagementException cme)
- {
- // TODO: logging
- System.err.println("exception building cms list " + cme);
- }
-
- return treeControl;
- }
-
- public void init(PortletConfig config) throws PortletException
- {
- super.init(config);
- }
-
-
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ *
+ * 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 org.apache.portals.graffito.portlets;
+
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.portals.graffito.exception.ContentManagementException;
+import org.apache.portals.graffito.model.core.Folder;
+import org.apache.portals.graffito.model.dm.Document;
+import org.apache.portals.messaging.PortletMessaging;
+import org.apache.webapp.admin.TreeControl;
+import org.apache.webapp.admin.TreeControlNode;
+
+import org.apache.portals.graffito.portlets.tree.CMSTreeLoader;
+
+
+
+/**
+ * CMS Tree Portlet
+ *
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @version $Id: CMSTreePortlet.java,v 1.2 2005/02/18 01:10:56 david Exp $
+ */
+public class TreePortlet extends AbstractTreePortlet
+{
+ public final static String PORTLET_ACTION = "portlet_action";
+ public final static String PORTLET_URL = "portlet_url";
+ public final static String CURRENT_FOLDER = "current_folder";
+ public final static String CURRENT_PAGE = "current_page";
+ public final static String CURRENT_USER = "current_user";
+ public final static String REQUEST_NODE = "node";
+ /** the selected leaf node in the tree view */
+ public final static String REQUEST_SELECT_NODE = "select_node";
+
+ protected final static String TARGET = "_parent";
+
+ protected String xmlIndex;
+
+ public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException
+ {
+ response.setContentType("text/html");
+
+ TreeControl control = (TreeControl) request.getPortletSession().getAttribute("j2_tree");
+ String refreshNow = request.getParameter("refreshNow");
+ if (control == null || refreshNow != null)
+ {
+ control = buildCmsTree(this.getInitParameter("scope"), getRootLabel(), "DTB_DOMAIN");
+ request.getPortletSession().setAttribute("j2_tree", control);
+ }
+
+ Object anchor = request.getPortletSession().getAttribute("tree_anchor");
+ if(anchor != null)
+ {
+ request.setAttribute("tree_anchor", anchor);
+ //request.getPortletSession().removeAttribute("tree_anchor");
+ }
+
+ Object refresh = request.getPortletSession().getAttribute("refresh_page");
+ if(refresh != null)
+ {
+ request.getPortletSession().removeAttribute("refresh_page");
+ request.setAttribute("refresh_page", refresh);
+ }
+
+
+ request.setAttribute("j2_tree", control);
+
+ super.doView(request, response);
+ }
+
+ public void processAction(ActionRequest actionRequest, ActionResponse actionResponse)
+ throws PortletException,
+ IOException
+ {
+ String refresh = actionRequest.getParameter("refresh_page");
+ if (refresh != null)
+ {
+ actionResponse.setRenderParameter("refreshNow", "true");
+ }
+ Object reset = actionRequest.getParameter("reset_page");
+ if(reset != null)
+ {
+ //attempt to fix safari bug. if processAction
+ return;
+ }
+
+ TreeControl control = (TreeControl) actionRequest.getPortletSession().getAttribute("j2_tree");
+ //assert control != null
+ if (control != null)
+ {
+ // expand or contact non-leaf nodes
+ String node = actionRequest.getParameter(REQUEST_NODE);
+ if (node != null)
+ {
+ TreeControlNode controlNode = control.findNode(node);
+ if (controlNode != null)
+ {
+ if(controlNode.isLazy() && !controlNode.isLoaded())
+ {
+ try {
+ loader.loadChildren(controlNode);
+ } catch (ContentManagementException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ controlNode.setExpanded(!controlNode.isExpanded());
+ actionRequest.getPortletSession().setAttribute("tree_anchor", node);
+
+ if(controlNode.isExpanded() && controlNode != control.getRoot())
+ {
+ TreeControlNode[] siblings = controlNode.getParent().findChildren();
+ for(int i=0; i<siblings.length; i++)
+ {
+ TreeControlNode sibling = siblings[i];
+ if(sibling != controlNode)
+ {
+ sibling.setExpanded(false);
+ }
+ }
+ }
+ }
+ }
+
+ // select a node
+ String selectedNode = actionRequest.getParameter(REQUEST_SELECT_NODE);
+ if (selectedNode != null)
+ {
+ selectNode(actionRequest, control, selectedNode);
+ actionRequest.getPortletSession().setAttribute("tree_anchor", selectedNode);
+ }
+ }
+ }
+
+ private void selectNode(PortletRequest actionRequest, TreeControl control, String selectedNode)
+ {
+ System.out.println("selected node = " + selectedNode);
+ control.selectNode(selectedNode);
+ TreeControlNode child = control.findNode(selectedNode);
+ if (child != null)
+ {
+ String domain = child.getDomain();
+ /*
+ if (domain.equals("FOLDER_DOMAIN"))
+ {
+ if (selectedNode != null)
+ {
+ System.out.println("posting selected node = " + selectedNode);
+
+ actionRequest.getPortletSession().setAttribute(
+ "current_folder", selectedNode,
+ PortletSession.APPLICATION_SCOPE);
+ }
+ }
+ */
+ if(domain.equals("DOC_DOMAIN") || domain.equals("ANCHOR_DOMAIN"))
+ {
+ //String uri = loader.getURIFromNodeName(selectedNode);
+ String uri = selectedNode; //(String) refToURIMap.get(selectedNode);
+ try
+ {
+ PortletMessaging.publish(actionRequest, "FileDisplayer", "current_file", uri);
+ }
+ catch (NotSerializableException e)
+ {}
+
+ actionRequest.getPortletSession().setAttribute("refresh_page", Boolean.TRUE);
+ }
+ }
+ }
+
+ public TreeControl buildCmsTree(String folderRoot, String label, String rootDomain)
+ {
+ TreeControlNode root = loader.createRootNode(label, rootDomain);
+ TreeControl treeControl = new TreeControl(root);
+
+ if (null == cms)
+ return treeControl;
+
+ // load from CMS
+ try
+ {
+ Collection topLevel = cms.getFolders(folderRoot);
+ Collections.sort((List)topLevel, getComparator("root"));
+ Iterator top = topLevel.iterator();
+ while (top.hasNext())
+ {
+ Folder topFolder = (Folder)top.next();
+ TreeControlNode node = loader.createFolderNode(topFolder);
+ root.addChild(node);
+ if(cms.getFolders(topFolder.getUri()).size() > 0)
+ {
+ node.setLeaf(false);
+ }
+ }
+
+ // then get documents
+ Collection docLevel = cms.getContents(folderRoot);
+ Collections.sort((List)docLevel, getComparator("folder"));
+ Iterator docs = docLevel.iterator();
+ while (docs.hasNext())
+ {
+ Document doc = (Document)docs.next();
+ TreeControlNode issueNode = loader.createDocumentNode(doc);
+ root.addChild(issueNode);
+ }
+
+ }
+ catch (ContentManagementException cme)
+ {
+ // TODO: logging
+ System.err.println("exception building cms list " + cme);
+ }
+
+ return treeControl;
+ }
+
+ public void init(PortletConfig config) throws PortletException
+ {
+ super.init(config);
+ }
+
+
+}
Propchange: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/TreePortlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/CMSTreeLoader.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/CMSTreeLoader.java?view=diff&rev=448311&r1=448310&r2=448311
==============================================================================
--- incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/CMSTreeLoader.java (original)
+++ incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/CMSTreeLoader.java Wed Sep 20 12:37:05 2006
@@ -1,214 +1,214 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation.
- *
- * 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 org.apache.portals.graffito.portlets.tree;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.portals.graffito.exception.ContentManagementException;
-import org.apache.portals.graffito.model.core.CmsObject;
-import org.apache.portals.graffito.model.core.Content;
-import org.apache.portals.graffito.model.core.Folder;
-import org.apache.portals.graffito.model.core.Link;
-import org.apache.portals.graffito.model.dm.Document;
-//import org.apache.portals.graffito.model.dm.Document;
-import org.apache.portals.graffito.portlets.AbstractTreePortlet;
-import org.apache.portals.graffito.services.core.ContentModelService;
-import org.apache.webapp.admin.TreeControlNode;
-
-public class CMSTreeLoader
-{
-
- public final static String PORTLET_URL = "portlet_url";
-
- private ContentModelService cms;
- private AbstractTreePortlet portlet;
-
- public CMSTreeLoader(ContentModelService cms, AbstractTreePortlet portlet)
- {
- this.cms = cms;
- this.portlet = portlet;
- }
-
- public TreeControlNode createFolderNode(Folder folder) throws ContentManagementException
- {
- TreeControlNode node =
- new TreeControlNode(
- folder.getUri(),
- portlet.getFolderImage(),
- portlet.getFolderTitle(folder),
- null,
- null,
- false,
- "FOLDER_DOMAIN",
- "Folder",
- true);
- node.setExpandWhenClicked(true);
- node.setTitle(folder.getName());
-
- if(cms.getContents(folder.getUri()).size() > 0)
- {
- node.setLeaf(false);
- }
- return node;
- }
-
- public TreeControlNode createDocumentNode(Content content) throws ContentManagementException
- {
-
- String title = portlet.getDocumentTitle(content);
-
- TreeControlNode issueNode =
- new TreeControlNode(
- content.getUri(),
- content instanceof Document ? portlet.getImageForContentType(((Document) content ).getContentType()) : "content" ,
- title,
- PORTLET_URL,
- null,
- false,
- "DOC_DOMAIN",
- "Document",
- true);
-
- issueNode.setTitle(title);
-
- //if(cms.getLinks(document.getUri()).size() > 0)
- {
- issueNode.setLeaf(true);
- }
-
- return issueNode;
- }
-
- public TreeControlNode createLinkNode(Link link) throws ContentManagementException
- {
- TreeControlNode linkNode =
- new TreeControlNode(
- link.getProperty("reference") + link.getProperty("anchor"),
- portlet.getAnchorImage(),
- link.getProperty("displayTitle"),
- PORTLET_URL,
- null,
- false,
- "ANCHOR_DOMAIN",
- null,
- true);
- linkNode.setTitle(link.getProperty("displayTitle"));
-
- if(cms.getLinks(link.getUri()).size() > 0)
- {
- linkNode.setLeaf(false);
- }
-
- return linkNode;
- }
-
- public TreeControlNode createRootNode(String label, String rootDomain)
- {
- TreeControlNode root = new TreeControlNode("ROOT-NODE",
- portlet.getRootImage(),
- label, // label
- null, // action
- null, // target
- true, // expanded?
- rootDomain,
- null);
-
- return root;
- }
-
- public void loadChildren(TreeControlNode node) throws ContentManagementException
- {
- String domain = node.getDomain();
- if(domain.equals("FOLDER_DOMAIN"))
- {
- // first get folders
- Collection subFolders = cms.getFolders(node.getName());
- Collections.sort((List)subFolders, portlet.getComparator("FOLDER_DOMAIN"));
- Iterator folders = subFolders.iterator();
- while (folders.hasNext())
- {
- Folder folder = (Folder)folders.next();
- TreeControlNode monthNode = createFolderNode(folder);
- node.addChild(monthNode);
- }
-
- // then get documents
- Collection issueLevel = cms.getContents(node.getName());
- Collections.sort((List)issueLevel, portlet.getComparator("FOLDER_DOMAIN"));
- Iterator issues = issueLevel.iterator();
- while (issues.hasNext())
- {
- Content doc = (Content)issues.next();
- TreeControlNode issueNode = createDocumentNode(doc);
- node.addChild(issueNode);
-
- //refToURIMap.put(doc.getProperty("reference"), doc.getUri());
- }
- node.setLoaded(true);
-
- }
-// else if(domain.equals("DOC_DOMAIN"))
-// {
-// //String uri = (String) refToURIMap.get(node.getName());
-// String uri = node.getName();
-// Collection links = cms.getLinks(uri);
-// Iterator iter = links.iterator();
-// while (iter.hasNext()) {
-// Link link = (Link) iter.next();
-// TreeControlNode linkNode = createLinkNode(link);
-// node.addChild(linkNode);
-//
-// //refToURIMap.put(link.getProperty("reference") + link.getProperty("anchor"), link.getUri());
-// }
-// node.setLoaded(true);
-// }
-// else if(domain.equals("ANCHOR_DOMAIN"))
-// {
-// //String uri = (String) refToURIMap.get(node.getName());
-// String uri = node.getName();
-//
-// Collection links = cms.getLinks(uri);
-// Iterator iter = links.iterator();
-// while (iter.hasNext()) {
-// Link link = (Link) iter.next();
-// TreeControlNode linkNode = createLinkNode(link);
-// node.addChild(linkNode);
-//
-// // refToURIMap.put(link.getProperty("reference") + link.getProperty("anchor"), link.getUri());
-// }
-// node.setLoaded(true);
-// }
-
- }
-
-
- public static Comparator cmsComparator = new CmsObjectComparator();
-
- private static class CmsObjectComparator implements Comparator
- {
- public int compare(Object o1, Object o2)
- {
- CmsObject lhs = (CmsObject)o1;
- CmsObject rhs = (CmsObject)o2;
-
- return rhs.getName().compareTo(lhs.getName());
- }
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ *
+ * 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 org.apache.portals.graffito.portlets.tree;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.portals.graffito.exception.ContentManagementException;
+import org.apache.portals.graffito.model.core.CmsObject;
+import org.apache.portals.graffito.model.core.Content;
+import org.apache.portals.graffito.model.core.Folder;
+import org.apache.portals.graffito.model.core.Link;
+import org.apache.portals.graffito.model.dm.Document;
+//import org.apache.portals.graffito.model.dm.Document;
+import org.apache.portals.graffito.portlets.AbstractTreePortlet;
+import org.apache.portals.graffito.services.core.ContentModelService;
+import org.apache.webapp.admin.TreeControlNode;
+
+public class CMSTreeLoader
+{
+
+ public final static String PORTLET_URL = "portlet_url";
+
+ private ContentModelService cms;
+ private AbstractTreePortlet portlet;
+
+ public CMSTreeLoader(ContentModelService cms, AbstractTreePortlet portlet)
+ {
+ this.cms = cms;
+ this.portlet = portlet;
+ }
+
+ public TreeControlNode createFolderNode(Folder folder) throws ContentManagementException
+ {
+ TreeControlNode node =
+ new TreeControlNode(
+ folder.getUri(),
+ portlet.getFolderImage(),
+ portlet.getFolderTitle(folder),
+ null,
+ null,
+ false,
+ "FOLDER_DOMAIN",
+ "Folder",
+ true);
+ node.setExpandWhenClicked(true);
+ node.setTitle(folder.getName());
+
+ if(cms.getContents(folder.getUri()).size() > 0)
+ {
+ node.setLeaf(false);
+ }
+ return node;
+ }
+
+ public TreeControlNode createDocumentNode(Content content) throws ContentManagementException
+ {
+
+ String title = portlet.getDocumentTitle(content);
+
+ TreeControlNode issueNode =
+ new TreeControlNode(
+ content.getUri(),
+ content instanceof Document ? portlet.getImageForContentType(((Document) content ).getContentType()) : "content" ,
+ title,
+ PORTLET_URL,
+ null,
+ false,
+ "DOC_DOMAIN",
+ "Document",
+ true);
+
+ issueNode.setTitle(title);
+
+ //if(cms.getLinks(document.getUri()).size() > 0)
+ {
+ issueNode.setLeaf(true);
+ }
+
+ return issueNode;
+ }
+
+ public TreeControlNode createLinkNode(Link link) throws ContentManagementException
+ {
+ TreeControlNode linkNode =
+ new TreeControlNode(
+ link.getProperty("reference") + link.getProperty("anchor"),
+ portlet.getAnchorImage(),
+ link.getProperty("displayTitle"),
+ PORTLET_URL,
+ null,
+ false,
+ "ANCHOR_DOMAIN",
+ null,
+ true);
+ linkNode.setTitle(link.getProperty("displayTitle"));
+
+ if(cms.getLinks(link.getUri()).size() > 0)
+ {
+ linkNode.setLeaf(false);
+ }
+
+ return linkNode;
+ }
+
+ public TreeControlNode createRootNode(String label, String rootDomain)
+ {
+ TreeControlNode root = new TreeControlNode("ROOT-NODE",
+ portlet.getRootImage(),
+ label, // label
+ null, // action
+ null, // target
+ true, // expanded?
+ rootDomain,
+ null);
+
+ return root;
+ }
+
+ public void loadChildren(TreeControlNode node) throws ContentManagementException
+ {
+ String domain = node.getDomain();
+ if(domain.equals("FOLDER_DOMAIN"))
+ {
+ // first get folders
+ Collection subFolders = cms.getFolders(node.getName());
+ Collections.sort((List)subFolders, portlet.getComparator("FOLDER_DOMAIN"));
+ Iterator folders = subFolders.iterator();
+ while (folders.hasNext())
+ {
+ Folder folder = (Folder)folders.next();
+ TreeControlNode monthNode = createFolderNode(folder);
+ node.addChild(monthNode);
+ }
+
+ // then get documents
+ Collection issueLevel = cms.getContents(node.getName());
+ Collections.sort((List)issueLevel, portlet.getComparator("FOLDER_DOMAIN"));
+ Iterator issues = issueLevel.iterator();
+ while (issues.hasNext())
+ {
+ Content doc = (Content)issues.next();
+ TreeControlNode issueNode = createDocumentNode(doc);
+ node.addChild(issueNode);
+
+ //refToURIMap.put(doc.getProperty("reference"), doc.getUri());
+ }
+ node.setLoaded(true);
+
+ }
+// else if(domain.equals("DOC_DOMAIN"))
+// {
+// //String uri = (String) refToURIMap.get(node.getName());
+// String uri = node.getName();
+// Collection links = cms.getLinks(uri);
+// Iterator iter = links.iterator();
+// while (iter.hasNext()) {
+// Link link = (Link) iter.next();
+// TreeControlNode linkNode = createLinkNode(link);
+// node.addChild(linkNode);
+//
+// //refToURIMap.put(link.getProperty("reference") + link.getProperty("anchor"), link.getUri());
+// }
+// node.setLoaded(true);
+// }
+// else if(domain.equals("ANCHOR_DOMAIN"))
+// {
+// //String uri = (String) refToURIMap.get(node.getName());
+// String uri = node.getName();
+//
+// Collection links = cms.getLinks(uri);
+// Iterator iter = links.iterator();
+// while (iter.hasNext()) {
+// Link link = (Link) iter.next();
+// TreeControlNode linkNode = createLinkNode(link);
+// node.addChild(linkNode);
+//
+// // refToURIMap.put(link.getProperty("reference") + link.getProperty("anchor"), link.getUri());
+// }
+// node.setLoaded(true);
+// }
+
+ }
+
+
+ public static Comparator cmsComparator = new CmsObjectComparator();
+
+ private static class CmsObjectComparator implements Comparator
+ {
+ public int compare(Object o1, Object o2)
+ {
+ CmsObject lhs = (CmsObject)o1;
+ CmsObject rhs = (CmsObject)o2;
+
+ return rhs.getName().compareTo(lhs.getName());
+ }
+ }
+}
Propchange: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/CMSTreeLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoader.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoader.java?view=diff&rev=448311&r1=448310&r2=448311
==============================================================================
--- incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoader.java (original)
+++ incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoader.java Wed Sep 20 12:37:05 2006
@@ -1,70 +1,70 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation.
- *
- * 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 org.apache.portals.graffito.portlets.tree;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.webapp.admin.TreeControl;
-import org.xml.sax.SAXException;
-
-public class TreeLoader
-{
- private InputStream inputStream;
-
- public TreeLoader(InputStream inputStream)
- {
- this.inputStream = inputStream;
- }
-
- public TreeControl getTreeControl()
- {
- TreeControl tree = null;
-
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setValidating(false);
- factory.setNamespaceAware(false);
-
- try
- {
- SAXParser parser = factory.newSAXParser();
- TreeLoaderHandler handler = new TreeLoaderHandler();
- parser.parse(inputStream, handler);
- tree = handler.getTreeControl();
- }
- catch (ParserConfigurationException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- catch (SAXException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- return tree;
- }
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ *
+ * 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 org.apache.portals.graffito.portlets.tree;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.apache.webapp.admin.TreeControl;
+import org.xml.sax.SAXException;
+
+public class TreeLoader
+{
+ private InputStream inputStream;
+
+ public TreeLoader(InputStream inputStream)
+ {
+ this.inputStream = inputStream;
+ }
+
+ public TreeControl getTreeControl()
+ {
+ TreeControl tree = null;
+
+ SAXParserFactory factory = SAXParserFactory.newInstance();
+ factory.setValidating(false);
+ factory.setNamespaceAware(false);
+
+ try
+ {
+ SAXParser parser = factory.newSAXParser();
+ TreeLoaderHandler handler = new TreeLoaderHandler();
+ parser.parse(inputStream, handler);
+ tree = handler.getTreeControl();
+ }
+ catch (ParserConfigurationException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ catch (SAXException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return tree;
+ }
+}
Propchange: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoaderHandler.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoaderHandler.java?view=diff&rev=448311&r1=448310&r2=448311
==============================================================================
--- incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoaderHandler.java (original)
+++ incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoaderHandler.java Wed Sep 20 12:37:05 2006
@@ -1,227 +1,227 @@
-/*
- * Copyright 2000-2004 The Apache Software Foundation.
- *
- * 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 org.apache.portals.graffito.portlets.tree;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.webapp.admin.TreeControl;
-import org.apache.webapp.admin.TreeControlNode;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class TreeLoaderHandler extends DefaultHandler
-{
- public final static String PORTLET_URL = "portlet_url";
-
- private Map yearToTreeNode = new HashMap();
- private Map yearToChildren = new HashMap();
- private Map yearmonthToTreeNode = new HashMap();
- private Map yearmonthToChildren = new HashMap();
-
- private Comparator treeNodeComparator = new TreeNodeComparator();
-
- private TreeControl treeControl;
- private TreeControlNode root = null;
-
- //private int anchorId = 0;
-
- public TreeLoaderHandler()
- {
- }
-
- public void startDocument ()
- throws SAXException
- {
- root = new TreeControlNode("ROOT-NODE", "folder.gif",
- "Articles", null, null, true, "ROOT_DOMAIN");
-
- treeControl = new TreeControl(root);
- }
-
- public void endDocument ()
- throws SAXException
- {
- addYearNodesToRoot();
- }
-
- public TreeControl getTreeControl()
- {
- return treeControl;
- }
-
- private void addYearNodesToRoot()
- {
- List yearList = new ArrayList(yearToTreeNode.values());
- Collections.sort(yearList, treeNodeComparator);
-
- Iterator yearIter = yearList.iterator();
- while (yearIter.hasNext())
- {
- TreeControlNode yearNode = (TreeControlNode) yearIter.next();
- root.addChild(yearNode);
- addMonthNodesToYearNode(yearNode);
- }
- }
-
- private void addMonthNodesToYearNode(TreeControlNode yearNode)
- {
- List monthList = (List) yearToChildren.get(yearNode.getLabel());
- Collections.sort(monthList, treeNodeComparator);
-
- Iterator monthIter = monthList.iterator();
- while (monthIter.hasNext())
- {
- TreeControlNode monthNode = (TreeControlNode)monthIter.next();
- yearNode.addChild(monthNode);
- addIssuesToMonth(yearNode, monthNode);
- }
- }
-
- private void addIssuesToMonth(TreeControlNode yearNode, TreeControlNode monthNode)
- {
- String ymId = yearNode.getLabel() + ":" + monthNode.getLabel();
- List issueList = (List) this.yearmonthToChildren.get(ymId);
- Collections.sort(issueList, treeNodeComparator);
-
- Iterator issueIter = issueList.iterator();
- while (issueIter.hasNext())
- {
- TreeControlNode issueNode = (TreeControlNode)issueIter.next();
- TreeControlNode existingIssueNode = treeControl.findNode(issueNode.getName());
- if(existingIssueNode == null)
- {
- monthNode.addChild(issueNode);
- }
- }
- }
-
- private String getElementName(String localName, String qName)
- {
- String result = null;
-
- if(localName == null || localName.length() == 0)
- {
- result = qName;
- }
- else
- {
- result = localName;
- }
-
- return result;
- }
-
- public void startElement (String uri, String localName,
- String qName, Attributes attributes)
- throws SAXException
- {
- String element = getElementName(localName, qName);
- if(element.equals("Article"))
- {
- String year = attributes.getValue("year");
- String month = attributes.getValue("month");
- String issue = attributes.getValue("issue");
- String title = attributes.getValue("title");
- String displaytitle = attributes.getValue("displayTitle");
- String reference = attributes.getValue("reference");
-
- String uid = createArticleId(year, month, issue, title);
-
- TreeControlNode yearNode = (TreeControlNode) yearToTreeNode.get(year);
- if(yearNode == null)
- {
- yearNode = new TreeControlNode(year, "folder.gif",
- year, null, null, false, "YEAR_DOMAIN");
-
- yearToTreeNode.put(year, yearNode);
- }
-
- String ymId = createArticleId(year, month, null, null);
-
- TreeControlNode monthNode = (TreeControlNode) yearmonthToTreeNode.get(ymId);
- if(monthNode == null)
- {
- monthNode = new TreeControlNode(ymId, "folder.gif",
- month, null, null, false, "MONTH_DOMAIN");
-
- yearmonthToTreeNode.put(ymId, monthNode);
- List yearChildren = (List) yearToChildren.get(year);
- if(yearChildren == null)
- {
- yearChildren = new ArrayList();
- yearToChildren.put(year, yearChildren);
- }
- yearChildren.add(monthNode);
- }
-
- TreeControlNode issueNode = new TreeControlNode(uid, "document.gif",
- title, PORTLET_URL, null, false, "ISSUE_DOMAIN");
-
- //issueNode.setAnchor("" + anchorId);
- //++anchorId;
-
- List children = (List) yearmonthToChildren.get(ymId);
- if(children == null)
- {
- children = new ArrayList();
- yearmonthToChildren.put(ymId, children);
- }
- children.add(issueNode);
- }
- }
- private String createArticleId(String year, String month, String issue, String title)
- {
- StringBuffer buffer = new StringBuffer();
-
- buffer.append(year);
- if(month != null)
- {
- buffer.append(":");
- buffer.append(month);
- if(issue != null)
- {
- buffer.append(":");
- buffer.append(issue);
- if(title != null)
- {
- buffer.append(":");
- buffer.append(title);
- }
- }
- }
-
- return buffer.toString();
- }
-
- private class TreeNodeComparator implements Comparator
- {
- public int compare(Object o1, Object o2)
- {
- TreeControlNode lhs = (TreeControlNode)o1;
- TreeControlNode rhs = (TreeControlNode)o2;
-
- return rhs.getLabel().compareTo(lhs.getLabel());
- }
- }
-
-}
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ *
+ * 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 org.apache.portals.graffito.portlets.tree;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.webapp.admin.TreeControl;
+import org.apache.webapp.admin.TreeControlNode;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class TreeLoaderHandler extends DefaultHandler
+{
+ public final static String PORTLET_URL = "portlet_url";
+
+ private Map yearToTreeNode = new HashMap();
+ private Map yearToChildren = new HashMap();
+ private Map yearmonthToTreeNode = new HashMap();
+ private Map yearmonthToChildren = new HashMap();
+
+ private Comparator treeNodeComparator = new TreeNodeComparator();
+
+ private TreeControl treeControl;
+ private TreeControlNode root = null;
+
+ //private int anchorId = 0;
+
+ public TreeLoaderHandler()
+ {
+ }
+
+ public void startDocument ()
+ throws SAXException
+ {
+ root = new TreeControlNode("ROOT-NODE", "folder.gif",
+ "Articles", null, null, true, "ROOT_DOMAIN");
+
+ treeControl = new TreeControl(root);
+ }
+
+ public void endDocument ()
+ throws SAXException
+ {
+ addYearNodesToRoot();
+ }
+
+ public TreeControl getTreeControl()
+ {
+ return treeControl;
+ }
+
+ private void addYearNodesToRoot()
+ {
+ List yearList = new ArrayList(yearToTreeNode.values());
+ Collections.sort(yearList, treeNodeComparator);
+
+ Iterator yearIter = yearList.iterator();
+ while (yearIter.hasNext())
+ {
+ TreeControlNode yearNode = (TreeControlNode) yearIter.next();
+ root.addChild(yearNode);
+ addMonthNodesToYearNode(yearNode);
+ }
+ }
+
+ private void addMonthNodesToYearNode(TreeControlNode yearNode)
+ {
+ List monthList = (List) yearToChildren.get(yearNode.getLabel());
+ Collections.sort(monthList, treeNodeComparator);
+
+ Iterator monthIter = monthList.iterator();
+ while (monthIter.hasNext())
+ {
+ TreeControlNode monthNode = (TreeControlNode)monthIter.next();
+ yearNode.addChild(monthNode);
+ addIssuesToMonth(yearNode, monthNode);
+ }
+ }
+
+ private void addIssuesToMonth(TreeControlNode yearNode, TreeControlNode monthNode)
+ {
+ String ymId = yearNode.getLabel() + ":" + monthNode.getLabel();
+ List issueList = (List) this.yearmonthToChildren.get(ymId);
+ Collections.sort(issueList, treeNodeComparator);
+
+ Iterator issueIter = issueList.iterator();
+ while (issueIter.hasNext())
+ {
+ TreeControlNode issueNode = (TreeControlNode)issueIter.next();
+ TreeControlNode existingIssueNode = treeControl.findNode(issueNode.getName());
+ if(existingIssueNode == null)
+ {
+ monthNode.addChild(issueNode);
+ }
+ }
+ }
+
+ private String getElementName(String localName, String qName)
+ {
+ String result = null;
+
+ if(localName == null || localName.length() == 0)
+ {
+ result = qName;
+ }
+ else
+ {
+ result = localName;
+ }
+
+ return result;
+ }
+
+ public void startElement (String uri, String localName,
+ String qName, Attributes attributes)
+ throws SAXException
+ {
+ String element = getElementName(localName, qName);
+ if(element.equals("Article"))
+ {
+ String year = attributes.getValue("year");
+ String month = attributes.getValue("month");
+ String issue = attributes.getValue("issue");
+ String title = attributes.getValue("title");
+ String displaytitle = attributes.getValue("displayTitle");
+ String reference = attributes.getValue("reference");
+
+ String uid = createArticleId(year, month, issue, title);
+
+ TreeControlNode yearNode = (TreeControlNode) yearToTreeNode.get(year);
+ if(yearNode == null)
+ {
+ yearNode = new TreeControlNode(year, "folder.gif",
+ year, null, null, false, "YEAR_DOMAIN");
+
+ yearToTreeNode.put(year, yearNode);
+ }
+
+ String ymId = createArticleId(year, month, null, null);
+
+ TreeControlNode monthNode = (TreeControlNode) yearmonthToTreeNode.get(ymId);
+ if(monthNode == null)
+ {
+ monthNode = new TreeControlNode(ymId, "folder.gif",
+ month, null, null, false, "MONTH_DOMAIN");
+
+ yearmonthToTreeNode.put(ymId, monthNode);
+ List yearChildren = (List) yearToChildren.get(year);
+ if(yearChildren == null)
+ {
+ yearChildren = new ArrayList();
+ yearToChildren.put(year, yearChildren);
+ }
+ yearChildren.add(monthNode);
+ }
+
+ TreeControlNode issueNode = new TreeControlNode(uid, "document.gif",
+ title, PORTLET_URL, null, false, "ISSUE_DOMAIN");
+
+ //issueNode.setAnchor("" + anchorId);
+ //++anchorId;
+
+ List children = (List) yearmonthToChildren.get(ymId);
+ if(children == null)
+ {
+ children = new ArrayList();
+ yearmonthToChildren.put(ymId, children);
+ }
+ children.add(issueNode);
+ }
+ }
+ private String createArticleId(String year, String month, String issue, String title)
+ {
+ StringBuffer buffer = new StringBuffer();
+
+ buffer.append(year);
+ if(month != null)
+ {
+ buffer.append(":");
+ buffer.append(month);
+ if(issue != null)
+ {
+ buffer.append(":");
+ buffer.append(issue);
+ if(title != null)
+ {
+ buffer.append(":");
+ buffer.append(title);
+ }
+ }
+ }
+
+ return buffer.toString();
+ }
+
+ private class TreeNodeComparator implements Comparator
+ {
+ public int compare(Object o1, Object o2)
+ {
+ TreeControlNode lhs = (TreeControlNode)o1;
+ TreeControlNode rhs = (TreeControlNode)o2;
+
+ return rhs.getLabel().compareTo(lhs.getLabel());
+ }
+ }
+
+}
Propchange: incubator/graffito/trunk/applications/graffito-portlets/src/java/org/apache/portals/graffito/portlets/tree/TreeLoaderHandler.java
------------------------------------------------------------------------------
svn:eol-style = native