private Boolean ExportTable(String tableName, String[] fieldNames, List <Object> rowList) { // Verifica se o diretório de saída está disponível if (!Directory.Exists(dataDirectory)) { return(false); } // Remove o prefixo do nome da tabela e acrescenta a extensão do arquivo String entityName = tableName.Remove(0, 3); String outputFile = entityName + ".xml"; // Abre o xml de saída para gravação StreamWriter streamWriter = File.CreateText(PathFormat.Adjust(dataDirectory) + outputFile); streamWriter.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?>"); streamWriter.WriteLine("<" + entityName + "Table name=\"" + tableName + "\" database=\"" + currentDatabase + "\" server=\"" + saAccess.server + "\" >"); foreach (Object row in rowList) { String tag = entityName; Object[] fieldValues = (Object[])row; for (int index = 0; index < fieldValues.Length; index++) { String attribute = fieldNames[index] + "=" + ConvertFieldValue(fieldValues[index]); tag = tag + " " + attribute; } streamWriter.WriteLine(" <" + tag + " />"); } streamWriter.WriteLine("</" + entityName + "Table>"); streamWriter.Close(); return(true); }
private Boolean GetFrontendInfo() { txtProcessInfo.Text += Environment.NewLine + "Coletando dados de instalação..."; const String retrieveFail = "Falha ao coletar dados de instalação. "; if (String.IsNullOrEmpty(txtSiteName.Text)) { txtProcessInfo.Text += Environment.NewLine + retrieveFail + Environment.NewLine + "É necessário informar o nome do site. "; return(false); } String iisDirectory = IISHandler.GetWebRootDirectory(); if (iisDirectory == null) { txtProcessInfo.Text += Environment.NewLine + retrieveFail + Environment.NewLine + "Não foi possivel localizar o diretório base do IIS (wwwRoot). "; txtProcessInfo.Text += Environment.NewLine + "Verifique se o Internet Information Services está instalado."; return(false); } // Ajusta o formato do caminho de instalação String installDirectory = PathFormat.Adjust(iisDirectory) + (txtSiteName.Text + "WebDir"); // Se não houve nenhuma falha retorna informações do frontend e notifica sucesso frontendInfo = new FrontendInfo(txtSiteName.Text, installDirectory); return(true); }
// Cria o arquivo onde será guardado um resumo do csv original public void Create(DateTime?fileDate) { if (fileDate == null) { return; } String logName = "PrintLog-" + DateFormat.Adjust(fileDate) + ".csv"; String applicationFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String logFolder = PathFormat.Adjust(applicationFolder) + @"PrintLogs\"; Directory.CreateDirectory(logFolder); fileLogger = new FileLogger(logFolder + logName); fileLogger.FileHeader = new String[2]; fileLogger.FileHeader[0] = "Digest File - Source: Papercut Print Logger"; fileLogger.FileHeader[1] = "Time,User,Printer,Document Name,Pages,Copies,Duplex,Color,DataType,Size"; CSVReader csvReader = new CSVReader(logFolder + logName, null); DataTable alreadyInsertedTable = csvReader.Read(); alreadyInserted = new List <Object>(); foreach (DataRow row in alreadyInsertedTable.Rows) { PrintedDocument printedDocument = new PrintedDocument(); printedDocument.jobTime = DateTime.Parse(row["Time"].ToString()); printedDocument.name = row["Document Name"].ToString(); alreadyInserted.Add(printedDocument); } }
static void Main(String[] args) { foreach (String argument in args) { // Deve exportar as tabelas do banco if (argument.ToUpper().Contains("/E")) { // Busca parâmetros de conexão na linha de comando, caso existam DBAccess saAccess = null; saAccess = DBAccess.GetDbAccess(args); // Cria o diretório onde para onde os dados serão exportados String baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location.ToString()); String dataDirectory = PathFormat.Adjust(baseDir) + "Data"; Directory.CreateDirectory(dataDirectory); // Executa a exportação dos databases Recovery recovery = new Recovery(saAccess, dataDirectory); recovery.DBExport("AppCommon"); recovery.DBExport("Accounting"); return; } } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); }
private Boolean PrepareDirectory() { txtProcessInfo.Text += Environment.NewLine + "Preparando diretório de instalação..."; const String prepareFail = "O diretório de instalação apresentou alguns problemas. "; // Ajusta o formato do caminho de instalação txtTargetDirectory.Text = PathFormat.Adjust(txtTargetDirectory.Text); // Prepara o diretório de destino ( faz algumas verificações / cria o diretório ) // Caso existam arquivos no diretório aborta e exibe mensagem de erro TargetDirectory targetDir = new TargetDirectory(txtTargetDirectory.Text); if (!targetDir.Mount()) { txtProcessInfo.Text += Environment.NewLine + prepareFail + Environment.NewLine + targetDir.GetLastError(); return(false); } // Cria o subdiretório para gravação de log de cópias copyLogDirectory = @"C:\CopyLogs"; try { DirectoryInfo dirInfo = new DirectoryInfo(copyLogDirectory); dirInfo.Create(); } catch (Exception exc) { txtProcessInfo.Text += Environment.NewLine + prepareFail + Environment.NewLine + exc.Message; return(false); } return(true); }
public CreateDatabaseForm(IListener listener) { InitializeComponent(); this.listener = listener; String tempFolder = PathFormat.Adjust(Path.GetTempPath()); installationFilesDirectory = PathFormat.Adjust(tempFolder + "AccountingServerFiles"); }
public Boolean Uninstall() { // A presença do serviço do windows "Print Log Router" indica que ele deve ser removido, // este é o principal serviço em execução no diretório mas existem outros que também são // removidos do registro (executa o /UNINSTALL de cada serviço) ServiceInfo printLogRouter = ServiceLocator.LocateWindowsService("Print Log Router"); if (printLogRouter != null) { // Como não existe aplicativo de remoção, executa o /uninstall de cada serviço e apaga o diretório String servicesDirectory = Path.GetDirectoryName(printLogRouter.PathName); String[] serviceList = new String[] { "PrintLogRouter.exe", "PrintInspector.exe" }; foreach (String serviceName in serviceList) { String filename = PathFormat.Adjust(servicesDirectory) + serviceName; if (!File.Exists(filename)) { continue; // caso não ache o arquivo passa para o próximo da lista } Process serviceUninstall = new Process(); serviceUninstall.StartInfo.FileName = filename; serviceUninstall.StartInfo.Arguments = "/UNINSTALL"; serviceUninstall.EnableRaisingEvents = true; serviceUninstall.Exited += new EventHandler(UninstallCompleted); processRunning = true; serviceUninstall.Start(); while (processRunning) { Thread.Sleep(500); // Aguarda até a finalização do processo } } Directory.Delete(servicesDirectory, true); } /* devido a problemas que tem ocorrido na desinstalação do produto, a desinstalação automática do papercut logger foi retirada * ServiceInfo paperCutPrintLogger = ServiceLocator.LocateWindowsService("PCPrintLogger"); * if (paperCutPrintLogger != null) * { * // Executa o aplicativo de remoção * //String[] arguments = ArgumentParser.ParseCommandLine(paperCutPrintLogger.PathName); * //String printLoggerDirectory = Path.GetDirectoryName(arguments[0]); * //String printLoggerUninstaller = Path.Combine(printLoggerDirectory, "unins000.exe"); * //if (File.Exists(printLoggerUninstaller)) * //{ * // Process uninstaller = new Process(); * // uninstaller.StartInfo.FileName = printLoggerUninstaller; * // uninstaller.StartInfo.Arguments = "/VERYSILENT"; * // uninstaller.EnableRaisingEvents = true; * // uninstaller.Exited += new EventHandler(UninstallCompleted); * // processRunning = true; * // uninstaller.Start(); * // while (processRunning) Thread.Sleep(500); // Aguarda até a finalização do processo * //} * } */ return(true); }
// Formatos dos nomes de arquivo: // daily Ex.: papercut-print-log-2009-05-19.csv // montlhy Ex.: papercut-print-log-2009-05.csv // all-time Ex.: papercut-print-log-all-time.csv public static String MountName(String logDirectory, int day, int month, int year) { String baseDir = PathFormat.Adjust(logDirectory); String yearPart = String.Format("-{0:0000}", year); String monthPart = String.Format("-{0:00}", month); String dayPart = String.Format("-{0:00}", day); return(baseDir + baseName + yearPart + monthPart + dayPart + ".csv"); }
private Boolean InstallWebFrontend() { txtProcessInfo.Text += Environment.NewLine + "Iniciando instalação..."; const String installFail = "Falha ao instalar frontend web. "; // Verifica se o ASP.NET está registrado no IIS Boolean aspNetRegistered = IISHandler.IsAspNetRegistered(); if (!aspNetRegistered) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + "O ASP.NET 2.0 não está registrado/habilitado no IIS."; return(false); } // Tenta criar os diretórios virtuais no IIS IISHandler iisHandler = new IISHandler(); Boolean dirCreated = false; String webAccountingDir = PathFormat.Adjust(frontendInfo.installDirectory) + "WebAccounting"; String webAdministratorDir = PathFormat.Adjust(frontendInfo.installDirectory) + "WebAdministrator"; dirCreated = iisHandler.CreateVirtualDirectory(txtSiteName.Text, webAccountingDir, "LoginPage.aspx"); if (!dirCreated) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + iisHandler.GetLastError(); return(false); } dirCreated = iisHandler.CreateVirtualDirectory(txtSiteName.Text + "Admin", webAdministratorDir, "LoginPage.aspx"); if (!dirCreated) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + iisHandler.GetLastError(); return(false); } // Pergunta ao usuário se deseja reiniciar o IIS String dialogText = "O instalador precisa reiniciar o serviço de publicação na internet (IIS)." + Environment.NewLine + "Escolha 'sim' para reiniciar agora ou 'não' para reiniciar mais tarde."; DialogResult dialogResult = MessageBox.Show(dialogText, "Reiniciar IIS agora?", MessageBoxButtons.YesNo); if (dialogResult != DialogResult.Yes) { return(true); // recusou IISreset, sai do instalador (instalação OK) } // Tenta resetar o IIS Boolean iisReset = iisHandler.ResetIIS(); if (!iisReset) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + iisHandler.GetLastError(); return(false); } // Se não houve nenhuma falha notifica sucesso return(true); }
public ConfigurationForm(String targetDirectory, IListener listener) { InitializeComponent(); this.installationInfo = null; this.listener = listener; String programFilesDir = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); txtTargetDirectory.Text = PathFormat.Adjust(programFilesDir) + "DataCount"; if (!String.IsNullOrEmpty(targetDirectory)) { txtTargetDirectory.Text = targetDirectory; } }
// Exporta a massa de dados contida no banco de dados (dados das tabelas) private static void ExportData(DBAccess saAccess) { // Cria o diretório onde para onde os dados serão exportados String baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location.ToString()); String dataDirectory = PathFormat.Adjust(baseDir) + "Data"; Directory.CreateDirectory(dataDirectory); // Executa a exportação dos databases Recovery recovery = new Recovery(saAccess, dataDirectory); recovery.DBExport("AppCommon"); recovery.DBExport("Accounting"); }
/// <summary> /// Constroi o XML com informações de acesso ao banco de dados /// </summary> public static void BuildDataAccess(String server, String username, String password, String targetDirectory) { StreamWriter streamWriter = File.CreateText(PathFormat.Adjust(targetDirectory) + "DataAccess.xml"); String xmlContent = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + Environment.NewLine + "<dataaccess>" + Environment.NewLine + " <server>" + server + "</server>" + Environment.NewLine + " <username>" + username + "</username>" + Environment.NewLine + " <password>" + password + "</password>" + Environment.NewLine + "</dataaccess>" + Environment.NewLine; streamWriter.Write(xmlContent); streamWriter.Close(); }
public void CopyFiles(String destDirectory) { // Verifica se os arquivos estão presentes no disco (não são nulos), a consistência // usando File.Exists foi feita previamente if ((shdFilename == null) || (splFilename == null)) { return; } String outputPath = PathFormat.Adjust(destDirectory); // Força a criação de diretórios/subdiretórios inexistentes em outputPath Directory.CreateDirectory(outputPath); File.Copy(shdFilename, outputPath + Path.GetFileName(shdFilename)); File.Copy(splFilename, outputPath + Path.GetFileName(splFilename)); }
void KickService(Object sender, ElapsedEventArgs e) { // Verifica se o aplicativo ServiceKicker está disponível String serviceLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String serviceKicker = PathFormat.Adjust(serviceLocation) + "ServiceKicker.exe"; if (!File.Exists(serviceKicker)) { return; } // Derruba o serviço e reinicia String serviceName = '"' + this.ServiceName + '"'; Process.Start(serviceKicker, "/Service:" + serviceName + " /WaitBeforeStop:8000 /WaitBeforeStart:59000"); }
private static XmlTextWriter GetOutputWriter(Stream outputStream) { XmlTextWriter xmlWriter = null; // Caso não exista um Stream para saída grava o XML em disco if (outputStream == null) { String baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location.ToString()); String xmlLocation = PathFormat.Adjust(baseDir) + "JobRouting.xml"; xmlWriter = new XmlTextWriter(xmlLocation, Encoding.UTF8); return(xmlWriter); } xmlWriter = new XmlTextWriter(outputStream, Encoding.UTF8); return(xmlWriter); }
/// <summary> /// Obtem os parâmetros de execução a partir do XML /// </summary> public static NameValueCollection GetTaskParams() { NameValueCollection taskParams = new NameValueCollection(); try { String baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location.ToString()); String xmlLocation = PathFormat.Adjust(baseDir) + "JobRouting.xml"; XmlTextReader xmlReader = new XmlTextReader(xmlLocation); xmlReader.ReadStartElement("jobrouting"); taskParams.Add("url", xmlReader.ReadElementString("url")); taskParams.Add("tenantId", xmlReader.ReadElementString("tenantid")); taskParams.Add("interval", xmlReader.ReadElementString("interval")); taskParams.Add("logDirectories", xmlReader.ReadElementString("logdirectories")); taskParams.Add("copyLogDir", xmlReader.ReadElementString("copylogdir")); taskParams.Add("installationKey", xmlReader.ReadElementString("installationkey")); taskParams.Add("xmlHash", xmlReader.ReadElementString("xmlhash")); xmlReader.ReadEndElement(); xmlReader.Close(); } catch { return(null); } String installationKey = ResourceProtector.GetHardwareId(); installationKey = Cipher.GenerateHash(installationKey); String xmlHash = taskParams["url"] + taskParams["tenantId"] + taskParams["interval"] + taskParams["logDirectories"]; xmlHash = Cipher.GenerateHash(xmlHash); // Verifica se os parâmetros estão corretos (batem com os configurados durante a instalação) if (installationKey != taskParams["installationkey"]) { return(null); } if (xmlHash != taskParams["xmlhash"]) { return(null); } return(taskParams); }
/// <summary> /// Tenta remover os arquivos temporários de relatório /// </summary> public static void TryRemoveTempFiles() { String reportDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); DirectoryInfo dirInfo = new DirectoryInfo(reportDir); List <FileInfo> filesToRemove = new List <FileInfo>(); filesToRemove.AddRange(dirInfo.GetFiles("Report*.pdf")); filesToRemove.AddRange(dirInfo.GetFiles("Report*.xls")); filesToRemove.AddRange(dirInfo.GetFiles("Report*.csv")); foreach (FileInfo fileInfo in filesToRemove) { // Tenta remover o arquivo, igonora erros caso esteja aberto/em uso String filePath = PathFormat.Adjust(reportDir) + fileInfo.Name; FileResource.TryDelete(filePath); } }
/// <summary> /// Checa quais são os tenants existentes na na massa de dados /// </summary> public static List <DBObject> GetTenantsFromImportData(String dataDirectory) { List <DBObject> tenantList = new List <DBObject>(); // Retorna uma lista vazia caso não encontre o diretório de dados Boolean dirExists = Directory.Exists(dataDirectory); if (!dirExists) { return(tenantList); } // Retorna uma lista vazia caso não encontre o arquivo de dados String filename = PathFormat.Adjust(dataDirectory) + "tenant.xml"; Boolean fileExists = File.Exists(filename); if (!fileExists) { return(tenantList); } // Retorna uma lista vazia caso não consiga carregar os dados XmlNode tenantTable = (new ImportData(filename)).MainNode; if (tenantTable == null) { return(tenantList); } foreach (XmlNode tenant in tenantTable) { int id = int.Parse(tenant.Attributes["id"].Value); String name = tenant.Attributes["alias"].Value; // Remove os apóstrofes que delimitam a String name = name.Remove(0, 1); name = name.Remove(name.Length - 1, 1); tenantList.Add(new DBObject(id, name)); } return(tenantList); }
private Boolean CopyInstallationFiles() { txtProcessInfo.Text += Environment.NewLine + "Copiando arquivos de instalação..."; const String copyFail = "Falha ao copiar arquivos de instalação. "; TargetDirectory targetDir = new TargetDirectory(frontendInfo.installDirectory); // Prepara o diretório de destino ( faz algumas verificações / cria o diretório ) // Caso existam arquivos no diretório aborta e exibe mensagem de erro if (!targetDir.Mount()) { txtProcessInfo.Text += Environment.NewLine + copyFail + Environment.NewLine + targetDir.GetLastError(); return(false); } FileInfo[] sourceFiles = null; try // tenta obter os arquivos de origem (extraídos do instalador) { String tempFolder = PathFormat.Adjust(Path.GetTempPath()); String installationFilesDirectory = PathFormat.Adjust(tempFolder + "AccountingServerFiles"); File.Copy(installationFilesDirectory + "DataAccess.XML", installationFilesDirectory + @"WebFrontend\WebAccounting\App_Data\DataAccess.XML", true); File.Copy(installationFilesDirectory + "DataAccess.XML", installationFilesDirectory + @"WebFrontend\WebAdministrator\App_Data\DataAccess.XML", true); DirectoryInfo sourceDirectory = new DirectoryInfo(installationFilesDirectory + "WebFrontend"); sourceFiles = sourceDirectory.GetFiles("*.*", SearchOption.AllDirectories); } catch (Exception exc) { txtProcessInfo.Text += Environment.NewLine + copyFail + Environment.NewLine + exc.Message; return(false); } // Tenta copiar os arquivos para o diretório de instalação if (!targetDir.CopyFilesFrom(sourceFiles)) { txtProcessInfo.Text += Environment.NewLine + copyFail + Environment.NewLine + targetDir.GetLastError(); return(false); } // Se não houve nenhuma falha notifica sucesso return(true); }
/// <summary> /// Importa a massa de dados existente no diretório de logs /// </summary> private void ImportPreviousLogs(String logDirectory) { PrintLogSorter logSorter = new PrintLogSorter(logDirectory); String[] logFiles = logSorter.GetOrderedFiles(); DateTime?lastFileDate = null; // Importa os arquivos encontrados no diretório de log fileLogger.LogInfo("Importando logs pré-existentes no diretório " + logDirectory); foreach (String file in logFiles) { DateTime?fileDate = PrintLogFile.GetDate(file); // considera hora como sendo 00:00:00 DateTime?today = DateTime.Now.Date; // considera hora como sendo 00:00:00 // Importa todos com exceção do arquivo com as impressões de hoje, faz isso no final do dia if ((fileDate != null) && (fileDate != today)) { String fileName = PathFormat.Adjust(logDirectory) + file; // Loga informações sem profundidade, para não sobrecarregar/poluir o arquivo de logs. Apenas // em caso de falha acrescenta detalhes (processa as notificações) fileLogger.LogInfo("Importando arquivo " + Path.GetFileName(fileName)); notifications.Clear(); Boolean imported = ImportFile(fileName, false); if (!imported) // Falha ao importar o log { // São gravados logs detalhados para que se possa determinar a causa da falha ProcessNotifications(); return; } lastFileDate = fileDate; } } // Grava a data do último acesso (baseada na data do último arquivo) if (lastFileDate != null) { PrintLogAccess printLogAccess = new PrintLogAccess(dataAccess.GetConnection()); printLogAccess.SetLastAccess(lastFileDate.Value.AddDays(1)); } }
public PrintInspectTask() { notifications = new List <Object>(); spoolMonitor = new SpoolMonitor(this); fileLogger = new FileLogger(""); // não especifica o arquivo, usa o Relocate() posteriormente fileLogger.FileHeader = new String[2]; fileLogger.FileHeader[0] = "Print Inspector - Version 1.0.1"; fileLogger.FileHeader[1] = "Time,User,Printer,Document Name,Pages,Copies,Duplex,Color,DataType,Size"; String applicationFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); logFolder = PathFormat.Adjust(applicationFolder) + @"PrintLogs\"; Directory.CreateDirectory(logFolder); if (!EventLog.SourceExists("Print Inspector")) { EventLog.CreateEventSource("Print Inspector", null); } }
private void btnIniciar_Click(object sender, EventArgs e) { btnIniciar.Enabled = false; String server = txtServer.Text; DBLogin saLogin = new DBLogin(txtUsername.Text, txtPassword.Text); // Cria o diretório onde para onde os dados serão exportados String baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location.ToString()); String dataDirectory = PathFormat.Adjust(baseDir) + "Data"; Directory.CreateDirectory(dataDirectory); // Executa a exportação dos databases Recovery recovery = new Recovery(new DBAccess(server, saLogin), dataDirectory); recovery.DBExport("AppCommon"); recovery.DBExport("Accounting"); btnIniciar.Enabled = true; MessageBox.Show("Backup dos dados concluído"); }
// Cria o arquivo onde será guardado um resumo do csv original private void CreateDigest(DateTime?fileDate) { if (!createDigest) { return; } if (fileDate == null) { return; } String logName = "PrintLog-" + DateFormat.Adjust(fileDate) + ".csv"; String applicationFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String logFolder = PathFormat.Adjust(applicationFolder) + @"PrintLogs\"; Directory.CreateDirectory(logFolder); fileLogger = new FileLogger(logFolder + logName); fileLogger.FileHeader = new String[2]; fileLogger.FileHeader[0] = "Print Inspector - Version 1.0.1"; fileLogger.FileHeader[1] = "Time,User,Printer,Document Name,Pages,Copies,Duplex,Color,DataType,Size"; }
public void RunAll(String scriptsDirectory, IProgressListener progressListener) { listener.NotifyObject("Origem: [DatabaseScripts] Destino(database): " + sqlConnection.Database); String path = PathFormat.Adjust(scriptsDirectory); List <String> scriptList = new List <String>(); TextReader textReader = new StreamReader(path + "ExecutionOrder.txt"); String line = ""; while (line != null) { line = textReader.ReadLine(); if (line != null) { scriptList.Add(line); } } textReader.Close(); scriptsExecuted = 0; progressMeter = new ProgressMeter(scriptList.Count, progressListener); foreach (String script in scriptList) { currentScript = script; ContainedFile file = containerHandler.ExtractFromContainer(path + "ScriptFiles.xml", script); if (file == null) { throw new Exception("Script não encontrado no XML: " + script); } ExecuteQuery(file.fileContent); scriptsExecuted++; progressMeter.IncreaseProgress(1); } }
private void ImportForm_Shown(Object sender, EventArgs e) { // Obtem a lista de empresas a partir da massa de dados String baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location.ToString()); dataDirectory = PathFormat.Adjust(baseDir) + "Data"; List <DBObject> tenantList = ImportContext.GetTenantsFromImportData(dataDirectory); // Desabilita a importação pois o não foi possivel carregar a lista de empresas if (tenantList.Count < 1) { DisableTenantSelection(); btnImport.Enabled = false; txtProcessInfo.Clear(); txtProcessInfo.Text = "Massa de dados não encontrada. Aguardando ação do usuário..."; return; } // Monta a view com as empresas existentes foreach (DBObject tenant in tenantList) { tenantListBox.Items.Add(tenant); } }
public void Execute() { // Verifica se as dependências foram instanciadas (se o método InitializeTaskState foi chamado) if (taskParams == null) { return; } if (dataAccess == null) { return; } if (notifications == null) { return; } if (fileLogger == null) { return; } // Verifica os parâmetros recebidos String logDirectory = taskParams["logDirectory"]; DirectoryInfo dirInfo = new DirectoryInfo(logDirectory); dataAccess.OpenConnection(); // "lastAccess" é gravado e recuperado do banco com frequência, logo não pode ser obtido de "taskParams" CopyLogAccess copyLogAccess = new CopyLogAccess(dataAccess.GetConnection()); DateTime lastAccess = copyLogAccess.GetLastAccess(); // Inicializa o parâmetro "lastAccess" na primeira execução ou quando estiver desatualizado if (firstExecution || copyLogAccess.IsOutOfDate(lastAccess)) { copyLogAccess.SetLastAccess(DateTime.Now); firstExecution = false; dataAccess.CloseConnection(); return; } // Não processa (sai do método) se a tarefa já foi executada hoje if (DateTime.Now.Date.CompareTo(lastAccess) <= 0) { dataAccess.CloseConnection(); return; } // Inicia o append no arquivo de log (acrescentando o "startingDelimiter") fileLogger.LogInfo("Importação de log - Iniciando execução...", true); // Procura os arquivos .CSV no diretório de logs, faz a importação e armazena um backup // do arquivo com a extensão .OLD fileLogger.LogInfo("Fazendo varredura de arquivos .CSV no diretório de logs: " + logDirectory); FileInfo[] files = dirInfo.GetFiles(); int filesParsed = 0; foreach (FileInfo file in files) { if (Path.GetExtension(file.Name).ToUpper() == ".CSV") { fileLogger.LogInfo("Processando arquivo: " + file.Name); String filePath = PathFormat.Adjust(logDirectory); String fileName = Path.GetFileNameWithoutExtension(file.Name); ImportFile(filePath + fileName + ".csv"); CopyLogFile.StoreOldFile(filePath, fileName, ".csv"); filesParsed++; } } if (filesParsed == 0) { fileLogger.LogInfo("Nenhum arquivo processado( Não existem .CSVs no diretório)."); } fileLogger.LogInfo("Execução concluída."); // Grava a data do último acesso no banco copyLogAccess.SetLastAccess(DateTime.Now); dataAccess.CloseConnection(); }
public Boolean SendCopyJobs(String logDirectory) { Boolean success = true; CopyLogSender copyLogSender = new CopyLogSender(serviceUrl, listener); DirectoryInfo logDir = new DirectoryInfo(logDirectory); if (!logDir.Exists) { NotifyListener("Falha ao enviar logs. O diretório " + logDirectory + " não existe."); return(false); } String devicesXml = PathFormat.Adjust(logDirectory) + "Devices.xml"; if (!File.Exists(devicesXml)) { NotifyListener("Falha ao enviar logs. O arquivo " + devicesXml + " não foi encontrado."); return(false); } List <CopyLogDevice> devices = GetDevices(devicesXml); // Procura os arquivos .CSV no diretório de logs, faz a importação e armazena um backup // do arquivo com a extensão .OLD NotifyListener("Fazendo varredura de arquivos .CSV no diretório de logs: " + logDirectory); FileInfo[] files = logDir.GetFiles(); int filesParsed = 0; foreach (FileInfo file in files) { if (Path.GetExtension(file.Name).ToUpper() == ".CSV") { NotifyListener("Processando arquivo: " + file.Name); String filePath = PathFormat.Adjust(logDirectory); String fileName = Path.GetFileNameWithoutExtension(file.Name); // Procura o dispositivo que gerou o log (quando não encontra retorna null) CopyLogDevice sourceDevice = SearchLogFileSource(file.Name, devices); // Processa o arquivo de log, possui tratamento caso "sourceDevice" seja null if (!ProcessCopyLogFile(filePath + fileName + ".csv", sourceDevice, copyLogSender)) { success = false; } // Armazena um backup do arquivo com a extensão .OLD caso o arquivo tenha mais de um dia DateTime lastWrite = CopyLogFile.GetTimeStamp(filePath + fileName + ".csv"); if (lastWrite < DateTime.Now.AddDays(-1)) { CopyLogFile.StoreOldFile(filePath, fileName, ".csv"); } // Se processou o arquivo com sucesso incrementa a contagem if (success) { filesParsed++; } } } if (filesParsed == 0) { NotifyListener("Nenhum arquivo processado( Não existem .CSVs no diretório ou houve falha no processamento)."); } if (!copyLogSender.FinishSending()) { success = false; // Falha ao enviar algum pacote de logs } return(success); }
private Boolean InstallServices() { txtProcessInfo.Text += Environment.NewLine + "Iniciando instalação..."; const String installFail = "Falha ao instalar serviços. "; if (String.IsNullOrEmpty(txtInstallDirectory.Text)) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + "É necessário informar um diretório. "; return(false); } // Ajusta o formato do caminho de instalação txtInstallDirectory.Text = PathFormat.Adjust(txtInstallDirectory.Text); txtProcessInfo.Text += Environment.NewLine + "Preparando-se para copiar arquivos..."; TargetDirectory targetDir = new TargetDirectory(txtInstallDirectory.Text); // Prepara o diretório de destino ( faz algumas verificações / cria o diretório ) // Caso existam arquivos no diretório aborta e exibe mensagem de erro if (!targetDir.Mount()) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + targetDir.GetLastError(); return(false); } txtProcessInfo.Text += Environment.NewLine + "Copia de arquivos iniciada..."; FileInfo[] sourceFiles = null; try // tenta obter os arquivos de origem (extraídos do instalador) { String tempFolder = PathFormat.Adjust(Path.GetTempPath()); String installationFilesDirectory = PathFormat.Adjust(tempFolder + "AccountingServerFiles"); File.Copy(installationFilesDirectory + "DataAccess.XML", installationFilesDirectory + @"WindowsServices\DataAccess.XML", true); DirectoryInfo sourceDirectory = new DirectoryInfo(installationFilesDirectory + "WindowsServices"); sourceFiles = sourceDirectory.GetFiles("*.*", SearchOption.AllDirectories); } catch (Exception exc) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + exc.Message; return(false); } // Tenta copiar os arquivos para o diretório de instalação if (!targetDir.CopyFilesFrom(sourceFiles)) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + targetDir.GetLastError(); return(false); } try // Tenta registrar os serviços no sistema operacional e inicia-los { txtProcessInfo.Text += Environment.NewLine + "Registrando serviços no Windows..."; ServiceHandler.InstallService(txtInstallDirectory.Text + "PrintLogImporter.EXE"); ServiceHandler.InstallService(txtInstallDirectory.Text + "CopyLogImporter.EXE"); ServiceHandler.InstallService(txtInstallDirectory.Text + "ReportMailer.EXE"); txtProcessInfo.Text += Environment.NewLine + "Iniciando serviços..."; ServiceHandler.StartService("Print Log Importer", 33000); ServiceHandler.StartService("Copy Log Importer", 33000); ServiceHandler.StartService("Report Mailer", 33000); } catch (Exception exc) { txtProcessInfo.Text += Environment.NewLine + installFail + Environment.NewLine + exc.Message; return(false); } // Se não houve nenhuma falha retorna informações da instalação e notifica sucesso servicesInfo = GetServicesInfo(); return(true); }
public static String MountName(String logDirectory) { String baseDir = PathFormat.Adjust(logDirectory); return(baseDir + baseName + "-all-time.csv"); }