/*******************************************************************************
* Copyright (c) 2009, 2014 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Francois Chouinard - Initial API and implementation
* Francois Chouinard - Updated as per TMF Event Model 1.0
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.event;
import java.util.Collection;
import java.util.Collections;
import org.eclipse.jdt.annotation.NonNull;
/**
* A basic implementation of ITmfEventType.
*
* @version 1.0
* @author Francois Chouinard
*
* @see ITmfEvent
* @see ITmfEventField
*/
public class TmfEventType implements ITmfEventType {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
private final @NonNull String fTypeId;
private final ITmfEventField fRootField;
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
/**
* Default constructor
*/
public TmfEventType() {
this(DEFAULT_TYPE_ID, null);
}
/**
* Full constructor
*
* @param typeId the type name
* @param root the root field
*/
public TmfEventType(final @NonNull String typeId, final ITmfEventField root) {
fTypeId = typeId;
fRootField = root;
}
/**
* Copy constructor
*
* @param type the other type
*/
public TmfEventType(@NonNull ITmfEventType type) {
fTypeId = type.getName();
fRootField = type.getRootField();
}
// ------------------------------------------------------------------------
// ITmfEventType
// ------------------------------------------------------------------------
@Override
public String getName() {
return fTypeId;
}
@Override
public ITmfEventField getRootField() {
return fRootField;
}
@Override
public Collection<String> getFieldNames() {
return (fRootField != null) ? fRootField.getFieldNames() : Collections.EMPTY_SET;
}
// ------------------------------------------------------------------------
// Object
// ------------------------------------------------------------------------
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + fTypeId.hashCode();
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof TmfEventType)) {
return false;
}
final TmfEventType other = (TmfEventType) obj;
if (!fTypeId.equals(other.fTypeId)) {
return false;
}
return true;
}
@Override
@SuppressWarnings("nls")
public String toString() {
return "TmfEventType [fTypeId=" + fTypeId + "]";
}
}