icingaweb2/modules/monitoring/library/Monitoring/Timeline/TimeEntry.php

232 lines
4.4 KiB
PHP

<?php
// {{{ICINGA_LICENSE_HEADER}}}
// {{{ICINGA_LICENSE_HEADER}}}
namespace Icinga\Module\Monitoring\Timeline;
use DateTime;
use Icinga\Web\Url;
use Icinga\Exception\ProgrammingError;
/**
* An event group that is part of a timeline
*/
class TimeEntry
{
/**
* The name of this group
*
* @var string
*/
protected $name;
/**
* The amount of events that are part of this group
*
* @var int
*/
protected $value;
/**
* The date and time of this group
*
* @var DateTime
*/
protected $dateTime;
/**
* The url to this group's detail view
*
* @var Url
*/
protected $detailUrl;
/**
* The weight of this group
*
* @var float
*/
protected $weight = 1.0;
/**
* The label of this group
*
* @var string
*/
protected $label;
/**
* The color of this group
*
* @var string
*/
protected $color;
/**
* Return a new TimeEntry object with the given attributes being set
*
* @param array $attributes The attributes to set
* @return TimeEntry The resulting TimeEntry object
* @throws ProgrammingError If one of the given attributes cannot be set
*/
public static function fromArray(array $attributes)
{
$entry = new TimeEntry();
foreach ($attributes as $name => $value) {
$methodName = 'set' . ucfirst($name);
if (method_exists($entry, $methodName)) {
$entry->{$methodName}($value);
} else {
throw new ProgrammingError(
'Method "%s" does not exist on object of type "%s"',
$methodName,
__CLASS__
);
}
}
return $entry;
}
/**
* Set this group's name
*
* @param string $name The name to set
*/
public function setName($name)
{
$this->name = $name;
}
/**
* Return the name of this group
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set this group's amount of events
*
* @param int $value The value to set
*/
public function setValue($value)
{
$this->value = intval($value);
}
/**
* Return the amount of events in this group
*
* @return int
*/
public function getValue()
{
return $this->value;
}
/**
* Set this group's date and time
*
* @param DateTime $dateTime The date and time to set
*/
public function setDateTime(DateTime $dateTime)
{
$this->dateTime = $dateTime;
}
/**
* Return the date and time of this group
*
* @return DateTime
*/
public function getDateTime()
{
return $this->dateTime;
}
/**
* Set the url to this group's detail view
*
* @param Url $detailUrl The url to set
*/
public function setDetailUrl(Url $detailUrl)
{
$this->detailUrl = $detailUrl;
}
/**
* Return the url to this group's detail view
*
* @return Url
*/
public function getDetailUrl()
{
return $this->detailUrl;
}
/**
* Set this group's weight
*
* @param float $weight The weight for this group
*/
public function setWeight($weight)
{
$this->weight = floatval($weight);
}
/**
* Return the weight of this group
*
* @return float
*/
public function getWeight()
{
return $this->weight;
}
/**
* Set this group's label
*
* @param string $label The label to set
*/
public function setLabel($label)
{
$this->label = $label;
}
/**
* Return the label of this group
*
* @return string
*/
public function getLabel()
{
return $this->label;
}
/**
* Set this group's color
*
* @param string $color The color to set. (The css name or hex-code)
*/
public function setColor($color)
{
$this->color = $color;
}
/**
* Get the color of this group
*
* @return string
*/
public function getColor()
{
return $this->color;
}
}