Merge branch 'master' into lttng_2_0_control_dev
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / control / model / impl / UstProviderInfo.java
1 /**********************************************************************
2 * Copyright (c) 2012 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org.eclipse.linuxtools.lttng.ui.views.control.model.impl;
13
14 import java.util.ArrayList;
15 import java.util.Iterator;
16 import java.util.List;
17
18 import org.eclipse.linuxtools.lttng.ui.views.control.model.IBaseEventInfo;
19 import org.eclipse.linuxtools.lttng.ui.views.control.model.IUstProviderInfo;
20
21 /**
22 * <b><u>UstProviderInfo</u></b>
23 * <p>
24 * Implementation of the Ust Provider interface (IUstProviderInfo) to store UST
25 * provider related data.
26 * </p>
27 */
28 public class UstProviderInfo extends TraceInfo implements IUstProviderInfo {
29
30 // ------------------------------------------------------------------------
31 // Attributes
32 // ------------------------------------------------------------------------
33 /**
34 * The process ID of the UST provider.
35 */
36 private int fPid = 0;
37 /**
38 * List of event information.
39 */
40 private List<IBaseEventInfo> fEvents = new ArrayList<IBaseEventInfo>();
41
42 // ------------------------------------------------------------------------
43 // Constructors
44 // ------------------------------------------------------------------------
45 /**
46 * Constructor
47 * @param name - name of UST provider
48 */
49 public UstProviderInfo(String name) {
50 super(name);
51 }
52
53 /**
54 * Copy constructor
55 * @param other - the instance to copy
56 */
57 public UstProviderInfo(UstProviderInfo other) {
58 super(other);
59 fPid = other.fPid;
60 for (Iterator<IBaseEventInfo> iterator = other.fEvents.iterator(); iterator.hasNext();) {
61 IBaseEventInfo event = iterator.next();
62 if (event instanceof BaseEventInfo) {
63 fEvents.add(new BaseEventInfo((BaseEventInfo)event));
64 } else {
65 fEvents.add(event);
66 }
67 }
68 }
69
70 // ------------------------------------------------------------------------
71 // Accessors
72 // ------------------------------------------------------------------------
73
74 /*
75 * (non-Javadoc)
76 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.IUstProviderInfo#getPid()
77 */
78 @Override
79 public int getPid() {
80 return fPid;
81 }
82
83 /*
84 * (non-Javadoc)
85 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.IUstProviderInfo#setPid(int)
86 */
87 @Override
88 public void setPid(int pid) {
89 fPid = pid;
90 }
91
92 /*
93 * (non-Javadoc)
94 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.IUstProviderInfo#getEvents()
95 */
96 @Override
97 public IBaseEventInfo[] getEvents() {
98 return fEvents.toArray(new IBaseEventInfo[fEvents.size()]);
99 }
100
101 /*
102 * (non-Javadoc)
103 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.IUstProviderInfo#setEvents(java.util.List)
104 */
105 @Override
106 public void setEvents(List<IBaseEventInfo> events) {
107 for (Iterator<IBaseEventInfo> iterator = events.iterator(); iterator.hasNext();) {
108 IBaseEventInfo eventInfo = (IBaseEventInfo) iterator.next();
109 fEvents.add(eventInfo);
110 }
111 }
112
113 /*
114 * (non-Javadoc)
115 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.IUstProviderInfo#addEvent(org.eclipse.linuxtools.lttng.ui.views.control.model.IBaseEventInfo)
116 */
117 @Override
118 public void addEvent(IBaseEventInfo event) {
119 fEvents.add(event);
120 }
121
122 // ------------------------------------------------------------------------
123 // Operations
124 // ------------------------------------------------------------------------
125
126 /*
127 * (non-Javadoc)
128 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.impl.TraceInfo#hashCode()
129 */
130 @Override
131 public int hashCode() {
132 int result = 17;
133 result = 37 * result + super.hashCode();
134 for (Iterator<IBaseEventInfo> iterator = fEvents.iterator(); iterator.hasNext();) {
135 IBaseEventInfo event = (IBaseEventInfo) iterator.next();
136 result = 37 * result + event.hashCode();
137 }
138 return result;
139 }
140
141 /*
142 * (non-Javadoc)
143 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.impl.TraceInfo#equals(java.lang.Object)
144 */
145 @Override
146 public boolean equals(Object other) {
147 if (!(other instanceof UstProviderInfo)) {
148 return false;
149 }
150
151 UstProviderInfo otherUstInfo = (UstProviderInfo) other;
152 if (!super.equals(otherUstInfo)) {
153 return false;
154 }
155
156 if (fEvents.size() != otherUstInfo.fEvents.size()) {
157 return false;
158 }
159 for (int i = 0; i < fEvents.size(); i++) {
160 if (!fEvents.get(i).equals(otherUstInfo.fEvents.get(i))) {
161 return false;
162 }
163 }
164 return true;
165 }
166
167 /*
168 * (non-Javadoc)
169 * @see org.eclipse.linuxtools.lttng.ui.views.control.model.impl.TraceInfo#toString()
170 */
171 @SuppressWarnings("nls")
172 @Override
173 public String toString() {
174 StringBuffer output = new StringBuffer();
175 output.append("[EventInfo(");
176 output.append(super.toString());
177 output.append(",PID=");
178 output.append(fPid);
179 output.append(",Events=");
180 if (fEvents.isEmpty()) {
181 output.append("None");
182 } else {
183 for (Iterator<IBaseEventInfo> iterator = fEvents.iterator(); iterator.hasNext();) {
184 IBaseEventInfo event = (IBaseEventInfo) iterator.next();
185 output.append(event.toString());
186 }
187 }
188 output.append(")]");
189 return output.toString();
190 }
191 }
This page took 0.035442 seconds and 6 git commands to generate.