| /******************************************************************************* |
| * Copyright (c) 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 API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ua.tests.help.util; |
| |
| import org.eclipse.help.IToc; |
| import org.eclipse.help.ITopic; |
| import org.eclipse.help.UAContentFilter; |
| import org.eclipse.help.internal.base.HelpEvaluationContext; |
| |
| public class TocModelSerializer { |
| |
| private static final String EMPTY_STRING = ""; |
| |
| public static String serialize(IToc toc) { |
| StringBuffer buf = new StringBuffer(); |
| buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"); |
| buf.append(serializeAux(toc, "")); |
| return buf.toString(); |
| } |
| |
| private static String serializeAux(IToc toc, String indent) { |
| if (!UAContentFilter.isFiltered(toc, HelpEvaluationContext.getContext())) { |
| StringBuffer buf = new StringBuffer(); |
| buf.append(indent + "<toc\n"); |
| buf.append(indent + " label=\"" + toc.getLabel() + "\"\n"); |
| buf.append(indent + " href=\"" + toc.getHref() + "\">\n"); |
| |
| ITopic[] topics = toc.getTopics(); |
| for (ITopic topic : topics) { |
| buf.append(serializeAux(topic, indent + " ")); |
| } |
| |
| buf.append(indent + "</toc>"); |
| return buf.toString(); |
| } |
| return EMPTY_STRING; |
| } |
| |
| private static String serializeAux(ITopic topic, String indent) { |
| if (!UAContentFilter.isFiltered(topic, HelpEvaluationContext.getContext())) { |
| StringBuffer buf = new StringBuffer(); |
| buf.append(indent + "<topic\n"); |
| buf.append(indent + " label=\"" + topic.getLabel() + "\"\n"); |
| buf.append(indent + " href=\"" + topic.getHref() + "\">\n"); |
| |
| ITopic[] subtopics = topic.getSubtopics(); |
| for (ITopic subtopic : subtopics) { |
| buf.append(serializeAux(subtopic, indent + " ")); |
| } |
| |
| buf.append(indent + "</topic>\n"); |
| return buf.toString(); |
| } |
| return EMPTY_STRING; |
| } |
| } |