2009-07-07 7 views
1

J'ai un programme existant que nous avons développé sous la forme d'un grand nombre de plugins Eclipse. L'un des plug-ins est chargé de lire les informations internes et de générer un fichier de sortie qui est transmis à un autre système.Utilisation de plug-ins Eclipse pour implémenter différents formats de fichier de sortie

Le format de ce fichier de sortie est entièrement spécifié dans un document contrôlé.

Maintenant, j'ai besoin d'étendre cette application pour sortir une version plus récente de ce format, mais je ne veux pas perdre la possibilité de sortir l'ancienne version. Les deux sont assez similaires pour que je puisse m'en sortir avec quelques instructions 'if', mais ce n'est pas la méthode OO.

Il semble que je devrais avoir un nouveau plug-in qui fournit le nouveau format de fichier, puis utilise en quelque sorte un point d'extension pour trouver un plug-in qui implémente le format demandé. Une approche consiste à faire en sorte que le nom du point d'extension code l'ID de format.

Ensuite, je dois configurer d'une certaine manière quel format ce programme particulier veut utiliser.

Y a-t-il des bonnes pratiques que les gens peuvent suggérer? Eclipse est une plate-forme tellement vaste qu'il y a des dizaines de façons de faire les choses et pas toujours un gagnant clair.

Répondre

1

Voici ce que j'ai fini avec.

Nous avions déjà quelque chose appelé ImplProvider, qui fournissait une abstraction facile pour les points d'extension. Donnez-lui un point d'extension à rechercher, et il trouvera quelqu'un qui étend ce point et instancie la classe décrite. Eclipse assez typique.

Je l'ai étendu en permettant à l'utilisateur de transmettre une carte d'attributs. La définition du point d'extension inclut un nouvel élément appelé "identificateur" et, lorsqu'elle recherche un point d'extension correspondant, la section "identificateur" doit contenir tous les attributs que vous avez demandés. Tous les "exportateurs" sont implémentés dans cette méthode et définissent deux attributs: "icd" et "type". "icd" signifie Document de Contrôle d'Interface ... vous pouvez imaginer que ses valeurs soient quelque chose comme "HTML5", "RFCxxxx", ou dans mon cas un numéro de propriété d'une société assigné au document qui décrit le format de fichier. Le champ "type" est là parce que parfois un ICD peut définir plusieurs formats de fichiers, vous devez donc en choisir un. Maintenant, quand je veux sortir un fichier, je peux rechercher le DAI préféré, ou demander au produit de spécifier le DAI à utiliser. La classe qui fait réellement la sortie est recherchée à travers ce mécanisme.

Questions connexes