01: /*
02: * Created on 25/01/2005
03: *
04: * Swing Components - visit http://sf.net/projects/gfd
05: *
06: * Copyright (C) 2004 Igor Regis da Silva Simões
07: *
08: * This program is free software; you can redistribute it and/or
09: * modify it under the terms of the GNU General Public License
10: * as published by the Free Software Foundation; either version 2
11: * of the License, or (at your option) any later version.
12: *
13: * This program is distributed in the hope that it will be useful,
14: * but WITHOUT ANY WARRANTY; without even the implied warranty of
15: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16: * GNU General Public License for more details.
17: *
18: * You should have received a copy of the GNU General Public License
19: * along with this program; if not, write to the Free Software
20: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21: *
22: */
23: package br.com.gfp.db;
24:
25: import java.awt.Frame;
26: import java.lang.reflect.Constructor;
27:
28: import br.com.gfp.dao.GFPController;
29: import br.com.gfp.util.SimpleLog;
30: import br.com.gfpshare.plugin.core.DynamicClassLoader;
31:
32: /**
33: * @author Igor Regis da Silva Simões
34: * @since 25/01/2005 17:39:58
35: *
36: */
37: public class MigradorDB {
38:
39: /**
40: * @param dbManager DataBaseManager usado para alterar o DB
41: *
42: */
43: public MigradorDB() {
44:
45: }
46:
47: /**
48: * Executa a migração de uma versão para a seguinte do banco de dados, caso seja passado por exemplo como parametro que
49: * o banco de dados esta na versão 1 será buscado os scripts de migração para a versão 2 e os mesmos serão executados,
50: * o procedimento seguirá até que não se encontrem scripts de migração para aproxima versão.
51: * @param nomeClasseMigradora O padrão do nome da classe migradora de db Ex br.com.gfp.db.migration.MigrarDB o GFP ira
52: * procurar pela br.com.gfp.db.migration.MigrarDB2 para realizar a migração para a versão 2 do DB.
53: * @param versaoDB Versão atual do banco de dados
54: * @return A versão para qual o banco de dados foi migrado
55: */
56: public int migrarDB(String nomeClasseMigradora, int versaoDB) {
57: boolean precisaMigrar = true;
58: while (precisaMigrar) {
59: try {
60: versaoDB++;
61: Class classe = DynamicClassLoader.getClassLoader()
62: .loadClass(nomeClasseMigradora + versaoDB);
63: Constructor c = classe
64: .getConstructor(new Class[] { Frame.class });
65: c.newInstance(new Object[] { (Frame) GFPController
66: .getGFPController().getContexto().get(
67: GFPController.FRAME_PRINCIPAL) });
68: } catch (Exception e) {
69: ((SimpleLog) GFPController.getGFPController()
70: .getContexto().get(GFPController.LOG))
71: .log("Não foi executado wizard de migração do BD de "
72: + (versaoDB - 1) + " para " + versaoDB);
73: if (!(e instanceof ClassNotFoundException))
74: ((SimpleLog) GFPController.getGFPController()
75: .getContexto().get(GFPController.LOG))
76: .log(e);
77: precisaMigrar = false;
78: versaoDB--;
79: }
80: }
81: return versaoDB;
82: }
83: }
|