/***********************************************************************
 * 
 *  Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved.
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; version 2.1
 *  of the License.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Library Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, Novell, Inc.
 * 
 *  To contact Novell about this file by physical or electronic mail, 
 *  you may find current contact information at www.novell.com.
 * 
 ***********************************************************************/

using System;
using System.Collections;
using System.Xml;
using System.Xml.Serialization;
namespace Novell.CASA.CASAPolicy
{
public class Store
{
    string storeName;
    public string StoreName
    {
        get
        {
            return storeName;
        }
        set
        {
            storeName = value;
        }
    }
    string storeId;
    public string StoreId
    {
        get
        {
            return storeId;
        }
        set
        {
            storeId = value;
        }
    }
    public Store(string name,string id)
    {
        storeId = id;
        storeName = name;
    }
}

public class AggregationPol : CASAPol
{
    ArrayList storeList;
    public ArrayList StoreList
    {
        get
        {
            return storeList;
        }
    }
    public AggregationPol(ArrayList stores)
    {
        policyType = CASAPolType.AGGREGATION_POL;
        storeList = stores;
    }

    public override void DumpPol()
    {
        Console.WriteLine("\nAggregation Policy");
        IEnumerator enumerator = storeList.GetEnumerator();
        while(enumerator.MoveNext())
        {
            Console.WriteLine("StoreName = " + ((Store)(enumerator.Current)).StoreName + " StoreId = " + ((Store)(enumerator.Current)).StoreId);
        }
    }

    internal override void AppendToDoc(XmlDocument doc)
    {
        try
        {
            XmlElement storeElem;
            XmlAttribute storeNameAttr;
            XmlAttribute storeIdAttr;
            string xPath = "";

            xPath = "//" + XmlConsts.CASAPolicyNode; 
            XmlNode rootElem = doc.SelectSingleNode(xPath);

            XmlElement aggPolElem = doc.CreateElement(XmlConsts.AggregationPolicyNode);
            rootElem.AppendChild(aggPolElem);

            IEnumerator enumerator = storeList.GetEnumerator();
            while(enumerator.MoveNext())
            {
                storeElem = doc.CreateElement(XmlConsts.StoreAttr);
                storeNameAttr = doc.CreateAttribute(XmlConsts.StoreNameAttr);
                storeNameAttr.Value = ((Store)(enumerator.Current)).StoreName;
                storeElem.SetAttributeNode(storeNameAttr);

                storeIdAttr = doc.CreateAttribute(XmlConsts.StoreIdAttr);
                storeIdAttr.Value = ((Store)(enumerator.Current)).StoreId;
                storeElem.SetAttributeNode(storeIdAttr);

                aggPolElem.AppendChild(storeElem);
            }
        }
        catch(Exception e)
        {
            //Console.WriteLine(e.ToString());
        }
    }
}
}