Вход Регистрация
Файл: library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationInstance.php
Строк: 620
<?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("rn"$returnValue);
    }
}
Онлайн: 1
Реклама