Exemplo n.º 1
0
        public static List<ConvertedItem> BuildItemList(string[][] items)
        {
            if (null == items)
            {
                throw new ArgumentException("NULL item array!");
            }

            #region Method 1: 2 Pass method (reduce duplication of logic)
            //List<MenuItem> menuItems = new List<MenuItem>(items.Length);

            //for (int i = 0; i < items.Length; i++)
            //{
            //    menuItems.Add(new MenuItem(items[i][Offsets.Name],
            //                               int.Parse(items[i][Offsets.Level])));
            //}

            //return BuildItemList(menuItems);
            #endregion Method 1: 2 Pass method (reduce duplication of logic)

            #region Method 2: 1 Pass method (logic duplicated but no conversion to menu item list)

            List<ConvertedItem> convertedItems = new List<ConvertedItem>();

            ConvertedItem parent = null;

            for (int i = 0; i < items.Length; i++)
            {
                if (!Convert.ToBoolean(int.Parse(items[i][Offsets.IsValid])))
                {
                    continue;
                }

                ConvertedItem item = new ConvertedItem(items[i][Offsets.Name],
                                                       int.Parse(items[i][Offsets.Level]));

                if (null == parent || !IsCondiment(item))
                {
                    if (null != parent)
                    {
                        convertedItems.Add(parent);
                    }

                    parent = item;
                }
                else
                {
                    if (null == parent.SubItems)
                    {
                        parent.SubItems = new List<ConvertedItem>();
                    }

                    item.Level = Math.Min(item.Level, 1);  //Normalize item levels
                    parent.SubItems.Add(item);
                }
            }

            //Get the last parent into the list:
            convertedItems.Add(parent);

            return convertedItems;
            #endregion Method 2: 1 Pass method (logic duplicated but no conversion to menu item list)
        }
Exemplo n.º 2
0
 private static bool IsNextItemHigherLevel(ConvertedItem current, MenuItem next)
 {
     return null != current && current.Level > next.Level;
 }
Exemplo n.º 3
0
 private static bool IsCondiment(ConvertedItem current)
 {
     return current.Level > 0;
 }
Exemplo n.º 4
0
 protected bool Equals(ConvertedItem other)
 {
     return string.Equals(Name, other.Name) &&
            Level == other.Level &&
            Equals(SubItems, other.SubItems);
 }