require_once(__DIR__."/lib/XMLFile.class.php");
require_once(__DIR__."/lib/AgapeFile.class.php");
require_once(__DIR__."/lib/RelaxNG.class.php");
+require_once(__DIR__."/lib/FluxData.class.php");
+require_once(__DIR__."/lib/FluxDataTest.class.php");
+
require_once(__DIR__."/lib/RelaxNgImportAgapeAnnotation.class.php");
require_once(__DIR__."/lib/GenerateXMLFromAnnotedRelaxNG.class.php");
}
public function getBordereauTest(){
- $connecteur_info = $this->connecteurConfig->getFileContent('flux_info_content');
+ $flux_info = $this->connecteurConfig->getFileContent('flux_info_content');
$data = array();
- if($connecteur_info){
- foreach(json_decode($connecteur_info,true) as $key => $value){
+ if($flux_info){
+ foreach(json_decode($flux_info,true) as $key => $value){
$data[$key] = $value;
}
}
$file_list = $this->getProprietePastell('file');
- $fileInfo = array();
+ $fluxDataTest = new FluxDataTest($data,$file_list);
- foreach($file_list as $file_id){
- if (empty($data[$file_id])){
- continue;
- }
- $fileInfo[$file_id] = array('filename'=>$data[$file_id],'sha256'=>hash('sha256', mt_rand(0,mt_getrandmax())));
- }
-
- return $this->getBordereau($data,$fileInfo);
+ return $this->getBordereau($fluxDataTest);
}
- public function getBordereau(array $flux_info, array $fileInfo){
+ public function getBordereau(FluxData $fluxData){
$relax_ng_path = $this->connecteurConfig->getFilePath('schema_rng');
$agape_file_path = $this->connecteurConfig->getFilePath('profil_agape');
$annotationWrapper = new AnnotationWrapper();
$annotationWrapper->setConnecteurInfo($data);
- $annotationWrapper->setFluxInfo($flux_info);
- foreach($fileInfo as $file_id => $file_info) {
- $annotationWrapper->addFile($file_id,$file_info['filename'] , $file_info['sha256']);
- }
+ $annotationWrapper->setFluxData($fluxData);
+
$annotationWrapper->setCompteurJour($this->getTransferIdentifier());
$generateBordereauSEDA = new GenerateBordereauSEDA();
$xml = $generateBordereauSEDA->generate($bordereau_seda_with_annotation, $annotationWrapper);
return $this->getProprietePastell('connecteur');
}
- protected function getProprietePastell($type){
+ public function getProprietePastell($type){
$agape_file_path = $this->connecteurConfig->getFilePath('profil_agape');
$agapeFile = new AgapeFile();
$annotation_list = $agapeFile->getAllAnnotation($agape_file_path);
/** @var SedaNG $sedaNG */
$sedaNG = $this->getMyConnecteur();
+
+ $result = $sedaNG->getBordereauTest();
+ if (!$result) {
+ $this->setLastMessage($sedaNG->getLastValidationError());
+ return false;
+ }
+
header("Content-type: text/xml");
header("Content-disposition: inline; filename=bordereau.xml");
- echo $sedaNG->getBordereauTest();
+ echo $result;
exit;
-
+
}
}
\ No newline at end of file
class AnnotationWrapper {
private $connecteurInfo = array();
- private $flux_info = array();
private $compteur_jour;
- private $fileInfo = array();
+
+ /** @var FluxData */
+ private $fluxData;
public function setConnecteurInfo(array $connecteurInfo){
$this->connecteurInfo = $connecteurInfo;
$this->compteur_jour = $compteur_jour;
}
- public function addFile($file_id,$filename,$sha256){
- $this->fileInfo[$file_id] = array('filename'=>$filename,'sha256'=>$sha256);
- }
-
-
- public function setFluxInfo(array $flux_info){
- $this->flux_info = $flux_info;
+ public function setFluxData(FluxData $fluxData){
+ $this->fluxData = $fluxData;
}
-
+
+
public function extractInfo($string) {
$result = array();
preg_match_all("#{{pastell:([^:]*):?((?:(?!}}).)*)}}#", $string, $matches);
protected function integrityCommand(){
$data = "";
- foreach($this->fileInfo as $file_id => $file_data){
+ foreach($this->fluxData->getFilelist() as $file_id){
$integrityXML = new SimpleXMLElement("<Integrity></Integrity>");
- $containsXML = $integrityXML->addChild('Contains',$file_data['sha256']);
+ $containsXML = $integrityXML->addChild('Contains',$this->fluxData->getFileSHA256($file_id));
$containsXML->addAttribute('algorithme',"http://www.w3.org/2001/04/xmlenc#sha256");
- $integrityXML->addChild('UnitIdentifier',$file_data['filename']);
+ $integrityXML->addChild('UnitIdentifier',$this->fluxData->getFilename($file_id));
$dom = dom_import_simplexml($integrityXML);
$data .= $dom->ownerDocument->saveXML($dom->ownerDocument->documentElement);
}
}
protected function fluxCommand($data){
- return $this->getStringInfo($this->flux_info, $data);
+ $value = $this->fluxData->getData($data);
+ return $this->getAnnotationReturn(AnnotationReturn::STRING, $value);
}
protected function compteurJourCommand(){
}
protected function fileCommand($data){
- if (empty($this->fileInfo[$data])){
+ $value = $this->fluxData->getFilename($data);
+ if (empty($value)){
return $this->getAnnotationReturn(AnnotationReturn::EMPTY_RETURN);
}
- $filename = $this->fileInfo[$data]['filename'];
- return $this->getAnnotationReturn(AnnotationReturn::ATTACHMENT_INFO,$filename);
+ return $this->getAnnotationReturn(AnnotationReturn::ATTACHMENT_INFO,$value);
}
--- /dev/null
+<?php
+
+
+abstract class FluxData {
+
+ abstract function getData($key);
+ abstract function getFilename($key);
+ abstract function getFileSHA256($key);
+ abstract function getFilelist();
+
+}
\ No newline at end of file
--- /dev/null
+<?php
+
+class FluxDataTest extends FluxData {
+
+ private $flux_info;
+ private $file_list;
+
+ public function __construct(array $flux_info, array $file_list) {
+ $this->flux_info = $flux_info;
+ $this->file_list = $file_list;
+ }
+
+ public function getData($key) {
+ if (isset($this->flux_info[$key])){
+ return $this->flux_info[$key];
+ }
+ return "";
+ }
+
+ public function getFileList() {
+ return $this->file_list;
+ }
+
+ public function getFilename($key) {
+ return $this->getData($key);
+ }
+
+ public function getFileSHA256($key) {
+ return base64_encode(mt_rand(0,mt_getrandmax()));
+ }
+}
\ No newline at end of file
} else {
throw new Exception("annotationReturn inconnu");
}
-
}
/** @var DOMElement $node */
foreach($nodeToRemove as $node){
}
public function testIntegrity(){
- $this->annotationWrapper->addFile("toto","toto.xml" ,"XYZT" );
+
+ $fluxDataTest = new FluxDataTest(array(), array("toto"));
+
+ $this->annotationWrapper->setFluxData($fluxDataTest);
+
$integrity = $this->annotationWrapper->wrap("{{pastell:integrity}}")->string;
$xmlFile = new XMLFile();
$xml = $xmlFile->getFromString("<element>".$integrity."</element>");
}
public function testFluxWrap(){
- $this->annotationWrapper->setFluxInfo(array("foo"=>"bar"));
+ $fluxDataTest = new FluxDataTest(array("foo"=>"bar"), array());
+ $this->annotationWrapper->setFluxData($fluxDataTest);
$this->assertAnnotation("bar", "{{pastell:flux:foo}}");
}
}
\ No newline at end of file
}
public function testRelaxNGValide() {
- $this->annotationWrapper->setFluxInfo(
- array(
- 'date_ack_iso_8601'=>'2015-02-10',
- 'date_debut_iso_8601'=>'2015-02-10',
- 'archive_size_ko'=>12,
- 'date_integ_iso_8601'=>'2016-01-01',
- 'start_date' => '2016-01-02',
- 'date_acquittement_iso_8601' => date("c"),
- 'date_mandatement' => date("c")
- )
+
+ $data_test = array(
+ 'date_ack_iso_8601'=>'2015-02-10',
+ 'date_debut_iso_8601'=>'2015-02-10',
+ 'archive_size_ko'=>12,
+ 'date_integ_iso_8601'=>'2016-01-01',
+ 'start_date' => '2016-01-02',
+ 'date_acquittement_iso_8601' => date("c"),
+ 'date_mandatement' => date("c"),
+ "pes_aller" => "toto.xml"
);
- $this->annotationWrapper->addFile("pes_aller","toto.xml" ,"XYZT" );
+
+ $fluxDataTest = new FluxDataTest($data_test,array("pes_aller") );
+
+ $this->annotationWrapper->setFluxData($fluxDataTest);
$xml = $this->generate();
$sedaValidation = new SedaValidation();
}
public function testConnecteur(){
+ $fluxDataTest = new FluxDataTest(array(),array() );
+ $this->annotationWrapper->setFluxData($fluxDataTest);
$this->annotationWrapper->setConnecteurInfo(array('service_versant_description'=>'FooBar'));
$xml = $this->generate();
$xmlFile = new XMLFile();