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());
        }
    }
}
}