web/lib/Zend/Cloud/Infrastructure/Image.php
changeset 808 6b6c2214f778
child 1230 68c69c656a2c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/Zend/Cloud/Infrastructure/Image.php	Thu Mar 21 19:52:38 2013 +0100
@@ -0,0 +1,176 @@
+<?php
+/**
+ * @category   Zend
+ * @package    Zend_Cloud
+ * @subpackage Infrastructure
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+/**
+ * Instance of an infrastructure service
+ * 
+ * @package    Zend_Cloud
+ * @subpackage Infrastructure
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Cloud_Infrastructure_Image 
+{
+    const IMAGE_ID           = 'imageId';
+    const IMAGE_OWNERID      = 'ownerId';
+    const IMAGE_NAME         = 'name';
+    const IMAGE_DESCRIPTION  = 'description';
+    const IMAGE_PLATFORM     = 'platform';
+    const IMAGE_ARCHITECTURE = 'architecture';
+    const ARCH_32BIT         = 'i386';
+    const ARCH_64BIT         = 'x86_64';
+    const IMAGE_WINDOWS      = 'windows';
+    const IMAGE_LINUX        = 'linux';
+
+    /**
+     * Image's attributes
+     * 
+     * @var array
+     */
+    protected $attributes = array();
+
+    /**
+     * The Image adapter (if exists)
+     * 
+     * @var object
+     */
+    protected $adapter;
+
+    /**
+     * Required attributes
+     * 
+     * @var array
+     */
+    protected $attributeRequired = array(
+        self::IMAGE_ID, 
+        self::IMAGE_DESCRIPTION, 
+        self::IMAGE_PLATFORM, 
+        self::IMAGE_ARCHITECTURE,
+    );
+
+    /**
+     * Constructor
+     * 
+     * @param array $data
+     * @param object $adapter 
+     */
+    public function __construct($data, $adapter = null) 
+    {
+        if (is_object($data)) {
+            if (method_exists($data, 'toArray')) {
+                $data= $data->toArray();
+            } elseif ($data instanceof Traversable) {
+                $data = iterator_to_array($data);
+            }
+        }
+        
+        if (empty($data) || !is_array($data)) {
+            require_once 'Zend/Cloud/Infrastructure/Exception.php';
+            throw new Zend_Cloud_Infrastructure_Exception('You must pass an array of parameters');
+        }
+
+        foreach ($this->attributeRequired as $key) {
+            if (empty($data[$key])) {
+                require_once 'Zend/Cloud/Infrastructure/Exception.php';
+                throw new Zend_Cloud_Infrastructure_Exception(sprintf(
+                    'The param "%s" is a required parameter for class %s',
+                    $key,
+                    __CLASS__
+                ));
+            }
+        }
+
+        $this->attributes = $data;
+        $this->adapter    = $adapter;
+    }
+
+    /**
+     * Get Attribute with a specific key
+     *
+     * @param array $data
+     * @return misc|boolean
+     */
+    public function getAttribute($key) 
+    {
+        if (!empty($this->attributes[$key])) {
+            return $this->attributes[$key];
+        }
+        return false;
+    }
+
+    /**
+     * Get all the attributes
+     * 
+     * @return array
+     */
+    public function getAttributes()
+    {
+        return $this->attributes;
+    }
+
+    /**
+     * Get the image ID
+     * 
+     * @return string
+     */
+    public function getId()
+    {
+        return $this->attributes[self::IMAGE_ID];
+    }
+
+    /**
+     * Get the Owner ID
+     * 
+     * @return string
+     */
+    public function getOwnerId()
+    {
+        return $this->attributes[self::IMAGE_OWNERID];
+    }
+
+    /**
+     * Get the name
+     * 
+     * @return string 
+     */
+    public function getName()
+    {
+        return $this->attributes[self::IMAGE_NAME];
+    }
+
+    /**
+     * Get the description
+     * 
+     * @return string 
+     */
+    public function getDescription()
+    {
+        return $this->attributes[self::IMAGE_DESCRIPTION];
+    }
+
+    /**
+     * Get the platform
+     * 
+     * @return string 
+     */
+    public function getPlatform()
+    {
+        return $this->attributes[self::IMAGE_PLATFORM];
+    }
+
+    /**
+     * Get the architecture
+     * 
+     * @return string 
+     */
+    public function getArchitecture()
+    {
+        return $this->attributes[self::IMAGE_ARCHITECTURE];
+    }
+}