Chapitre 3 Programmation

Comme tout objet dynacase, les documents FileConnector peuvent être manipulés par leur interface de programmation.

D'autre part, le FileConnector permet une modification de son fonctionnement. Pour cela 2 moyens permettent d'agir lors des importations :

  • le comportement est modifié au niveau de la source en surchargeant les méthodes du FileConnector.
  • le traitement de l'import peut être délégué à la famille Cible en intégrant dans cette famille le mécanisme d'import.

3.1 API : méthodes publiques du FileConnector

bool verifyNewCxFiles()

Retourne un booléen, true si de nouveaux fichiers doivent être importés, sinon false. L'appel de cette fonction active la scrutation de la source.

string[] getNewCxFiles()

Retourne la liste des noms de fichiers (seul le nom de fichier, sans chemin d'accès à importer). L'appel de cette fonction active la scrutation de la source.

string transfertNewCxFiles()

Réalise le transfert des fichiers à traiter, et retourne un message d'erreur (vide si pas d'erreur). Si plusieurs fichiers sont à traiter, une erreur de traitement de l'un d'eux n'arrête pas le traitement.

string transfertCxFile($file)

Réalise le transfert du fichier. Le transfert est réalisé quelque soit son état. Un message d'erreur (vide si pas d'erreur) est éventuellement retourné.

string[] getCxFiles()

Retourne la liste des fichiers.

string getCxFileContent($file)

Retourne le contenu du fichier spécifié ou un message d'erreur.

string copyCxFile($file, $target)

Copie le fichier $file dans $target. $target pouvant être un répertoire ou un fichier. $target doit être accessible en écriture. retourne un message d'erreur (vide si OK).

string getCxFileStatus($file)

Retourne le statut d'un fichier :

  • N = nouveau
  • I = importé
  • D = supprimé
  • U = inconnu
void removeCxFile($file)

Supprime le fichier (l'état n'est pas contrôlé au préalable). Si une erreur est détectée lors de la suppression elle n'est pas signalée.

void resetScan()

Vide la liste des fichiers du FileConnector quelque soit leur état.

3.2 Modification du comportement

3.2.1 Source

Deux méthodes peuvent être surchargée pour modifier le comportement du FileConnector.

string preTransfert(
    \Dcp\Family\FileConnector &$fileconnector, 
                       string $filepath, 
                          Doc &$doc            )

Cette méthode est déclenchée lors du traitement de l'importation du fichier, après l'initialisation du document cible, avant sa création en base.

  • $fileconnector est l'objet FileConnector lui-même.
  • $filepath est le chemin d'accès complet au fichier en cours d'importation
  • $doc est le document de la famille cible initialisé (non sauvé en base).

A cette étape, le contrôle d'accès au fichier en lecture a été fait et le document cible a été créé (création de document). Les méthodes du FileConnector sont utilisables au travers de l'objet $fileconnector.

string postTransfert(
    \Dcp\Family\FileConnector &$fileconnector, 
                       string $filepath, 
                          Doc &$doc             )

Cette méthode reçoit les mêmes arguments que preTransfert(). Elle est activé après le transfert complet du fichier : c'est à dire lorsque le document est créé, éventuellement déplacé dans le dossier spécifié et, si cela est demandé, après que le fichier source soit supprimé.

3.2.2 Cible

La famille cible peut déclarer une méthode dont le prototype est le suivant :

string connectorExecute(\Dcp\Family\FileConnector &$fileconnector, 
                                           string $fpath)
  • (object) $fileconnector est le document FileConnector
  • (string) $fpath est le chemin complet d'accès au fichier en cours de traitement

La méthode est appelée sur le document cible après :

vérification de l'accès réel au fichier
création du document cible
appel éventuel du preTransfert (cf ci-dessus)

Le document à ce stade est créé sans être enregistré en base de donnée (pas de Doc::store()). La méthode connectorExecute() du document cible a en charge l'ensemble des opérations nécessaires à la création complète du document cible. Suite à son exécution, le FileConnector, si aucune erreur n'est signalée, marque le fichier comme importé, et si cela est demandé le supprime. Puis la méthode postTransfert décrite au paragraphe précédent est activée.

3.2.3 Méthodes privées du FileConnector

Les méthodes ci-dessous sont utilisables seulement dans le cadre des surcharges d'un FileConnector ou de la famille cible.

Elles sont listées non exhaustivement et à titre d'information. Pour plus de précision consultez le code source "Class.FileConnector.php".

string FileConnector::moveCxFile($file, $doc) 

Déplace le doc créé dans le dossier dynacase

bool FileConnector::isValidCxFile($file) 

Contrôle si le fichier est présent bien dans la liste interne des fichiers de la source ((liste mise à jour par l'appel aux méthodes verifyNewCxFiles et getNewCxFiles)).

string[] FileConnector::iGetFileTransf($file)

Retourne la règle de transfert

  • $ret['match'] : règle de transfert matchée par le fichier
  • $ret['fam'] : id de la famille cible
  • $ret['attr'] : attribut id dans la famille cible
  • $ret['dir'] : dossier dynacase cible
  • $ret['sup'] : 0 : pas de suppression / 1 : suppression demandée du fichier après transfert
void FileConnector::setCxFileStatus($file, $status)

Positionne le statut (N,I,D,U) du fichier

1) seul le nom de fichier, sans chemin d'accès

×