/******************************************************************************* * Copyright (c) 2009, 2013 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 fr.inria.linuxtools.tmf.core.event; import java.util.Collection; import java.util.Collections; /** * A basic implementation of ITmfEventType. * * @version 1.0 * @author Francois Chouinard * * @see ITmfEvent * @see ITmfEventField */ public class TmfEventType implements ITmfEventType { // ------------------------------------------------------------------------ // Attributes // ------------------------------------------------------------------------ private final String fContext; private final String fTypeId; private final ITmfEventField fRootField; // ------------------------------------------------------------------------ // Constructors // ------------------------------------------------------------------------ /** * Default constructor */ public TmfEventType() { this(DEFAULT_CONTEXT_ID, DEFAULT_TYPE_ID, null); } /** * Full constructor * * @param context the type context * @param typeId the type name * @param root the root field */ public TmfEventType(final String context, final String typeId, final ITmfEventField root) { if (context == null || typeId == null) { throw new IllegalArgumentException(); } fContext = context; fTypeId = typeId; fRootField = root; // Register to the event type manager TmfEventTypeManager.getInstance().add(context, this); } /** * Copy constructor * * @param type the other type */ public TmfEventType(final ITmfEventType type) { if (type == null) { throw new IllegalArgumentException(); } fContext = type.getContext(); fTypeId = type.getName(); fRootField = type.getRootField(); } // ------------------------------------------------------------------------ // ITmfEventType // ------------------------------------------------------------------------ @Override public String getContext() { return fContext; } @Override public String getName() { return fTypeId; } @Override public ITmfEventField getRootField() { return fRootField; } /** * @since 3.0 */ @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 + fContext.hashCode(); 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 (!fContext.equals(other.fContext)) { return false; } if (!fTypeId.equals(other.fTypeId)) { return false; } return true; } @Override @SuppressWarnings("nls") public String toString() { return "TmfEventType [fContext=" + fContext + ", fTypeId=" + fTypeId + "]"; } }