All Downloads are FREE. Search and download functionalities are using the official Maven repository.

kieker.tools.trace.analysis.systemModel.Execution Maven / Gradle / Ivy

There is a newer version: 2.0.2
Show newest version
/***************************************************************************
 * Copyright 2022 Kieker Project (http://kieker-monitoring.net)
 *
 * Licensed 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 kieker.tools.trace.analysis.systemModel;

/**
 * This class represents an execution within the trace analysis tool.
 *
 * Note that no assumptions about the {@link java.util.concurrent.TimeUnit} used
 * for the timestamps are made
 * ({@link kieker.tools.trace.analysis.systemModel.Execution#getTin()} and
 * {@link kieker.tools.trace.analysis.systemModel.Execution#getTout()}).
 *
 * @author Andre van Hoorn
 *
 * @since 1.1
 * @deprecated 1.15 moved to kieker-model
 */
@Deprecated
public class Execution {

	/** This constant marks that an execution has no session ID. */
	public static final String NO_SESSION_ID = "";

	private final Operation operation;
	private final AllocationComponent allocationComponent;
	private final long traceId;
	private final String sessionId;
	private final int eoi;
	private final int ess;
	private final long tin;
	private final long tout;

	private final boolean assumed;

	/**
	 * Creates a new Execution instance.
	 *
	 * @param op
	 *            The operation of the execution.
	 * @param allocationComponent
	 *            The allocation component.
	 * @param traceId
	 *            The ID of the trace.
	 * @param sessionId
	 *            The ID of the session.
	 * @param eoi
	 *            The execution order index.
	 * @param ess
	 *            The execution stack size.
	 * @param tin
	 *            The timestamp the execution started.
	 * @param tout
	 *            The timestamp the execution finished.
	 * @param assumed
	 *            Determines whether the execution is assumed or
	 *            not.
	 */
	public Execution(final Operation op, final AllocationComponent allocationComponent, final long traceId,
			final String sessionId, final int eoi, final int ess, final long tin, final long tout,
			final boolean assumed) {
		if (op == null) {
			throw new NullPointerException("argument op must not be null");
		}
		if (allocationComponent == null) {
			throw new NullPointerException("argument allocationComponent must not be null");
		}
		if (sessionId == null) {
			throw new NullPointerException("argument sessionId must not be null");
		}

		this.operation = op;
		this.allocationComponent = allocationComponent;
		this.traceId = traceId;
		this.sessionId = sessionId;
		this.eoi = eoi;
		this.ess = ess;
		this.tin = tin;
		this.tout = tout;
		this.assumed = assumed;
	}

	/**
	 * Creates a new Execution instance. The sessionId is set to a default value.
	 *
	 * @param op
	 *            The operation of the execution.
	 * @param allocationComponent
	 *            The allocation component.
	 * @param traceId
	 *            The ID of the trace.
	 * @param eoi
	 *            The execution order index.
	 * @param ess
	 *            The execution stack size.
	 * @param tin
	 *            The timestamp the execution started.
	 * @param tout
	 *            The timestamp the execution finished.
	 * @param assumed
	 *            Determines whether the execution is assumed or
	 *            not.
	 */
	public Execution(final Operation op, final AllocationComponent allocationComponent, final long traceId,
			final int eoi, final int ess, final long tin, final long tout, final boolean assumed) {
		this(op, allocationComponent, traceId, Execution.NO_SESSION_ID, eoi, ess, tin, tout, assumed);
	}

	public final AllocationComponent getAllocationComponent() {
		return this.allocationComponent;
	}

	public final int getEoi() {
		return this.eoi;
	}

	public final int getEss() {
		return this.ess;
	}

	public final Operation getOperation() {
		return this.operation;
	}

	/**
	 * Returns the sessionId and a default sessionId if no sessionId assigned. The
	 * return value won't be null.
	 *
	 * @return the sessionId.
	 */
	public final String getSessionId() {
		return this.sessionId;
	}

	public final long getTin() {
		return this.tin;
	}

	public final long getTout() {
		return this.tout;
	}

	public final long getTraceId() {
		return this.traceId;
	}

	public boolean isAssumed() {
		return this.assumed;
	}

	/**
	 * Compares this {@link Execution} with the given object with respect to type
	 * and fields. All fields but the {@link #isAssumed()} are considered for
	 * comparison.
	 *
	 * @param obj
	 *            The object to be compared with this instance.
	 *
	 * @return true if and only if the current object and the given object have
	 *         equal values.
	 */
	@Override
	public boolean equals(final Object obj) {
		if (!(obj instanceof Execution)) {
			return false;
		}
		if (this == obj) {
			return true;
		}
		final Execution other = (Execution) obj;
		return this.allocationComponent.equals(other.allocationComponent) && this.operation.equals(other.operation)
				&& this.sessionId.equals(other.sessionId) && (this.traceId == other.traceId) && (this.eoi == other.eoi)
				&& (this.ess == other.ess) && (this.tin == other.tin) && (this.tout == other.tout)
				&& (this.assumed == other.assumed);
	}

	@Override
	public int hashCode() {
		int hash = 3;
		hash = (43 * hash) + (this.operation != null ? this.operation.hashCode() : 0); // NOCS (inline ?)
		hash = (43 * hash) + (this.allocationComponent != null ? this.allocationComponent.hashCode() : 0); // NOCS
																											// (inline
																											// ?)
		hash = (43 * hash) + (int) (this.traceId ^ (this.traceId >>> 32));
		hash = (43 * hash) + (this.sessionId != null ? this.sessionId.hashCode() : 0); // NOCS (inline ?)
		hash = (43 * hash) + this.eoi;
		hash = (43 * hash) + this.ess;
		hash = (43 * hash) + (int) (this.tin ^ (this.tin >>> 32));
		hash = (43 * hash) + (int) (this.tout ^ (this.tout >>> 32));
		hash = (43 * hash) + (this.assumed ? 5643 : 5648); // NOCS (inline ?)
		return hash;
	}

	@Override
	public String toString() {
		final StringBuilder strBuild = new StringBuilder(128);
		strBuild.append(this.traceId).append('[').append(this.eoi).append(',').append(this.ess).append("] ")
				.append(this.tin).append('-').append(this.tout).append(' ').append(this.allocationComponent.toString())
				.append('.').append(this.operation.getSignature().getName()).append(' ')
				.append((this.sessionId != null) ? this.sessionId : Execution.NO_SESSION_ID); // NOCS

		if (this.assumed) {
			strBuild.append(" (assumed)");
		}

		return strBuild.toString();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy