blob: 5202ccc74c1fa5aaf0e4b8ebc0e08dddae62539c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.util;
import java.util.List;
/**
* Captures information, including timing, about an event that occurred during processing. Events
* may have sub-events that further break down the steps involved in a complex process.
*
*
*/
public interface ProcessTraceEvent extends java.io.Serializable {
/**
* Retrieves the name of the component that is performing this event.
*
* @return the component name
*/
public String getComponentName();
/**
* Gets the type of event. Standard values for this property are defined as constants on this
* interface, but any String is allowed.
*
* @return the event type
*/
public String getType();
/**
* Retrieves the description of this event.
*
* @return the event Description
*/
public String getDescription();
/**
* Gets the duration of this event.
*
* @return the duration of this event, in milliseconds.
*/
public int getDuration();
/**
* Retrieves the result message of this event.
*
* @return the event's result message
*/
public String getResultMessage();
/**
* Gets the sub-events of this event.
*
* @return a List containing other <code>ProcessTraceEvent</code> objects
*/
public List getSubEvents();
/**
* Gets the duration of this event, minus the sum of the durations of its direct sub-events.
*
* @return the duration of this event in milliseconds, excluding the time spent in its sub-events
*/
public int getDurationExcludingSubEvents();
/**
* Generates a user-readable representation of this event and its sub-events.
*
* @return the String representation of this event and its sub-events
*/
public String toString();
/**
* Generates a user-readable representation of this event and its subevents, using the given
* indentation level and writing to a StringBuffer. This is useful for writing nested events.
*
* @param aBuf
* string buffer to add to
* @param aIndentLevel
* indentation level
*/
public void toString(StringBuffer aBuf, int aIndentLevel);
/**
* Generates a user-readable representation of this event and its subevents, using the given
* indentation level and writing to a StringBuffer. Also, if the total time for all events is
* known, this method will print the percentage of time used by this event and its subevents.
*
* @param aBuf
* string buffer to add to
* @param aIndentLevel
* indentation level
* @param aTotalTime
* total time, used to calculate percentags. If not known, pass 0.
*/
public void toString(StringBuffer aBuf, int aIndentLevel, int aTotalTime);
/**
* Constant for the ANALYSIS_ENGINE event type. This represents the time spent in the Analysis
* Engine, including the annotator's analysis and framework overhead.
*/
public static final String ANALYSIS_ENGINE = "ANALYSIS_ENGINE";
/**
* Constant for the ANALYSIS event type. This represents the actual analysis performed by an
* annotator.
*/
public static final String ANALYSIS = "ANALYSIS";
/**
* Constant for the SERVICE event type. This represents the total time spent in execution of a
* remote service (not including communication and marshalling/unmarshalling overhead).
*/
public static final String SERVICE = "SERVICE";
/**
* Constant for the SERVICE_CALL event type. This represents the total time spent making a call on
* a remote service, including marshalling and unmarshalling.
*/
public static final String SERVICE_CALL = "SERVICE_CALL";
}