예제 #1
0
 private PluginPackage MakePluginPackage(Plugin plugin, byte[] pluginPackage) {
   var package = new PluginPackage();
   package.Data = pluginPackage;
   package.PluginId = plugin.Id;
   return package;
 }
예제 #2
0
 private IEnumerable<Plugin> GetDependencies(DeploymentDataContext ctx, Plugin plugin) {
   return from pair in ctx.Dependencies
          from dependency in ctx.Plugins
          where pair.PluginId == plugin.Id
          where pair.DependencyId == dependency.Id
          select dependency;
 }
예제 #3
0
    private PluginDescription MakePluginDescription(DeploymentDataContext ctx, Plugin plugin) {
      if (!pluginDescriptions.ContainsKey(plugin.Id)) {
        // no cached description -> create new
        var desc = new PluginDescription(plugin.Name, new Version(plugin.Version));
        pluginDescriptions[plugin.Id] = desc; // and add to cache

        // fill remaining properties of plugin description
        desc.Dependencies = new List<PluginDescription>(from dep in GetDependencies(ctx, plugin) select MakePluginDescription(ctx, dep));
        desc.ContactEmail = plugin.ContactEmail ?? string.Empty;
        desc.ContactName = plugin.ContactName ?? string.Empty;
        desc.LicenseText = plugin.License ?? string.Empty;
      }
      return pluginDescriptions[plugin.Id];
    }
예제 #4
0
 private Plugin MakePluginFromDescription(PluginDescription pluginDescription) {
   var plugin = new Plugin();
   plugin.Name = pluginDescription.Name;
   plugin.Version = pluginDescription.Version.ToString();
   plugin.ContactName = pluginDescription.ContactName;
   plugin.ContactEmail = pluginDescription.ContactEmail;
   plugin.License = pluginDescription.LicenseText;
   return plugin;
 }
예제 #5
0
    private void DeleteOldDependencies(DeploymentDataContext ctx, Plugin pluginEntity) {
      var oldDependencies = (from dep in ctx.Dependencies
                             where dep.PluginId == pluginEntity.Id
                             select dep).ToList();

      ctx.Dependencies.DeleteAllOnSubmit(oldDependencies);
      ctx.SubmitChanges();
    }
예제 #6
0
    private void UpdatePlugin(DeploymentDataContext ctx, Plugin pluginEntity, PluginDescription pluginDescription) {
      // update plugin data
      pluginEntity.License = pluginDescription.LicenseText;
      pluginEntity.ContactName = pluginDescription.ContactName;
      pluginEntity.ContactEmail = pluginDescription.ContactEmail;

      // delete cached entry
      if (pluginDescriptions.ContainsKey(pluginEntity.Id)) pluginDescriptions.Remove(pluginEntity.Id);

      DeleteOldDependencies(ctx, pluginEntity);

      foreach (var dependency in pluginDescription.Dependencies) {
        var dependencyEntity = GetExistingPlugin(ctx, dependency.Name, dependency.Version);
        Dependency d = new Dependency();
        d.PluginId = pluginEntity.Id;
        d.DependencyId = dependencyEntity.Id;
        ctx.Dependencies.InsertOnSubmit(d);
      }
    }
 partial void DeletePlugin(Plugin instance);
 partial void UpdatePlugin(Plugin instance);
 partial void InsertPlugin(Plugin instance);