001: /*
002: * Created on Nov 4, 2003
003: *
004: * To change the template for this generated file go to
005: * Window>Preferences>Java>Code Generation>Code and Comments
006: */
007: package org.hammurapi.inspectors.metrics.callertrace;
008:
009: import java.util.Vector;
010:
011: import org.w3c.dom.Document;
012: import org.w3c.dom.Element;
013:
014: /**
015: * @author mucbj0
016: *
017: * To change the template for this generated type comment go to
018: * Window>Preferences>Java>Code Generation>Code and Comments
019: */
020: public class TraceList extends Vector {
021: private String searchMethodSignature = "<not defined>";
022: private TracedMethod endpoint = null;
023:
024: // private static Logger logger = Logger.getLogger(TraceList.class.getName());
025: /* (non-Javadoc)
026: * @see java.util.Vector#elementAt(int)
027: */
028:
029: public TraceList(Object key) {
030: super ();
031: searchMethodSignature = key.toString();
032: }
033:
034: public Trace traceElementAt(int index) {
035: return (Trace) super .elementAt(index);
036: }
037:
038: public void setEndpointMethod(MethodWrapper aMethods, String key) {
039: TracedMethod tm = new TracedMethod(aMethods);
040:
041: endpoint = tm;
042: endpoint.setSearchKey(key);
043:
044: }
045:
046: public Trace retrieveTraceFor(Trace searchTrace) {
047:
048: //-- default
049: Trace returnTrace = null;
050: for (int i = 0; i < this .size(); i++) {
051:
052: Trace t = (Trace) this .elementAt(i);
053: if (t.equals(searchTrace)) {
054: /// return t;
055: } else if (t.sameNameAndSizeButNotEqual(searchTrace)) {
056: return t;
057: }
058: }
059: return returnTrace;
060: }
061:
062: public Trace cloneTraceFor(Trace searchTrace) {
063:
064: return (Trace) searchTrace.clone();
065:
066: }
067:
068: public Element toDom(Document document) {
069:
070: Element ret = document.createElement("TraceList");
071: ret.setAttribute("size", String.valueOf(this .size()));
072: String str = "Not Given";
073: if (endpoint != null) {
074: str = endpoint.getSearchKey();
075: }
076: ;
077: ret.setAttribute("methodName", str);
078:
079: for (int i = 0; i < this .size(); i++) {
080: Element trc = document.createElement("Trace");
081: trc.setAttribute("id", String.valueOf((i + 1)));
082: ret.appendChild(trc);
083: Trace t = (Trace) this .traceElementAt(i);
084: for (int j = t.size() - 1; j > -1; j--) {
085: TracedMethod tm = t.traceElementAt(j);
086: trc.appendChild(tm.toDom(document,
087: (((t.size() - 1) - j))));
088: }
089: }
090: return ret;
091: }
092:
093: public String toXml() {
094: StringBuffer sb = new StringBuffer();
095: String str = "Not Given";
096: if (endpoint != null) {
097: str = endpoint.getSearchKey();
098: }
099: ;
100: sb.append("<TraceList size=\"" + this .size()
101: + "\" methodName=\"" + str + "\">\n");
102: //!! job unresolved NullPointer
103: // sb.append( this.endpoint.toXml(0) );
104: for (int i = 0; i < this .size(); i++) {
105: sb.append("<Trace id=\"" + (i + 1) + "\">");
106: Trace t = (Trace) this .traceElementAt(i);
107:
108: for (int j = t.size() - 1; j > -1; j--) {
109: // !! index im XML stimmt nicht
110: TracedMethod tm = t.traceElementAt(j);
111: sb.append(tm.toXml((((t.size() - 1) - j))));
112: }
113: sb.append("</Trace>\n");
114: }
115: sb.append("</TraceList>\n");
116: return sb.toString();
117: }
118:
119: }
|