string DefineOrdenacao(TabelaInfo tabela) { foreach (ColunaInfo c in tabela.colunas) { if (c.DescricaoReferencia.Contains("DESCRICAO") || c.DescricaoReferencia.Contains("NOME") || c.DescricaoReferencia.Contains("RAZAO") || c.DescricaoReferencia.Contains("FANTASIA")) return tabela.ClasseInfo + ".Columns." + c.DescricaoReferencia; } return tabela.ClasseInfo + ".Columns._ID"; }
bool CriarArquivos(string diretorio) { try { LimparDiretorio(diretorio); if (!Directory.Exists(diretorio)) Directory.CreateDirectory(diretorio); if (!Directory.Exists(diretorio + "\\ORM\\BaseModel")) Directory.CreateDirectory(diretorio + "\\ORM\\BaseModel"); if (!Directory.Exists(diretorio + "\\ORM\\Model")) Directory.CreateDirectory(diretorio + "\\ORM\\Model"); if (!Directory.Exists(diretorio + "\\ORM\\BaseBLL")) Directory.CreateDirectory(diretorio + "\\ORM\\BaseBLL"); if (!Directory.Exists(diretorio + "\\ORM\\BLL")) Directory.CreateDirectory(diretorio + "\\ORM\\BLL"); if (!Directory.Exists(diretorio + "\\ORM\\BaseDAL")) Directory.CreateDirectory(diretorio + "\\ORM\\BaseDAL"); if (!Directory.Exists(diretorio + "\\ORM\\DAL")) Directory.CreateDirectory(diretorio + "\\ORM\\DAL"); if (!Directory.Exists(diretorio + "\\WebService")) Directory.CreateDirectory(diretorio + "\\WebService"); if (!Directory.Exists(diretorio + "\\Comunicador\\BaseBLL")) Directory.CreateDirectory(diretorio + "\\Comunicador\\BaseBLL"); if (!Directory.Exists(diretorio + "\\Comunicador\\BLL")) Directory.CreateDirectory(diretorio + "\\Comunicador\\BLL"); if (!Directory.Exists(diretorio + "\\Util")) Directory.CreateDirectory(diretorio + "\\Util"); if (!Directory.Exists(diretorio + "\\BaseObjects")) Directory.CreateDirectory(diretorio + "\\BaseObjects"); if (!Directory.Exists(diretorio + "\\ConstantValues")) Directory.CreateDirectory(diretorio + "\\ConstantValues"); string pacoteORM = chkWebService.Checked ? "ORM" : txtPacote.Text; string pacote = txtPacote.Text; string pacoteWebService = chkWebService.Checked && !string.IsNullOrEmpty(txtPacoteWebService.Text) ? txtPacoteWebService.Text : pacote; string stringConexaoParams = chkStringConexao.Checked ? "string strConexao, " : ""; string stringConexao = chkStringConexao.Checked ? "strConexao, " : ""; string pacoteDB = rdbMySQL.Checked ? "MySql.Data.MySqlClient" : "System.Data.Common"; string dbTransaction = rdbMySQL.Checked ? "MySqlTransaction" : "DbTransaction"; string dbParameter = rdbMySQL.Checked ? "MySqlParameter" : "DbParameter"; string dbType = rdbMySQL.Checked ? "MySqlDbType" : "DbType"; string dbDataReader = rdbMySQL.Checked ? "MySqlDataReader" : "DbDataReader"; string dbException = rdbMySQL.Checked ? "MySqlException" : "DbException"; string dbTypeBoolean = rdbMySQL.Checked ? "Bit" : "Boolean"; string dataPadraoCriacao = "datahora_criacao"; string dataPadraoAlteracao = "datahora_alteracao"; string comando = @" SELECT *, 0 as ordenar FROM INFORMATION_SCHEMA.`TABLES` WHERE TABLE_SCHEMA = ?TABLE_NAME AND TABLE_TYPE = 'BASE TABLE';"; MySqlParameter[] parms = new MySqlParameter[1]; parms[0] = Accessor.Funcoes.CreateParameter("?TABLE_NAME", MySqlDbType.VarChar, cmbDatabase.Text); DataTable dtTablesOrigin = Accessor.Funcoes.FillDataTable(CommandType.Text, comando, parms); List<TabelaInfo> tabelas = new List<TabelaInfo>(); foreach (DataRow r in dtTablesOrigin.Rows) { string nomeTabela = r["table_name"].ToString().ToLower(); TabelaInfo tabela = new TabelaInfo(); tabela.SiglaInicial = txtSiglaInicial.Text; tabela.Descricao = nomeTabela; tabelas.Add(tabela); string recoverSelectColumn = @" SELECT *, if (column_key = 'PRI', '9999', '') as ordernarKey FROM INFORMATION_SCHEMA.`COLUMNS` WHERE TABLE_NAME = ?TABLE_NAME AND TABLE_SCHEMA = ?TABLE_SCHEMA ORDER BY ordernarKey desc, ORDINAL_POSITION;"; parms = new MySqlParameter[2]; parms[0] = Accessor.Funcoes.CreateParameter("?TABLE_NAME", MySqlDbType.VarChar, nomeTabela); parms[1] = Accessor.Funcoes.CreateParameter("?TABLE_SCHEMA", MySqlDbType.VarChar, cmbDatabase.Text); StringBuilder _columns = new StringBuilder(); List<string> primaryKeys = new List<string>(); ColunaInfo coluna = null; using (MySqlDataReader rdr = Accessor.Funcoes.ExecuteReader(CommandType.Text, recoverSelectColumn, parms)) { while (rdr.Read()) { coluna = new ColunaInfo(); coluna.ChavePrimaria = rdr["column_key"].ToString().ToLower().Contains("pri"); coluna.Descricao = rdr["column_name"].ToString(); coluna.Tipo = rdr["column_type"].ToString(); coluna.TamanhoMaximoTexto = Accessor.Funcoes.ConvertToInt32(rdr["character_maximum_length"].ToString()); coluna.Default = rdr["column_default"].ToString(); coluna.Comentario = rdr["column_comment"].ToString(); coluna.AceitaNulo = rdr["is_nullable"].ToString().ToLower().Contains("yes"); coluna.AutoIncremento = rdr["extra"].ToString().ToLower().Contains("auto_increment"); coluna.Index = rdr["column_key"].ToString().ToLower().Contains("mul"); tabela.colunas.Add(coluna); if (rdr["column_key"].ToString().ToLower().Contains("pri")) primaryKeys.Add(rdr["column_name"].ToString()); } } if (tabela.colunas.Find(p => p.ChavePrimaria) == null) { bool encontrouChavePrimaria = false; foreach (ColunaInfo c in tabela.colunas) { if (c.DescricaoDB.ToLower().Contains("id")) { c.ChavePrimaria = true; encontrouChavePrimaria = true; break; } } if (!encontrouChavePrimaria) { foreach (ColunaInfo c in tabela.colunas) { c.ChavePrimaria = true; break; } } } #region CriaArquivo Base Model File.Create(diretorio + "\\ORM\\BaseModel\\" + tabela.ArquivoModel).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\ORM\\BaseModel\\" + tabela.ArquivoModel)) { bool existeLazyLoading = (tabela.colunas.Find(p => !p.ChavePrimaria && (p.Descricao.ToLower().EndsWith("_id") || p.Descricao.ToLower().StartsWith("id"))) != null); bool existeComment = (tabela.colunas.Find(p => !string.IsNullOrEmpty(p.Comentario)) != null); arquivo.WriteLine("using " + pacoteDB + ";"); arquivo.WriteLine("using System;"); if (existeComment) arquivo.WriteLine("using Newtonsoft.Json;"); arquivo.WriteLine("using " + pacoteORM + ".BaseObjects;"); arquivo.WriteLine("using " + pacoteORM + ".Library.DAL;"); arquivo.WriteLine("using " + pacoteORM + ".Util;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacoteORM + ".Library.Model"); arquivo.WriteLine("{"); arquivo.WriteLine(""); arquivo.WriteLine(" public partial class " + tabela.ClasseInfo + " : BaseInfo"); arquivo.WriteLine(" {"); arquivo.WriteLine(" private Funcoes mFuncoes;"); arquivo.WriteLine(""); // Cria variaveis privadas foreach (ColunaInfo c in tabela.colunas) { if (!string.IsNullOrEmpty(c.Comentario) && c.Comentario != "notjson" && !c.Comentario.Contains("|") && !c.Comentario.Contains(" ") && !c.Comentario.Contains("-") && !c.Comentario.Contains(";")) arquivo.WriteLine(" [JsonProperty(\"" + c.Comentario + "\")]"); if (c.ChavePrimaria) arquivo.WriteLine(" public long " + c.Descricao + " { get; set; }"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.DateTime)) arquivo.WriteLine(" public " + EnumDescription.GetDescription(c.TipoVariavel) + "? " + c.Descricao + " { get; set; }"); else { if (chkValidacoesColuna.Checked && c.AceitaNulo && string.IsNullOrEmpty(c.Default) && !TipoVariavelEnum.String.Equals(c.TipoVariavel)) arquivo.WriteLine(" public " + EnumDescription.GetDescription(c.TipoVariavel) + "? " + c.Descricao + " { get; set; }"); else arquivo.WriteLine(" public " + EnumDescription.GetDescription(c.TipoVariavel) + " " + c.Descricao + " { get; set; }"); } } // Cria variaveis de classes relacionais if (existeLazyLoading) { arquivo.WriteLine(""); foreach (ColunaInfo c in tabela.colunas) { if (!string.IsNullOrEmpty(c.ClasseRelacionalInfo)) { if (existeComment) arquivo.WriteLine(" [JsonProperty(\"" + c.ClasseRelacionalApelido + "\")]"); arquivo.WriteLine(" public " + c.ClasseRelacionalInfo + " " + c.ClasseRelacionalApelido + " { get; set; }"); } } } arquivo.WriteLine(" public " + tabela.ClasseInfo + "()"); arquivo.WriteLine(" {"); arquivo.WriteLine(" mFuncoes = Funcoes.newInstance();"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public " + tabela.ClasseInfo + "(" + tabela.ClasseInfo + " t)"); arquivo.WriteLine(" : this()"); arquivo.WriteLine(" {"); // Cria variaveis no construtor da classe foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" this." + c.Descricao + " = t." + c.Descricao + ";"); } // Cria variaveis de classes relacionais no construtor da classe if (existeLazyLoading) { foreach (ColunaInfo c in tabela.colunas) { if (!string.IsNullOrEmpty(c.ClasseRelacionalInfo)) arquivo.WriteLine(" this." + c.ClasseRelacionalApelido + " = t." + c.ClasseRelacionalApelido + ";"); } } arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo Model File.Create(diretorio + "\\ORM\\Model\\" + tabela.ArquivoModel).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\ORM\\Model\\" + tabela.ArquivoModel)) { bool existeComment = (tabela.colunas.Find(p => !string.IsNullOrEmpty(p.Comentario)) != null); arquivo.WriteLine("using " + pacoteDB + ";"); arquivo.WriteLine("using System;"); if (existeComment) arquivo.WriteLine("using Newtonsoft.Json;"); arquivo.WriteLine("using " + pacoteORM + ".BaseObjects;"); arquivo.WriteLine("using " + pacoteORM + ".Library.DAL;"); arquivo.WriteLine("using " + pacoteORM + ".Util;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacoteORM + ".Library.Model"); arquivo.WriteLine("{"); arquivo.WriteLine(""); arquivo.WriteLine(" public partial class " + tabela.ClasseInfo + " : BaseInfo"); arquivo.WriteLine(" {"); arquivo.WriteLine(""); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo Base BLL File.Create(diretorio + "\\ORM\\BaseBLL\\Base" + tabela.ArquivoBo).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\ORM\\BaseBLL\\Base" + tabela.ArquivoBo)) { arquivo.WriteLine("using " + pacoteDB + ";"); arquivo.WriteLine("using " + pacoteORM + ".Library.DAL;"); arquivo.WriteLine("using " + pacoteORM + ".Library.Model;"); arquivo.WriteLine("using " + pacoteORM + ".Util;"); arquivo.WriteLine("using System;"); arquivo.WriteLine("using System.Collections.Generic;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacoteORM + ".Library.BaseBLL"); arquivo.WriteLine("{"); arquivo.WriteLine(" public abstract class Base" + tabela.ClasseBo); arquivo.WriteLine(" {"); arquivo.WriteLine(" protected static Base" + tabela.ClasseBo + " " + tabela.ApelidoBo + ";"); arquivo.WriteLine(" protected static Funcoes mFuncoes;"); arquivo.WriteLine(" protected static " + tabela.ClasseDao + " " + tabela.ApelidoDao + ";"); arquivo.WriteLine(""); if (chkValidacoesColuna.Checked) { arquivo.WriteLine(" protected static string erroCampoVazio = \"Campo {0} não pode ser vazio.\";"); arquivo.WriteLine(" protected static string erroCampoGrande = \"Campo {0} não pode ser ter mais do que {1} caracteres.\";"); arquivo.WriteLine(""); } arquivo.WriteLine(" protected Base" + tabela.ClasseBo + "()"); arquivo.WriteLine(" {"); arquivo.WriteLine(" mFuncoes = Funcoes.newInstance();"); arquivo.WriteLine(" " + tabela.ApelidoDao + " = DAOFactory.get" + tabela.ClasseDao + "();"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); if (chkValidacoesColuna.Checked) { arquivo.WriteLine(" public void ValidarDados(" + tabela.ClasseInfo + " _obj)"); arquivo.WriteLine(" {"); bool primeiraVariavel = true; foreach (ColunaInfo c in tabela.colunas) { if (!c.ChavePrimaria) { if (!c.AceitaNulo) { if (c.TipoVariavel.Equals(TipoVariavelEnum.String) && c.DescricaoDB != dataPadraoCriacao) { if (primeiraVariavel) arquivo.WriteLine(" if (string.IsNullOrEmpty(_obj." + c.Descricao + "))"); else arquivo.WriteLine(" else if (string.IsNullOrEmpty(_obj." + c.Descricao + "))"); arquivo.WriteLine(" throw new Exception(string.Format(erroCampoVazio, \"" + c.Descricao + "\"));"); if (c.TipoVariavel.Equals(TipoVariavelEnum.String) && c.TamanhoMaximoTexto > 0) { arquivo.WriteLine(" else if (_obj." + c.Descricao + ".Length > " + c.TamanhoMaximoTexto + ")"); arquivo.WriteLine(" throw new Exception(string.Format(erroCampoGrande, \"" + c.Descricao + "\", " + c.TamanhoMaximoTexto + "));"); } primeiraVariavel = false; } } else if (c.TipoVariavel.Equals(TipoVariavelEnum.String) && c.TamanhoMaximoTexto > 0 && c.DescricaoDB != dataPadraoCriacao) { if (primeiraVariavel) arquivo.WriteLine(" if (_obj." + c.Descricao + " != null && _obj." + c.Descricao + ".Length > " + c.TamanhoMaximoTexto + ")"); else arquivo.WriteLine(" else if (_obj." + c.Descricao + " != null && _obj." + c.Descricao + ".Length > " + c.TamanhoMaximoTexto + ")"); arquivo.WriteLine(" throw new Exception(string.Format(erroCampoGrande, \"" + c.Descricao + "\", " + c.TamanhoMaximoTexto + "));"); primeiraVariavel = false; } } } if (!primeiraVariavel) arquivo.WriteLine(""); string chavePrimaria = tabela.colunas.Find(p => p.ChavePrimaria).Descricao; foreach (ColunaInfo c in tabela.colunas) { if (!c.ChavePrimaria) { //if (!c.AceitaNulo && c.TipoVariavel.Equals(TipoVariavelEnum.DateTime) && c.DescricaoDB == dataPadraoCriacao) if (c.TipoVariavel.Equals(TipoVariavelEnum.DateTime) && c.DescricaoDB == dataPadraoCriacao) { arquivo.WriteLine(" if (_obj." + c.Descricao + " == null)"); arquivo.WriteLine(" _obj." + c.Descricao + " = DateTime.Now;"); } else if (c.TipoVariavel.Equals(TipoVariavelEnum.DateTime) && c.DescricaoDB == dataPadraoAlteracao) { arquivo.WriteLine(""); arquivo.WriteLine(" if (_obj." + chavePrimaria + " > 0)"); arquivo.WriteLine(" _obj." + c.Descricao + " = DateTime.Now;"); } } } arquivo.WriteLine(" }"); } arquivo.WriteLine(" public bool Salvar(" + tabela.ClasseInfo + " _obj, " + dbTransaction + " _trans)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); if (chkValidacoesColuna.Checked) { arquivo.WriteLine(" ValidarDados(_obj);"); arquivo.WriteLine(""); } arquivo.WriteLine(" return " + tabela.ApelidoDao + ".Salvar(_obj, _trans);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" public bool Salvar(" + stringConexaoParams + tabela.ClasseInfo + " _obj)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbTransaction + " trans = mFuncoes.BeginTransaction(" + stringConexao.Replace(", ", "") + ");"); arquivo.WriteLine(" bool sucesso = Salvar(_obj, trans);"); arquivo.WriteLine(" if (sucesso)"); arquivo.WriteLine(" mFuncoes.CommitTransaction(trans);"); arquivo.WriteLine(" else"); arquivo.WriteLine(" mFuncoes.RollbackTransaction(trans);"); arquivo.WriteLine(" return sucesso;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public bool Excluir(long Id, " + dbTransaction + " _trans)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return " + tabela.ApelidoDao + ".Excluir(Id, _trans);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" public bool Excluir(" + stringConexaoParams + "long Id)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbTransaction + " trans = mFuncoes.BeginTransaction(" + stringConexao.Replace(", ", "") + ");"); arquivo.WriteLine(" bool sucesso = Excluir(Id, trans);"); arquivo.WriteLine(" if (sucesso)"); arquivo.WriteLine(" mFuncoes.CommitTransaction(trans);"); arquivo.WriteLine(" else"); arquivo.WriteLine(" mFuncoes.RollbackTransaction(trans);"); arquivo.WriteLine(" return sucesso;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public " + tabela.ClasseInfo + " RetornaPorId(" + stringConexaoParams + "long Id, bool lazyLoading = false)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return " + tabela.ApelidoDao + ".RetornaPorId(" + stringConexao + "Id, lazyLoading);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); string parametroLazyLoading = string.Empty; string variavelLazyLoading = string.Empty; List<ColunaInfo> joins = new List<ColunaInfo>(); foreach (ColunaInfo c in tabela.colunas) { bool lista = false; bool join = false; if (CriarSelect(c, ref lista, ref join)) { if (join) { joins.Add(c); parametroLazyLoading = ", bool lazyLoading = false"; variavelLazyLoading = ", lazyLoading"; } string variavel = c.TipoVariavel.ToString().StartsWith("S") ? c.TipoVariavel.ToString() : c.TipoVariavel.ToString().ToLower(); if (variavel.Equals("integer")) variavel = "int"; string pesquisaPor = "Por" + c.Descricao; if (!lista) { arquivo.WriteLine(" public " + tabela.ClasseInfo + " Retorna" + pesquisaPor + "(" + stringConexaoParams + variavel + " " + c.Descricao + parametroLazyLoading + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return " + tabela.ApelidoDao + ".Retorna" + pesquisaPor + "(" + stringConexao + c.Descricao + variavelLazyLoading + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> Retorna" + pesquisaPor + "(" + stringConexaoParams + variavel + " " + c.Descricao + parametroLazyLoading + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return " + tabela.ApelidoDao + ".Retorna" + pesquisaPor + "(" + stringConexao + c.Descricao + variavelLazyLoading + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } } if (joins.Count > 1) { StringBuilder parametros = new StringBuilder(); StringBuilder parametrosPassar = new StringBuilder(); foreach (ColunaInfo c in joins) { string variavel = c.TipoVariavel.ToString().StartsWith("S") ? c.TipoVariavel.ToString() : c.TipoVariavel.ToString().ToLower(); parametros.Append(variavel + " " + c.Descricao + ", "); parametrosPassar.Append(c.Descricao + ", "); } arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> RetornaPorParametros(" + stringConexaoParams + parametros.ToString().Remove(parametros.Length - 2, 2) + parametroLazyLoading + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return " + tabela.ApelidoDao + ".RetornaPorParametros(" + stringConexao + parametrosPassar.ToString().Remove(parametrosPassar.Length - 2, 2) + variavelLazyLoading + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> RetornaTodos(" + (parametroLazyLoading.Length > 0 ? stringConexaoParams + parametroLazyLoading.Substring(2) : stringConexaoParams.Replace(", ", "")) + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return " + tabela.ApelidoDao + ".RetornaTodos(" + (variavelLazyLoading.Length > 0 ? stringConexao + variavelLazyLoading.Substring(2) : stringConexao.Replace(", ", "")) + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo BLL File.Create(diretorio + "\\ORM\\BLL\\" + tabela.ArquivoBo).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\ORM\\BLL\\" + tabela.ArquivoBo)) { arquivo.WriteLine("using " + pacoteDB + ";"); arquivo.WriteLine("using " + pacoteORM + ".Library.BaseBLL;"); arquivo.WriteLine("using " + pacoteORM + ".Library.DAL;"); arquivo.WriteLine("using " + pacoteORM + ".Library.Model;"); arquivo.WriteLine("using " + pacoteORM + ".Util;"); arquivo.WriteLine("using System;"); arquivo.WriteLine("using System.Collections.Generic;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacoteORM + ".Library.BLL"); arquivo.WriteLine("{"); arquivo.WriteLine(" public class " + tabela.ClasseBo + " : Base" + tabela.ClasseBo); arquivo.WriteLine(" {"); arquivo.WriteLine(" private " + tabela.ClasseBo + "()"); arquivo.WriteLine(" { }"); arquivo.WriteLine(""); arquivo.WriteLine(" public static " + tabela.ClasseBo + " newInstance()"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (" + tabela.ApelidoBo + " == null)"); arquivo.WriteLine(" " + tabela.ApelidoBo + " = new " + tabela.ClasseBo + "();"); arquivo.WriteLine(" return (" + tabela.ClasseBo + ")" + tabela.ApelidoBo + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo Base DAL File.Create(diretorio + "\\ORM\\BaseDAL\\" + tabela.ArquivoDao).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\ORM\\BaseDAL\\" + tabela.ArquivoDao)) { bool existeLazyLoading = (tabela.colunas.Find(p => !p.ChavePrimaria && (p.Descricao.ToLower().EndsWith("_id") || p.Descricao.ToLower().StartsWith("id"))) != null); string chavePrimaria = tabela.colunas.Find(p => p.ChavePrimaria).Descricao; string chavePrimariaDB = tabela.colunas.Find(p => p.ChavePrimaria).DescricaoDB; arquivo.WriteLine("using " + pacoteDB + ";"); arquivo.WriteLine("using System;"); arquivo.WriteLine("using System.Collections.Generic;"); arquivo.WriteLine("using System.Data;"); arquivo.WriteLine("using System.Linq;"); arquivo.WriteLine("using " + pacoteORM + ".Library.Model;"); arquivo.WriteLine("using " + pacoteORM + ".Util;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacoteORM + ".Library.DAL"); arquivo.WriteLine("{"); arquivo.WriteLine(" public partial class " + tabela.ClasseDao); arquivo.WriteLine(" {"); arquivo.WriteLine(" private static Funcoes mFuncoes;"); arquivo.WriteLine(""); arquivo.WriteLine(" public " + tabela.ClasseDao + "()"); arquivo.WriteLine(" {"); arquivo.WriteLine(" mFuncoes = Funcoes.newInstance();"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" #region Parametros"); // Cria params das colunas, colunas, colunas de parametros e colunas de update StringBuilder colunas = new StringBuilder(); StringBuilder colunasParametros = new StringBuilder(); StringBuilder colunasUpdate = new StringBuilder(); foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" const string param" + c.Descricao + " = \"?" + c.DescricaoDB + "\";"); if (!c.ChavePrimaria) { colunas.Append(c.DescricaoDB).Append(","); colunasParametros.Append("?").Append(c.DescricaoDB).Append(","); colunasUpdate.Append(c.DescricaoDB).Append("=?").Append(c.DescricaoDB).Append(","); } } if (colunas.Length > 0) colunas.Remove(colunas.Length - 1, 1); if (colunasParametros.Length > 0) colunasParametros.Remove(colunasParametros.Length - 1, 1); if (colunasUpdate.Length > 0) colunasUpdate.Remove(colunasUpdate.Length - 1, 1); arquivo.WriteLine(" #endregion"); arquivo.WriteLine(""); arquivo.WriteLine(" #region Sql Commands"); arquivo.WriteLine(" const string colunas = \"" + colunas + "\";"); arquivo.WriteLine(" const string colunasParametros = \"" + colunasParametros + "\";"); arquivo.WriteLine(" const string colunasUpdate = \"" + colunasUpdate + "\";"); arquivo.WriteLine(""); arquivo.WriteLine(" const string cmdInserir = \"insert into " + tabela.Descricao + " (\" + colunas + \") values (\" + colunasParametros + \");\";"); arquivo.WriteLine(" const string cmdAlterar = \"update " + tabela.Descricao + " set \" + colunasUpdate + \" where " + chavePrimariaDB + "=?" + chavePrimariaDB + "\";"); arquivo.WriteLine(""); arquivo.WriteLine(" const string cmdExcluiPorId = \"delete from " + tabela.Descricao + " where " + chavePrimariaDB + "=?" + chavePrimariaDB + "\";"); arquivo.WriteLine(" const string cmdRetornaPorId = \"select * from " + tabela.Descricao + " where " + chavePrimariaDB + "=?" + chavePrimariaDB + "\";"); List<ColunaInfo> joins = new List<ColunaInfo>(); foreach (ColunaInfo c in tabela.colunas) { bool lista = false; bool join = false; if (CriarSelect(c, ref lista, ref join)) { if (join) joins.Add(c); string pesquisaPor = "Por" + c.Descricao; arquivo.WriteLine(" const string cmdRetorna" + pesquisaPor + " = \"select * from " + tabela.Descricao + " where " + c.DescricaoDB + "=?" + c.DescricaoDB + "\";"); } } if (joins.Count > 1) { StringBuilder parametros = new StringBuilder(); foreach (ColunaInfo c in joins) parametros.Append(c.DescricaoDB).Append("=?").Append(c.DescricaoDB).Append(" and "); arquivo.WriteLine(" const string cmdRetornaPorParametros = \"select * from " + tabela.Descricao + " where " + parametros.Remove(parametros.Length - 5, 5) + "\";"); } arquivo.WriteLine(" const string cmdRetornaTodos = \"select * from " + tabela.Descricao + ";\";"); arquivo.WriteLine(" #endregion"); arquivo.WriteLine(""); arquivo.WriteLine(" public bool Inserir(" + tabela.ClasseInfo + " _obj, " + dbTransaction + " _trans)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" long id = 0;"); arquivo.WriteLine(" bool sucesso = mFuncoes.ExecuteNonQuery(_trans, CommandType.Text, cmdInserir, New" + tabela.Classe + "Parameters(_obj, false), out id);"); arquivo.WriteLine(" if (sucesso && id > 0)"); arquivo.WriteLine(" _obj." + chavePrimaria + " = id;"); arquivo.WriteLine(" return sucesso;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public bool Atualizar(" + tabela.ClasseInfo + " _obj, " + dbTransaction + " _trans)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return mFuncoes.ExecuteNonQuery(_trans, CommandType.Text, cmdAlterar, New" + tabela.Classe + "Parameters(_obj, true));"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public bool Salvar(" + tabela.ClasseInfo + " _obj, " + dbTransaction + " _trans)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return _obj." + chavePrimaria + " == 0 ? Inserir(_obj, _trans) : Atualizar(_obj, _trans);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public bool Excluir(long " + chavePrimaria + ", " + dbTransaction + " _trans)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbParameter + "[] parms = new " + dbParameter + "[1];"); arquivo.WriteLine(" parms[0] = mFuncoes.CreateParameter(param" + chavePrimaria + ", " + dbType + ".Int64, " + chavePrimaria + ");"); arquivo.WriteLine(" return mFuncoes.ExecuteNonQuery(_trans, CommandType.Text, cmdExcluiPorId, parms);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public " + tabela.ClasseInfo + " RetornaPorId(" + stringConexaoParams + "long " + chavePrimaria + ", bool lazyLoading = false)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbParameter + "[] parms = new " + dbParameter + "[1];"); arquivo.WriteLine(" parms[0] = mFuncoes.CreateParameter(param" + chavePrimaria + ", " + dbType + ".Int64, " + chavePrimaria + ");"); arquivo.WriteLine(""); arquivo.WriteLine(" using (" + dbDataReader + " rdr = mFuncoes.ExecuteReader(" + stringConexao + "CommandType.Text, cmdRetornaPorId, parms))"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (rdr.Read())"); arquivo.WriteLine(" return New" + tabela.ClasseInfo + "(" + stringConexao + "rdr, lazyLoading);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return null;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); foreach (ColunaInfo c in tabela.colunas) { bool lista = false; bool join = false; if (CriarSelect(c, ref lista, ref join)) { string variavel = EnumDescription.GetDescription(c.TipoVariavel); string variavelDbType = "String"; if (c.TipoVariavel.Equals(TipoVariavelEnum.Int)) variavelDbType = "Int32"; else if (c.TipoVariavel.Equals(TipoVariavelEnum.Long)) variavelDbType = "Int64"; else if (c.TipoVariavel.Equals(TipoVariavelEnum.Decimal)) variavelDbType = "Decimal"; else if (c.TipoVariavel.Equals(TipoVariavelEnum.DateTime)) variavelDbType = "DateTime"; else if (c.TipoVariavel.Equals(TipoVariavelEnum.Bool)) variavelDbType = "Bool"; else if (c.TipoVariavel.Equals(TipoVariavelEnum.Imagem)) variavelDbType = "Image"; string pesquisaPor = "Por" + c.Descricao; if (!lista) { arquivo.WriteLine(" public " + tabela.ClasseInfo + " Retorna" + pesquisaPor + "(" + stringConexaoParams + variavel + " " + c.Descricao + ", bool lazyLoading = false)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbParameter + "[] parms = new " + dbParameter + "[1];"); arquivo.WriteLine(" parms[0] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + "." + variavelDbType + ", " + c.Descricao + ");"); arquivo.WriteLine(""); arquivo.WriteLine(" using (" + dbDataReader + " rdr = mFuncoes.ExecuteReader(" + stringConexao + "CommandType.Text, cmdRetorna" + pesquisaPor + ", parms))"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (rdr.Read())"); arquivo.WriteLine(" return New" + tabela.ClasseInfo + "(" + stringConexao + "rdr, lazyLoading);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return null;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> Retorna" + pesquisaPor + "(" + stringConexaoParams + variavel + " " + c.Descricao + ", bool lazyLoading = false)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbParameter + "[] parms = new " + dbParameter + "[1];"); arquivo.WriteLine(" parms[0] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + "." + variavelDbType + ", " + c.Descricao + ");"); arquivo.WriteLine(""); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> lst = new List<" + tabela.ClasseInfo + ">();"); arquivo.WriteLine(" using (" + dbDataReader + " rdr = mFuncoes.ExecuteReader(" + stringConexao + "CommandType.Text, cmdRetorna" + pesquisaPor + ", parms))"); arquivo.WriteLine(" {"); arquivo.WriteLine(" while (rdr.Read())"); arquivo.WriteLine(" lst.Add(New" + tabela.ClasseInfo + "(" + stringConexao + "rdr, lazyLoading));"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return lst;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } } if (joins.Count > 1) { StringBuilder parametros = new StringBuilder(); foreach (ColunaInfo c in joins) { string variavel = EnumDescription.GetDescription(c.TipoVariavel); parametros.Append(variavel + " " + c.Descricao + ", "); } arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> RetornaPorParametros(" + stringConexaoParams + parametros.ToString().Remove(parametros.Length - 2, 2) + ", bool lazyLoading = false)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbParameter + "[] parms = new " + dbParameter + "[" + joins.Count + "];"); int xParmsJoin = 0; foreach (ColunaInfo c in joins) { string variavel = EnumDescription.GetDescription(c.TipoVariavel); if (c.TipoVariavel.Equals(TipoVariavelEnum.Int)) arquivo.WriteLine(" parms[" + xParmsJoin + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".Int32, " + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Long)) arquivo.WriteLine(" parms[" + xParmsJoin + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".Int64, " + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Decimal)) arquivo.WriteLine(" parms[" + xParmsJoin + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".Decimal, " + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.DateTime)) arquivo.WriteLine(" parms[" + xParmsJoin + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".DateTime, " + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Bool)) arquivo.WriteLine(" parms[" + xParmsJoin + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + "." + dbTypeBoolean + ", " + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Imagem)) arquivo.WriteLine(" parms[" + xParmsJoin + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".LongBlob, mFuncoes.ConvertImageToByteArray(" + c.Descricao + "));"); else arquivo.WriteLine(" parms[" + xParmsJoin + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".String, " + c.Descricao + ");"); xParmsJoin++; } arquivo.WriteLine(""); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> lst = new List<" + tabela.ClasseInfo + ">();"); arquivo.WriteLine(" using (" + dbDataReader + " rdr = mFuncoes.ExecuteReader(" + stringConexao + "CommandType.Text, cmdRetornaPorParametros, parms))"); arquivo.WriteLine(" {"); arquivo.WriteLine(" while (rdr.Read())"); arquivo.WriteLine(" lst.Add(New" + tabela.ClasseInfo + "(" + stringConexao + "rdr, lazyLoading));"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return lst;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> RetornaTodos(" + stringConexaoParams + "bool lazyLoading = false)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> lst = new List<" + tabela.ClasseInfo + ">();"); arquivo.WriteLine(" using (" + dbDataReader + " rdr = mFuncoes.ExecuteReader(" + stringConexao + "CommandType.Text, cmdRetornaTodos, null))"); arquivo.WriteLine(" {"); arquivo.WriteLine(" while (rdr.Read())"); arquivo.WriteLine(" lst.Add(New" + tabela.ClasseInfo + "(" + stringConexao + "rdr, lazyLoading));"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return lst;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" " + dbParameter + "[] New" + tabela.Classe + "Parameters(" + tabela.ClasseInfo + " _obj, bool withId)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbParameter + "[] parms = new " + dbParameter + "[withId ? " + tabela.colunas.Count + " : " + (tabela.colunas.Count - 1) + "];"); // Adiciona os parametros de colunas que não sejam a chave primaria int xParms = 0; foreach (ColunaInfo c in tabela.colunas) { if (!c.ChavePrimaria) { if (c.TipoVariavel.Equals(TipoVariavelEnum.Int)) arquivo.WriteLine(" parms[" + xParms + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".Int32, _obj." + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Long)) arquivo.WriteLine(" parms[" + xParms + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".Int64, _obj." + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Decimal)) arquivo.WriteLine(" parms[" + xParms + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".Decimal, _obj." + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.DateTime)) arquivo.WriteLine(" parms[" + xParms + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".DateTime, _obj." + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Bool)) arquivo.WriteLine(" parms[" + xParms + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + "." + dbTypeBoolean + ", _obj." + c.Descricao + ");"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Imagem)) arquivo.WriteLine(" parms[" + xParms + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".LongBlob, mFuncoes.ConvertImageToByteArray(_obj." + c.Descricao + "));"); else arquivo.WriteLine(" parms[" + xParms + "] = mFuncoes.CreateParameter(param" + c.Descricao + ", " + dbType + ".String, _obj." + c.Descricao + ");"); xParms++; } } // Adiciona o parametro do ID arquivo.WriteLine(""); arquivo.WriteLine(" if (withId)"); arquivo.WriteLine(" parms[" + xParms + "] = mFuncoes.CreateParameter(param" + chavePrimaria + ", " + dbType + ".Int64, _obj." + chavePrimaria + ");"); arquivo.WriteLine(""); arquivo.WriteLine(" return parms;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public " + tabela.ClasseInfo + " New" + tabela.ClasseInfo + "(" + stringConexaoParams + "" + dbDataReader + " rdr, bool lazyLoading = false)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + tabela.ClasseInfo + " " + tabela.ApelidoInfo + " = new " + tabela.ClasseInfo + "();"); // Cria new info do data reader foreach (ColunaInfo c in tabela.colunas) { if (c.ChavePrimaria) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = mFuncoes.ConvertToInt64(rdr[\"" + c.DescricaoDB + "\"]);"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Int)) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = mFuncoes.ConvertToInt32(rdr[\"" + c.DescricaoDB + "\"]);"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Long)) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = mFuncoes.ConvertToInt64(rdr[\"" + c.DescricaoDB + "\"]);"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Decimal)) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = mFuncoes.ConvertToDecimal(rdr[\"" + c.DescricaoDB + "\"]);"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.DateTime)) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = mFuncoes.GetDateTimeOrNull(rdr[\"" + c.DescricaoDB + "\"]);"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Bool)) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = mFuncoes.ConvertToBoolean(rdr[\"" + c.DescricaoDB + "\"]);"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Imagem)) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = mFuncoes.ConvertToImage(rdr, \"" + c.DescricaoDB + "\");"); else arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = mFuncoes.ConvertToString(rdr[\"" + c.DescricaoDB + "\"]);"); } if (existeLazyLoading) { arquivo.WriteLine(""); arquivo.WriteLine(" if (lazyLoading)"); arquivo.WriteLine(" LazyLoadingMethod(" + stringConexao + "" + tabela.ApelidoInfo + ");"); } arquivo.WriteLine(""); arquivo.WriteLine(" return " + tabela.ApelidoInfo + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); // Cria método lazy loading if (existeLazyLoading) { arquivo.WriteLine(" void LazyLoadingMethod(" + stringConexaoParams + "" + tabela.ClasseInfo + " " + tabela.ApelidoInfo + ")"); arquivo.WriteLine(" {"); foreach (ColunaInfo c in tabela.colunas) { if (!string.IsNullOrEmpty(c.ClasseRelacionalInfo)) { if (c.AceitaNulo) { arquivo.WriteLine(" if (" + tabela.ApelidoInfo + "." + c.Descricao + " != null && " + tabela.ApelidoInfo + "." + c.Descricao + " > 0)"); arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.ClasseRelacionalApelido + " = DAOFactory.get" + c.ClasseRelacionalDao + "().RetornaPorId(" + stringConexao + "" + tabela.ApelidoInfo + "." + c.Descricao + " ?? -1);"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" if (" + tabela.ApelidoInfo + "." + c.Descricao + " > 0)"); arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.ClasseRelacionalApelido + " = DAOFactory.get" + c.ClasseRelacionalDao + "().RetornaPorId(" + stringConexao + "" + tabela.ApelidoInfo + "." + c.Descricao + ");"); arquivo.WriteLine(""); } } } arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo DAL File.Create(diretorio + "\\ORM\\DAL\\" + tabela.ArquivoDao).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\ORM\\DAL\\" + tabela.ArquivoDao)) { arquivo.WriteLine("using " + pacoteDB + ";"); arquivo.WriteLine("using System;"); arquivo.WriteLine("using System.Collections.Generic;"); arquivo.WriteLine("using System.Data;"); arquivo.WriteLine("using System.Linq;"); arquivo.WriteLine("using " + pacoteORM + ".Library.Model;"); arquivo.WriteLine("using " + pacoteORM + ".Util;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacoteORM + ".Library.DAL"); arquivo.WriteLine("{"); arquivo.WriteLine(" public partial class " + tabela.ClasseDao); arquivo.WriteLine(" {"); arquivo.WriteLine(""); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo WebService Base if (chkWebService.Checked) { File.Create(diretorio + "\\WebService\\Base" + tabela.ArquivoWebService.Replace(".cs", "")).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\WebService\\Base" + tabela.ArquivoWebService.Replace(".cs", ""))) { arquivo.WriteLine("<%@ WebService Language=\"C#\" CodeBehind=\"Base" + tabela.ArquivoWebService + "\" Class=\"" + pacoteWebService + "." + tabela.ClasseWebService + "\" %>"); arquivo.Flush(); arquivo.Close(); } File.Create(diretorio + "\\WebService\\Base" + tabela.ArquivoWebService).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\WebService\\Base" + tabela.ArquivoWebService)) { string chavePrimaria = tabela.colunas.Find(p => p.ChavePrimaria).Descricao; string chavePrimariaDB = tabela.colunas.Find(p => p.ChavePrimaria).DescricaoDB; arquivo.WriteLine("using " + pacoteDB + ";"); arquivo.WriteLine("using Newtonsoft.Json;"); arquivo.WriteLine("using System;"); arquivo.WriteLine("using System.Collections.Generic;"); arquivo.WriteLine("using System.Configuration;"); arquivo.WriteLine("using System.Data;"); arquivo.WriteLine("using System.IO;"); arquivo.WriteLine("using System.Text;"); arquivo.WriteLine("using System.Web.Configuration;"); arquivo.WriteLine("using System.Web.Script.Services;"); arquivo.WriteLine("using System.Web.Services;"); arquivo.WriteLine("using " + pacoteWebService + ".Util;"); arquivo.WriteLine("using " + pacoteORM + ".Library.BLL;"); arquivo.WriteLine("using System.Web;"); arquivo.WriteLine("using " + pacoteORM + ".Library.Model;"); arquivo.WriteLine("using " + pacoteWebService + ".Library.Model;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacoteWebService); arquivo.WriteLine("{"); arquivo.WriteLine(" /// <summary>"); arquivo.WriteLine(" /// Summary description for " + tabela.ClasseWebService); arquivo.WriteLine(" /// </summary>"); arquivo.WriteLine(" [WebService(Namespace = \"http://tempuri.org/\")]"); arquivo.WriteLine(" [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]"); arquivo.WriteLine(" [System.ComponentModel.ToolboxItem(false)]"); arquivo.WriteLine(" // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. "); arquivo.WriteLine(" // [System.Web.Script.Services.ScriptService]"); arquivo.WriteLine(" public partial class " + tabela.ClasseWebService + " : System.Web.Services.WebService"); arquivo.WriteLine(" {"); arquivo.WriteLine(" class Accessor"); arquivo.WriteLine(" {"); arquivo.WriteLine(" static Funcoes funcoes;"); arquivo.WriteLine(" internal static Funcoes Funcoes"); arquivo.WriteLine(" {"); arquivo.WriteLine(" get"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (funcoes == null)"); arquivo.WriteLine(" funcoes = Funcoes.newInstance();"); arquivo.WriteLine(" return funcoes;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception err)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw new Exception(err.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" static " + pacoteORM + ".Util.Funcoes funcoesDB;"); arquivo.WriteLine(" internal static " + pacoteORM + ".Util.Funcoes FuncoesDB"); arquivo.WriteLine(" {"); arquivo.WriteLine(" get"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (funcoesDB == null)"); arquivo.WriteLine(" funcoesDB = ORM.Util.Funcoes.newInstance();"); arquivo.WriteLine(" return funcoesDB;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception err)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw new Exception(err.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" static " + tabela.ClasseBo + " " + tabela.ApelidoBo + ";"); arquivo.WriteLine(" internal static " + tabela.ClasseBo + " " + tabela.ClasseBo); arquivo.WriteLine(" {"); arquivo.WriteLine(" get"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (" + tabela.ApelidoBo + " == null)"); arquivo.WriteLine(" " + tabela.ApelidoBo + " = " + tabela.ClasseBo + ".newInstance();"); arquivo.WriteLine(" return " + tabela.ApelidoBo + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception err)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw new Exception(err.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" private void AjustaPaginaApenasJson(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" HttpContext.Current.Response.ContentType = \"application/json\";"); arquivo.WriteLine(" HttpContext.Current.Response.Write(json);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); if (rdbSOAP.Checked) { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" public bool Salvar(" + tabela.ClasseInfo + " _obj)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return SalvarInfo(_obj);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string SalvarJson(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<" + tabela.ClasseInfo + "> info = JsonConvert.DeserializeObject<ResultWeb<" + tabela.ClasseInfo + ">>(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" sucesso = SalvarInfo(info.ResultInfo);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" { }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(sucesso);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string SalvarJsonResult(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<" + tabela.ClasseInfo + "> info = new ResultWeb<" + tabela.ClasseInfo + ">();"); arquivo.WriteLine(""); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = JsonConvert.DeserializeObject<" + tabela.ClasseInfo + ">(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" if (!SalvarInfo(info.ResultInfo))"); arquivo.WriteLine(" throw new Exception(\"Não foi possível salvar o registro.\");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(info);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void SalvarJson(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<" + tabela.ClasseInfo + "> info = JsonConvert.DeserializeObject<ResultWeb<" + tabela.ClasseInfo + ">>(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" sucesso = SalvarInfo(info.ResultInfo);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" { }"); arquivo.WriteLine(" AjustaPaginaApenasJson(sucesso.ToString());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void SalvarJsonResult(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<" + tabela.ClasseInfo + "> info = new ResultWeb<" + tabela.ClasseInfo + ">();"); arquivo.WriteLine(""); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = JsonConvert.DeserializeObject<" + tabela.ClasseInfo + ">(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" if (!SalvarInfo(info.ResultInfo))"); arquivo.WriteLine(" throw new Exception(\"Não foi possível salvar o registro.\");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" AjustaPaginaApenasJson(info.ToJson());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" private bool SalvarInfo(" + tabela.ClasseInfo + " _obj)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Accessor." + tabela.ClasseBo + ".Salvar(_obj))"); arquivo.WriteLine(" return true;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return false;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); if (rdbSOAP.Checked) { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" public bool SalvarList(List<" + tabela.ClasseInfo + "> _obj)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return SalvarListInfo(_obj);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string SalvarJsonList(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> infos = JsonConvert.DeserializeObject<List<" + tabela.ClasseInfo + ">>(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" sucesso = SalvarList(infos);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" { }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(sucesso);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string SalvarJsonListResult(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<List<" + tabela.ClasseInfo + ">> info = new ResultWeb<List<" + tabela.ClasseInfo + ">>();"); arquivo.WriteLine(""); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = JsonConvert.DeserializeObject<List<" + tabela.ClasseInfo + ">>(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" if (!SalvarList(info.ResultInfo))"); arquivo.WriteLine(" throw new Exception(\"Não foi possível salvar os registros.\");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(info);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void SalvarJsonList(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> infos = JsonConvert.DeserializeObject<List<" + tabela.ClasseInfo + ">>(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" sucesso = SalvarList(infos);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" { }"); arquivo.WriteLine(" AjustaPaginaApenasJson(sucesso.ToString());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void SalvarJsonListResult(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<List<" + tabela.ClasseInfo + ">> info = new ResultWeb<List<" + tabela.ClasseInfo + ">>();"); arquivo.WriteLine(""); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = JsonConvert.DeserializeObject<List<" + tabela.ClasseInfo + ">>(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" if (!SalvarList(info.ResultInfo))"); arquivo.WriteLine(" throw new Exception(\"Não foi possível salvar os registros.\");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" AjustaPaginaApenasJson(info.ToJson());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" private bool SalvarListInfo(List<" + tabela.ClasseInfo + "> infos)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(""); arquivo.WriteLine(" " + dbTransaction + " trans = null;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" trans = Accessor.FuncoesDB.BeginTransaction();"); arquivo.WriteLine(""); arquivo.WriteLine(" foreach (" + tabela.ClasseInfo + " t in infos)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" sucesso = Accessor." + tabela.ClasseBo + ".Salvar(t, trans);"); arquivo.WriteLine(" if (!sucesso)"); arquivo.WriteLine(" break;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" if (sucesso)"); arquivo.WriteLine(" Accessor.FuncoesDB.CommitTransaction(trans);"); arquivo.WriteLine(" else"); arquivo.WriteLine(" Accessor.FuncoesDB.RollbackTransaction(trans);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (" + dbException + " ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (trans != null)"); arquivo.WriteLine(" Accessor.FuncoesDB.RollbackTransaction(trans);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch { }"); arquivo.WriteLine(""); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (trans != null)"); arquivo.WriteLine(" Accessor.FuncoesDB.RollbackTransaction(trans);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch { }"); arquivo.WriteLine(""); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return sucesso;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); if (rdbSOAP.Checked) { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" public bool Excluir(" + tabela.ClasseInfo + " _obj)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return ExcluirInfo(_obj." + chavePrimaria + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public bool ExcluirPorId(long Id)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" sucesso = ExcluirInfo(Id);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" { }"); arquivo.WriteLine(" return sucesso;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string ExcluirJson(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<" + tabela.ClasseInfo + "> info = JsonConvert.DeserializeObject<ResultWeb<" + tabela.ClasseInfo + ">>(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" sucesso = ExcluirInfo(info.ResultInfo." + chavePrimaria + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" { }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(sucesso);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void Excluir(long Id)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" sucesso = ExcluirInfo(Id);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" { }"); arquivo.WriteLine(" AjustaPaginaApenasJson(sucesso.ToString());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void ExcluirJson(string json)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" bool sucesso = false;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<" + tabela.ClasseInfo + "> info = JsonConvert.DeserializeObject<ResultWeb<" + tabela.ClasseInfo + ">>(json);"); arquivo.WriteLine(""); arquivo.WriteLine(" sucesso = ExcluirInfo(info.ResultInfo." + chavePrimaria + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" { }"); arquivo.WriteLine(" AjustaPaginaApenasJson(sucesso.ToString());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" private bool ExcluirInfo(long Id)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Accessor." + tabela.ClasseBo + ".Excluir(Id))"); arquivo.WriteLine(" return true;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return false;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); if (rdbSOAP.Checked) { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" public " + tabela.ClasseInfo + " RetornaPorId(long Id)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".RetornaPorId(Id);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string RetornaPorIdJson(long Id)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + tabela.ClasseInfo + " info = null;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info = Accessor." + tabela.ClasseBo + ".RetornaPorId(Id);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(info);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void RetornaPorIdJson(long Id)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<" + tabela.ClasseInfo + "> info = new ResultWeb<" + tabela.ClasseInfo + ">();"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = Accessor." + tabela.ClasseBo + ".RetornaPorId(Id);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" AjustaPaginaApenasJson(info.ToJson());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } List<ColunaInfo> joins = new List<ColunaInfo>(); foreach (ColunaInfo c in tabela.colunas) { bool lista = false; bool join = false; if (CriarSelect(c, ref lista, ref join)) { if (join) joins.Add(c); string variavel = c.TipoVariavel.ToString().StartsWith("S") ? c.TipoVariavel.ToString() : c.TipoVariavel.ToString().ToLower(); if (variavel.Equals("integer")) variavel = "int"; string pesquisaPor = "Por" + c.Descricao; if (!lista) { if (rdbSOAP.Checked) { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" public " + tabela.ClasseInfo + " Retorna" + pesquisaPor + "(" + variavel + " " + c.Descricao + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".Retorna" + pesquisaPor + "(" + c.Descricao + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string Retorna" + pesquisaPor + "Json(" + variavel + " " + c.Descricao + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + tabela.ClasseInfo + " info = null;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info = Accessor." + tabela.ClasseBo + ".Retorna" + pesquisaPor + "(" + c.Descricao + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(info);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void Retorna" + pesquisaPor + "Json(" + variavel + " " + c.Descricao + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<" + tabela.ClasseInfo + "> info = new ResultWeb<" + tabela.ClasseInfo + ">();"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = Accessor." + tabela.ClasseBo + ".Retorna" + pesquisaPor + "(" + c.Descricao + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" AjustaPaginaApenasJson(info.ToJson());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } else { if (rdbSOAP.Checked) { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> Retorna" + pesquisaPor + "(" + variavel + " " + c.Descricao + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".Retorna" + pesquisaPor + "(" + c.Descricao + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string Retorna" + pesquisaPor + "Json(" + variavel + " " + c.Descricao + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> info = null;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info = Accessor." + tabela.ClasseBo + ".Retorna" + pesquisaPor + "(" + c.Descricao + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(info);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void Retorna" + pesquisaPor + "Json(" + variavel + " " + c.Descricao + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<List<" + tabela.ClasseInfo + ">> info = new ResultWeb<List<" + tabela.ClasseInfo + ">>();"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = Accessor." + tabela.ClasseBo + ".Retorna" + pesquisaPor + "(" + c.Descricao + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" AjustaPaginaApenasJson(info.ToJson());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } } } if (joins.Count > 1) { StringBuilder parametros = new StringBuilder(); StringBuilder parametrosPassar = new StringBuilder(); foreach (ColunaInfo c in joins) { string variavel = c.TipoVariavel.ToString().StartsWith("S") ? c.TipoVariavel.ToString() : c.TipoVariavel.ToString().ToLower(); parametros.Append(variavel + " " + c.Descricao + ", "); parametrosPassar.Append(c.Descricao + ", "); } if (rdbSOAP.Checked) { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> RetornaPorParametros(" + parametros.ToString().Remove(parametros.Length - 2, 2) + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return " + tabela.ApelidoDao + ".RetornaPorParametros(" + parametrosPassar.ToString().Remove(parametrosPassar.Length - 2, 2) + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string RetornaPorParametrosJson(" + parametros.ToString().Remove(parametros.Length - 2, 2) + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> info = null;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info = Accessor." + tabela.ClasseBo + ".RetornaPorParametros(" + parametrosPassar.ToString().Remove(parametrosPassar.Length - 2, 2) + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(info);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void RetornaPorParametrosJson(" + parametros.ToString().Remove(parametros.Length - 2, 2) + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<List<" + tabela.ClasseInfo + ">> info = new ResultWeb<List<" + tabela.ClasseInfo + ">>();"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = Accessor." + tabela.ClasseBo + ".RetornaPorParametros(" + parametrosPassar.ToString().Remove(parametrosPassar.Length - 2, 2) + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" AjustaPaginaApenasJson(info.ToJson());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } if (rdbSOAP.Checked) { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> RetornaTodos()"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".RetornaTodos();"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public string RetornaTodosJson()"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> info = null;"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info = Accessor." + tabela.ClasseBo + ".RetornaTodos();"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return JsonConvert.SerializeObject(info);"); arquivo.WriteLine(" }"); } else { arquivo.WriteLine(" [WebMethod]"); arquivo.WriteLine(" [ScriptMethod(ResponseFormat = ResponseFormat.Json)]"); arquivo.WriteLine(" public void RetornaTodosJson()"); arquivo.WriteLine(" {"); arquivo.WriteLine(" ResultWeb<List<" + tabela.ClasseInfo + ">> info = new ResultWeb<List<" + tabela.ClasseInfo + ">>();"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.ResultInfo = Accessor." + tabela.ClasseBo + ".RetornaTodos();"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception ex)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" info.setErrorMessage(ex.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" AjustaPaginaApenasJson(info.ToJson());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } } #endregion #region CriaArquivo WebService if (chkWebService.Checked) { File.Create(diretorio + "\\WebService\\" + tabela.ArquivoWebService.Replace(".cs", "")).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\WebService\\" + tabela.ArquivoWebService.Replace(".cs", ""))) { arquivo.WriteLine("<%@ WebService Language=\"C#\" CodeBehind=\"" + tabela.ArquivoWebService + "\" Class=\"" + pacoteWebService + "." + tabela.ClasseWebService + "\" %>"); arquivo.Flush(); arquivo.Close(); } File.Create(diretorio + "\\WebService\\" + tabela.ArquivoWebService).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\WebService\\" + tabela.ArquivoWebService)) { arquivo.WriteLine("using " + pacoteDB + ";"); arquivo.WriteLine("using Newtonsoft.Json;"); arquivo.WriteLine("using System;"); arquivo.WriteLine("using System.Collections.Generic;"); arquivo.WriteLine("using System.Configuration;"); arquivo.WriteLine("using System.Data;"); arquivo.WriteLine("using System.IO;"); arquivo.WriteLine("using System.Text;"); arquivo.WriteLine("using System.Web.Configuration;"); arquivo.WriteLine("using System.Web.Script.Services;"); arquivo.WriteLine("using System.Web.Services;"); arquivo.WriteLine("using " + pacoteWebService + ".Util;"); arquivo.WriteLine("using " + pacoteORM + ".Library.BLL;"); arquivo.WriteLine("using System.Web;"); arquivo.WriteLine("using " + pacoteORM + ".Library.Model;"); arquivo.WriteLine("using " + pacoteWebService + ".Library.Model;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacoteWebService); arquivo.WriteLine("{"); arquivo.WriteLine(" public partial class " + tabela.ClasseWebService + " : System.Web.Services.WebService"); arquivo.WriteLine(" {"); arquivo.WriteLine(""); arquivo.WriteLine(""); arquivo.WriteLine(""); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } } #endregion #region CriaArquivo COMUNICADOR Base BLL if (chkWebService.Checked && !string.IsNullOrEmpty(txtPacoteWebService.Text)) { bool newInstance = !chkComunicadorSemNewInstance.Checked; File.Create(diretorio + "\\Comunicador\\BaseBLL\\" + tabela.ArquivoBo).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\Comunicador\\BaseBLL\\" + tabela.ArquivoBo)) { arquivo.WriteLine("using " + pacoteDB + ";"); if (newInstance) arquivo.WriteLine("using " + pacote + ".Util;"); arquivo.WriteLine("using " + pacoteORM + ".BaseObjects;"); arquivo.WriteLine("using " + pacoteORM + ".Util;"); arquivo.WriteLine("using " + pacoteORM + ".Library.Model;"); arquivo.WriteLine("using " + pacoteORM + ".Library.DAL;"); arquivo.WriteLine("using System;"); arquivo.WriteLine("using System.Collections.Generic;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacote + ".Library.BLL"); arquivo.WriteLine("{"); arquivo.WriteLine(" public partial class " + tabela.ClasseBo); arquivo.WriteLine(" {"); arquivo.WriteLine(" class Accessor"); arquivo.WriteLine(" {"); arquivo.WriteLine(" static Funcoes funcoes;"); arquivo.WriteLine(" internal static Funcoes Funcoes"); arquivo.WriteLine(" {"); arquivo.WriteLine(" get"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (funcoes == null)"); arquivo.WriteLine(" funcoes = " + (newInstance ? " Funcoes.newInstance();" : "new Funcoes();")); arquivo.WriteLine(" return funcoes;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception err)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw new Exception(err.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" static " + pacoteORM + ".Util.Funcoes funcoesDB;"); arquivo.WriteLine(" internal static " + pacoteORM + ".Util.Funcoes FuncoesDB"); arquivo.WriteLine(" {"); arquivo.WriteLine(" get"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (funcoesDB == null)"); arquivo.WriteLine(" funcoesDB = ORM.Util.Funcoes.newInstance();"); arquivo.WriteLine(" return funcoesDB;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception err)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw new Exception(err.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" static " + pacoteORM + ".Library.BLL." + tabela.ClasseBo + " " + tabela.ApelidoBo + ";"); arquivo.WriteLine(" internal static " + pacoteORM + ".Library.BLL." + tabela.ClasseBo + " " + tabela.ClasseBo); arquivo.WriteLine(" {"); arquivo.WriteLine(" get"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (" + tabela.ApelidoBo + " == null)"); arquivo.WriteLine(" " + tabela.ApelidoBo + " = " + pacoteORM + ".Library.BLL." + tabela.ClasseBo + ".newInstance();"); arquivo.WriteLine(" return " + tabela.ApelidoBo + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception err)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw new Exception(err.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" static " + tabela.Classe + "Web." + tabela.Classe + "SoapClient _" + tabela.Classe + "Web;"); arquivo.WriteLine(" internal static " + tabela.Classe + "Web." + tabela.Classe + "SoapClient " + tabela.Classe + "Web"); arquivo.WriteLine(" {"); arquivo.WriteLine(" get"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (_" + tabela.Classe + "Web == null)"); arquivo.WriteLine(" _" + tabela.Classe + "Web = new " + tabela.Classe + "Web." + tabela.Classe + "SoapClient();"); arquivo.WriteLine(" return _" + tabela.Classe + "Web;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch (Exception err)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw new Exception(err.Message);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public bool Salvar(" + tabela.ClasseInfo + " _obj, " + dbTransaction + " _trans)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" return Accessor." + tabela.Classe + "Web.Salvar(InfoLocalToInfoWeb(_obj));"); arquivo.WriteLine(" else"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".Salvar(_obj, _trans);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" public bool Salvar(" + tabela.ClasseInfo + " _obj)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" return Accessor." + tabela.Classe + "Web.Salvar(InfoLocalToInfoWeb(_obj));"); arquivo.WriteLine(" else"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbTransaction + " trans = Accessor.FuncoesDB.BeginTransaction();"); arquivo.WriteLine(" bool sucesso = Salvar(_obj, trans);"); arquivo.WriteLine(" if (sucesso)"); arquivo.WriteLine(" Accessor.FuncoesDB.CommitTransaction(trans);"); arquivo.WriteLine(" else"); arquivo.WriteLine(" Accessor.FuncoesDB.RollbackTransaction(trans);"); arquivo.WriteLine(" return sucesso;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public bool Excluir(long Id, " + dbTransaction + " _trans)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" return Accessor." + tabela.Classe + "Web.ExcluirPorId(Id);"); arquivo.WriteLine(" else"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".Excluir(Id, _trans);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" public bool Excluir(long Id)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" return Accessor." + tabela.Classe + "Web.ExcluirPorId(Id);"); arquivo.WriteLine(" else"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + dbTransaction + " trans = Accessor.FuncoesDB.BeginTransaction();"); arquivo.WriteLine(" bool sucesso = Excluir(Id, trans);"); arquivo.WriteLine(" if (sucesso)"); arquivo.WriteLine(" Accessor.FuncoesDB.CommitTransaction(trans);"); arquivo.WriteLine(" else"); arquivo.WriteLine(" Accessor.FuncoesDB.RollbackTransaction(trans);"); arquivo.WriteLine(" return sucesso;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public " + tabela.ClasseInfo + " RetornaPorId(long Id, bool lazyLoading = false)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" return InfoLocalFromInfoWeb(Accessor." + tabela.Classe + "Web.RetornaPorId(Id));"); arquivo.WriteLine(" else"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".RetornaPorId(Id, lazyLoading);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); string parametroLazyLoading = string.Empty; string variavelLazyLoading = string.Empty; List<ColunaInfo> joins = new List<ColunaInfo>(); foreach (ColunaInfo c in tabela.colunas) { bool lista = false; bool join = false; if (CriarSelect(c, ref lista, ref join)) { if (join) { joins.Add(c); parametroLazyLoading = ", bool lazyLoading = false"; variavelLazyLoading = ", lazyLoading"; } string variavel = c.TipoVariavel.ToString().StartsWith("S") ? c.TipoVariavel.ToString() : c.TipoVariavel.ToString().ToLower(); if (variavel.Equals("integer")) variavel = "int"; string pesquisaPor = "Por" + c.Descricao; if (!lista) { arquivo.WriteLine(" public " + tabela.ClasseInfo + " Retorna" + pesquisaPor + "(" + variavel + " " + c.Descricao + parametroLazyLoading + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" return InfoLocalFromInfoWeb(Accessor." + tabela.Classe + "Web.Retorna" + pesquisaPor + "(" + c.Descricao + "));"); arquivo.WriteLine(" else"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".Retorna" + pesquisaPor + "(" + c.Descricao + variavelLazyLoading + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> Retorna" + pesquisaPor + "(" + variavel + " " + c.Descricao + parametroLazyLoading + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.Classe + "Web." + tabela.ClasseInfo + "> lst = new List<" + tabela.Classe + "Web." + tabela.ClasseInfo + ">(Accessor." + tabela.Classe + "Web.Retorna" + pesquisaPor + "(" + c.Descricao + "));"); arquivo.WriteLine(""); arquivo.WriteLine(" return ListLocalFromListWeb(lst);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" else"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".Retorna" + pesquisaPor + "(" + c.Descricao + variavelLazyLoading + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } } if (joins.Count > 1) { StringBuilder parametros = new StringBuilder(); StringBuilder parametrosPassar = new StringBuilder(); foreach (ColunaInfo c in joins) { string variavel = c.TipoVariavel.ToString().StartsWith("S") ? c.TipoVariavel.ToString() : c.TipoVariavel.ToString().ToLower(); parametros.Append(variavel + " " + c.Descricao + ", "); parametrosPassar.Append(c.Descricao + ", "); } arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> RetornaPorParametros(" + parametros.ToString().Remove(parametros.Length - 2, 2) + parametroLazyLoading + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.Classe + "Web." + tabela.ClasseInfo + "> lst = new List<" + tabela.Classe + "Web." + tabela.ClasseInfo + ">(Accessor." + tabela.Classe + "Web.RetornaPorParametros(" + parametrosPassar.ToString().Remove(parametrosPassar.Length - 2, 2) + ");"); arquivo.WriteLine(""); arquivo.WriteLine(" return ListLocalFromListWeb(lst);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" else"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".RetornaPorParametros(" + parametrosPassar.ToString().Remove(parametrosPassar.Length - 2, 2) + variavelLazyLoading + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" public List<" + tabela.ClasseInfo + "> RetornaTodos(" + (parametroLazyLoading.Length > 0 ? parametroLazyLoading.Substring(2) : "") + ")"); arquivo.WriteLine(" {"); arquivo.WriteLine(" try"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (Configuracoes.WebService)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.Classe + "Web." + tabela.ClasseInfo + "> lst = new List<" + tabela.Classe + "Web." + tabela.ClasseInfo + ">(Accessor." + tabela.Classe + "Web.RetornaTodos());"); arquivo.WriteLine(""); arquivo.WriteLine(" return ListLocalFromListWeb(lst);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" else"); arquivo.WriteLine(" return Accessor." + tabela.ClasseBo + ".RetornaTodos(" + (variavelLazyLoading.Length > 0 ? variavelLazyLoading.Substring(2) : "") + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" catch"); arquivo.WriteLine(" {"); arquivo.WriteLine(" throw;"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" protected List<" + tabela.ClasseInfo + "> ListLocalFromListWeb(List<" + tabela.Classe + "Web." + tabela.ClasseInfo + "> lst)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" List<" + tabela.ClasseInfo + "> lstFinal = new List<" + tabela.ClasseInfo + ">();"); arquivo.WriteLine(""); arquivo.WriteLine(" foreach (" + tabela.Classe + "Web." + tabela.ClasseInfo + " p in lst)"); arquivo.WriteLine(" lstFinal.Add(InfoLocalFromInfoWeb(p));"); arquivo.WriteLine(""); arquivo.WriteLine(" return lstFinal;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" protected " + tabela.Classe + "Web." + tabela.ClasseInfo + " InfoLocalToInfoWeb(" + tabela.ClasseInfo + " info)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + tabela.Classe + "Web." + tabela.ClasseInfo + " " + tabela.ApelidoInfo + " = new " + tabela.Classe + "Web." + tabela.ClasseInfo + "();"); arquivo.WriteLine(""); // Cria new info do data reader foreach (ColunaInfo c in tabela.colunas) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = info." + c.Descricao + ";"); arquivo.WriteLine(""); arquivo.WriteLine(" return " + tabela.ApelidoInfo + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" protected " + tabela.ClasseInfo + " InfoLocalFromInfoWeb(" + tabela.Classe + "Web." + tabela.ClasseInfo + " info)"); arquivo.WriteLine(" {"); arquivo.WriteLine(" " + tabela.ClasseInfo + " " + tabela.ApelidoInfo + " = new " + tabela.ClasseInfo + "();"); arquivo.WriteLine(""); // Cria new info do data reader foreach (ColunaInfo c in tabela.colunas) arquivo.WriteLine(" " + tabela.ApelidoInfo + "." + c.Descricao + " = info." + c.Descricao + ";"); arquivo.WriteLine(""); arquivo.WriteLine(" return " + tabela.ApelidoInfo + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } } #endregion #region CriaArquivo COMUNICADOR BLL if (chkWebService.Checked && !string.IsNullOrEmpty(txtPacoteWebService.Text)) { bool newInstance = !chkComunicadorSemNewInstance.Checked; File.Create(diretorio + "\\Comunicador\\BLL\\" + tabela.ArquivoBo).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\Comunicador\\BLL\\" + tabela.ArquivoBo)) { arquivo.WriteLine("using " + pacoteDB + ";"); if (newInstance) arquivo.WriteLine("using " + pacote + ".Util;"); arquivo.WriteLine("using " + pacoteORM + ".BaseObjects;"); arquivo.WriteLine("using " + pacoteORM + ".Util;"); arquivo.WriteLine("using " + pacoteORM + ".Library.Model;"); arquivo.WriteLine("using " + pacoteORM + ".Library.DAL;"); arquivo.WriteLine("using System;"); arquivo.WriteLine("using System.Collections.Generic;"); arquivo.WriteLine(""); arquivo.WriteLine("namespace " + pacote + ".Library.BLL"); arquivo.WriteLine("{"); arquivo.WriteLine(" public partial class " + tabela.ClasseBo); arquivo.WriteLine(" {"); arquivo.WriteLine(""); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } } #endregion if (rdbFuncoesWebService.Checked) { #region CriaArquivo Funcoes Web File.Create(diretorio + "\\Util\\Funcoes.cs").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\Util\\Funcoes.cs")) { arquivo.Write(Library.ArquivoFuncoesWeb.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion } else if (rdbFuncoesForm.Checked) { #region CriaArquivo Funcoes ADO.NET Form File.Create(diretorio + "\\Util\\Funcoes.cs").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\Util\\Funcoes.cs")) { arquivo.Write(Library.ArquivoFuncoesADONetForm.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion } #region CriaArquivo BaseInfo File.Create(diretorio + "\\BaseObjects\\BaseInfo.cs").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\BaseObjects\\BaseInfo.cs")) { arquivo.Write(Library.ArquivoBaseInfo.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo Enumeradores File.Create(diretorio + "\\ConstantValues\\Enumeradores.cs").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\ConstantValues\\Enumeradores.cs")) { arquivo.Write(Library.ArquivoEnumeradores.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion } if (tabelas.Count > 0) { #region CriaArquivo DAOFactory File.Create(diretorio + "\\ORM\\DAL\\DAOFactory.cs").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\ORM\\DAL\\DAOFactory.cs")) { arquivo.WriteLine("namespace " + pacoteORM + ".Library.DAL"); arquivo.WriteLine("{"); arquivo.WriteLine(" public class DAOFactory"); arquivo.WriteLine(" {"); foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" private static " + t.ClasseDao + " " + t.ApelidoDao + ";"); } arquivo.WriteLine(""); foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" public static " + t.ClasseDao + " get" + t.ClasseDao + "()"); arquivo.WriteLine(" {"); arquivo.WriteLine(" if (" + t.ApelidoDao + " == null)"); arquivo.WriteLine(" " + t.ApelidoDao + " = new " + t.ClasseDao + "();"); arquivo.WriteLine(" return " + t.ApelidoDao + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion } } catch (Exception ex) { throw new Exception("Não foi possível criar os arquivos das tabelas.\n" + ex.Message); } return true; }
bool CriarArquivos(string diretorio) { try { LimparDiretorio(diretorio); if (!Directory.Exists(diretorio)) Directory.CreateDirectory(diretorio); if (!Directory.Exists(diretorio + "\\model")) Directory.CreateDirectory(diretorio + "\\model"); if (!Directory.Exists(diretorio + "\\basemodel")) Directory.CreateDirectory(diretorio + "\\basemodel"); if (!Directory.Exists(diretorio + "\\provider")) Directory.CreateDirectory(diretorio + "\\provider"); if (!Directory.Exists(diretorio + "\\basedal")) Directory.CreateDirectory(diretorio + "\\basedal"); if (!Directory.Exists(diretorio + "\\dal")) Directory.CreateDirectory(diretorio + "\\dal"); if (!Directory.Exists(diretorio + "\\data")) Directory.CreateDirectory(diretorio + "\\data"); string comando = @" SELECT *, 0 as ordenar FROM INFORMATION_SCHEMA.`TABLES` WHERE TABLE_SCHEMA = ?TABLE_NAME AND TABLE_TYPE = 'BASE TABLE';"; MySqlParameter[] parms = new MySqlParameter[1]; parms[0] = Accessor.Funcoes.CreateParameter("?TABLE_NAME", MySqlDbType.VarChar, cmbDatabase.Text); DataTable dtTablesOrigin = Accessor.Funcoes.FillDataTable(CommandType.Text, comando, parms); if (File.Exists(diretorio + "\\indice.txt")) File.Delete(diretorio + "\\indice.txt"); using (File.Create(diretorio + "\\indice.txt")) { } int quantidadeInicio = 4; int quantidadeTabelas = 0; int quantidadeInserts = 3; int quantidadeAtualiza = 20; int quantidadeConfigModuloProcedures = 3; int totalBarraProgress = 0; List<TabelaInfo> tabelas = new List<TabelaInfo>(); foreach (DataRow r in dtTablesOrigin.Rows) { string nomeTabela = r["table_name"].ToString().ToLower(); TabelaInfo tabela = new TabelaInfo(); tabela.Descricao = nomeTabela; tabelas.Add(tabela); string recoverSelectColumn = @" SELECT *, if (column_key = 'PRI', '9999', '') as ordernarKey FROM INFORMATION_SCHEMA.`COLUMNS` WHERE TABLE_NAME = ?TABLE_NAME AND TABLE_SCHEMA = ?TABLE_SCHEMA ORDER BY ordernarKey desc, ORDINAL_POSITION;"; parms = new MySqlParameter[2]; parms[0] = Accessor.Funcoes.CreateParameter("?TABLE_NAME", MySqlDbType.VarChar, nomeTabela); parms[1] = Accessor.Funcoes.CreateParameter("?TABLE_SCHEMA", MySqlDbType.VarChar, cmbDatabase.Text); StringBuilder _columns = new StringBuilder(); List<string> primaryKeys = new List<string>(); ColunaInfo coluna = null; using (MySqlDataReader rdr = Accessor.Funcoes.ExecuteReader(CommandType.Text, recoverSelectColumn, parms)) { while (rdr.Read()) { coluna = new ColunaInfo(); coluna.Descricao = rdr["column_name"].ToString(); coluna.Tipo = rdr["column_type"].ToString(); coluna.Default = rdr["column_default"].ToString(); coluna.Comentario = rdr["column_comment"].ToString(); coluna.ChavePrimaria = rdr["column_key"].ToString().ToLower().Contains("pri"); coluna.AceitaNulo = rdr["is_nullable"].ToString().ToLower().Contains("yes"); coluna.AutoIncremento = rdr["extra"].ToString().ToLower().Contains("auto_increment"); coluna.Index = rdr["column_key"].ToString().ToLower().Contains("mul"); tabela.colunas.Add(coluna); if (rdr["column_key"].ToString().ToLower().Contains("pri")) primaryKeys.Add(rdr["column_name"].ToString()); } } using (TextWriter arquivoIndice = File.AppendText(diretorio + "\\indice.txt")) { arquivoIndice.WriteLine(""); quantidadeTabelas++; arquivoIndice.Flush(); arquivoIndice.Close(); } #region CriaArquivo Base Model File.Create(diretorio + "\\basemodel\\Base" + tabela.ArquivoModel).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\basemodel\\Base" + tabela.ArquivoModel)) { bool existeLazyLoading = (tabela.colunas.Find(p => p.Descricao != "id" && p.Descricao.EndsWith("_id")) != null); bool existeComment = (tabela.colunas.Find(p => !string.IsNullOrEmpty(p.Comentario)) != null); arquivo.WriteLine("package " + txtPacote.Text + ".model;"); arquivo.WriteLine(""); arquivo.WriteLine("import android.content.ContentValues;"); arquivo.WriteLine("import android.content.Context;"); arquivo.WriteLine("import android.database.Cursor;"); if (existeComment) { arquivo.WriteLine(""); arquivo.WriteLine("import com.google.gson.annotations.SerializedName;"); } arquivo.WriteLine(""); arquivo.WriteLine("import java.io.Serializable;"); arquivo.WriteLine("import java.util.Date;"); arquivo.WriteLine(""); arquivo.WriteLine("import " + txtPacote.Text + ".dal.DAOFactory;"); arquivo.WriteLine(""); arquivo.WriteLine("public abstract class Base" + tabela.Classe + " extends BaseObject {"); arquivo.WriteLine(""); arquivo.WriteLine(" public static final String TABLE_NAME = \"" + tabela.Descricao + "\";"); arquivo.WriteLine(""); // Cria variaveis privadas foreach (ColunaInfo c in tabela.colunas) { if (!c.ObjetoBase) { if (!string.IsNullOrEmpty(c.Comentario) && c.Comentario != "notjson") arquivo.WriteLine(" @SerializedName(\"" + c.Comentario + "\")"); arquivo.WriteLine(" private " + c.TipoVariavel.ToString() + " " + c.Descricao + ";"); } } // Cria variaveis de classes relacionais if (existeLazyLoading) { arquivo.WriteLine(""); foreach (ColunaInfo c in tabela.colunas) { if (!string.IsNullOrEmpty(c.ClasseRelacional)) { if (existeComment) arquivo.WriteLine(" @SerializedName(\"" + c.ClasseRelacionalApelido + "Info\")"); arquivo.WriteLine(" private " + c.ClasseRelacional + " " + c.ClasseRelacionalApelido + ";"); } } } arquivo.WriteLine(""); arquivo.WriteLine(" public Base" + tabela.Classe + "(Base" + tabela.Classe + " t) {"); arquivo.WriteLine(" super();"); // Cria variaveis no construtor da classe foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" this." + c.Descricao + " = t." + c.Descricao + ";"); } // Cria variaveis de classes relacionais no construtor da classe if (existeLazyLoading) { foreach (ColunaInfo c in tabela.colunas) { if (!string.IsNullOrEmpty(c.ClasseRelacional)) arquivo.WriteLine(" this." + c.ClasseRelacionalApelido + " = t." + c.ClasseRelacionalApelido + ";"); } } arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public Base" + tabela.Classe + "() {"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); // Cria get e set foreach (ColunaInfo c in tabela.colunas) { if (!c.ObjetoBase) { arquivo.WriteLine(" public " + c.TipoVariavel.ToString() + " " + c.DescricaoGet + "() {"); arquivo.WriteLine(" return " + c.Descricao + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public void " + c.DescricaosSet + "(" + c.TipoVariavel.ToString() + " " + c.Descricao + ") {"); arquivo.WriteLine(" this." + c.Descricao + " = " + c.Descricao + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } // Cria get do lazy loading if (existeLazyLoading) { foreach (ColunaInfo c in tabela.colunas) { if (!string.IsNullOrEmpty(c.ClasseRelacional)) { arquivo.WriteLine(" public void set" + c.ClasseRelacional + "(" + c.ClasseRelacional + " " + c.ClasseRelacionalApelido + ") {"); arquivo.WriteLine(" this." + c.ClasseRelacionalApelido + " = " + c.ClasseRelacionalApelido + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public " + c.ClasseRelacional + " get" + c.ClasseRelacional + "() {"); arquivo.WriteLine(" return " + c.ClasseRelacionalApelido + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } } arquivo.WriteLine(" public ContentValues values() {"); arquivo.WriteLine(" ContentValues values = new ContentValues();"); // Cria content values foreach (ColunaInfo c in tabela.colunas) { if (!c.TipoVariavel.Equals(TipoVariavelEnum.Date)) { if (!c.Descricao.Equals("id")) { arquivo.WriteLine(" if (" + c.Descricao + " != null) {"); arquivo.WriteLine(" values.put(Columns." + c.DescricaoReferencia + ", " + c.Descricao + ");"); arquivo.WriteLine(" }"); } } else { switch (c.Descricao) { case "datahora_criacao": arquivo.WriteLine(" if (datahora_criacao == null) {"); arquivo.WriteLine(" datahora_criacao = new Date(System.currentTimeMillis());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" values.put(Columns.DATAHORA_CRIACAO, datahora_criacao.getTime());"); break; case "datahora_alteracao": arquivo.WriteLine(" if (id != null) {"); arquivo.WriteLine(" datahora_alteracao = new Date(System.currentTimeMillis());"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" if (datahora_alteracao != null) {"); arquivo.WriteLine(" values.put(Columns.DATAHORA_ALTERACAO, datahora_alteracao.getTime());"); arquivo.WriteLine(" }"); break; default: arquivo.WriteLine(" if (" + c.Descricao + " != null) {"); arquivo.WriteLine(" values.put(Columns." + c.DescricaoReferencia + ", " + c.Descricao + ".getTime());"); arquivo.WriteLine(" }"); break; } } arquivo.WriteLine(""); } arquivo.WriteLine(" return values;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" protected void loadFromCursor(Cursor c, boolean lazyLoading, Context context) {"); arquivo.WriteLine(" clear();"); arquivo.WriteLine(""); // Cria load do cursor bool primeiroLoop = true; foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" " + (primeiroLoop ? "int " : "") + "index = c.getColumnIndex(Columns." + c.DescricaoReferencia + ");"); arquivo.WriteLine(" if (index > -1 && !c.isNull(index)) {"); if (c.TipoVariavel.Equals(TipoVariavelEnum.Integer)) arquivo.WriteLine(" " + c.DescricaosSet + "(c.getInt(index));"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Date)) arquivo.WriteLine(" " + c.DescricaosSet + "(new Date((c.getLong(index))));"); else if (c.TipoVariavel.Equals(TipoVariavelEnum.Boolean)) arquivo.WriteLine(" " + c.DescricaosSet + "(c.getString(index).contains(\"1\"));"); else arquivo.WriteLine(" " + c.DescricaosSet + "(c.get" + c.TipoVariavel.ToString() + "(index));"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); primeiroLoop = false; } if (existeLazyLoading) { arquivo.WriteLine(" if (lazyLoading)"); arquivo.WriteLine(" lazyLoading(context);"); } arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" protected void clear() {"); // Cria metodo clear foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" " + c.DescricaosSet + "(null);"); } // Cria clear dos lazy loading if (existeLazyLoading) { foreach (ColunaInfo c in tabela.colunas) if (!string.IsNullOrEmpty(c.ClasseRelacional)) arquivo.WriteLine(" " + c.ClasseRelacionalApelido + " = null;"); } arquivo.WriteLine(" }"); arquivo.WriteLine(""); // Cria método lazy loading if (existeLazyLoading) { arquivo.WriteLine(" protected void lazyLoading(Context context) {"); foreach (ColunaInfo c in tabela.colunas) { if (!string.IsNullOrEmpty(c.ClasseRelacional)) { arquivo.WriteLine(" if (" + c.Descricao + " != null)"); arquivo.WriteLine(" " + c.ClasseRelacionalApelido + " = DAOFactory.get" + c.ClasseRelacional + "DAO(context).get" + c.ClasseRelacional + "ById(" + c.Descricao + ");"); arquivo.WriteLine(""); } } arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" public static final class Columns {"); // Cria referencia Columns foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" public static final String " + c.DescricaoReferencia + " = \"" + c.DescricaoDB + "\";"); } arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public static final class FullColumns {"); // Cria referencia Columns foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" public static final String " + c.DescricaoReferencia + " = TABLE_NAME + \".\" + Columns." + c.DescricaoReferencia + ";"); } arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public static final class Aliases {"); // Cria referencia Columns foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" public static final String " + c.DescricaoReferencia + " = TABLE_NAME + \"_\" + Columns." + c.DescricaoReferencia + ";"); } arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo Model File.Create(diretorio + "\\model\\" + tabela.ArquivoModel).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\model\\" + tabela.ArquivoModel)) { bool existeLazyLoading = (tabela.colunas.Find(p => p.Descricao != "id" && p.Descricao.EndsWith("_id")) != null); arquivo.WriteLine("package " + txtPacote.Text + ".model;"); arquivo.WriteLine(""); arquivo.WriteLine("import android.content.Context;"); arquivo.WriteLine("import android.database.Cursor;"); arquivo.WriteLine(""); arquivo.WriteLine("import " + txtPacote.Text + ".basemodel.Base" + tabela.Classe + ";"); arquivo.WriteLine(""); arquivo.WriteLine("public class " + tabela.Classe + " extends Base" + tabela.Classe + " {"); arquivo.WriteLine(""); arquivo.WriteLine(" public void loadFromCursor(Cursor c) {"); arquivo.WriteLine(" loadFromCursor(c, false, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public void loadFromCursor(Cursor c, boolean lazyLoading, Context context) {"); arquivo.WriteLine(" super.loadFromCursor(c, lazyLoading, context);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public void clear() {"); arquivo.WriteLine(" super.clear();"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); if (existeLazyLoading) { arquivo.WriteLine(" public void lazyLoading(Context context) {"); arquivo.WriteLine(" super.lazyLoading(context);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo Handler File.Create(diretorio + "\\provider\\" + tabela.ArquivoHandler).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\provider\\" + tabela.ArquivoHandler)) { arquivo.WriteLine("package " + txtPacote.Text + ".provider;"); arquivo.WriteLine(""); arquivo.WriteLine("import android.content.ContentUris;"); arquivo.WriteLine("import android.content.ContentValues;"); arquivo.WriteLine("import android.content.Context;"); arquivo.WriteLine("import android.database.Cursor;"); arquivo.WriteLine("import android.net.Uri;"); arquivo.WriteLine(""); arquivo.WriteLine("import " + txtPacote.Text + ".model." + tabela.Classe + ";"); arquivo.WriteLine(""); arquivo.WriteLine("public class " + tabela.Classe + "Handler extends DataHandler {"); arquivo.WriteLine(""); arquivo.WriteLine(" protected " + tabela.Classe + "Handler(Context context) {"); arquivo.WriteLine(" super(context);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public Cursor query(int code, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {"); arquivo.WriteLine(" String[] columns = {"); foreach (ColunaInfo c in tabela.colunas) { arquivo.WriteLine(" " + tabela.Classe + ".FullColumns." + c.DescricaoReferencia + ","); } arquivo.WriteLine(" };"); arquivo.WriteLine(""); arquivo.WriteLine(" if (code == DataProvider." + tabela.ProviderCODE + ") {"); arquivo.WriteLine(" return db().query(" + tabela.Classe + ".TABLE_NAME, projection != null ? projection : columns, selection, selectionArgs, null, null, (sortOrder != null ? sortOrder : " + DefineOrdenacao(tabela) + "));"); arquivo.WriteLine(""); arquivo.WriteLine(" } else if (code == DataProvider." + tabela.ProviderRAW + ") {"); arquivo.WriteLine(" return db().rawQuery(selection, selectionArgs);"); arquivo.WriteLine(""); arquivo.WriteLine(" } else {"); arquivo.WriteLine(" long id = ContentUris.parseId(uri);"); arquivo.WriteLine(" return db().query(" + tabela.Classe + ".TABLE_NAME, projection != null ? projection : columns, " + tabela.Classe + ".Columns._ID + \" = ? \", new String[]{String.valueOf(id)}, null, null, " + tabela.Classe + ".Columns._ID);"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public Cursor rawQuery(String selection, String[] selectionArgs) {"); arquivo.WriteLine(" return db().rawQuery(selection, selectionArgs);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public Uri insert(int code, Uri uri, ContentValues values) {"); arquivo.WriteLine(" if (code == DataProvider." + tabela.ProviderID + " || code == DataProvider." + tabela.ProviderRAW + ") {"); arquivo.WriteLine(" throw new InvalidURIException(uri);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" long id = db().insert(" + tabela.Classe + ".TABLE_NAME, null, values);"); arquivo.WriteLine(" return ContentUris.withAppendedId(uri, id);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public int update(int code, Uri uri, ContentValues values, String selection, String[] selectionArgs) {"); arquivo.WriteLine(" if (code == DataProvider." + tabela.ProviderCODE + " || code == DataProvider." + tabela.ProviderRAW + ") {"); arquivo.WriteLine(" throw new InvalidURIException(uri);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" long id = ContentUris.parseId(uri);"); arquivo.WriteLine(" return db().update(" + tabela.Classe + ".TABLE_NAME, values, " + tabela.Classe + ".Columns._ID + \" = ? \", new String[]{String.valueOf(id)});"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public int delete(int code, Uri uri, String selection, String[] selectionArgs) {"); arquivo.WriteLine(" if (code == DataProvider." + tabela.ProviderCODE + " || code == DataProvider." + tabela.ProviderRAW + ") {"); arquivo.WriteLine(" throw new InvalidURIException(uri);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" long id = ContentUris.parseId(uri);"); arquivo.WriteLine(" return db().delete(" + tabela.Classe + ".TABLE_NAME, " + tabela.Classe + ".Columns._ID + \" = ? \", new String[]{String.valueOf(id)});"); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo Base DAO File.Create(diretorio + "\\basedal\\Base" + tabela.ArquivoDAO).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\basedal\\Base" + tabela.ArquivoDAO)) { arquivo.WriteLine("package " + txtPacote.Text + ".basedal;"); arquivo.WriteLine(""); arquivo.WriteLine("import android.content.ContentUris;"); arquivo.WriteLine(chkVersaoSuporte.Checked ? "import android.support.v4.content.CursorLoader;" : "import android.content.CursorLoader;"); arquivo.WriteLine("import android.database.Cursor;"); arquivo.WriteLine("import android.net.Uri;"); arquivo.WriteLine("import android.os.Bundle;"); arquivo.WriteLine(""); arquivo.WriteLine("import java.util.ArrayList;"); arquivo.WriteLine("import java.util.List;"); arquivo.WriteLine(""); arquivo.WriteLine("import " + txtPacote.Text + ".dal.DAO;"); arquivo.WriteLine("import " + txtPacote.Text + ".model." + tabela.Classe + ";"); arquivo.WriteLine("import " + txtPacote.Text + ".provider.DataProvider;"); arquivo.WriteLine(""); arquivo.WriteLine("public abstract class Base" + tabela.Classe + "DAO extends DAO {"); arquivo.WriteLine(""); arquivo.WriteLine(" public Base" + tabela.Classe + "DAO() {"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public boolean salvar(" + tabela.Classe + " " + tabela.Apelido + ") {"); arquivo.WriteLine(" return " + tabela.Apelido + ".getId() != null && " + tabela.Apelido + ".getId() > 0"); arquivo.WriteLine(" ? update(" + tabela.Apelido + ")"); arquivo.WriteLine(" : insert(" + tabela.Apelido + ");"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" private boolean insert(" + tabela.Classe + " " + tabela.Apelido + ") {"); arquivo.WriteLine(" Uri newUri = contentResolver().insert(DataProvider." + tabela.CONTENT_URI + ", " + tabela.Apelido + ".values()); "); arquivo.WriteLine(""); arquivo.WriteLine(" long id = ContentUris.parseId(newUri);"); arquivo.WriteLine(" " + tabela.Apelido + ".setId(id);"); arquivo.WriteLine(" return id > 0;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" private boolean update(" + tabela.Classe + " " + tabela.Apelido + ") {"); arquivo.WriteLine(" Uri uri = ContentUris.withAppendedId(DataProvider." + tabela.CONTENT_URI + ", " + tabela.Apelido + ".getId());"); arquivo.WriteLine(" return contentResolver().update(uri, " + tabela.Apelido + ".values(), null, null) > 0;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public int delete(" + tabela.Classe + " " + tabela.Apelido + ") {"); arquivo.WriteLine(" Uri uri = ContentUris.withAppendedId(DataProvider." + tabela.CONTENT_URI + ", " + tabela.Apelido + ".getId());"); arquivo.WriteLine(" return contentResolver().delete(uri, null, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public void deleteAll() {"); arquivo.WriteLine(" rawQuery(DataProvider." + tabela.CONTENT_URI_RAW + ", \"DELETE FROM \" + " + tabela.Classe + ".TABLE_NAME, null);"); arquivo.WriteLine(" rawQuery(DataProvider." + tabela.CONTENT_URI_RAW + ", \"UPDATE SQLITE_SEQUENCE SET seq = 0 WHERE name = '\" + " + tabela.Classe + ".TABLE_NAME + \"'\", null);"); arquivo.WriteLine(" rawQuery(DataProvider." + tabela.CONTENT_URI_RAW + ", \"VACUUM\", null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public " + tabela.Classe + " get" + tabela.Classe + "ById(long id, boolean... lazyLoading) {"); arquivo.WriteLine(" " + tabela.Classe + " " + tabela.Apelido + " = new " + tabela.Classe + "();"); arquivo.WriteLine(""); arquivo.WriteLine(" Cursor c = get" + tabela.Classe + "ByIdLoader(id).loadInBackground();"); arquivo.WriteLine(" try {"); arquivo.WriteLine(" if (c != null && c.moveToFirst())"); arquivo.WriteLine(" " + tabela.Apelido + ".loadFromCursor(c, lazyLoading.length > 0 && lazyLoading[0], context());"); arquivo.WriteLine(" } finally {"); arquivo.WriteLine(" if (c != null)"); arquivo.WriteLine(" c.close();"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return " + tabela.Apelido + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); string parametroLazyLoading = string.Empty; string variavelLazyLoading = string.Empty; List<ColunaInfo> joins = new List<ColunaInfo>(); foreach (ColunaInfo c in tabela.colunas) { bool lista = false; bool join = false; if (CriarSelect(c.Descricao, ref lista, ref join)) { if (join) { joins.Add(c); parametroLazyLoading = ", boolean... lazyLoading"; variavelLazyLoading = ", lazyLoading.length > 0 && lazyLoading[0], context()"; } string variavel = c.TipoVariavel.ToString().StartsWith("S") ? c.TipoVariavel.ToString() : c.TipoVariavel.ToString().ToLower(); if (variavel.Equals("integer")) variavel = "int"; string pesquisaPor = "Por" + c.DescricaoGet.Substring(3); if (!lista) { arquivo.WriteLine(" public " + tabela.Classe + " get" + tabela.Classe + pesquisaPor + "(" + variavel + " " + c.Descricao + parametroLazyLoading + ") {"); arquivo.WriteLine(" " + tabela.Classe + " " + tabela.Apelido + " = new " + tabela.Classe + "();"); arquivo.WriteLine(""); arquivo.WriteLine(" Cursor c = get" + tabela.Classe + pesquisaPor + "Cursor(" + c.Descricao + ");"); arquivo.WriteLine(" try {"); arquivo.WriteLine(" if (c != null && c.moveToFirst())"); arquivo.WriteLine(" " + tabela.Apelido + ".loadFromCursor(c" + variavelLazyLoading + ");"); arquivo.WriteLine(" } finally {"); arquivo.WriteLine(" if (c != null)"); arquivo.WriteLine(" c.close();"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return " + tabela.Apelido + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } else { arquivo.WriteLine(" public List<" + tabela.Classe + "> get" + tabela.ClassePlural + pesquisaPor + "List(" + variavel + " " + c.Descricao + parametroLazyLoading + ") {"); arquivo.WriteLine(""); arquivo.WriteLine(" List<" + tabela.Classe + "> " + tabela.ApelidoPlural + " = new ArrayList<>();"); arquivo.WriteLine(""); arquivo.WriteLine(" Cursor c = get" + tabela.ClassePlural + pesquisaPor + "Cursor(" + c.Descricao + ");"); arquivo.WriteLine(" try {"); arquivo.WriteLine(" if (c != null && c.moveToFirst()) {"); arquivo.WriteLine(" do {"); arquivo.WriteLine(" " + tabela.Classe + " t = new " + tabela.Classe + "();"); arquivo.WriteLine(" t.loadFromCursor(c" + variavelLazyLoading + ");"); arquivo.WriteLine(" " + tabela.ApelidoPlural + ".add(t);"); arquivo.WriteLine(" } while (c.moveToNext());"); arquivo.WriteLine(" }"); arquivo.WriteLine(" } finally {"); arquivo.WriteLine(" if (c != null)"); arquivo.WriteLine(" c.close();"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return " + tabela.ApelidoPlural + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" public Cursor get" + (lista ? tabela.ClassePlural : tabela.Classe) + pesquisaPor + "Cursor(" + variavel + " " + c.Descricao + ") {"); arquivo.WriteLine(""); arquivo.WriteLine(" String selection = " + tabela.Classe + ".FullColumns." + c.DescricaoReferencia + " + \" = ? \";"); arquivo.WriteLine(" String[] selectionArgs = {String.valueOf(" + c.Descricao + ")};"); arquivo.WriteLine(""); arquivo.WriteLine(" return contentResolver().query(DataProvider." + tabela.CONTENT_URI + ", null, selection, selectionArgs, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public CursorLoader get" + (lista ? tabela.ClassePlural : tabela.Classe) + pesquisaPor + "Loader(" + variavel + " " + c.Descricao + ") {"); arquivo.WriteLine(""); arquivo.WriteLine(" String selection = " + tabela.Classe + ".FullColumns." + c.DescricaoReferencia + " + \" = ? \";"); arquivo.WriteLine(" String[] selectionArgs = {String.valueOf(" + c.Descricao + ")};"); arquivo.WriteLine(""); arquivo.WriteLine(" return new CursorLoader(context(), DataProvider." + tabela.CONTENT_URI + ", null, selection, selectionArgs, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } } if (joins.Count > 1) { StringBuilder parametros = new StringBuilder(); StringBuilder parametrosPassar = new StringBuilder(); StringBuilder selection = new StringBuilder(); StringBuilder selectionArgs = new StringBuilder(); foreach (ColunaInfo c in joins) { string variavel = c.TipoVariavel.ToString().StartsWith("S") ? c.TipoVariavel.ToString() : c.TipoVariavel.ToString().ToLower(); parametros.Append(variavel + " " + c.Descricao + ", "); parametrosPassar.Append(c.Descricao + ", "); selection.Append(tabela.Classe + ".FullColumns." + c.DescricaoReferencia + " + \" = ? AND \" + "); selectionArgs.Append("String.valueOf(" + c.Descricao + "), "); } arquivo.WriteLine(" public List<" + tabela.Classe + "> get" + tabela.ClassePlural + "PorParametrosList(" + parametros.ToString().Remove(parametros.Length - 2, 2) + parametroLazyLoading + ") {"); arquivo.WriteLine(""); arquivo.WriteLine(" List<" + tabela.Classe + "> " + tabela.ApelidoPlural + " = new ArrayList<>();"); arquivo.WriteLine(""); arquivo.WriteLine(" Cursor c = get" + tabela.ClassePlural + "PorParametros(" + parametrosPassar.ToString().Remove(parametrosPassar.Length - 2, 2) + ");"); arquivo.WriteLine(" try {"); arquivo.WriteLine(" if (c != null && c.moveToFirst()) {"); arquivo.WriteLine(" do {"); arquivo.WriteLine(" " + tabela.Classe + " t = new " + tabela.Classe + "();"); arquivo.WriteLine(" t.loadFromCursor(c" + variavelLazyLoading + ");"); arquivo.WriteLine(" " + tabela.ApelidoPlural + ".add(t);"); arquivo.WriteLine(" } while (c.moveToNext());"); arquivo.WriteLine(" }"); arquivo.WriteLine(" } finally {"); arquivo.WriteLine(" if (c != null)"); arquivo.WriteLine(" c.close();"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return " + tabela.ApelidoPlural + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public Cursor get" + tabela.ClassePlural + "PorParametros(" + parametros.ToString().Remove(parametros.Length - 2, 2) + ") {"); arquivo.WriteLine(""); arquivo.WriteLine(" String selection = " + selection.ToString().Remove(selection.Length - 8, 8) + "\";"); arquivo.WriteLine(" String[] selectionArgs = {" + selectionArgs.ToString().Remove(selectionArgs.Length - 2, 2) + "};"); arquivo.WriteLine(""); arquivo.WriteLine(" return contentResolver().query(DataProvider." + tabela.CONTENT_URI + ", null, selection, selectionArgs, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public CursorLoader get" + tabela.ClassePlural + "PorParametrosLoader(" + parametros.ToString().Remove(parametros.Length - 2, 2) + ") {"); arquivo.WriteLine(""); arquivo.WriteLine(" String selection = " + selection.ToString().Remove(selection.Length - 8, 8) + "\";"); arquivo.WriteLine(" String[] selectionArgs = {" + selectionArgs.ToString().Remove(selectionArgs.Length - 2, 2) + "};"); arquivo.WriteLine(""); arquivo.WriteLine(" return new CursorLoader(context(), DataProvider." + tabela.CONTENT_URI + ", null, selection, selectionArgs, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine(" public List<" + tabela.Classe + "> get" + tabela.ClassePlural + "List(" + (parametroLazyLoading.Length > 0 ? parametroLazyLoading.Substring(2) : "") + ") {"); arquivo.WriteLine(""); arquivo.WriteLine(" List<" + tabela.Classe + "> " + tabela.ApelidoPlural + " = new ArrayList<>();"); arquivo.WriteLine(""); arquivo.WriteLine(" Cursor c = get" + tabela.ClassePlural + "();"); arquivo.WriteLine(" try {"); arquivo.WriteLine(" if (c != null && c.moveToFirst()) {"); arquivo.WriteLine(" do {"); arquivo.WriteLine(" " + tabela.Classe + " t = new " + tabela.Classe + "();"); arquivo.WriteLine(" t.loadFromCursor(c" + variavelLazyLoading + ");"); arquivo.WriteLine(" " + tabela.ApelidoPlural + ".add(t);"); arquivo.WriteLine(" } while (c.moveToNext());"); arquivo.WriteLine(" }"); arquivo.WriteLine(" } finally {"); arquivo.WriteLine(" if (c != null)"); arquivo.WriteLine(" c.close();"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return " + tabela.ApelidoPlural + ";"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public Cursor get" + tabela.ClassePlural + "() {"); arquivo.WriteLine(" return contentResolver().query(DataProvider." + tabela.CONTENT_URI + ", null, null, null, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public CursorLoader get" + tabela.ClassePlural + "Loader() {"); arquivo.WriteLine(" return new CursorLoader(context(), DataProvider." + tabela.CONTENT_URI + ", null, null, null, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public CursorLoader get" + tabela.ClassePlural + "Loader(Bundle args) {"); arquivo.WriteLine(" String selection = null;"); arquivo.WriteLine(" String[] selectionArgs = null;"); arquivo.WriteLine(""); arquivo.WriteLine(" String orderBy = null;"); arquivo.WriteLine(" if (args != null) {"); arquivo.WriteLine(" orderBy = args.getString(\"orderBy\");"); arquivo.WriteLine(""); arquivo.WriteLine(" if (args.getString(\"where\") != null) {"); arquivo.WriteLine(" selection = args.getString(\"where\");"); arquivo.WriteLine(" selectionArgs = args.getStringArray(\"whereArray\");"); arquivo.WriteLine(" }"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" return new CursorLoader(context(), DataProvider." + tabela.CONTENT_URI + ", null, selection, selectionArgs, orderBy);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public CursorLoader get" + tabela.Classe + "ByIdLoader(long id) {"); arquivo.WriteLine(" Uri uri = ContentUris.withAppendedId(DataProvider." + tabela.CONTENT_URI + ", id);"); arquivo.WriteLine(" return new CursorLoader(context(), uri, null, null, null, null);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" public void notify" + tabela.Classe + "() {"); arquivo.WriteLine(" contentResolver().notifyChange(DataProvider." + tabela.CONTENT_URI + ", null, true);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo DAO File.Create(diretorio + "\\dal\\" + tabela.ArquivoDAO).Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\dal\\" + tabela.ArquivoDAO)) { arquivo.WriteLine("package " + txtPacote.Text + ".dal;"); arquivo.WriteLine(""); arquivo.WriteLine("import " + txtPacote.Text + ".basedal.Base" + tabela.Classe + "DAO;"); arquivo.WriteLine(""); arquivo.WriteLine("public class " + tabela.Classe + "DAO extends Base" + tabela.Classe + "DAO {"); arquivo.WriteLine(""); arquivo.WriteLine(""); arquivo.WriteLine(""); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion } if (tabelas.Count > 0) { #region CriaArquivo BaseObject File.Create(diretorio + "\\basemodel\\BaseObject.java").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\basemodel\\BaseObject.java")) { arquivo.Write(Library.ArquivoBaseObjects.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo DBHelper File.Create(diretorio + "\\data\\DBHelper.java").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\data\\DBHelper.java")) { arquivo.Write(Library.ArquivoDBHelper.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo DAO Main File.Create(diretorio + "\\dal\\DAO.java").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\dal\\DAO.java")) { arquivo.Write(Library.ArquivoDAO.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo DAO File.Create(diretorio + "\\dal\\DAOFactory.java").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\dal\\DAOFactory.java")) { arquivo.WriteLine("package " + txtPacote.Text + ".dal;"); arquivo.WriteLine(""); arquivo.WriteLine("import android.content.Context;"); arquivo.WriteLine(""); arquivo.WriteLine("public class DAOFactory {"); arquivo.WriteLine(""); foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" private static " + t.Classe + "DAO " + t.Apelido + "DAO;"); } arquivo.WriteLine(""); foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" public static " + t.Classe + "DAO get" + t.Classe + "DAO(Context context) {"); arquivo.WriteLine(" if (" + t.Apelido + "DAO == null) {"); arquivo.WriteLine(" " + t.Apelido + "DAO = new " + t.Classe + "DAO();"); arquivo.WriteLine(" " + t.Apelido + "DAO.init(context.getApplicationContext());"); arquivo.WriteLine(" }"); arquivo.WriteLine(" return " + t.Apelido + "DAO;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); } arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo DataHandler File.Create(diretorio + "\\provider\\DataHandler.java").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\provider\\DataHandler.java")) { arquivo.Write(Library.ArquivoDataHandler.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo InvalidURIException File.Create(diretorio + "\\provider\\InvalidURIException.java").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\provider\\InvalidURIException.java")) { arquivo.Write(Library.ArquivoInvalidException.RetornaTextoArquivo(txtPacote.Text)); arquivo.Flush(); arquivo.Close(); } #endregion #region CriaArquivo Provider File.Create(diretorio + "\\provider\\DataProvider.java").Close(); using (TextWriter arquivo = File.AppendText(diretorio + "\\provider\\DataProvider.java")) { arquivo.WriteLine("package " + txtPacote.Text + ".provider;"); arquivo.WriteLine(""); arquivo.WriteLine("import android.content.ContentProvider;"); arquivo.WriteLine("import android.content.ContentValues;"); arquivo.WriteLine("import android.content.UriMatcher;"); arquivo.WriteLine("import android.database.Cursor;"); arquivo.WriteLine("import android.net.Uri;"); arquivo.WriteLine(""); arquivo.WriteLine("// Content provider para acessar o banco de dados SQLite"); arquivo.WriteLine("public class DataProvider extends ContentProvider {"); arquivo.WriteLine(""); int posicao = 0; foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" static final int " + t.ProviderCODE + " = " + (++posicao).ToString() + ";"); arquivo.WriteLine(" static final int " + t.ProviderID + " = " + (++posicao).ToString() + ";"); arquivo.WriteLine(" static final int " + t.ProviderRAW + " = " + (++posicao).ToString() + ";"); } arquivo.WriteLine(""); arquivo.WriteLine(" private static final String AUTHORITY = \"" + txtPacote.Text + ".provider.DataProvider\";"); arquivo.WriteLine(""); foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" public static final Uri " + t.CONTENT_URI + " = Uri.parse(\"content://\" + AUTHORITY + \"/" + t.Descricao + "\");"); arquivo.WriteLine(" public static final Uri " + t.CONTENT_URI_RAW + " = Uri.parse(\"content://\" + AUTHORITY + \"/" + t.Descricao + "_raw\");"); } arquivo.WriteLine(""); arquivo.WriteLine("private UriMatcher matcher;"); arquivo.WriteLine(""); arquivo.WriteLine(" // Os handlers são usados para tratar requisições, de acordo com o padrão da URI utilizada"); foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" private DataHandler " + t.Apelido + "Handler;"); } arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public boolean onCreate() {"); arquivo.WriteLine(" // Cria os handlers"); foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" " + t.Apelido + "Handler = new " + t.Classe + "Handler(getContext());"); } arquivo.WriteLine(""); arquivo.WriteLine(" // Configura o URI matcher"); arquivo.WriteLine(" matcher = new UriMatcher(UriMatcher.NO_MATCH);"); arquivo.WriteLine(""); foreach (TabelaInfo t in tabelas) { arquivo.WriteLine(" matcher.addURI(AUTHORITY, \"" + t.Descricao + "\", " + t.ProviderCODE + ");"); arquivo.WriteLine(" matcher.addURI(AUTHORITY, \"" + t.Descricao + "/#\", " + t.ProviderID + ");"); arquivo.WriteLine(" matcher.addURI(AUTHORITY, \"" + t.Descricao + "_raw\", " + t.ProviderRAW + ");"); } arquivo.WriteLine(""); arquivo.WriteLine(" return true;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {"); arquivo.WriteLine(" int code = matcher.match(uri);"); arquivo.WriteLine(" DataHandler handler = getHandler(code);"); arquivo.WriteLine(" Cursor c = handler.query(code, uri, projection, selection, selectionArgs, sortOrder);"); arquivo.WriteLine(" handler.setNotificationUri(c, uri);"); arquivo.WriteLine(" return c;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public Uri insert(Uri uri, ContentValues values) {"); arquivo.WriteLine(" int code = matcher.match(uri);"); arquivo.WriteLine(" DataHandler handler = getHandler(code);"); arquivo.WriteLine(" Uri newUri = handler.insert(code, uri, values);"); arquivo.WriteLine(" handler.notifyChange(newUri);"); arquivo.WriteLine(" return newUri;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {"); arquivo.WriteLine(" int code = matcher.match(uri);"); arquivo.WriteLine(" DataHandler handler = getHandler(code);"); arquivo.WriteLine(" int count = handler.update(code, uri, values, selection, selectionArgs);"); arquivo.WriteLine(" handler.notifyChange(uri);"); arquivo.WriteLine(" return count;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public int delete(Uri uri, String selection, String[] selectionArgs) {"); arquivo.WriteLine(" int code = matcher.match(uri);"); arquivo.WriteLine(" DataHandler handler = getHandler(code);"); arquivo.WriteLine(" int count = handler.delete(code, uri, selection, selectionArgs);"); arquivo.WriteLine(" handler.notifyChange(uri);"); arquivo.WriteLine(" return count;"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" @Override"); arquivo.WriteLine(" public String getType(Uri uri) {"); arquivo.WriteLine(" int code = matcher.match(uri);"); arquivo.WriteLine(""); int posicaoTabela = 0; bool primeiraVezIf = true; foreach (TabelaInfo t in tabelas) { posicaoTabela++; arquivo.WriteLine(" " + (primeiraVezIf ? "if (" : " || ") + "code == " + t.ProviderID + (posicaoTabela >= tabelas.Count ? ") {" : "")); primeiraVezIf = false; } arquivo.WriteLine(" return \"vnd.android.cursor.item/vnd.br.com.imperiumsolucoes\";"); arquivo.WriteLine(""); posicaoTabela = 0; primeiraVezIf = true; foreach (TabelaInfo t in tabelas) { posicaoTabela++; arquivo.WriteLine(" " + (primeiraVezIf ? "} else if (" : " || ") + "code == " + t.ProviderCODE + " || code == " + t.ProviderRAW + (posicaoTabela >= tabelas.Count ? ") {" : "")); primeiraVezIf = false; } arquivo.WriteLine(" return \"vnd.android.cursor.dir/vnd.br.com.imperiumsolucoes\";"); arquivo.WriteLine(" }"); arquivo.WriteLine(" throw new IllegalArgumentException(\"URI not supported: \" + uri);"); arquivo.WriteLine(" }"); arquivo.WriteLine(""); arquivo.WriteLine(" private DataHandler getHandler(int code) {"); posicaoTabela = 0; primeiraVezIf = true; foreach (TabelaInfo t in tabelas) { posicaoTabela++; arquivo.WriteLine(" " + (primeiraVezIf ? "if (" : "} else if (") + "code == " + t.ProviderCODE + " || code == " + t.ProviderID + " || code == " + t.ProviderRAW + ") {"); arquivo.WriteLine(" return " + t.Apelido + "Handler;"); arquivo.WriteLine(""); if (posicaoTabela >= tabelas.Count) arquivo.WriteLine(" }"); primeiraVezIf = false; } arquivo.WriteLine(" return null;"); arquivo.WriteLine(" }"); arquivo.WriteLine("}"); arquivo.Flush(); arquivo.Close(); } #endregion } using (TextWriter arquivoIndice = File.AppendText(diretorio + "\\indice.txt")) { totalBarraProgress = quantidadeInicio + quantidadeTabelas + quantidadeInserts + quantidadeAtualiza + quantidadeConfigModuloProcedures + 1; arquivoIndice.WriteLine(""); arquivoIndice.WriteLine("//Total Quantidade da Barra de Progress " + totalBarraProgress); arquivoIndice.Flush(); arquivoIndice.Close(); } } catch (Exception ex) { throw new Exception("Não foi possível criar os arquivos das tabelas.\n" + ex.Message); } return true; }