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; }
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; }
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; }
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; }
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; }