KBS2.Handlers.ItemHandler.ItemHandler.EventItemCollectionChanged C# (CSharp) Method

EventItemCollectionChanged() private static method

private static EventItemCollectionChanged ( object sender, NotifyCollectionChangedEventArgs e ) : void
sender object
e System.Collections.Specialized.NotifyCollectionChangedEventArgs
return void
        private static void EventItemCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            DatabaseHandler dbh = DatabaseHandler.GetInstance();
            switch (e.Action) {
                case NotifyCollectionChangedAction.Add:
                    IList newItems = e.NewItems;
                    string query = "INSERT INTO `Item`(`Type`, `RoomID`, `X`, `Y`) VALUES ";
                    int c = 0;
                    foreach (Item item in newItems) {
                        item.Changed += EventItemChanged;
                        if (item.IsLoaded) continue;

                        query += string.Format("('{0}', {1}, {2}, {3}){4}", item.Type.ToString(), item.RoomID, item.X, item.Y,
                            (item != newItems[newItems.Count - 1] ? "," : ""));
                        c++;
                    }
                    if (c > 0) {
                        long setID = dbh.Sql(query);

                        foreach (Item item in newItems) {
                            if (item.IsLoaded) continue;
                            item.ID = (uint)setID++;
                        }
                    }
                    break;
                case NotifyCollectionChangedAction.Remove:
                    IList oldItems = e.OldItems;
                    foreach (Item item in oldItems) {
                        item.Changed -= EventItemChanged;
                        dbh.Sql(string.Format("DELETE FROM `Item` WHERE `ID`={0}", item.ID));
                    }
                    break;
            }
        }