Exemplo n.º 1
0
 private bool GetProceed(IFilePathResolver target, string targetFileName, DefaultPackageInstallResult result){
     var proceed = true;
     if (!target.Exists(targetFileName)){
         if (TreatFileNotExistedAsError){
             result.State = ResultState.Error;
             result.SubMessages.Add("ERROR/NOFILE:" + targetFileName);
             proceed = false;
         }
         else{
             result.SubMessages.Add("NOFILE:" + targetFileName);
             proceed = false;
         }
     }
     return proceed;
 }
Exemplo n.º 2
0
        public override IPackageInstallResult Do(IPackage package, IFilePathResolver target){
            var wasError = false;
            var result = new DefaultPackageInstallResult{Message = "applying auto xslt"};
            var allfiles = package.PathResolver.ResolveAll("", "*.*");
            var xsltTaskFiles = allfiles.Where(s => s.EndsWith(".taskinfo.xslt"));
            xsltTaskFiles.Select(
                s =>{
                    if (wasError){
                        return s;
                    }

                    var targetFileName = s.Substring(0, s.Length - ".taskinfo.xslt".Length);

                    if (GetProceed(target, targetFileName, result)){
                        var xsltSource = package.PathResolver.ReadBinary(s);
                        var targetSource = target.Read(targetFileName);
                        var sw = new StringWriter();
                        var xws = new XmlWriterSettings();
                        xws.Indent = true;
                        xws.NewLineHandling = NewLineHandling.Entitize;
                        xws.OmitXmlDeclaration = true;
                        xws.Encoding = Encoding.UTF8;
                        var xw = XmlWriter.Create(sw, xws);
                        var xsltTransform = new XslCompiledTransform();
                        var sets = new XsltSettings(true, true);

                        var doc = XmlReader.Create(new StringReader(targetSource));
                        var xslt = XmlReader.Create(new MemoryStream(xsltSource));
                        var xmlResolver = new FilePathXmlResolver(package.PathResolver);
                        xsltTransform.Load(xslt, sets, xmlResolver);
                        var args = new XsltArgumentList();
                        if (ArgPreparator != null){
                            ArgPreparator(args);
                        }
                        xsltTransform.Transform(doc, args, xw, xmlResolver);
                        target.Write(targetFileName, sw.ToString());
                    }
                    result.SubMessages.Add("PROCESSED: " + targetFileName);
                    Console.WriteLine("PROCESSED: " + targetFileName);
                    return s;
                }
                ).ToList();
            return result;
        }
Exemplo n.º 3
0
 public virtual IPackageInstallResult Install(IFilePathResolver targetSystem){
     var result = new DefaultPackageInstallResult();
     // Console.WriteLine("INFO : {0} start install",identity);
     foreach (var task in Tasks){
         // try{
         //  Console.WriteLine("INFO : {0}/{1} start ", identity,task);
         var subResult = task.Do(this, targetSystem);
         //   Console.WriteLine("INFO : {0}/{1} finish ", identity, task);
         result.SubResults.Add(subResult);
         if (subResult.State > ResultState.Warning){
             break;
         }
         // }
         //catch (Exception e){
         //   result.Error = e;
         //   result.State = ResultState.Error;
         //}
     }
     Console.WriteLine("INFO : {0} end install", identity);
     return result;
 }
Exemplo n.º 4
0
        public override IPackageInstallResult Do(IPackage package, IFilePathResolver target){
            var result = new DefaultPackageInstallResult{Message = ToString()};
            package.PathResolver.ResolveAll("")
                .Where(s => !(GetBehaviour(s) == CopyBehaviour.Skip))
                .Select(s =>{
                            target.Resolve("~/" + s, false);
                            return s;
                        })
                .ToList();
            foreach (var file in package.PathResolver.ResolveAll("")){
                var behaviour = GetBehaviour(file);
                switch (behaviour){
                    case CopyBehaviour.Skip:
                        result.SubMessages.Add(string.Format("SKIP:{0}", file));
                        //   Console.WriteLine(string.Format("SKIP:{0}", file));
                        break;

                    case CopyBehaviour.None:
                        goto default;

                    case CopyBehaviour.OverWrite:
                        goto default;

                    case CopyBehaviour.NewOnly:
                        if (!target.Exists(file)){
                            goto default;
                        }
                        result.SubMessages.Add(string.Format("EXISTS:{0}", file));
                        Console.WriteLine(string.Format("EXISTS:{0}", file));
                        break;

                    default:
                        target.Write(file, package.PathResolver.ReadBinary(file));
                        result.SubMessages.Add(string.Format("COPY:{0}", file));
                        // Console.WriteLine(string.Format("COPY:{0}", file));
                        break;
                }
            }
            return result;
        }
Exemplo n.º 5
0
 public IPackageInstallResult Do(IPackage package, IFilePathResolver target){
     var result = new DefaultPackageInstallResult();
     result.State = ResultState.OK;
     Connection.Open();
     Builder = new StringBuilder();
     var trans = Connection.BeginTransaction();
     try{
         var commit = true;
         foreach (var command in Commands){
             var com = Connection.CreateCommand();
             com.CommandType = CommandType.Text;
             com.CommandText = command;
             com.Transaction = trans;
             com.ExecuteNonQuery();
             if (command.Contains("//nocommit")){
                 commit = false;
             }
         }
         if (commit){
             trans.Commit();
         }
     }
     catch (Exception ex){
         trans.Rollback();
         logger.get("comdiv.core").Error("error in sql package task", ex);
         result.State = ResultState.Error;
     }
     finally{
         try{
             Connection.Close();
         }
         catch{}
         logger.get("comdiv.core").Info("sql:" + Builder);
     }
     //result.State = ResultState.Warning;
     return result;
 }