blob: 317800613d254020977b37395ada2c99e678fc7e [file] [log] [blame]
<?php
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace Apache\Ignite\Data;
use Apache\Ignite\Internal\Utils\ArgumentChecker;
use Apache\Ignite\Exception\ClientException;
/**
* Class representing an item of Ignite enum type.
*
* The item is defined by:
* - type Id (mandatory) - Id of the Ignite enum type.
* - ordinal (optional) - ordinal of the item in the Ignite enum type.
* - name (optional) - name of the item (field name in the Ignite enum type).
* - value (optional) - value of the item.
* Usually, at least one from the optional ordinal, name or value must be specified
* in order to use an instance of this class in Ignite operations.
*
* To distinguish one item from another, the Ignite client analyzes the optional fields in the following order:
* ordinal, name, value.
*/
class EnumItem
{
private $typeId;
private $ordinal;
private $name;
private $value;
/**
* Public constructor.
*
* @param int $typeId Id of the Ignite enum type.
*/
public function __construct(int $typeId)
{
$this->setTypeId($typeId);
$this->ordinal = null;
$this->name = null;
$this->value = null;
}
/**
* Returns Id of the Ignite enum type.
*
* @return int Id of the enum type.
*/
public function getTypeId(): int
{
return $this->typeId;
}
/**
* Updates Id of the Ignite enum type.
*
* @param int $typeId new Id of the Ignite enum type.
*
* @return EnumItem the same instance of EnumItem.
*/
public function setTypeId(int $typeId): EnumItem
{
$this->typeId = $typeId;
return $this;
}
/**
* Returns ordinal of the item in the Ignite enum type
* or null if ordinal is not set.
*
* @return int|null ordinal of the item in the Ignite enum type or null (if ordinal is not set).
*/
public function getOrdinal(): ?int
{
return $this->ordinal;
}
/**
* Sets or updates ordinal of the item in the Ignite enum type.
*
* @param int $ordinal ordinal of the item in the Ignite enum type.
*
* @return EnumItem the same instance of EnumItem.
*/
public function setOrdinal(int $ordinal): EnumItem
{
$this->ordinal = $ordinal;
return $this;
}
/**
* Returns name of the item
* or null if name is not set.
*
* @return string|null name of the item or null (if name is not set).
*/
public function getName(): ?string
{
return $this->name;
}
/**
* Sets or updates name of the item.
*
* @param string $name name of the item.
*
* @return EnumItem the same instance of EnumItem.
*
* @throws ClientException if error.
*/
public function setName(string $name): EnumItem
{
ArgumentChecker::notEmpty($name, 'name');
$this->name = $name;
return $this;
}
/**
* Returns value of the item
* or null if value is not set.
*
* @return int|null value of the item or null (if value is not set).
*/
public function getValue(): ?int
{
return $this->value;
}
/**
* Sets or updates value of the item.
*
* @param int $value value of the item.
*
* @return EnumItem the same instance of EnumItem.
*/
public function setValue(int $value): EnumItem
{
$this->value = $value;
return $this;
}
}