/// <summary>
        ///		Clona una colección
        /// </summary>
        internal CategoryModelCollection Clone(TrackModel target)
        {
            CategoryModelCollection categories = new CategoryModelCollection();

            // Clona las categorías
            foreach (CategoryModel category in this)
            {
                categories.Add(category.Clone(target));
            }
            // Devuelve la colección clonada
            return(categories);
        }
        /// <summary>
        ///		Clona los datos
        /// </summary>
        public CategoryModel Clone(TrackModel parent)
        {
            CategoryModel target = new CategoryModel(parent);

            // Clona las propiedades
            target.Id       = Id;
            target.Title    = Title;
            target.IsLoaded = IsLoaded;
            // Clona las entradas
            target.Entries.AddRange(Entries.Clone());
            // Devuelve el dato clonado
            return(target);
        }
Beispiel #3
0
        /// <summary>
        ///		Clona los datos
        /// </summary>
        public TrackModel Clone()
        {
            TrackModel target = new TrackModel();

            // Clona los datos
            target.Id          = Id;
            target.Title       = Title;
            target.Description = Description;
            target.Url         = Url;
            target.Enabled     = Enabled;
            // Clona las categorías
            target.Categories.AddRange(Categories.Clone(target));
            // Devuelve el objeto clonado
            return(target);
        }
        /// <summary>
        ///		Mezcla una colección de categorías
        /// </summary>
        public CategoryModelCollection Merge(TrackModel track, CategoryModelCollection categoriesNew)
        {
            CategoryModelCollection categoriesMerged = new CategoryModelCollection();

            // Mezcla las categorías
            foreach (CategoryModel categoryNew in categoriesNew)
            {
                CategoryModel categoryFound = Search(categoryNew.Id, categoryNew.Title);

                if (categoryFound == null)
                {
                    // Añade la categoría a la colección (indicando que está cargada)
                    categoryNew.IsLoaded = true;
                    Add(categoryNew.Clone(track));
                    // Añade la categoría a las categorías mezcladas
                    categoriesMerged.Add(categoryNew.Clone(track));
                }
                else
                {
                    EntryModelCollection entriesMerged = categoryFound.Entries.Merge(categoryNew.Entries);

                    // Si se han encontrado entradas nuevas, se añade a la lista de categorías mezcladas
                    if (entriesMerged.Count > 0)
                    {
                        CategoryModel categoryMerged = categoryFound.Clone(track);

                        // Limpia las entradas
                        categoryMerged.Entries.Clear();
                        // Añade sólo las entradas mezcladas
                        categoryMerged.Entries.AddRange(entriesMerged);
                        // y añade la categoría a la lista
                        categoriesMerged.Add(categoryMerged);
                    }
                }
            }
            // Devuelve la categorías en las que ha habido algún cambio
            return(categoriesMerged);
        }
 public CategoryModel(TrackModel track)
 {
     Track = track;
 }