/* ------------------ TESTES ------------------ */ public static void main(String[] args) { System.out.println("->Teste da classe FachadaDB"); List ticos = new ArrayList(); Object tico; List<String> nomeFiltros = new ArrayList<String>(); List<String> valorFiltros = new ArrayList<String>(); List<String> ordenacoes = new ArrayList<String>(); List<String> indexes = new ArrayList<String>(); DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); List datas = new ArrayList(); String sigla = "VALE5"; nomeFiltros.add("sigla"); valorFiltros.add(sigla); ordenacoes.add("data"); indexes.add("sigla"); indexes.add("data"); HashMap<Integer, Object> ticosHash = new HashMap(); int[] posicoesA = {1, 2, 4}; int[] posicoesB = {1, 2, 3, 4}; // Inicializando BD System.out.println("-> Inicializando BD"); FachadaBD instancia = FachadaBD.getInstancia(); // instancia.inicializarBD(Configuracao.getArquivoDb4o() + sigla, // indexes, Object.class); // Pesquisar Ordenado // List ticks = FachadaDB.pesquisarOrdenado(Tick.class, "data", // FachadaDB.ORDENACAO_DECRESCENTE); // for (int i = 0; i < ticks.size(); i++) { // System.out.println("=-=->" + ticks.get(i)); // } // Pesquisar entre valores // String nomeAtributoComparado = "data"; // Comparator comparadorAtributo = ComparadorTick.data; // Calendar calendario1 = Calendar.getInstance(); // Util.zerarHoraCalendar(calendario1); // calendario1.set(2008, Calendar.JUNE, 2); // Date valorInicial = calendario1.getTime(); // Calendar calendario2 = Calendar.getInstance(); // Util.zerarHoraCalendar(calendario2); // calendario2.set(2008, Calendar.JUNE, 13); // Date valorFinal = calendario2.getTime(); // List valores = pesquisarEntreValores(pesquisar(Tick.class, "sigla", // "VALE5"), nomeAtributoComparado, // comparadorAtributo, valorInicial, valorFinal); // for (int i = 0; i < valores.size(); i++) { // System.out.println("=-=->" + valores.get(i)); // } // // Pesquisando valores distintos de um atributo // List valoresDistintos = pesquisarValoresDistintos(Tick.class, // "minimo"); // for (int i = 0; i < valoresDistintos.size(); i++) { // System.out.println(valoresDistintos.get(i)); // } // // Recuperando por 1 campo/valor (1x1) // System.out.println("-> Recuperando por 1 campo/valor (1x1):"); // ticos = pesquisar(Object.class, "data", ORDENACAO_CRESCENTE, "sigla", // sigla); // // // Util.gravarListaEmArquivo(ticos,"C:\\temp\\monitormercado\\bd\\"+sigla+"-BD.csv"); // for (int i = 0; i < ticos.size(); i++) { // System.out.println(ticos.get(i)); // } // System.out.println("size: " + ticos.size()); // // Recuperando por N valores de um campo (1xN) // System.out.println("-> Recuperando por N valores de um campo (1xN):"); // datas.add((Date) formatter.parse("2009-02-10")); // datas.add((Date) formatter.parse("2009-02-09")); // ticos = pesquisar(Object.class, "data", ORDENACAO_DECRESCENTE, // "data", // datas); // // // Util.gravarListaEmArquivo(ticos,"C:\\temp\\monitormercado\\bd\\"+sigla+"-BD.csv"); // for (int i = 0; i < ticos.size(); i++) { // System.out.println(ticos.get(i)); // } // // Recuperando por N campos e respectivos valores (NxN) // System.out.println("-> Recuperando por N campos e respectivos valores (NxN):"); // List<String> nomesCampos = new ArrayList<String>(); // List valoresCampos = new ArrayList(); // nomesCampos.add("sigla"); // nomesCampos.add("data"); // valoresCampos.add(sigla); // valoresCampos.add((Date) formatter.parse("2009-02-06")); // ticos = pesquisar(Object.class, "data", ORDENACAO_DECRESCENTE, // nomesCampos, // valoresCampos, JUNCAO_AND); // // // Util.gravarListaEmArquivo(ticos,"C:\\temp\\monitormercado\\bd\\"+sigla+"-BD.csv"); // for (int i = 0; i < ticos.size(); i++) { // System.out.println(ticos.get(i)); // } // // Recuperando posição // System.out.println("-> Recuperando posição:"); // tico = pesquisarPosicao(Object.class, "data", ORDENACAO_DECRESCENTE, // "sigla", // sigla, 1); // System.out.println(tico); // // Recuperando classe // System.out.println("-> Recuperando todos os objetos da classe:"); // ticos = pesquisar(Object.class, "data", ORDENACAO_DECRESCENTE); // Util.gravarListaEmArquivo(ticos, "C:\\temp\\monitormercado\\bd\\" + // sigla + "-BD.csv"); // for (int i = 0; i < ticos.size(); i++) { // System.out.println(ticos.get(i)); // } // // Deletando objeto(s) // System.out.println("-> Deletando objeto(s) recuperado(s) por 1 campo/valor (1x1):"); // apagar(Object.class, "data", (Date) formatter.parse("2009-02-11")); // Deletando objeto(s) // System.out.println("-> Deletando objeto(s) recuperado(s) por N valores de um campo (1xN):"); // datas.add((Date) formatter.parse("2009-02-10")); // datas.add((Date) formatter.parse("2009-02-09")); // apagar(Object.class, "data", datas); // // Deletando objeto(s) // System.out.println("-> Deletando objeto(s) recuperado(s) por N campos e respectivos valores // (NxN):"); // List<String> nomesCampos = new ArrayList<String>(); // List valoresCampos = new ArrayList(); // nomesCampos.add("sigla"); // nomesCampos.add("data"); // valoresCampos.add(sigla); // valoresCampos.add((Date) formatter.parse("2009-02-06")); // apagar(Object.class, nomesCampos, valoresCampos, JUNCAO_AND); // // Atualizando por 1 campo/valor (1x1) // System.out.println("-> Atualizando por 1 campo/valor (1x1):"); // ticos = pesquisar(Object.class, "data", ORDENACAO_DECRESCENTE, // "data", (Date) // formatter.parse("2009-02-05")); // // Util.gravarListaEmArquivo(ticos,"C:\\temp\\monitormercado\\bd\\"+sigla+"-BD.csv"); // for (int i = 0; i < ticos.size(); i++) { // Tick tick = (Tick) ticos.get(i); // System.out.println("Antes: " + tick); // tick.setAbertura(10.01); // armazenar(tick); // } // //ticos = pesquisar(Object.class, "data", ORDENACAO_DECRESCENTE, // "data", // (Date) formatter.parse("2009-02-05")); // Util.gravarListaEmArquivo(ticos,"C:\\temp\\monitormercado\\bd\\"+sigla+"-BD.csv"); // for (int i = 0; i < ticos.size(); i++) { // System.out.println("Depois: " + ticos.get(i)); // } // Atualizando por 1 campo/valor (1x1) // System.out.println("-> Atualizando por 1 campo/valor (1x1):"); // Tick tick = (Tick) pesquisarPosicao(Object.class, "data", // ORDENACAO_DECRESCENTE, "sigla", sigla, 0); // System.out.println(tick); // tick.setAbertura(10.01); // armazenar(tick); // tick = (Tick) pesquisarPosicao(Object.class, "data", // ORDENACAO_DECRESCENTE, // "sigla", sigla, 0); // System.out.println(tick); // ticos = pesquisar(Object.class, "data", ORDENACAO_CRESCENTE); // Calendar ca1 = Calendar.getInstance(); // Calendar ca2 = Calendar.getInstance(); // ca1.setTime(((Tick) ticos.get(0)).getData()); // ca2.setTime(((Tick) ticos.get(ticos.size() - 1)).getData()); // Util.diasEntreDatas(ca1, ca2); // ticos = pesquisar(Object.class, "data", ORDENACAO_CRESCENTE); // Util.diasEntreDatas(((Tick) ticos.get(0)).getData(), ((Tick) // ticos.get(ticos.size() - 1)).getData()); // Recuperando posições // System.out.println("-> Recuperando posições 1, 2 e 4:"); // ticosHash = pesquisarPosicoes(Object.class, "data", // ORDENACAO_CRESCENTE, // "sigla", sigla, posicoesA); // for (int i = 0; i < posicoesA.length; i++) { // System.out.println(posicoesA[i] + "|" + ticosHash.get(posicoesA[i])); // } // System.out.println("-> Recuperando posições 1, 2, 3 e 4:"); // ticosHash = pesquisarPosicoes(Object.class, "data", // ORDENACAO_CRESCENTE, // "sigla", sigla, posicoesB); // for (int i = 0; i < posicoesB.length; i++) { // System.out.println(posicoesB[i] + "|" + ticosHash.get(posicoesB[i])); // } // System.out.println("-> Recuperando posicoes e N, N-1, N-2 e N-3:"); // ticosHash = pesquisarPosicoes(Object.class, "data", // ORDENACAO_DECRESCENTE, // "sigla", sigla, posicoesB); // for (int i = 0; i < posicoesB.length; i++) { // System.out.println(posicoesB[i] + "|" + ticosHash.get(posicoesB[i])); // } // ticosHash = pesquisarPosicoes(Object.class, "data", // ORDENACAO_CRESCENTE, // "sigla", sigla, posicoesB); // for (int i = 0; i < posicoesB.length; i++) { // ticos.add(ticosHash.get(posicoesB[i])); // // System.out.println(posicoesB[i] + "|" + ticosHash.get(posicoesB[i])); // } // for (int i = 0; i < ticos.size(); i++) { // System.out.println(ticos.get(i)); // } // System.out.println("-> Ordenando lista por atributo:"); // List<Tick> ticks = new ArrayList<Tick>(); // for (int i = 0; i < ticos.size(); i++) { // ticks.add((Tick) ticos.get(i)); // } // double minimos[] = new double[ticks.size()]; // Util.ordenarTicks(ticks, ComparadorTick.volume); // for (int i = 0; i < ticks.size(); i++) { // minimos[i] = ticks.get(i).getMinimo(); // // System.out.println(ticks.get(i)); // System.out.println(minimos[i] + " | " + ticks.get(i)); // } // Calendar calendario = Calendar.getInstance(); // Util.zerarHoraCalendar(calendario); // calendario.set(2009, Calendar.JANUARY, 5); // ticos = pesquisar(Object.class, "data", ORDENACAO_CRESCENTE, "data", // calendario.getTime()); // System.out.println(ticos.get(0)); // Tick tico2 = (Tick) ticos.get(0); // Tick tico3 = new Tick(tico2.getSigla(), tico2.getData(), // tico2.getAbertura(), tico2.getMinimo(), tico2.getMaximo(), // tico2.getFechamento(), tico2.getVolume()); // FachadaDB.armazenar(tico3); // Calendar calendario = Calendar.getInstance(); // Util.zerarHoraCalendar(calendario); // calendario.set(2009, Calendar.JANUARY, 5); // ticos = pesquisarOrdenado(Object.class, "minimo", 28, "data", // ORDENACAO_DECRESCENTE); // for (int i = 0; i < ticos.size(); i++) { // System.out.println(ticos.get(i)); // } // Recuperar os ticks // instancia.fecharBD(); // instancia.inicializarBD(Configuracao.getArquivoDb4o() + sigla, // Tick.getIndexacao(), Tick.class); UtilIO.gravarListaEmArquivo( instancia.pesquisarOrdenado( Tick.class, "sigla", "VALE5", "data", FachadaBD.ORDENACAO_CRESCENTE), Configuracao.getDiretorioTeste() + "TICKS.txt"); // Recupera as EMs com as periodiciadades // instancia.fecharBD(); // instancia.inicializarBD(Configuracao.getArquivoDb4o() + sigla, // Indicador.getIndexacao(), Indicador.class); List periodicidades = Arrays.asList(Indicador.PERIODICIDADE_DIARIA, Indicador.PERIODICIDADE_SEMANAL); List numerosAmostras = Arrays.asList(5, 9, 12, 21, 26); // EMAs dos ticks for (int i = 0; i < periodicidades.size(); i++) { for (int j = 0; j < numerosAmostras.size(); j++) { UtilIO.gravarListaEmArquivo( instancia.pesquisarOrdenado( EMA.class, Arrays.asList("periodicidade", "numeroDeAmostras", "baseDeCalculo", "siglaAcao"), Arrays.asList( periodicidades.get(i), numerosAmostras.get(j), IFonteEMA.TICK_FECHAMENTO, "TCSL4"), FachadaBD.JUNCAO_AND, "data", FachadaBD.ORDENACAO_CRESCENTE), Configuracao.getDiretorioTeste() + "EMA-" + Indicador.getPeriodicidadeToString((Integer) periodicidades.get(i)) + "-" + numerosAmostras.get(j) + ".txt"); } } // EMAs dos MACDs UtilIO.gravarListaEmArquivo( instancia.pesquisarOrdenado( EMA.class, Arrays.asList("periodicidade", "numeroDeAmostras", "baseDeCalculo", "siglaAcao"), Arrays.asList(Indicador.PERIODICIDADE_SEMANAL, 9, IFonteEMA.LINHARAPIDA_MACD, "TCSL4"), FachadaBD.JUNCAO_AND, "data", FachadaBD.ORDENACAO_CRESCENTE), Configuracao.getDiretorioTeste() + "EMA-LINHARAPIDA.txt"); // Fechando BD System.out.println("->Fechando BD"); instancia.fecharBD(); }
/** * Inicializa (abre ou cria) o banco de dados, obtendo lock de escrita. * * @param path endereço de disco onde o banco de dados será (está) armazenado * @param indexes atributos pelos quais os objetos armazenados estarão indexados * @param classe tipo do objeto que será armazenado no banco de dados */ private void inicializarBD() { String path = Configuracao.getArquivoDb4o() + NOMEBD; Configuration configuracao = Db4o.newConfiguration(); Map<Class, List<String>> mapa = new HashMap<Class, List<String>>(); mapa.put(Tick.class, Tick.getIndexacao()); mapa.put(Indicador.class, Indicador.getIndexacao()); mapa.put(EMA.class, EMA.getIndexacao()); for (Class<Object> classe : mapa.keySet()) { for (String indice : mapa.get(classe)) { configuracao.objectClass(classe).objectField(indice).indexed(true); } } /* * configura o nível de ativação para 2 Níveis maiores causam perda de * performance */ configuracao.activationDepth(2); /* * configura o nível de atualizacao para 1 em um update atualiza somente * o primeiro nível * * - necessidades maiores, configurar pontualmente por classe: * configuracao.objectClass(classe).updateDepth(arg0); */ // configuracao.messageLevel(3); configuracao.updateDepth(1); configuracao.callbacks(false); configuracao.blockSize(8); configuracao.optimizeNativeQueries(true); configuracao.queries().evaluationMode(QueryEvaluationMode.SNAPSHOT); // configuracao.freespace().useRamSystem(); /* * try { Defragment.defrag(path+ ".db4o"); } catch (IOException e) { // * e.printStackTrace(); } */ /* * Descomentar para ativar o verbose do diagnose. */ /*configuracao.diagnostic().addListener(new DiagnosticListener() { @Override public void onDiagnostic(Diagnostic arg0) { System.out.println(arg0.toString()); } });*/ bd = Db4o.openFile(configuracao, path + ".db4o"); /* * Descomentar para ativar o verbose do otimizador */ // addNativeQueryListener(); }