public TabelaSelect returnTudo() { br.BaseStream.Position = 0; int count; TabelaDado td = new TabelaDado(nome); Metadados meta = GerenciadorMemoria.getInstance().recuperarMetadados(nome); while (br.BaseStream.Position != br.BaseStream.Length) { RegistroTabela r = new RegistroTabela(br.ReadInt64()); count = br.ReadInt32(); //Form1.addMensagem("Count colunas" + count); // somente para depuração try { for (int i = 0; i < count; i++) { DadoTabela d; if (meta.getDados()[meta.getNomesColunas()[i]].getTipoDado() == TipoDado.Inteiro) { //Form1.addMensagem("Inteiro"); // somente para depuração d = new DadoTabela(meta.getNomesColunas()[i], meta.getDados()[meta.getNomesColunas()[i]].getTipoDado(), br.ReadByte(), br.ReadBoolean(), br.ReadInt32()); } else { //Form1.addMensagem("Char"); // somente para depuração d = new DadoTabela(meta.getNomesColunas()[i], meta.getDados()[meta.getNomesColunas()[i]].getTipoDado(), br.ReadByte(), br.ReadBoolean(), br.ReadString()); } r.dados.Add(d); } } catch (System.Exception e) { Form1.addMensagem(e.Message); } td.registros.Add(r); } return(TabelaSelect.getTabelaSelect(td)); }
public TabelaSelect returnTudo() { br.BaseStream.Position = 0; int count; TabelaDado td = new TabelaDado(nome); Metadados meta = GerenciadorMemoria.getInstance().recuperarMetadados(nome); while (br.BaseStream.Position != br.BaseStream.Length) { RegistroTabela r = new RegistroTabela(br.ReadInt64()); count = br.ReadInt32(); //Form1.addMensagem("Count colunas" + count); // somente para depuração try { for (int i = 0; i < count; i++) { DadoTabela d; if (meta.getDados()[meta.getNomesColunas()[i]].getTipoDado() == TipoDado.Inteiro) { //Form1.addMensagem("Inteiro"); // somente para depuração d = new DadoTabela(meta.getNomesColunas()[i], meta.getDados()[meta.getNomesColunas()[i]].getTipoDado(), br.ReadByte(), br.ReadBoolean(), br.ReadInt32()); } else { //Form1.addMensagem("Char"); // somente para depuração d = new DadoTabela(meta.getNomesColunas()[i], meta.getDados()[meta.getNomesColunas()[i]].getTipoDado(), br.ReadByte(), br.ReadBoolean(), br.ReadString()); } r.dados.Add(d); } } catch (System.Exception e) { Form1.addMensagem(e.Message); } td.registros.Add(r); } return TabelaSelect.getTabelaSelect(td); }
public TabelaSelect returnFiltrado(Dictionary<string, Filtro> filtrosAND) { br.BaseStream.Position = 0; int count; int tamRegistro = 12; Metadados meta = GerenciadorMemoria.getInstance().recuperarMetadados(nome); TabelaDado td = new TabelaDado(nome); foreach (DadosTabela dados in meta.getDados().Values) { tamRegistro += dados.getTamanho() + 2; //if (dados.getTipoDado() == TipoDado.String) tamRegistro++; } //lê cada registro while (br.BaseStream.Position != br.BaseStream.Length) { RegistroTabela r = new RegistroTabela(br.BaseStream.Position); count = br.ReadInt32(); bool insere = true; //Lê cada dado dentro do registro for (int i = 0; i < count && insere; i++) { DadoTabela d; //Form1.addMensagem(i.ToString()); // *** erro aqui - inicio *** // select localidade.* from localidade where localidade.cd_localidade = 1; // da erro qdo i = 4 // mas quem deve limitar para nao chegar no 4 ? string nomeColuna = meta.getNomesColunas()[i]; // *** erro aqui - Fim *** TipoDado tipo = meta.getDados()[nomeColuna].getTipoDado(); string campo = meta.getNome() + "." + nomeColuna; Filtro f = filtrosAND.ContainsKey(campo) ? filtrosAND[campo] : null; if (tipo == TipoDado.Inteiro) { d = new DadoTabela(nomeColuna, tipo, br.ReadByte(), br.ReadBoolean(), br.ReadInt32()); if (f != null) { switch (f.Op) { case OperadorRel.Igual: if (f.RValue.ToLower().Equals("null")) { if (d.isValido) insere = false; } else { if (d.getValorInt() != Convert.ToInt32(f.RValue)) insere = false; } break; case OperadorRel.MaiorQue: if (d.getValorInt() <= Convert.ToInt32(f.RValue)) insere = false; break; case OperadorRel.MenorQue: if (d.getValorInt() >= Convert.ToInt32(f.RValue)) insere = false; break; case OperadorRel.MaiorIgualA: if (d.getValorInt() < Convert.ToInt32(f.RValue)) insere = false; break; case OperadorRel.MenorIgualA: if (d.getValorInt() > Convert.ToInt32(f.RValue)) insere = false; break; case OperadorRel.Diferente: if (f.RValue.ToLower().Equals("null")) { if (!d.isValido) insere = false; } else { if (d.getValorInt() == Convert.ToInt32(f.RValue)) insere = false; } break; default: throw new SGDBException("Passou onde nao devia: GambiarraSelect.retornaDados.Inteiro.Default."); } } } else { byte tamanho = br.ReadByte(); bool isValido = br.ReadBoolean(); byte[] valor = br.ReadBytes(tamanho); string texto = new System.Text.ASCIIEncoding().GetString(valor); d = new DadoTabela(nomeColuna, tipo, tamanho, isValido, texto); if (f != null) { switch (f.Op) { case OperadorRel.Igual: if (f.RValue.ToLower().Equals("null")) { if (d.isValido) insere = false; } else { byte[] filtro = new byte[d.tamanho]; new System.Text.ASCIIEncoding().GetBytes(f.RValue.PadRight(d.tamanho)).CopyTo(filtro, 0); string filtro2 = new System.Text.ASCIIEncoding().GetString(filtro); if (!texto.Equals(filtro2)) insere = false; } break; case OperadorRel.Diferente: if (f.RValue.ToLower().Equals("null")) { if (!d.isValido) insere = false; } else { byte[] filtro = new byte[d.tamanho]; new System.Text.ASCIIEncoding().GetBytes(f.RValue.PadRight(d.tamanho)).CopyTo(filtro, 0); string filtro2 = new System.Text.ASCIIEncoding().GetString(filtro); if (texto.Equals(filtro2)) insere = false; } break; default: throw new SemanticError("Comparação de literais só pode ser igual ou diferente"); } } } r.dados.Add(d); } if (insere) { td.registros.Add(r); } if (br.BaseStream.Position % tamRegistro != 0) br.BaseStream.Position += tamRegistro - (br.BaseStream.Position % tamRegistro); } return TabelaSelect.getTabelaSelect(td); }
public TabelaSelect returnFiltrado(Dictionary <string, Filtro> filtrosAND) { br.BaseStream.Position = 0; int count; int tamRegistro = 12; Metadados meta = GerenciadorMemoria.getInstance().recuperarMetadados(nome); TabelaDado td = new TabelaDado(nome); foreach (DadosTabela dados in meta.getDados().Values) { tamRegistro += dados.getTamanho() + 2; //if (dados.getTipoDado() == TipoDado.String) tamRegistro++; } //lê cada registro while (br.BaseStream.Position != br.BaseStream.Length) { RegistroTabela r = new RegistroTabela(br.BaseStream.Position); count = br.ReadInt32(); bool insere = true; //Lê cada dado dentro do registro for (int i = 0; i < count && insere; i++) { DadoTabela d; //Form1.addMensagem(i.ToString()); // *** erro aqui - inicio *** // select localidade.* from localidade where localidade.cd_localidade = 1; // da erro qdo i = 4 // mas quem deve limitar para nao chegar no 4 ? string nomeColuna = meta.getNomesColunas()[i]; // *** erro aqui - Fim *** TipoDado tipo = meta.getDados()[nomeColuna].getTipoDado(); string campo = meta.getNome() + "." + nomeColuna; Filtro f = filtrosAND.ContainsKey(campo) ? filtrosAND[campo] : null; if (tipo == TipoDado.Inteiro) { d = new DadoTabela(nomeColuna, tipo, br.ReadByte(), br.ReadBoolean(), br.ReadInt32()); if (f != null) { switch (f.Op) { case OperadorRel.Igual: if (f.RValue.ToLower().Equals("null")) { if (d.isValido) { insere = false; } } else { if (d.getValorInt() != Convert.ToInt32(f.RValue)) { insere = false; } } break; case OperadorRel.MaiorQue: if (d.getValorInt() <= Convert.ToInt32(f.RValue)) { insere = false; } break; case OperadorRel.MenorQue: if (d.getValorInt() >= Convert.ToInt32(f.RValue)) { insere = false; } break; case OperadorRel.MaiorIgualA: if (d.getValorInt() < Convert.ToInt32(f.RValue)) { insere = false; } break; case OperadorRel.MenorIgualA: if (d.getValorInt() > Convert.ToInt32(f.RValue)) { insere = false; } break; case OperadorRel.Diferente: if (f.RValue.ToLower().Equals("null")) { if (!d.isValido) { insere = false; } } else { if (d.getValorInt() == Convert.ToInt32(f.RValue)) { insere = false; } } break; default: throw new SGDBException("Passou onde nao devia: GambiarraSelect.retornaDados.Inteiro.Default."); } } } else { byte tamanho = br.ReadByte(); bool isValido = br.ReadBoolean(); byte[] valor = br.ReadBytes(tamanho); string texto = new System.Text.ASCIIEncoding().GetString(valor); d = new DadoTabela(nomeColuna, tipo, tamanho, isValido, texto); if (f != null) { switch (f.Op) { case OperadorRel.Igual: if (f.RValue.ToLower().Equals("null")) { if (d.isValido) { insere = false; } } else { byte[] filtro = new byte[d.tamanho]; new System.Text.ASCIIEncoding().GetBytes(f.RValue.PadRight(d.tamanho)).CopyTo(filtro, 0); string filtro2 = new System.Text.ASCIIEncoding().GetString(filtro); if (!texto.Equals(filtro2)) { insere = false; } } break; case OperadorRel.Diferente: if (f.RValue.ToLower().Equals("null")) { if (!d.isValido) { insere = false; } } else { byte[] filtro = new byte[d.tamanho]; new System.Text.ASCIIEncoding().GetBytes(f.RValue.PadRight(d.tamanho)).CopyTo(filtro, 0); string filtro2 = new System.Text.ASCIIEncoding().GetString(filtro); if (texto.Equals(filtro2)) { insere = false; } } break; default: throw new SemanticError("Comparação de literais só pode ser igual ou diferente"); } } } r.dados.Add(d); } if (insere) { td.registros.Add(r); } if (br.BaseStream.Position % tamRegistro != 0) { br.BaseStream.Position += tamRegistro - (br.BaseStream.Position % tamRegistro); } } return(TabelaSelect.getTabelaSelect(td)); }