Subversion Repositories Applications.referentiel

Rev

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

Rev 15 Rev 16
Line 1... Line 1...
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe Controleur du module Test.
4
 * Classe Controleur du module Test.
-
 
5
 * 
-
 
6
 * TODO : refactoriser l'ensemble des tests!
5
 *
7
 *
6
 * @package		Referentiel
8
 * @package		Referentiel
7
 * @category	Php5.2
9
 * @category	Php5.2
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @copyright	2010 Tela-Botanica
11
 * @copyright	2010 Tela-Botanica
Line 137... Line 139...
137
		$donnees['tests'][] = $this->testerHybrideParent02Syntaxe($noms);
139
		$donnees['tests'][] = $this->testerHybrideParent02Syntaxe($noms);
138
		$donnees['tests'][] = $this->testerHybrideParent02Existence($noms);
140
		$donnees['tests'][] = $this->testerHybrideParent02Existence($noms);
Line 139... Line 141...
139
		
141
		
Line -... Line 142...
-
 
142
		*/
-
 
143
		
-
 
144
		$donnees['tests'][] = $this->testerPresenceSyntaxe($noms);
-
 
145
		$donnees['tests'][] = $this->testerStatutOrigineSyntaxe($noms);
Line 140... Line 146...
140
		*/
146
		$donnees['tests'][] = $this->testerStatutIntroductionSyntaxe($noms);
141
		
147
		$donnees['tests'][] = $this->testerStatutCultureSyntaxe($noms);
142
		
148
		
Line 143... Line 149...
143
		//Debug::printr($this->manuel);
149
		//Debug::printr($this->manuel);
144
		$this->setSortie(self::RENDU_CORPS, $this->getVue('test', $donnees)); 
150
		$this->setSortie(self::RENDU_CORPS, $this->getVue('test', $donnees)); 
-
 
151
	}
-
 
152
	
-
 
153
	//+--------------------------------------------------------------------------------------------------------------+//
-
 
154
	// TESTS
-
 
155
	
-
 
156
	private function testerStatutCultureSyntaxe($noms) {
-
 
157
		$info = array('titre' => 'statut_culture -> syntaxe',
-
 
158
			'description' => "Le champ statut_culture peut contenir :\n".
-
 
159
			" - le symbole tiret «-» une autre information non référencée...\n".
-
 
160
			" - une première lettre en majuscule indiquant le code standard attribué à ce taxon.\n".
-
 
161
			" - Cette première lettre peut être suivie d'un tiret puis d'une deuxième lettre en majuscule indiquant ".
-
 
162
			"un code de présence spécifique au référentiel.",
-
 
163
			'resultat' => false);
-
 
164
		
-
 
165
		// Réalisation du test
-
 
166
		$noms_erreur = array();
-
 
167
		foreach ($noms as $nom) {
-
 
168
			if ($nom['statut_culture'] != '') {
-
 
169
				if (!$this->verifierStatutCulture($nom['statut_culture'])) {
-
 
170
					$noms_erreur[] = array($nom['num_nom'], $nom['statut_culture']);
-
 
171
				}
-
 
172
			}
-
 
173
		}
-
 
174
		
-
 
175
		// Analyse des résultats
-
 
176
		if (count($noms_erreur) > 0) {
-
 
177
			$info['message']['entete'] = array('num_nom', 'statut_culture erroné');
-
 
178
			$info['message']['lignes'] = $noms_erreur;
-
 
179
		} else {
-
 
180
			$info['resultat'] = true;
-
 
181
		}
-
 
182
		
-
 
183
		return $info;
-
 
184
	}
-
 
185
	
-
 
186
	private function testerStatutIntroductionSyntaxe($noms) {
-
 
187
		$info = array('titre' => 'statut_introduction -> syntaxe',
-
 
188
			'description' => "Le champ statut_introduction peut contenir :\n".
-
 
189
			" - le symbole tiret «-» une autre information non référencée...\n".
-
 
190
			" - une première lettre en majuscule indiquant le code standard attribué à ce taxon.\n".
-
 
191
			" - Cette première lettre peut être suivie d'un tiret puis d'une deuxième lettre en majuscule indiquant ".
-
 
192
			"un code de présence spécifique au référentiel.",
-
 
193
			'resultat' => false);
-
 
194
		
-
 
195
		// Réalisation du test
-
 
196
		$noms_erreur = array();
-
 
197
		foreach ($noms as $nom) {
-
 
198
			if ($nom['statut_introduction'] != '') {
-
 
199
				if (!$this->verifierStatutIntroduction($nom['statut_introduction'])) {
-
 
200
					$noms_erreur[] = array($nom['num_nom'], $nom['statut_introduction']);
-
 
201
				}
-
 
202
			}
-
 
203
		}
-
 
204
		
-
 
205
		// Analyse des résultats
-
 
206
		if (count($noms_erreur) > 0) {
-
 
207
			$info['message']['entete'] = array('num_nom', 'statut_introduction erroné');
-
 
208
			$info['message']['lignes'] = $noms_erreur;
-
 
209
		} else {
-
 
210
			$info['resultat'] = true;
-
 
211
		}
-
 
212
		
-
 
213
		return $info;
-
 
214
	}
-
 
215
	
-
 
