//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 IBM Corporation and others. // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // which accompanies this distribution, and is available at // http://www.eclipse.org/legal/epl-v10.html // // Contributors: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.publishing.services; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeMap; import org.eclipse.epf.library.layout.util.XmlElement; /** * Holds all glossary items and sort them in desired order grouped by first * letter of the glossary name TODO: Add a brief description for this class. * * @author Jinhua Xi * @since 1.0 */ public class IndexList { // using the default order from the configuration explorer. // maybe a special sorted list later, // TreeMap of the first letter of the glossary map to a (Sorted) List of // glossary Items private TreeMap itemMap = new TreeMap(); /** * default constructor * */ public IndexList() { } /** * inislize the list * */ public void clear() { itemMap.clear(); } /** * add an entry to the list * * @param term String * @param content String * @param url String */ public void add(String term, String content, String url) { IndexItem item = new IndexItem(term, content, url); String group = "" + item.termName.charAt(0); //$NON-NLS-1$ getItemList(group).add(item); } private List getItemList(String group) { group = group.toUpperCase(); List l = (List) itemMap.get(group); if (l == null) { l = new ArrayList(); itemMap.put(group, l); } return l; } /** * get the xml document for the list * * @return StringBuffer */ public StringBuffer getXml() { XmlElement xe = new XmlElement("Index"); //$NON-NLS-1$ for (Iterator it = itemMap.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); String group = (String) entry.getKey(); List items = (List) entry.getValue(); // create a bookmark for the group xe.newChild("item") //$NON-NLS-1$ .setAttribute("name", group) //$NON-NLS-1$ .setAttribute("presentationName", group) //$NON-NLS-1$ .setAttribute("navigation-mark", "true") //$NON-NLS-1$ //$NON-NLS-2$ .setAttribute("content", ""); //$NON-NLS-1$ //$NON-NLS-2$ // then create entry for each item for (Iterator itItem = items.iterator(); itItem.hasNext();) { IndexItem item = (IndexItem) itItem.next(); xe.newChild("item") //$NON-NLS-1$ .setAttribute("name", item.termName) //$NON-NLS-1$ .setAttribute("presentationName", item.termName) //$NON-NLS-1$ .setAttribute("content", item.content) //$NON-NLS-1$ .setAttribute("url", item.url); //$NON-NLS-1$ } } return xe.toXml(); } class IndexItem { public String termName; public String content; public String url; public IndexItem(String termName, String content, String url) { this.termName = termName; this.content = content; this.url = url; } } }