blob: fe7b18ce34d670ace9a989c05cda0efc9e27df8a [file] [log] [blame]
//------------------------------------------------------------------------------
// 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;
}
}
}