216
	private function testerStatutOrigineSyntaxe($noms) {
-
 
217
		$info = array('titre' => 'statut_origine -> syntaxe',
-
 
218
			'description' => "Le champ statut_origine peut contenir :\n".
-
 
219
			" - le symbole tiret «-» une autre information non référencée...\n".
-
 
220
			" - une première lettre en majuscule indiquant le code standard attribué à ce taxon.\n".
-
 
221
			" - Cette première lettre peut être suivie d'un tiret puis d'une deuxième lettre en majuscule indiquant ".
-
 
222
			"un code de présence spécifique au référentiel.",
-
 
223
			'resultat' => false);
-
 
224
		
-
 
225
		// Réalisation du test
-
 
226
		$noms_erreur = array();
-
 
227
		foreach ($noms as $nom) {
-
 
228
			if ($nom['statut_origine'] != '') {
-
 
229
				if (!$this->verifierStatutOrigine($nom['statut_origine'])) {
-
 
230
					$noms_erreur[] = array($nom['num_nom'], $nom['statut_origine']);
-
 
231
				}
-
 
232
			}
-
 
233
		}
-
 
234
		
-
 
235
		// Analyse des résultats
-
 
236
		if (count($noms_erreur) > 0) {
-
 
237
			$info['message']['entete'] = array('num_nom', 'statut_origine erroné');
-
 
238
			$info['message']['lignes'] = $noms_erreur;
-
 
239
		} else {
-
 
240
			$info['resultat'] = true;
-
 
241
		}
-
 
242
		
-
 
243
		return $info;
-
 
244
	}
-
 
245
	
-
 
246
	private function testerPresenceSyntaxe($noms) {
-
 
247
		$info = array('titre' => 'presence -> syntaxe',
-
 
248
			'description' => "Le champ presence contient soit :\n".
-
 
249
			" - le symbole tiret «-» une autre information non référencée...\n".
-
 
250
			" - une première lettre en majuscule indiquant le code standard attribué à ce taxon.\n".
-
 
251
			" - Cette première lettre peut être suivie d'un tiret puis d'une deuxième lettre en majuscule indiquant ".
-
 
252
			"un code de présence spécifique au référentiel.",
-
 
253
			'resultat' => false);
-
 
254
		
-
 
255
		// Réalisation du test
-
 
256
		$noms_erreur = array();
-
 
257
		foreach ($noms as $nom) {
-
 
258
			if ($nom['presence'] != '') {
-
 
259
				if (!$this->verifierPresence($nom['presence'])) {
-
 
260
					$noms_erreur[] = array($nom['num_nom'], $nom['presence']);
-
 
261
				}
-
 
262
			}
-
 
263
		}
-
 
264
		
-
 
265
		// Analyse des résultats
-
 
266
		if (count($noms_erreur) > 0) {
-
 
267
			$info['message']['entete'] = array('num_nom', 'presence erroné');
-
 
268
			$info['message']['lignes'] = $noms_erreur;
-
 
269
		} else {
-
 
270
			$info['resultat'] = true;
-
 
271
		}
145
	}
272
		
146
	
273
		return $info;
147
	//+--------------------------------------------------------------------------------------------------------------+//
274
	}
148
	// TESTS
275
	
149
	private function testerHybrideParent02Existence($noms) {
276
	private function testerHybrideParent02Existence($noms) {
Line 1840... Line 1967...
1840
	}
1967
	}
Line 1841... Line 1968...
1841
	
1968
	
1842
	//+--------------------------------------------------------------------------------------------------------------+//
1969
	//+--------------------------------------------------------------------------------------------------------------+//
Line -... Line 1970...
-
 
1970
	// MÉTHODES COMMUNES aux TESTS
-
 
1971
	
-
 
1972
	private function verifierPresence($valeur) {
-
 
1973
		$codes = $this->manuel['codes_presence'];
-
 
1974
		$ok = $this->verifierStatuts($valeur, $codes);
-
 
1975
		return $ok;
-
 
1976
	}
-
 
1977
	
-
 
1978
	private function verifierStatutOrigine($valeur) {
-
 
1979
		$codes = $this->manuel['codes_statuts_origine'];
-
 
1980
		$ok = $this->verifierStatuts($valeur, $codes);
-
 
1981
		return $ok;
-
 
1982
	}
-
 
1983
	
-
 
1984
	private function verifierStatutIntroduction($valeur) {
-
 
1985
		$codes = $this->manuel['codes_statuts_introduction'];
-
 
1986
		$ok = $this->verifierStatuts($valeur, $codes);
-
 
1987
		return $ok;
-
 
1988
	}
-
 
1989
	
-
 
1990
	private function verifierStatutCulture($valeur) {
-
 
1991
		$codes = $this->manuel['codes_statuts_culture'];
-
 
1992
		$ok = $this->verifierStatuts($valeur, $codes);
-
 
1993
		return $ok;
-
 
1994
	}
-
 
1995
	
-
 
1996
	private function verifierStatuts($valeur, $codes) {
-
 
1997
		$ok = true;
-
 
1998
		if (!preg_match("/^(?:|-|[$codes](?:-[A-Z])?)$/", $valeur)) {
-
 
1999
			$ok = false;
-
 
2000
		}
-
 
2001
		return $ok;
1843
	// MÉTHODES COMMUNES aux TESTS
2002
	}
1844
	
2003
	
1845
	private function verifierBooleen($valeur) {
2004
	private function verifierBooleen($valeur) {
1846
		$ok = true;
2005
		$ok = true;
1847
		if (!preg_match('/^1$/', $valeur)) {
2006
		if (!preg_match('/^1$/', $valeur)) {