Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 588 | Rev 906 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 588 Rev 600
Line 3... Line 3...
3
 * /opt/lampp/bin/php -d memory_limit=3500M ~/web/eflore-projets/scripts/cli.php baseveg -a chargerTous
3
 * /opt/lampp/bin/php -d memory_limit=3500M ~/web/eflore-projets/scripts/cli.php baseveg -a chargerTous
4
*/
4
*/
Line 5... Line 5...
5
 
5
 
Line 6... Line -...
6
class Baseveg extends EfloreScript {
-
 
7
 
-
 
8
	private $ligne_num;
-
 
9
	private $fichierDonnees = '';
-
 
10
	private $synonymes;
-
 
11
	private $niveaux;
-
 
12
	private $log = '';
-
 
13
	private $colonne_valeur;
-
 
14
	private $colonne_num;
-
 
15
	private $nb_erreurs;
-
 
-
 
6
class Baseveg extends EfloreScript {
-
 
7
 
-
 
8
 
Line 16... Line 9...
16
	private $erreurs_ligne;
9
 
17
	private $motifs = array();
10
 
18
	
11
	
19
	public function executer() {
12
	public function executer() {
Line 53... Line 46...
53
		} catch (Exception $e) {
46
		} catch (Exception $e) {
54
			$this->traiterErreur($e->getMessage());
47
			$this->traiterErreur($e->getMessage());
55
		}
48
		}
56
	}
49
	}
Line -... Line 50...
-
 
50
	
-
 
51
	
-
 
52
	private function  getClasseBasevegVerif() {
-
 
53
		$conteneur = new Conteneur();
-
 
54
		require_once dirname(__FILE__)."/BasevegVerif.php";
-
 
55
		$verif = new BasevegVerif($conteneur,'baseveg');
-
 
56
		return $verif;
-
 
57
	}
-
 
58
	
-
 
59
	private function verifierFichier() {
-
 
60
		$verif = $this->getClasseBasevegVerif();
-
 
61
		$verif->verifierFichier(Config::get('chemins.donnees'));
-
 
62
	}
-
 
63
	
57
	
64
	
58
	private function chargerOntologies() {
65
	private function chargerOntologies() {
59
		$chemin = Config::get('chemins.ontologies');
66
		$chemin = Config::get('chemins.ontologies');
60
		$table = Config::get('tables.ontologies');
67
		$table = Config::get('tables.ontologies');
61
		$requete = "TRUNCATE TABLE $table ;
68
		$requete = "TRUNCATE TABLE $table ;
Line 86... Line 93...
86
		$contenuSql = $this->recupererContenu(Config::get('chemins.metadonnees'));
93
		$contenuSql = $this->recupererContenu(Config::get('chemins.metadonnees'));
87
		$this->executerScripSql($contenuSql);
94
		$this->executerScripSql($contenuSql);
88
	}
95
	}
Line 89... Line 96...
89
 
96
 
