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