RequestOutputPlotAxesNodeClass.php 3.26 KB
<?php

require_once("RequestOutputPlotTimeAxisNodeClass.php");
require_once("RequestOutputPlotEpochAxisNodeClass.php");
require_once("RequestOutputPlotDigitalAxisNodeClass.php");
require_once("RequestOutputPlotColorAxisNodeClass.php");

define ("REQUESTOUTPUTPLOTAXES_NAME", "axes");
define ("REQUESTOUTPUTPLOTAXES_XAXIS", "xAxis");
define ("REQUESTOUTPUTPLOTAXES_YAXIS", "yAxis");
define ("REQUESTOUTPUTPLOTAXES_ZAXIS", "zAxis");

abstract class RequestOutputPlotAxisTypeEnum
{
	const XAXIS = REQUESTOUTPUTPLOTAXES_XAXIS;
	const YAXIS = REQUESTOUTPUTPLOTAXES_YAXIS;
	const ZAXIS = REQUESTOUTPUTPLOTAXES_ZAXIS;
}

/**
 * @class RequestOutputPlotAxesNodeClass
 * @brief Definition of a axes element for a plot of a plot request
 * @details
 */
class RequestOutputPlotAxesNodeClass extends NodeClass
{
	public function __construct($noXAxis, $noYAxis, $noZAxis)
	{
		parent::__construct(REQUESTOUTPUTPLOTAXES_NAME);
		//create skeleton
		if (!$noXAxis)
			$node = $this->getChildInstanceByName(REQUESTOUTPUTPLOTAXES_XAXIS, true);
		if (!$noYAxis)
			$node = $this->getChildInstanceByName(REQUESTOUTPUTPLOTAXES_YAXIS, true);
		if (!$noZAxis)
			$node = $this->getChildInstanceByName(REQUESTOUTPUTPLOTAXES_ZAXIS, true);
	}

	public function addDigitalAxis($axisType,$id)
	{
		if (($axisType != RequestOutputPlotAxisTypeEnum::XAXIS) && ($axisType != RequestOutputPlotAxisTypeEnum::YAXIS))
			return NULL;

		$axisNode = $this->getChildInstanceByName($axisType);
		//add digital axis
		$digitalAxisNode = new RequestOutputPlotDigitalAxisNodeClass();
		$digitalAxisNode->setId($id);
		$axisNode->addChild($digitalAxisNode);
		return $digitalAxisNode;
	}

	public function getDigitalAxis($axisType,$id)
	{
		if (($axisType != RequestOutputPlotAxisTypeEnum::XAXIS) && ($axisType != RequestOutputPlotAxisTypeEnum::YAXIS))
			return NULL;
			
		$axisNode = $this->getChildInstanceByName($axisType);
		$digitalAxisNodes = $axisNode->getChildrenByName(REQUESTOUTPUTPLOTDIGITALAXIS_NAME);
		foreach ($digitalAxisNodes as $digitalAxisNode)
		if ($digitalAxisNode->getId() == $id)
			return $digitalAxisNode;

		return NULL;
	}

	public function getTimeAxis()
	{
		$axisNode = $this->getChildInstanceByName(RequestOutputPlotAxisTypeEnum::XAXIS);
		$timeAxisNode = $axisNode->getFirstChildByName(REQUESTOUTPUTPLOTTIMEAXIS_NAME);
		if (!isset($timeAxisNode))
		{
			$timeAxisNode = new RequestOutputPlotTimeAxisNodeClass();
			$axisNode->addChild($timeAxisNode);
		}
		
		return $timeAxisNode;
	}
	
	public function getEpochAxis()
	{
		$axisNode = $this->getChildInstanceByName(RequestOutputPlotAxisTypeEnum::XAXIS);
		$epochAxisNode = $axisNode->getFirstChildByName(REQUESTOUTPUTPLOTEPOCHAXIS_NAME);
		if (!isset($epochAxisNode))
		{
			$epochAxisNode = new RequestOutputPlotEpochAxisNodeClass();
			$axisNode->addChild($epochAxisNode);
		}
	
		return $epochAxisNode;
	}

	public function getColorAxis()
	{
		$axisNode = $this->getChildInstanceByName(RequestOutputPlotAxisTypeEnum::ZAXIS);
		$colorAxisNode = $axisNode->getFirstChildByName(REQUESTOUTPUTPLOTCOLORAXIS_NAME);
		if (!isset($colorAxisNode))
		{
			$colorAxisNode = new RequestOutputPlotColorAxisNodeClass();
			$axisNode->addChild($colorAxisNode);
		}
		
		return $colorAxisNode;
	}
}

?>