90
	private function supprimerTous() {
97
	private function supprimerTous() {
91
		$requete = "DROP TABLE IF EXISTS baseveg_v2012_07_04, baseveg_meta,  baseveg_ontologies ";
98
		$requete = "DROP TABLE IF EXISTS  baseveg_meta,  baseveg_ontologies, baseveg_v".Config::get('version');
92
		$this->getBdd()->requeter($requete);
99
		$this->getBdd()->requeter($requete);
93
	}
-
 
94
/* --------------------------------- Vérification de fichiers ----------------------------------*/
-
 
95
	//identiques
-
 
96
	private function verifierFichier(){
-
 
97
		$this->initialiserParametresVerif();
-
 
98
		$lignes = file($this->fichierDonnees, FILE_IGNORE_NEW_LINES);
-
 
99
		if ($lignes != false) {
-
 
100
			$this->ajouterAuLog("!!! REGARDEZ LES COLONNES DANS NUMERO_COLONNES_IMPORTANT.TXT.");
-
 
101
			foreach ($lignes as $this->ligne_num => $ligne) {
-
 
102
				$this->verifierErreursLigne($ligne);
-
 
103
				$this->afficherAvancement("Vérification des lignes");
-
 
104
			}
-
 
105
			echo "\n";
-
 
106
		} else {
-
 
107
			$this->traiterErreur("Le fichier {$this->fichierDonnees} ne peut pas être ouvert.");
-
 
108
		}
-
 
109
	
-
 
110
		if ($this->nb_erreurs == 0) {
-
 
111
			$this->ajouterAuLog("Il n'y a pas d'erreurs.");
-
 
112
		}
-
 
113
		$this->traiterInfo($this->nb_erreurs." erreurs");
-
 
114
	
-
 
115
		$this->ecrireFichierLog();
-
 
116
	}
-
 
117
	
-
 
118
	private function verifierColonne(){
-
 
119
		$motif = $this->motifs[$this->colonne_num];
-
 
120
		if (preg_match($motif, $this->colonne_valeur) == 0 && $this->verifierSiVide() == false){
-
 
121
			$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;
-
 
122
		}
-
 
123
	}
-
 
124
	
-
 
125
	private function verifierSiVide(){
-
 
126
		$vide = ($this->colonne_valeur  == '') ? true : false;
-
 
127
		return $vide;
-
 
128
	}
-
 
129
	
-
 
130
	private function controlerErreursLigne() {
-
 
131
		$nbreErreursLigne = count($this->erreurs_ligne);
-
 
132
		$this->nb_erreurs += $nbreErreursLigne;
-
 
133
		if ($nbreErreursLigne != 0) {
-
 
134
			$this->ajouterAuLog("Erreurs sur la ligne {$this->ligne_num}");
-
 
135
			$ligneLog = '';
-
 
136
			foreach ($this->erreurs_ligne as $cle => $v){
-
 
137
				$ligneLog .= "colonne $cle : $v - ";
-
 
138
			}
-
 
139
			$this->ajouterAuLog($ligneLog);
-
 
140
		}
-
 
141
	}
-
 
142
	
-
 
143
	//changements
-
 
144
	private function verifierErreursLigne($ligne){
-
 
145
		$this->erreurs_ligne = array();
-
 
146
		$colonnes = explode("\t", $ligne);
-
 
147
		if (isset($colonnes)) {
-
 
148
			foreach ($colonnes as $this->colonne_num => $this->colonne_valeur) {
-
 
149
					if ($this->colonne_num == 1 ) {
-
 
150
						$this->verifierColonne();
-
 
151
					} elseif ($this->colonne_num == 2 ) {
-
 
152
						$this->verifierColonne();
-
 
153
					} elseif ($this->colonne_num == 4 ) {
-
 
154
						$this->verifierNiveaux();
-
 
155
						break;
-
 
156
					}
-
 
157
			}
-
 
158
		} else {
-
 
159
			$message = "Ligne {$this->ligne_num} : pas de tabulation";
-
 
160
			$this->ajouterAuLog($message);
-
 
161
		}
-
 
162
	
-
 
163
		$this->controlerErreursLigne();
-
 
164
	}
-
 
165
	
-
 
166
	
-
 
167
	
-
 
168
	private function verifierNiveaux(){
-
 
Line 169... Line -...
169
		if (preg_match("/^syn(.+)$/", $this->colonne_valeur, $retour) == 1) {
-
 
170
 
-
 
171
			$synonymes = explode(' ', trim($retour[1]));
-
 
172
			foreach($synonymes as $syn){
-
 
173
				if  (!in_array($syn, $this->synonymes)) {
-
 
174
					$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;
-
 
175
				}
-
 
176
			}
-
 
177
		} elseif($this->colonne_valeur != '') {
-
 
178
			if (!in_array($this->colonne_valeur , $this->niveaux)) {
-
 
179
				$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;
-
 
180
			}
-
 
181
		}
-
 
182
	}
-
 
183
	
-
 
184
	// changements
-
 
185
	private function initialiserParametresVerif() {
-
 
186
		$this->nb_erreurs = 0;
-
 
187
		$this->fichierDonnees = Config::get('chemins.donnees');
-
 
188
		$this->niveaux = array('CLA','ALL','ORD','ASS','GRPT','SUBORD','SUBASS','BC','SUBCLA','DC','SUBALL');
-
 
189
		$this->synonymes = array('incl','=','?','illeg','pp','pmaxp','pminp','compl','ambig','non','inval','nn','ined');
-
 
190
		$this->motifs= $this->inverserTableau(array('/^[0-9]+$/' => 1,
-
 
191
												'/(?:[0-9]{2}\/$|[0-9]{2}\/[0-9]\.$|[0-9]{2}\/(?:[0-9]\.){1,5}[0-9]$|[0-9]{2}\/(?:[0-9]\.){4,5}[0-9]\/[0-9]+(?:bis|ter|quater){0,1}$)|incertae sedis/' => 2));
-
 
192
	//présence de '=' , '= ?' et ',' dans les valeurs des paramètres. ne pas utiliser getParametresTableau.
-
 
193
	}
-
 
194
	
-
 
195
	//+------------------------------------------------------------------------------------------------------+
-
 
196
	// Gestion du Log
-
 
197
	
-
 
198
	private function ajouterAuLog($txt) {
-
 
199
		$this->log .= "$txt\n";
-
 
200
	}
-
 
201
	
-
 
202
	private function ecrireFichierLog() {
-
 
203
		$fichierLog = dirname(__FILE__).'/log/verification.log';
-
 
204
		file_put_contents($fichierLog, $this->log);
-
 
205
	}
-
 
206
	
-
 
207
/*--------------------------------------------OUtils-------------------------------------------*/	
-
 
208
	
-
 
209
	//attention , dans les motifs !!
-
 
210
	
-
 
211
	private function inverserTableau($tableau) {
-
 
212
		$inverse = array();
-
 
213
		foreach ($tableau as $cle => $valeurs) {
-
 
214
			$valeurs = explode(';', $valeurs);
-
 
215
			foreach ($valeurs as $valeur) {
-
 
216
				$inverse[$valeur] = $cle;
-
 
217
			}
-
 
218
		}
-
 
219
		return $inverse;
100
	}
220
	}
101
 
221
}
102
}