web/Zend/Service/WindowsAzure/Diagnostics/ConfigurationInstance.php
changeset 0 4eba9c11703f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/Zend/Service/WindowsAzure/Diagnostics/ConfigurationInstance.php	Mon Dec 13 18:29:26 2010 +0100
@@ -0,0 +1,220 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_WindowsAzure
+ * @subpackage Diagnostics
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+/**
+ * @see Zend_Service_WindowsAzure_Diagnostics_Exception
+ */
+require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php';
+
+/**
+ * @see Zend_Service_WindowsAzure_Diagnostics_ConfigurationObjectBaseAbstract
+ */
+require_once 'Zend/Service/WindowsAzure/Diagnostics/ConfigurationObjectBaseAbstract.php';
+
+/**
+ * @see Zend_Service_WindowsAzure_Diagnostics_ConfigurationDataSources
+ */
+require_once 'Zend/Service/WindowsAzure/Diagnostics/ConfigurationDataSources.php';
+
+/**
+ * @category   Zend
+ * @package    Zend_Service_WindowsAzure
+ * @subpackage Diagnostics
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ *
+ * @property Zend_Service_WindowsAzure_Diagnostics_ConfigurationDataSources	DataSources	Data sources
+ */
+class Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance
+	extends Zend_Service_WindowsAzure_Diagnostics_ConfigurationObjectBaseAbstract
+{
+	/**
+	 * Constructor
+	 */
+	public function __construct()
+	{
+        $this->_data = array(
+            'datasources'	=> new Zend_Service_WindowsAzure_Diagnostics_ConfigurationDataSources()
+        );
+	}
+
+	/**
+	 * Load configuration XML
+	 * 
+	 * @param string $configurationXml Configuration XML
+	 */
+	public function loadXml($configurationXml)
+	{
+		// Convert to SimpleXMLElement
+		$configurationXml = simplexml_load_string($configurationXml);
+	
+		// Assign general settings
+		$this->DataSources->OverallQuotaInMB = (int)$configurationXml->DataSources->OverallQuotaInMB;
+
+		// Assign Logs settings	
+		$this->DataSources->Logs->BufferQuotaInMB = (int)$configurationXml->DataSources->Logs->BufferQuotaInMB;
+		$this->DataSources->Logs->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->Logs->ScheduledTransferPeriodInMinutes;
+		$this->DataSources->Logs->ScheduledTransferLogLevelFilter = (string)$configurationXml->DataSources->Logs->ScheduledTransferLogLevelFilter;
+
+		// Assign DiagnosticInfrastructureLogs settings
+		$this->DataSources->DiagnosticInfrastructureLogs->BufferQuotaInMB = (int)$configurationXml->DataSources->DiagnosticInfrastructureLogs->BufferQuotaInMB;
+		$this->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferPeriodInMinutes;
+		$this->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferLogLevelFilter = (string)$configurationXml->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferLogLevelFilter;
+
+		// Assign PerformanceCounters settings
+		$this->DataSources->PerformanceCounters->BufferQuotaInMB = (int)$configurationXml->DataSources->PerformanceCounters->BufferQuotaInMB;
+		$this->DataSources->PerformanceCounters->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->PerformanceCounters->ScheduledTransferPeriodInMinutes;
+		if ($configurationXml->DataSources->PerformanceCounters->Subscriptions
+			&& $configurationXml->DataSources->PerformanceCounters->Subscriptions->PerformanceCounterConfiguration) {
+			$subscriptions = $configurationXml->DataSources->PerformanceCounters->Subscriptions;
+			if (count($subscriptions->PerformanceCounterConfiguration) > 1) {
+				$subscriptions = $subscriptions->PerformanceCounterConfiguration;
+			} else {
+				$subscriptions = array($subscriptions->PerformanceCounterConfiguration);
+			}
+			foreach ($subscriptions as $subscription) {
+				$this->DataSources->PerformanceCounters->addSubscription((string)$subscription->CounterSpecifier, (int)$subscription->SampleRateInSeconds);
+			}
+		}
+				
+		// Assign WindowsEventLog settings
+		$this->DataSources->WindowsEventLog->BufferQuotaInMB = (int)$configurationXml->DataSources->WindowsEventLog->BufferQuotaInMB;
+		$this->DataSources->WindowsEventLog->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->WindowsEventLog->ScheduledTransferPeriodInMinutes;
+		$this->DataSources->WindowsEventLog->ScheduledTransferLogLevelFilter = (string)$configurationXml->DataSources->WindowsEventLog->ScheduledTransferLogLevelFilter;
+		if ($configurationXml->DataSources->WindowsEventLog->Subscriptions
+			&& $configurationXml->DataSources->WindowsEventLog->Subscriptions->string) {
+			$subscriptions = $configurationXml->DataSources->WindowsEventLog->Subscriptions;
+			if (count($subscriptions->string) > 1) {
+				$subscriptions = $subscriptions->string;
+			} else {
+				$subscriptions = array($subscriptions->string);
+			}
+			foreach ($subscriptions as $subscription) {
+				$this->DataSources->WindowsEventLog->addSubscription((string)$subscription);
+			}
+		}
+		
+		// Assign Directories settings
+		$this->DataSources->Directories->BufferQuotaInMB = (int)$configurationXml->DataSources->Directories->BufferQuotaInMB;
+		$this->DataSources->Directories->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->Directories->ScheduledTransferPeriodInMinutes;
+		if ($configurationXml->DataSources->Directories->Subscriptions
+			&& $configurationXml->DataSources->Directories->Subscriptions->DirectoryConfiguration) {
+			$subscriptions = $configurationXml->DataSources->WindowsEventLog->Subscriptions;
+			if (count($subscriptions->DirectoryConfiguration) > 1) {
+				$subscriptions = $subscriptions->DirectoryConfiguration;
+			} else {
+				$subscriptions = array($subscriptions->DirectoryConfiguration);
+			}
+			foreach ($subscriptions as $subscription) {
+				$this->DataSources->Directories->addSubscription((string)$subscription->Path, (string)$subscription->Container, (int)$subscription->DirectoryQuotaInMB);
+			}
+		}
+	}
+	
+	/**
+	 * Create configuration XML
+	 * 
+	 * @return string
+	 */
+	public function toXml()
+	{
+		// Return value
+		$returnValue = array();
+		
+		// Build XML
+		$returnValue[] = '<?xml version="1.0"?>';
+		$returnValue[] = '<ConfigRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">';
+		
+		// Add data sources
+		$returnValue[] = '  <DataSources>';
+		
+		$returnValue[] = '    <OverallQuotaInMB>' . $this->DataSources->OverallQuotaInMB . '</OverallQuotaInMB>';
+		
+		$returnValue[] = '    <Logs>';
+		$returnValue[] = '      <BufferQuotaInMB>' . $this->DataSources->Logs->BufferQuotaInMB . '</BufferQuotaInMB>';
+		$returnValue[] = '      <ScheduledTransferPeriodInMinutes>' . $this->DataSources->Logs->ScheduledTransferPeriodInMinutes . '</ScheduledTransferPeriodInMinutes>';
+		$returnValue[] = '      <ScheduledTransferLogLevelFilter>' . $this->DataSources->Logs->ScheduledTransferLogLevelFilter . '</ScheduledTransferLogLevelFilter>';
+		$returnValue[] = '    </Logs>';
+		
+		$returnValue[] = '    <DiagnosticInfrastructureLogs>';
+		$returnValue[] = '      <BufferQuotaInMB>' . $this->DataSources->DiagnosticInfrastructureLogs->BufferQuotaInMB . '</BufferQuotaInMB>';
+		$returnValue[] = '      <ScheduledTransferPeriodInMinutes>' . $this->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferPeriodInMinutes . '</ScheduledTransferPeriodInMinutes>';
+		$returnValue[] = '      <ScheduledTransferLogLevelFilter>' . $this->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferLogLevelFilter . '</ScheduledTransferLogLevelFilter>';
+		$returnValue[] = '    </DiagnosticInfrastructureLogs>';
+		
+		$returnValue[] = '    <PerformanceCounters>';
+		$returnValue[] = '      <BufferQuotaInMB>' . $this->DataSources->PerformanceCounters->BufferQuotaInMB . '</BufferQuotaInMB>';
+		$returnValue[] = '      <ScheduledTransferPeriodInMinutes>' . $this->DataSources->PerformanceCounters->ScheduledTransferPeriodInMinutes . '</ScheduledTransferPeriodInMinutes>';
+		if (count($this->DataSources->PerformanceCounters->Subscriptions) == 0) {
+			$returnValue[] = '      <Subscriptions />';
+		} else {
+			$returnValue[] = '      <Subscriptions>';
+			foreach ($this->DataSources->PerformanceCounters->Subscriptions as $subscription) {
+				$returnValue[] = '        <PerformanceCounterConfiguration>';
+				$returnValue[] = '          <CounterSpecifier>' . $subscription->CounterSpecifier . '</CounterSpecifier>';
+				$returnValue[] = '          <SampleRateInSeconds>' . $subscription->SampleRateInSeconds . '</SampleRateInSeconds>';
+				$returnValue[] = '        </PerformanceCounterConfiguration>';
+			}
+			$returnValue[] = '      </Subscriptions>';
+		}
+		$returnValue[] = '    </PerformanceCounters>';
+		
+		$returnValue[] = '    <WindowsEventLog>';
+		$returnValue[] = '      <BufferQuotaInMB>' . $this->DataSources->WindowsEventLog->BufferQuotaInMB . '</BufferQuotaInMB>';
+		$returnValue[] = '      <ScheduledTransferPeriodInMinutes>' . $this->DataSources->WindowsEventLog->ScheduledTransferPeriodInMinutes . '</ScheduledTransferPeriodInMinutes>';
+			if (count($this->DataSources->WindowsEventLog->Subscriptions) == 0) {
+			$returnValue[] = '      <Subscriptions />';
+		} else {
+			$returnValue[] = '      <Subscriptions>';
+			foreach ($this->DataSources->WindowsEventLog->Subscriptions as $subscription) {
+				$returnValue[] = '      <string>' . $subscription . '</string>';
+			}
+			$returnValue[] = '      </Subscriptions>';
+		}
+		$returnValue[] = '      <ScheduledTransferLogLevelFilter>' . $this->DataSources->WindowsEventLog->ScheduledTransferLogLevelFilter . '</ScheduledTransferLogLevelFilter>';
+		$returnValue[] = '    </WindowsEventLog>';
+		
+		$returnValue[] = '    <Directories>';
+		$returnValue[] = '      <BufferQuotaInMB>' . $this->DataSources->Directories->BufferQuotaInMB . '</BufferQuotaInMB>';
+		$returnValue[] = '      <ScheduledTransferPeriodInMinutes>' . $this->DataSources->Directories->ScheduledTransferPeriodInMinutes . '</ScheduledTransferPeriodInMinutes>';
+		if (count($this->DataSources->Directories->Subscriptions) == 0) {
+			$returnValue[] = '      <Subscriptions />';
+		} else {
+			$returnValue[] = '      <Subscriptions>';
+			foreach ($this->DataSources->Directories->Subscriptions as $subscription) {
+				$returnValue[] = '        <DirectoryConfiguration>';
+				$returnValue[] = '          <Path>' . $subscription->Path . '</Path>';
+				$returnValue[] = '          <Container>' . $subscription->Container . '</Container>';
+				$returnValue[] = '          <DirectoryQuotaInMB>' . $subscription->DirectoryQuotaInMB . '</DirectoryQuotaInMB>';
+				$returnValue[] = '        </DirectoryConfiguration>';
+			}
+			$returnValue[] = '      </Subscriptions>';
+		}
+		$returnValue[] = '    </Directories>';
+		
+		$returnValue[] = '  </DataSources>';
+		$returnValue[] = '</ConfigRequest>';
+		
+		// Return
+		return implode("\r\n", $returnValue);
+	}
+}
\ No newline at end of file