Example #1
0
        private ProductDescription MakeProductDescription(DeploymentDataContext ctx, Product p, IEnumerable <Plugin> plugins)
        {
            var desc = new ProductDescription(p.Name, new Version(p.Version), from plugin in plugins
                                              select MakePluginDescription(ctx, plugin));

            return(desc);
        }
Example #2
0
        private Product MakeProductFromDescription(ProductDescription desc)
        {
            var product = new Product();

            product.Name    = desc.Name;
            product.Version = desc.Version.ToString();
            return(product);
        }
Example #3
0
        public void Delete(ProductDescription productDescription)
        {
            using (var ctx = new DeploymentDataContext()) {
                try {
                    using (var transaction = new TransactionScope()) {
                        var productEntity = GetExistingProduct(ctx, productDescription.Name, productDescription.Version);

                        DeleteProductPlugins(ctx, productEntity);
                        ctx.Products.DeleteOnSubmit(productEntity);

                        ctx.SubmitChanges();
                        transaction.Complete();
                    }
                }
                catch (SqlException ex) {
                    throw new ArgumentException("Something went wrong while trying to delete product", ex);
                }
                catch (InvalidOperationException ex) {
                    throw new ArgumentException("Something went wrong while trying to delete product", ex);
                }
            }
        }
Example #4
0
 public void Persist(ProductDescription productDescription)
 {
     using (var ctx = new DeploymentDataContext()) {
         try {
             using (var transaction = new TransactionScope()) {
                 foreach (var plugin in productDescription.Plugins)
                 {
                     var pluginEntity = GetExistingPlugin(ctx, plugin.Name, plugin.Version);
                     UpdatePlugin(ctx, pluginEntity, plugin);
                 }
                 InsertOrUpdateProduct(ctx, productDescription);
                 ctx.SubmitChanges();
                 transaction.Complete();
             }
         }
         catch (SqlException ex) {
             throw new ArgumentException("Something went wrong while trying to persist product", ex);
         }
         catch (InvalidOperationException ex) {
             throw new ArgumentException("Something went wrong while trying to persist product", ex);
         }
     }
 }
Example #5
0
        private void InsertOrUpdateProduct(DeploymentDataContext ctx, ProductDescription product)
        {
            var productEntity = (from p in ctx.Products
                                 where p.Name == product.Name
                                 where p.Version == product.Version.ToString()
                                 select p).FirstOrDefault() ?? MakeProductFromDescription(product);

            if (productEntity.Id <= 0)
            {
                ctx.Products.InsertOnSubmit(productEntity);
                ctx.SubmitChanges();
            }

            DeleteProductPlugins(ctx, productEntity);

            foreach (var plugin in product.Plugins)
            {
                var           existingPlugin = GetExistingPlugin(ctx, plugin.Name, plugin.Version);
                ProductPlugin prodPlugin     = new ProductPlugin();
                prodPlugin.PluginId  = existingPlugin.Id;
                prodPlugin.ProductId = productEntity.Id;
                ctx.ProductPlugins.InsertOnSubmit(prodPlugin);
            }
        }
Example #6
0
 public void DeleteProduct(ProductDescription product) {
   var store = new PluginStore();
   store.Delete(product);
 }
Example #7
0
 public void DeployProduct(ProductDescription product) {
   var store = new PluginStore();
   store.Persist(product);
 }
Example #8
0
        public void DeleteProduct(ProductDescription product)
        {
            var store = new PluginStore();

            store.Delete(product);
        }
Example #9
0
        public void DeployProduct(ProductDescription product)
        {
            var store = new PluginStore();

            store.Persist(product);
        }
Example #10
0
 public void Persist(ProductDescription productDescription) {
   using (var ctx = new DeploymentDataContext()) {
     try {
       using (var transaction = new TransactionScope()) {
         foreach (var plugin in productDescription.Plugins) {
           var pluginEntity = GetExistingPlugin(ctx, plugin.Name, plugin.Version);
           UpdatePlugin(ctx, pluginEntity, plugin);
         }
         InsertOrUpdateProduct(ctx, productDescription);
         ctx.SubmitChanges();
         transaction.Complete();
       }
     }
     catch (SqlException ex) {
       throw new ArgumentException("Something went wrong while trying to persist product", ex);
     }
     catch (InvalidOperationException ex) {
       throw new ArgumentException("Something went wrong while trying to persist product", ex);
     }
   }
 }
Example #11
0
 private Product MakeProductFromDescription(ProductDescription desc) {
   var product = new Product();
   product.Name = desc.Name;
   product.Version = desc.Version.ToString();
   return product;
 }
Example #12
0
 private ProductDescription MakeProductDescription(DeploymentDataContext ctx, Product p, IEnumerable<Plugin> plugins) {
   var desc = new ProductDescription(p.Name, new Version(p.Version), from plugin in plugins
                                                                     select MakePluginDescription(ctx, plugin));
   return desc;
 }
Example #13
0
    private void InsertOrUpdateProduct(DeploymentDataContext ctx, ProductDescription product) {
      var productEntity = (from p in ctx.Products
                           where p.Name == product.Name
                           where p.Version == product.Version.ToString()
                           select p).FirstOrDefault() ?? MakeProductFromDescription(product);

      if (productEntity.Id <= 0) {
        ctx.Products.InsertOnSubmit(productEntity);
        ctx.SubmitChanges();
      }

      DeleteProductPlugins(ctx, productEntity);

      foreach (var plugin in product.Plugins) {
        var existingPlugin = GetExistingPlugin(ctx, plugin.Name, plugin.Version);
        ProductPlugin prodPlugin = new ProductPlugin();
        prodPlugin.PluginId = existingPlugin.Id;
        prodPlugin.ProductId = productEntity.Id;
        ctx.ProductPlugins.InsertOnSubmit(prodPlugin);
      }
    }
Example #14
0
    public void Delete(ProductDescription productDescription) {
      using (var ctx = new DeploymentDataContext()) {
        try {
          using (var transaction = new TransactionScope()) {
            var productEntity = GetExistingProduct(ctx, productDescription.Name, productDescription.Version);

            DeleteProductPlugins(ctx, productEntity);
            ctx.Products.DeleteOnSubmit(productEntity);

            ctx.SubmitChanges();
            transaction.Complete();
          }
        }
        catch (SqlException ex) {
          throw new ArgumentException("Something went wrong while trying to delete product", ex);
        }
        catch (InvalidOperationException ex) {
          throw new ArgumentException("Something went wrong while trying to delete product", ex);
        }
      }
    }