Fix UnitTests

Split ResolveResult from Resolve.php
Split up Device.php

Signed-off-by: Diederik de Groot <ddegroot@talon.nl>
This commit is contained in:
Diederik de Groot
2020-03-22 14:06:33 +01:00
parent 5064cb3e36
commit 729dccb7f8
20 changed files with 376 additions and 241 deletions

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
class AddonDevice extends Device
{
}
?>

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
class CiscoDevice extends Device
{
}
?>

28
lib/Device/Device.php Normal file
View File

@@ -0,0 +1,28 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
use PROVISION\Device\Type as Type;
use PROVISION\Device\Family as Family;
use PROVISION\Device\Protocol as Protocol;
use PROVISION\Device\Flags as Flags;
abstract class Device
{
private $name;
private $family;
private $prococol;
private $flags;
function __construct($name, $family, $protocol, $flags = null) {
$this->name = $name;
$this->family = $family;
$this->protocol = $protocol;
$this->flags = $flags;
}
function getName()
{
return $this->name;
}
}
?>

130
lib/Device/Factory.php Normal file
View File

@@ -0,0 +1,130 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
use PROVISION\Device\Type as Type;
use PROVISION\Device\Family as Family;
use PROVISION\Device\Protocol as Protocol;
use PROVISION\Device\Flags as Flags;
class DeviceFactory
{
private $models = Array(
Type::CiscoIPCommunicator => Array('name' => "Communicator", 'family' => Family::CiscoJava, 'protocol' => Protocol::SKINNY, 'flags' => Flags::Communicator),
Type::CiscoIPPhone6901 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone6911 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone6921 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone6941 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone6945 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone6961 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone7902 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone7905 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone7906 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone7910 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone7911 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7912 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7920 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7921 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7925 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7926 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7931 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPPhone7935 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => Flags::Conference), // Conference Phone
Type::CiscoIPPhone7936 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => Flags::Conference), // Conference Phone
Type::CiscoIPPhone7937 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => Flags::Conference), // Conference Phone
Type::CiscoIPPhone7940 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7941 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7941GE => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7942 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7945 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7960 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7961 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7961G => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7961GE => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7962 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7965 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7970 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7971 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7975 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone7985 => Array('name' => "", 'family' => Family::CiscoJava, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone8941 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoIPPhone8945 => Array('name' => "", 'family' => Family::Cisco, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA303G => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA502G => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA504G => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA509G => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA512G => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA514G => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA521S => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA521SG => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA525G2 => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::CiscoSPA525G => Array('name' => "", 'family' => Family::Spa, 'protocol' => Protocol::BOTH, 'flags' => null),
Type::NokiaESeries => Array('name' => "", 'family' => Family::ThirdParty, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::NokiaICCclient => Array('name' => "", 'family' => Family::ThirdParty, 'protocol' => Protocol::SKINNY, 'flags' => null),
Type::CiscoIPAddon7914 => Array('name' => "", 'family' => Family::CiscoAddon, 'protocol' => Protocol::BOTH, 'flags' => null), //14-Button Line Expansion Module
Type::CiscoIPAddon7915_1 => Array('name' => "", 'family' => Family::CiscoAddon, 'protocol' => Protocol::BOTH, 'flags' => null), //12-Button Line Expansion Module
Type::CiscoIPAddon7915_2 => Array('name' => "", 'family' => Family::CiscoAddon, 'protocol' => Protocol::BOTH, 'flags' => null), //24-Button Line Expansion Module
Type::CiscoIPAddon7916_1 => Array('name' => "", 'family' => Family::CiscoAddon, 'protocol' => Protocol::BOTH, 'flags' => null), //12-Button Line Expansion Module
Type::CiscoIPAddon7916_2 => Array('name' => "", 'family' => Family::CiscoAddon, 'protocol' => Protocol::BOTH, 'flags' => null), //24-Button Line Expansion Module
);
/**
* Prevent direct object creation
*/
final private function __construct() {
}
/**
* Returns new or existing Singleton instance
* @return Singleton
*/
final public static function getInstance(){
if(null !== static::$_instance){
return static::$_instance;
}
static::$_instance = new static();
return static::$_instance;
}
private function createDeviceByModel($model) {
switch($model['family']) {
case Family::PreCisco:
return new PreCiscoDevice($model['name'], $model['family'], $model['protocol'], $model['flags']);
case Family::Cisco:
return new CiscoDevice($model['name'], $model['family'], $model['protocol'], $model['flags']);
case Family::CiscoJava:
return new JavaDevice($model['name'], $model['family'], $model['protocol'], $model['flags']);
case Family::PreCisco:
return new SpaDevice($model['name'], $model['family'], $model['protocol'], $model['flags']);
case Family::CiscoAddon:
return new AddonDevice($model['name'], $model['family'], $model['protocol'], $model['flags']);
case Family::SpaAddon:
return new SpaAddonDevice($model['name'], $model['family'], $model['protocol'], $model['flags']);
case Family::ThirdParty:
return new ThirdPartyDevice($model['name'], $model['family'], $model['protocol'], $model['flags']);
default:
// return error
return new Device($model['name'], $model['family'], $model['protocol'], $model['flags']);
}
}
public function createFromString($name) {
foreach($this->models as $model) {
if ($model['name'] == $name) {
return $this->createDeviceByModel($model);
}
}
return null;
}
public function createFromModelNo($modelno) {
if (array_key_exists($modelno, $this->models)) {
$model = $models[$modelno];
return $this->createDeviceByModel($model);
}
return null;
}
}
?>

15
lib/Device/Family.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
abstract class Family extends \SplEnum {
const PreCisco = 0;
const Cisco = 1;
const CiscoJava = 2;
const Spa = 3;
const CiscoAddon = 4;
const SpaAddon = 5;
const ThirdParty = 6;
}
?>

10
lib/Device/Flags.php Normal file
View File

@@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
abstract class Flags extends \SplEnum {
const Conference = 1<<0;
const Communicator = 1<<1;
}
?>

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
class JavaDevice extends Device
{
}
?>

11
lib/Device/Protocol.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
abstract class Protocol extends \SplEnum {
const SKINNY = 0;
const SIP = 1;
const BOTH = 2;
}
?>

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
class SelsiusDevice extends Device
{
}
?>

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
class SpaAddonDevice extends Device
{
}
?>

9
lib/Device/SpaDevice.php Normal file
View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
class SpaDevice extends Device
{
}
?>

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
class ThirdPartyDevice extends Device
{
}
?>

66
lib/Device/Type.php Normal file
View File

@@ -0,0 +1,66 @@
<?php
declare(strict_types=1);
namespace PROVISION\Device;
abstract class Type extends \SplEnum
{
const CiscoIPCommunicator = 30016;
const CiscoIPPhone6901 = 547;
const CiscoIPPhone6911 = 548;
const CiscoIPPhone6921 = 495;
const CiscoIPPhone6941 = 496;
const CiscoIPPhone6945 = 564;
const CiscoIPPhone6961 = 497;
const CiscoIPPhone7902 = 30008;
const CiscoIPPhone7905 = 20000;
const CiscoIPPhone7906 = 369;
const CiscoIPPhone7910 = 006;
const CiscoIPPhone7911 = 307;
const CiscoIPPhone7912 = 30007;
const CiscoIPPhone7920 = 30002;
const CiscoIPPhone7921 = 365;
const CiscoIPPhone7925 = 484;
const CiscoIPPhone7926 = 577;
const CiscoIPPhone7931 = 348;
const CiscoIPPhone7935 = 9; // Conference Phone
const CiscoIPPhone7936 = 30019;
const CiscoIPPhone7937 = 431; // Conference Phone
const CiscoIPPhone7940 = 8;
const CiscoIPPhone7941 = 115;
const CiscoIPPhone7941GE = 309;
const CiscoIPPhone7942 = 434;
const CiscoIPPhone7945 = 435;
const CiscoIPPhone7960 = 7;
const CiscoIPPhone7961 = 5;
const CiscoIPPhone7961G = 30018;
const CiscoIPPhone7961GE = 308;
const CiscoIPPhone7962 = 404;
const CiscoIPPhone7965 = 436;
const CiscoIPPhone7970 = 30006;
const CiscoIPPhone7971 = 119;
const CiscoIPPhone7975 = 437;
const CiscoIPPhone7985 = 302;
const CiscoIPPhone8941 = 586;
const CiscoIPPhone8945 = 585;
const CiscoSPA303G = 80011;
const CiscoSPA502G = 80003;
const CiscoSPA504G = 80004;
const CiscoSPA509G = 80007;
const CiscoSPA512G = 80012;
const CiscoSPA514G = 80013;
const CiscoSPA521S = 80000;
const CiscoSPA521SG = 80001;
const CiscoSPA525G2 = 80009;
const CiscoSPA525G = 80005;
const NokiaESeries = 275;
const NokiaICCclient = 376;
const CiscoIPAddon7914 = 124; //14-Button Line Expansion Module
const CiscoIPAddon7915_1 = 227; //12-Button Line Expansion Module
const CiscoIPAddon7915_2 = 228; //24-Button Line Expansion Module
const CiscoIPAddon7916_1 = 229; //12-Button Line Expansion Module
const CiscoIPAddon7916_2 = 230; //24-Button Line Expansion Module
}
?>