/tags/v5.9-aulnaie/scripts/modules/baseveg/BasevegVerif.php |
---|
New file |
0,0 → 1,94 |
<?php |
class BasevegVerif extends VerificateurDonnees { |
private $synonymes; |
private $niveaux; |
private $motifs; |
//obligatoire |
public function definirTraitementsColonnes() { |
$this->initialiserParametresVerif(); |
if ($this->colonne_num == 1 ) { |
$this->verifierColonne(); |
} elseif ($this->colonne_num == 2 ) { |
$this->verifierColonne(); |
} elseif ($this->colonne_num == 4 ) { |
$this->verifierNiveaux(); |
} |
} |
public function initialiserParametresVerif() { |
$this->niveaux = array('CLA','ALL','ORD','ASS','GRPT','SUBORD','SUBASS','BC','SUBCLA','DC','SUBALL'); |
$this->synonymes = array('incl','=','?','illeg','pp','pmaxp','pminp','compl','ambig','non','inval','nn','ined'); |
$this->motifs= $this->inverserTableau(array('/^[0-9]+$/' => 1, |
'/(?:[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)); |
//présence de '=' , '= ?' et ',' dans les valeurs des paramètres. ne pas utiliser getParametresTableau. |
} |
//++---------------------------------traitements des colonnes baseveg------------------------------------++ |
/** |
* |
* verifie le champ niveau |
*/ |
public function verifierNiveaux(){ |
if (preg_match("/^syn(.+)$/", $this->colonne_valeur, $retour) == 1) { |
$synonymes = explode(' ', trim($retour[1])); |
foreach($synonymes as $syn){ |
if (!in_array($syn, $this->synonymes)) { |
$this->noterErreur(); |
} |
} |
} elseif($this->colonne_valeur != '') { |
if (!in_array($this->colonne_valeur , $this->niveaux)) { |
$this->noterErreur(); |
} |
} |
} |
/** |
* |
* vérifie un motif sur la valeur entière d'une colonne par expression régulière |
* |
*/ |
public function verifierColonne(){ |
$motif = $this->motifs[$this->colonne_num]; |
if (preg_match($motif, $this->colonne_valeur) == 0 && $this->verifierSiVide() == false){ |
$this->noterErreur(); |
} |
} |
/** |
* |
* vérifie si une colonne est vide ou non de valeurs |
* |
*/ |
public function verifierSiVide(){ |
$vide = ($this->colonne_valeur == '') ? true : false; |
return $vide; |
} |
/*--------------------------------------------OUtils-------------------------------------------*/ |
//attention , dans les motifs !! |
private function inverserTableau($tableau) { |
$inverse = array(); |
foreach ($tableau as $cle => $valeurs) { |
$valeurs = explode(';', $valeurs); |
foreach ($valeurs as $valeur) { |
$inverse[$valeur] = $cle; |
} |
} |
return $inverse; |
} |
} |
?> |
/tags/v5.9-aulnaie/scripts/modules/baseveg/Baseveg.php |
---|
New file |
0,0 → 1,111 |
<?php |
/** Exemple lancement: |
* /opt/lampp/bin/php -d memory_limit=3500M ~/web/eflore-projets/scripts/cli.php baseveg -a chargerTous |
*/ |
class Baseveg extends EfloreScript { |
public function executer() { |
try { |
$this->initialiserProjet('baseveg'); |
$cmd = $this->getParametre('a'); |
switch ($cmd) { |
case 'supprimerTous' : |
$this->supprimerTous(); |
break; |
case 'chargerStructureSql' : |
$this->chargerStructureSql(); |
break; |
case 'chargerMetadonnees' : |
$this->chargerMetadonnees(); |
break; |
case 'chargerDonnees' : |
$this->chargerDonnees(); |
break; |
case 'verifierFichier' : |
//cette étape met en avant les valeurs qui vont poser des problèmes (ontologies..) |
$this->verifierFichier(); |
break; |
case 'supprimerOntologies' : |
$this->supprimerOntologies(); |
break; |
case 'chargerOntologies' : |
$this->chargerOntologies(); |
break; |
case 'chargerTous' : |
//$this->supprimerTous(); |
$this->chargerStructureSql(); |
$this->chargerMetadonnees(); |
$this->chargerDonnees(); |
$this->chargerOntologies(); |
break; |
default : |
throw new Exception("Erreur : la commande '$cmd' n'existe pas!"); |
} |
} catch (Exception $e) { |
$this->traiterErreur($e->getMessage()); |
} |
} |
private function getClasseBasevegVerif() { |
$conteneur = new Conteneur(); |
require_once dirname(__FILE__)."/BasevegVerif.php"; |
$verif = new BasevegVerif($conteneur,'baseveg'); |
return $verif; |
} |
private function verifierFichier() { |
$verif = $this->getClasseBasevegVerif(); |
$verif->verifierFichier(Config::get('chemins.donnees')); |
} |
private function supprimerOntologies() { |
$chemin = Config::get('chemins.ontologies'); |
$table = Config::get('tables.ontologies'); |
$requete = "TRUNCATE TABLE $table ;"; |
$this->getBdd()->requeter($requete); |
} |
private function chargerOntologies() { |
$chemin = Config::get('chemins.ontologies'); |
$table = Config::get('tables.ontologies'); |
$requete = "LOAD DATA INFILE '$chemin' ". |
"REPLACE INTO TABLE $table ". |
'CHARACTER SET utf8 '. |
'FIELDS '. |
" TERMINATED BY '\t' ". |
" ENCLOSED BY '' ". |
" ESCAPED BY '\\\' " |
; |
$this->getBdd()->requeter($requete); |
} |
private function chargerDonnees() { |
$table = Config::get('tables.donnees'); |
$requete = "LOAD DATA INFILE '".Config::get('chemins.donnees')."' ". |
"REPLACE INTO TABLE $table ". |
'CHARACTER SET utf8 '. |
'FIELDS '. |
" TERMINATED BY '\t' ". |
" ENCLOSED BY '' ". |
" ESCAPED BY '\\\'"; |
$this->getBdd()->requeter($requete); |
} |
protected function chargerMetadonnees() { |
$contenuSql = $this->recupererContenu(Config::get('chemins.metadonnees')); |
$this->executerScripSql($contenuSql); |
} |
private function supprimerTous() { |
$requete = "DROP TABLE IF EXISTS baseveg_meta, baseveg_ontologies, baseveg_v".Config::get('version'); |
$this->getBdd()->requeter($requete); |
} |
} |
?> |
/tags/v5.9-aulnaie/scripts/modules/baseveg/baseveg.ini |
---|
New file |
0,0 → 1,26 |
version="2014_05_11" |
dossierTsv = "{ref:dossierDonneesEflore}baseveg/2014-05-11/" |
dossierSql = "{ref:dossierTsv}" |
[tables] |
donnees = "baseveg_v{ref:version}" |
metadonnees = "baseveg_meta" |
ontologies = "baseveg_ontologies" |
[fichiers] |
structureSql = "baseveg_v{ref:version}.sql" |
metadonnees = "baseveg_insertion_meta_v{ref:version}.sql" |
donnees = "baseveg_v{ref:version}.tsv" |
ontologies = "baseveg_ontologies.tsv" |
[chemins] |
structureSql = "{ref:dossierSql}{ref:fichiers.structureSql}" |
donnees = "{ref:dossierTsv}{ref:fichiers.donnees}" |
metadonnees = "{ref:dossierSql}{ref:fichiers.metadonnees}" |
ontologies ="{ref:dossierTsv}{ref:fichiers.ontologies}" |
[Parametres] |
niveaux = "'CLA';'ALL';'ORD';'ASS';'GRPT';'SUBORD';'SUBASS';'BC';'SUBCLA';'DC';'SUBALL'" |
synonymes = "'incl';'=';'= ?';'illeg';'pp';'pmaxp';'pminp';'compl';'ambig';'non';'inval';'nn';'ined'" |
motifs = "/^[0-9]+$/=1; |
/(?:[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){0,1}$)|incertae sedis/=2" |