Déplacement des fichiers temporaires et du fichier de configuration dans le dossier...
[bilio:bilio.git] / src / config_db.rb
1 # coding: utf-8
2
3 class ConfigDb
4
5         attr_accessor :conf, :chemin_config, :chemin_log, :chemin_temp
6         
7         def initialize window
8                 @window = window
9                 @chemin_temp = Dir.home+"/.bilio"
10                 Dir.mkdir(@chemin_temp) unless Dir.exist?(@chemin_temp)
11                 @chemin_config = @chemin_temp + "/configuration.yaml"
12                 @chemin_log = '../db/database.log'
13                 @conf = nil
14         end
15         
16         def verif_fichier
17                 if File.exist?(@chemin_config)
18                         p "Ouverture du fichier de configuration #{@chemin_config}."
19                         @conf = YAML.load_file(@chemin_config)
20                         return true
21                 else
22                         p "Le fichier de configuration #{@chemin_config} n'existe pas, il doit être créé."
23                         Assistant.new @window, first=true
24                         return false
25                 end
26         end
27         
28         def connexion
29                 if verif_fichier
30                         p "Connexion à la base de donnée #{@conf['database']} sur le serveur #{@conf['adapter']} #{@conf['host']}:#{@conf['port']}."
31                         ActiveRecord::Base.logger = Logger.new(File.open(@chemin_log,'w'))
32                         ActiveRecord::Base.establish_connection(@conf)
33
34                         lancement = false
35                         begin
36                                 last_version = 0
37                                 versions = Schema_migration.find(:all)
38                                 versions.each { |v|
39                                         last_version = v.version.to_i>last_version ? v.version.to_i : last_version
40                                 }
41                                 if ActiveRecord::Base.connected?
42                                         p "Connexion établie. Version de la base de donnée = #{last_version}"
43                                         last_migrate = 0
44                                         Dir.foreach("../db/migrate") {|x| 
45                                                 num = x.to_s[0..2].to_i
46                                                 last_migrate=num if num>last_migrate 
47                                         }
48                                         p "Dernier numéro de migration = #{last_migrate}"
49                                         if last_version<last_migrate.to_i
50                                                 p "Lancement de l'assistant"
51                                                 Assistant.new @window, first=false, migration=true
52                                         elsif last_version.eql?(last_migrate.to_i)
53                                                 lancement = true
54                                         else
55                                                 @window.message_erreur "Votre logiciel est trop ancien par rapport à la base de donnée, veuillez le mettre à jour"
56                                                 Process.exit
57                                         end
58                                 else
59                                         p "Connexion impossible, veuillez vérifier les paramètres."
60                                         p "Lancement de l'assistant"
61                                         Assistant.new @window, first=true
62                                 end
63                         rescue
64                                 if versions.nil?
65                                         p "La base de donnée n'existe pas ou n'est pas correctement créée."
66                                 elsif versions.length.eql?(0)
67                                         p "La table Schema_migration existe mais elle est vide."
68                                 end
69                                 p "Lancement de l'assistant"
70                                 Assistant.new @window, first=true               
71                         end
72                 
73                         @window.lancement if lancement
74                 end
75         end
76         
77         def save_config data
78                 
79                 File.open(@chemin_config, 'w') do |out|
80                         YAML.dump(data, out)
81                 end
82                 @conf = YAML.load_file(@chemin_config)
83         end
84 end