Example #1
0
 public void Insert(PlugIn plug)
 {
     using (PlugInFactory factory = PlugInFactory.GetInstance())
     {
         factory.Context = this.FactoryContext;
         ValidateInstance(plug);
         factory.InternalInsert(plug);
     }
 }
Example #2
0
        public void InsertAll(PlugIn plug)
        {
            try
            {
                this.FactoryContext.BeginTransaction();
                ValidateInstance(plug);
                using (PlugInFactory factory = PlugInFactory.GetInstance())
                {
                    factory.Context = this.FactoryContext;
                    factory.InternalInsert(plug);
                }
                using (PlugLocationFactory locationFactory = PlugLocationFactory.GetInstance())
                {
                    locationFactory.Context = this.FactoryContext;
                    foreach (PlugLocation location in plug.Locations)
                    {
                        location.PlugId = plug.PlugId;
                        locationFactory.InternalInsert(location);
                    }
                    using (PlugFileFactory fileFactory = PlugFileFactory.GetInstance())
                    {
                        fileFactory.Context = this.FactoryContext;
                        foreach (PlugFile file in plug.Files)
                        {
                            file.DestinationLocationId = locationFactory.InternalLoadByName(file.DestinationPath).PlugLocationId;
                            file.PlugId = plug.PlugId;
                            fileFactory.InternalInsert(file);
                        }

                        using (ClassDefinitionFactory classDefinitionFactory = ClassDefinitionFactory.GetInstance())
                        {
                            classDefinitionFactory.Context = this.FactoryContext;
                            foreach (ClassDefinition classDefinition in plug.ClassDefinitions)
                            {
                                classDefinition.PlugId = plug.PlugId;
                                int fileId = -1;
                                foreach (PlugFile file in plug.Files)
                                {
                                    if (file.PlugFileName == classDefinition.FileName)
                                    {
                                        fileId = file.PlugFileId;
                                        break;
                                    }
                                }
                                if (fileId == -1)
                                {
                                    throw new Exception("Not found corresponding file for class definition!");
                                }
                                classDefinition.FileId = fileId;
                                classDefinitionFactory.InternalInsert(classDefinition);
                            }

                            using (BindablePointDefinitionFactory bindablePointDefinitionFactory = BindablePointDefinitionFactory.GetInstance())
                            {
                                bindablePointDefinitionFactory.Context = this.FactoryContext;
                                foreach (BindablePointDefinition bindPointDef in plug.BindablePointDefinitions)
                                {
                                    bindPointDef.ClassDefinitionId = classDefinitionFactory.InternalLoadByClassName(bindPointDef.ClassDefinitionName).ClassDefinitionId;
                                    bindablePointDefinitionFactory.InternalInsert(bindPointDef);
                                }
                            }
                        }
                    }
                }

                // TODO: something else?..
                this.FactoryContext.Commit();
            }
            catch (Exception ex)
            {
                this.FactoryContext.RollBack();
                throw;
            }
        }