blob: c414fc2d75e89654c7f1d5cf4ddcd4f1d203fdd0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* 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:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.messaging.dds.entity;
import org.eclipse.osee.ote.messaging.dds.NotImplementedException;
import org.eclipse.osee.ote.messaging.dds.ReturnCode;
import org.eclipse.osee.ote.messaging.dds.StatusKind;
import org.eclipse.osee.ote.messaging.dds.condition.StatusCondition;
import org.eclipse.osee.ote.messaging.dds.listener.Listener;
/**
* Base class for all <code>Entity</code> objects. Provides common functionality needed for all Entities such as
* listeners, enabled, etc.
*
* @author Robert A. Fisher
* @author David Diepenbrock
*/
public abstract class Entity {
private EntityFactory parentFactory;
private Listener listener;
@SuppressWarnings("unused")
private StatusKind statusMask; // DONT_NEED This has not been implemented, but is called out in the spec
private final StatusCondition statusCondition; //DONT_NEED This has not been implemented, but is called out in the spec
private final StatusKind[] statusChanges; //DONT_NEED This has not been implemented, but is called out in the spec
private boolean enabled;
/**
* Creates a default <code>Entity</code> with enabled set as passed, the listener attached, and a reference to the
* parent creating this.
*
* @param enabled The value to set for enabled. If true, <code>enabled()</code> is run.
* @param listener The listener to be attached to this.
* @param parentFactory The parent which is creating this.
*/
public Entity(boolean enabled, Listener listener, EntityFactory parentFactory) {
super();
this.parentFactory = parentFactory;
this.listener = listener;
// DONT_NEED This has not been implemented, but is called out in the spec
this.statusMask = null;
this.statusCondition = null;
this.statusChanges = null;
// Default enabled to false, if it is passed as true then call enable() to set this as enabled.
this.enabled = false; // This is correct
if (enabled) {
this.enable();
}
}
/**
* Sets the <code>Listener</code> attached to this <code>Entity</code>. If a listener is already set, this will
* replace it.
* <p>
* PARTIAL - The statusMask is not currently being used.
*
* @param listener The listener to attach to this.
* @param statusMask The mask for this listener
* @return {@link ReturnCode#OK}
*/
protected ReturnCode setBaseListener(Listener listener, StatusKind statusMask) {
this.listener = listener;
this.statusMask = statusMask;
return ReturnCode.OK;
}
/**
* Gets the attached listener
*
* @return The <code>Listener</code> attached to this <code>Entity</code>.
*/
protected Listener getBaseListener() {
return listener;
}
/**
* This method is here for future functionality that is described in the DDS specification but has not been
* implemented or used.
*/
public StatusCondition getStatusCondition() {
// DONT_NEED This method has not been implemented, but is called out in the spec
if (true) {
throw new NotImplementedException();
}
return statusCondition;
}
/**
* This method is here for future functionality that is described in the DDS specification but has not been
* implemented or used.
*/
public StatusKind[] getStatusChanges() {
// DONT_NEED This method has not been implemented, but is called out in the spec
if (true) {
throw new NotImplementedException();
}
return statusChanges;
}
/**
* Gets the enabled status.
*
* @return Returns <b>true </b> if this <code>Entity</code> has been enabled, otherwise <b>false </b>.
*/
public boolean isEnabled() {
return enabled;
}
/**
* Enables this entity. This method is idempotent. Note that the creating factory for this entity must be enabled.
*
* @return {@link ReturnCode#OK}if successful, or if this was previously enabled.
* {@link ReturnCode#PRECONDITION_NOT_MET}if the creating factory is not enabled.
*/
public ReturnCode enable() {
// Check pre-conditions
if (parentFactory != null && !parentFactory.isEnabled()) {
return ReturnCode.PRECONDITION_NOT_MET;
}
// If the entity is already enabled, then do nothing and return
if (enabled) {
return ReturnCode.OK;
}
enabled = true;
return ReturnCode.OK;
}
protected void dispose() {
parentFactory = null;
listener = null;
}
}