source: trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/ui/commands/CMDshowMarkovModel.java @ 726

Last change on this file since 726 was 726, checked in by sherbold, 12 years ago
  • added manuals for the commands calcCoverage, calcEntropy, deleteObject, flattenModel, generateFixedLengthSequences, generateGreedy, generateHybrid, generateReplayfile, listSymbols, load, loadObject, modelSize, printDot, printTrieDot, save, saveObject, sequenceStatistics, showMarkovModel, showTime, showTrie, startFileListener, stopFileListener, trainDFA, trainPPM, and updateModel
File size: 3.4 KB
Line 
1package de.ugoe.cs.quest.ui.commands;
2
3import java.awt.Dimension;
4import java.awt.Rectangle;
5import java.awt.Shape;
6import java.security.InvalidParameterException;
7import java.util.List;
8
9import javax.swing.JFrame;
10
11import org.apache.commons.collections15.Transformer;
12
13import de.ugoe.cs.quest.CommandHelpers;
14import de.ugoe.cs.quest.usageprofiles.FirstOrderMarkovModel;
15import de.ugoe.cs.quest.usageprofiles.FirstOrderMarkovModel.MarkovEdge;
16import de.ugoe.cs.util.console.Command;
17import de.ugoe.cs.util.console.GlobalDataContainer;
18import edu.uci.ics.jung.algorithms.layout.ISOMLayout;
19import edu.uci.ics.jung.algorithms.layout.Layout;
20import edu.uci.ics.jung.graph.Graph;
21import edu.uci.ics.jung.visualization.BasicVisualizationServer;
22import edu.uci.ics.jung.visualization.decorators.ToStringLabeller;
23import edu.uci.ics.jung.visualization.renderers.Renderer.VertexLabel.Position;
24
25/**
26 * <p>
27 * Command that visualizes first-order Markov models.
28 * </p>
29 *
30 * @author Steffen Herbold
31 * @version 1.0
32 */
33public class CMDshowMarkovModel implements Command {
34
35        /*
36         * (non-Javadoc)
37         *
38         * @see de.ugoe.cs.util.console.Command#help()
39         */
40        @Override
41        public String help() {
42                return "showMarkovModel <modelname> {<showNodeNames>}";
43        }
44
45        /*
46         * (non-Javadoc)
47         *
48         * @see de.ugoe.cs.util.console.Command#run(java.util.List)
49         */
50        @Override
51        public void run(List<Object> parameters) {
52                String modelname;
53                boolean showNodeNames = false;
54                try {
55                        modelname = (String) parameters.get(0);
56                        if (parameters.size() == 2) {
57                                showNodeNames = Boolean
58                                                .parseBoolean((String) parameters.get(1));
59                        }
60                } catch (Exception e) {
61                        throw new InvalidParameterException();
62                }
63
64                Object dataObject = GlobalDataContainer.getInstance()
65                                .getData(modelname);
66                if (dataObject == null) {
67                        CommandHelpers.objectNotFoundMessage(modelname);
68                        return;
69                }
70                if (!(dataObject instanceof FirstOrderMarkovModel)) {
71                        CommandHelpers.objectNotType(modelname, "FirstOrderMarkovModel");
72                        return;
73                }
74                FirstOrderMarkovModel mm = (FirstOrderMarkovModel) dataObject;
75
76                Graph<String, MarkovEdge> graph = mm.getGraph();
77                Layout<String, MarkovEdge> layout = new ISOMLayout<String, MarkovEdge>(
78                                graph);
79                layout.setSize(new Dimension(1000, 800)); // sets the initial size
80                                                                                                        // of the space
81                // The BasicVisualizationServer<V,E> is parameterized by the edge
82                // types
83                BasicVisualizationServer<String, MarkovEdge> vv = new BasicVisualizationServer<String, MarkovEdge>(
84                                layout);
85                vv.setPreferredSize(new Dimension(1100, 850)); // Sets the viewing
86                                                                                                                // area size
87
88                if (showNodeNames) {
89                        final Rectangle rect = new Rectangle(240, 20);
90
91                        Transformer<String, Shape> vertexShapeTransformer = new Transformer<String, Shape>() {
92                                public Shape transform(String s) {
93                                        return rect;
94                                }
95                        };
96                        vv.getRenderer().getVertexLabelRenderer()
97                                        .setPosition(Position.CNTR);
98                        vv.getRenderContext().setVertexShapeTransformer(
99                                        vertexShapeTransformer);
100                        vv.getRenderContext().setVertexLabelTransformer(
101                                        new ToStringLabeller<String>());
102                }
103
104                vv.getRenderContext().setEdgeLabelTransformer(
105                                new ToStringLabeller<MarkovEdge>());
106
107                JFrame frame = new JFrame("Markov Model");
108                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
109                frame.getContentPane().add(vv);
110                frame.pack();
111                frame.setVisible(true);
112        }
113}
Note: See TracBrowser for help on using the repository browser.