ElementIndex.java revision e947d5e34c3398d273f6880eca71d753d93a48b4
1/*******************************************************************************
2 * Copyright (c) 2009, 2010 Mountainminds GmbH & Co. KG and Contributors
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 *    Marc R. Hoffmann - initial API and implementation
10 *
11 *******************************************************************************/
12package org.jacoco.report.internal.html.index;
13
14import java.util.HashMap;
15import java.util.Map;
16
17import org.jacoco.report.ReportOutputFolder;
18import org.jacoco.report.internal.html.ILinkable;
19
20/**
21 * An index over all report pages that allows queries according to certain
22 * criteria.
23 *
24 * @author Marc R. Hoffmann
25 * @version $qualified.bundle.version$
26 */
27public class ElementIndex implements IIndexUpdate {
28
29	private final ReportOutputFolder baseFolder;
30
31	private final Map<Long, String> allClasses = new HashMap<Long, String>();
32
33	/**
34	 * Creates a new empty index for a HTML report.
35	 *
36	 * @param baseFolder
37	 *            base folder where all links are calculated relative to
38	 */
39	public ElementIndex(final ReportOutputFolder baseFolder) {
40		this.baseFolder = baseFolder;
41	}
42
43	/**
44	 * Returns the link to the class with the given identifier if a
45	 * corresponding page exists.
46	 *
47	 * @param classid
48	 *            class identifier
49	 * @return Link or null
50	 */
51	public String getLinkToClass(final long classid) {
52		return allClasses.get(Long.valueOf(classid));
53	}
54
55	// === IIndexUpdater ===
56
57	public void addClass(final ILinkable link, final long classid) {
58		allClasses.put(Long.valueOf(classid), link.getLink(baseFolder));
59	}
60
61}
62