| Line | Hits | Source |
|---|---|---|
| 1 | /* | |
| 2 | * Copyright (c) 2003, the JUNG Project and the Regents of the University | |
| 3 | * of California | |
| 4 | * All rights reserved. | |
| 5 | * | |
| 6 | * This software is open-source under the BSD license; see either | |
| 7 | * "license.txt" or | |
| 8 | * http://jung.sourceforge.net/license.txt for a description. | |
| 9 | */ | |
| 10 | package edu.uci.ics.jung.graph.filters; | |
| 11 | ||
| 12 | import edu.uci.ics.jung.graph.Graph; | |
| 13 | ||
| 14 | /** | |
| 15 | * Contains an audit trail of a graph filtering step. Maintains the name | |
| 16 | * of the filters used, a history of previous filters, and links to | |
| 17 | * the original graph that was used to generate the graph. | |
| 18 | * | |
| 19 | * @author danyelf | |
| 20 | */ | |
| 21 | public class GraphAssemblyRecord { | |
| 22 | ||
| 23 | /** | |
| 24 | * The key that identifes this <tt>GraphAssemblyRecord</tt> in the | |
| 25 | * {@link edu.uci.ics.jung.utils.UserData UserData}. | |
| 26 | */ | |
| 27 | 2 | public static final Object FILTER_GRAPH_KEY = "edu.uci.ics.jung.filter.UnassembledGraph_FilterData"; |
| 28 | ||
| 29 | private String name; | |
| 30 | private Graph originalGraph; | |
| 31 | ||
| 32 | /** | |
| 33 | * Creates a <tt>GraphAssemblyRecord<tt>, recording the original | |
| 34 | * <tt>Graph</tt> and the name of the filter that produced it. | |
| 35 | * <p> | |
| 36 | * This should be done automatically during the <tt>assemble()</tt> | |
| 37 | * call to the <tt>UnassembledGraph</tt>. | |
| 38 | * @param graph | |
| 39 | */ | |
| 40 | 5 | GraphAssemblyRecord(UnassembledGraph graph) { |
| 41 | 5 | this.originalGraph = graph.getOriginalGraph(); |
| 42 | 5 | this.name = graph.getFilterName(); |
| 43 | 5 | } |
| 44 | ||
| 45 | /** | |
| 46 | * Returns the original graph that created this subset. Warning: | |
| 47 | * because this stays around, the original Graph will NOT be | |
| 48 | * garbage collected! Be sure to delete this user data if you | |
| 49 | * want to allow the original graph's memory to be reallocated. | |
| 50 | * @return a pointer to the original Graph. | |
| 51 | */ | |
| 52 | public Graph getOriginalGraph() { | |
| 53 | 0 | return originalGraph; |
| 54 | } | |
| 55 | ||
| 56 | /** | |
| 57 | * Returns the name of the filter that generated this Graph. If a series | |
| 58 | * of filters were used (as in the second example at | |
| 59 | * <tt>{@link EfficientFilter EfficientFilter}</tt>, | |
| 60 | * then they are all returned, collated together. | |
| 61 | * @return the name of the filter | |
| 62 | */ | |
| 63 | public String getName() { | |
| 64 | 0 | return name; |
| 65 | } | |
| 66 | ||
| 67 | /** | |
| 68 | * Returns the GraphAssemblyRecord, if it exists, of the original | |
| 69 | * graph. If the original graph was generated by a different filter | |
| 70 | * (as in the first example at | |
| 71 | * <tt>{@link EfficientFilter EfficientFilter}</tt>, | |
| 72 | * then there is a "previous" graph--and thus a previous <tt>GraphAssemblyRecord</tt>. | |
| 73 | */ | |
| 74 | public GraphAssemblyRecord getPreviousAssemblyRecord() { | |
| 75 | 0 | GraphAssemblyRecord gar = (GraphAssemblyRecord) originalGraph.getUserDatum( FILTER_GRAPH_KEY ); |
| 76 | 0 | return gar; |
| 77 | } | |
| 78 | ||
| 79 | ||
| 80 | /** | |
| 81 | * Returns the collated name of the sequence of filters. Names are | |
| 82 | * returned in reverse order, separated by ":::". | |
| 83 | * If the original graph was generated by a different filter (as in the | |
| 84 | * first example at | |
| 85 | * <tt>{@link EfficientFilter EfficientFilter}</tt>, | |
| 86 | * then there is a "previous" graph--and thus a previous <tt>GraphAssemblyRecord</tt>. | |
| 87 | * This follows the chain back and returns the collated set of names. | |
| 88 | */ | |
| 89 | public String getNameExtended() { | |
| 90 | 0 | if (getPreviousAssemblyRecord() != null) { |
| 91 | 0 | return (name + ":::" + getPreviousAssemblyRecord().getNameExtended() ); |
| 92 | } else { | |
| 93 | 0 | return name; |
| 94 | } | |
| 95 | } | |
| 96 | ||
| 97 | /** | |
| 98 | * Returns the first original graph | |
| 99 | * If the original graph was generated by a different filter (as in the | |
| 100 | * first example at | |
| 101 | * <tt>{@link EfficientFilter EfficientFilter}</tt>, | |
| 102 | * then there is a "previous" graph--and thus a previous <tt>GraphAssemblyRecord</tt>. | |
| 103 | * This follows the chain back and returns the first Graph. | |
| 104 | */ | |
| 105 | public Graph getOriginalExtended() { | |
| 106 | 0 | if (getPreviousAssemblyRecord() != null) { |
| 107 | 0 | return (getPreviousAssemblyRecord().getOriginalExtended() ); |
| 108 | } else { | |
| 109 | 0 | return originalGraph; |
| 110 | } | |
| 111 | } | |
| 112 | ||
| 113 | /** | |
| 114 | * Returns the <tt>GraphAssemblyRecord</tt> for a particular graph. Expects the | |
| 115 | * data to be stored in the user data. | |
| 116 | * @param g A <tt>Graph</tt> that may be a filtered version of some other graph. | |
| 117 | * @return The <tt>GraphAssemblyRecord</tt> associated with the graph, or | |
| 118 | * <tt>null</tt>, if there isn't one. | |
| 119 | * | |
| 120 | * @see #FILTER_GRAPH_KEY | |
| 121 | * @see Graph#getUserDatum | |
| 122 | */ | |
| 123 | public static GraphAssemblyRecord getAssemblyRecord( Graph g) { | |
| 124 | 4 | GraphAssemblyRecord gar = (GraphAssemblyRecord) g.getUserDatum( FILTER_GRAPH_KEY ); |
| 125 | 4 | return gar; |
| 126 | } | |
| 127 | ||
| 128 | } |
|
this report was generated by version 1.0.5 of jcoverage. |
copyright © 2003, jcoverage ltd. all rights reserved. |