예제 #1
0
        public virtual void Merge()
        {
            System.Collections.Generic.IList <object> ok           = new System.Collections.Generic.List <object>();
            Net.Vpc.Upa.Config.DecorationValue[]      alternatives = GetAlternatives();
            foreach (Net.Vpc.Upa.Config.DecorationValue alternative in alternatives)
            {
                Net.Vpc.Upa.Impl.Config.Decorations.DecorationPrimitiveValue d = (Net.Vpc.Upa.Impl.Config.Decorations.DecorationPrimitiveValue)alternative;
                switch (d.GetConfig().GetConfigAction())
                {
                case Net.Vpc.Upa.Config.ConfigAction.DELETE:
                {
                    ok.Clear();
                    break;
                }

                case Net.Vpc.Upa.Config.ConfigAction.MERGE:
                case Net.Vpc.Upa.Config.ConfigAction.REPLACE:
                {
                    ok.Clear();
                    ok.Add(d.GetValue());
                    break;
                }
                }
            }
            Net.Vpc.Upa.Config.DecorationValue last = alternatives[alternatives.Length - 1];
            if ((ok.Count == 0))
            {
                @value     = null;
                configInfo = new Net.Vpc.Upa.Config.ConfigInfo(last.GetConfig().GetOrder(), Net.Vpc.Upa.Config.ConfigAction.DELETE, last.GetConfig().GetPersistenceGroup(), last.GetConfig().GetPersistenceUnit());
            }
            else
            {
                @value     = ok[(ok).Count - 1];
                configInfo = new Net.Vpc.Upa.Config.ConfigInfo(last.GetConfig().GetOrder(), Net.Vpc.Upa.Config.ConfigAction.MERGE, last.GetConfig().GetPersistenceGroup(), last.GetConfig().GetPersistenceUnit());
            }
        }
예제 #2
0
 public virtual void Merge()
 {
     System.Collections.Generic.Dictionary <string, Net.Vpc.Upa.Config.DecorationValue> att = new System.Collections.Generic.Dictionary <string, Net.Vpc.Upa.Config.DecorationValue>();
     Net.Vpc.Upa.Config.DecorationValue[] alternatives1 = GetAlternatives();
     Net.Vpc.Upa.Config.DecorationValue[] alternatives  = Shrink(alternatives1);
     foreach (Net.Vpc.Upa.Config.DecorationValue alternative in alternatives)
     {
         Net.Vpc.Upa.Config.Decoration d = (Net.Vpc.Upa.Config.Decoration)alternative;
         foreach (System.Collections.Generic.KeyValuePair <string, Net.Vpc.Upa.Config.DecorationValue> e in new System.Collections.Generic.HashSet <System.Collections.Generic.KeyValuePair <string, Net.Vpc.Upa.Config.DecorationValue> >(d.GetAttributes()))
         {
             Net.Vpc.Upa.Impl.Config.Decorations.AbstractDecorationValue v1 = (Net.Vpc.Upa.Impl.Config.Decorations.AbstractDecorationValue)Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <string, Net.Vpc.Upa.Config.DecorationValue>(att, (e).Key);
             Net.Vpc.Upa.Impl.Config.Decorations.AbstractDecorationValue v2 = (Net.Vpc.Upa.Impl.Config.Decorations.AbstractDecorationValue)(e).Value;
             if (v1 == null)
             {
                 att[(e).Key] = v2;
             }
             else
             {
                 v1.AddAlternative(v2);
             }
         }
         break;
     }
     foreach (System.Collections.Generic.KeyValuePair <string, Net.Vpc.Upa.Config.DecorationValue> e in new System.Collections.Generic.HashSet <System.Collections.Generic.KeyValuePair <string, Net.Vpc.Upa.Config.DecorationValue> >(att))
     {
         ((Net.Vpc.Upa.Impl.Config.Decorations.AbstractDecoration)(e).Value).Merge();
     }
     if (alternatives.Length == 0)
     {
         Net.Vpc.Upa.Config.DecorationValue last = alternatives1[alternatives1.Length - 1];
         mergedAttributes = new System.Collections.Generic.Dictionary <string, Net.Vpc.Upa.Config.DecorationValue>();
         mergedConfigInfo = new Net.Vpc.Upa.Config.ConfigInfo(last.GetConfig().GetOrder(), Net.Vpc.Upa.Config.ConfigAction.DELETE, last.GetConfig().GetPersistenceGroup(), last.GetConfig().GetPersistenceUnit());
     }
     else
     {
         Net.Vpc.Upa.Config.DecorationValue last = alternatives[alternatives.Length - 1];
         mergedAttributes = att;
         mergedConfigInfo = new Net.Vpc.Upa.Config.ConfigInfo(last.GetConfig().GetOrder(), Net.Vpc.Upa.Config.ConfigAction.MERGE, last.GetConfig().GetPersistenceGroup(), last.GetConfig().GetPersistenceUnit());
     }
 }
예제 #3
0
 public virtual int CompareTo(Net.Vpc.Upa.Config.DecorationValue o)
 {
     if (o == null)
     {
         return(1);
     }
     if (o == this)
     {
         return(0);
     }
     Net.Vpc.Upa.Config.ConfigInfo c1 = this.GetConfig();
     Net.Vpc.Upa.Config.ConfigInfo c2 = o.GetConfig();
     if (c1 == c2)
     {
         return(0);
     }
     if (c1 != null)
     {
         return(c1.CompareTo(c2));
     }
     return(0);
 }