[Java] parser, éditeur,.. des idées ?

parser, éditeur,.. des idées ? [Java] - Java - Programmation

Marsh Posté le 13-02-2003 à 10:15:11    

Hello tout le monde :)
Je développe une webapp java/struts. Une partie de cette application consiste en un pseudo éditeur de texte. En fait, j'ai un certain nombre de lettres "types" destinées à des clients qui peuvent être adaptées par l'utilisateur de mon application pour correspondre a la réalité.  
J'aimerais connaitre vos idées sur une maniere efficace de stocker ces "lettres types" et de pouvoir ensuite les afficher de manière éditable par l'utilisateur et enfin imprimer et peut etre stocker une version de la lettre modifiée...
Tout en sachant que la lettre elle meme comprend un certain nombre de champ (adresse du client, ...) qui doivent être remplis automatiquement.
Je n'attends pas de code tout fait, j'aimerais juste profiter de vos expériences pour connaitre selon vous une bonne maniere de procéder (stockage,...).
 
Merci bien ;)

Reply

Marsh Posté le 13-02-2003 à 10:15:11   

Reply

Marsh Posté le 13-02-2003 à 10:32:49    

Dans ta webapp tu vas sûrement écrire des JSP.
Tu peux utiliser la même syntaxe que les JSPs pour ta lettre
 
Dans ces JSP tu as du HTML (ce qui fait le texte de base deja formatté )
Ensuite tu peux utiliser des custom tags:
 
un custom tag pour indiquer que l'utilisateur doit entrer une méthode
un custom tag pour remplir un champ automatiquement (à partir d'une BD par exemple)
 
Quand tu refiles cette jsp à ton serveur web, il va gentiment afficher des zones editables si tes custom tags sont bien definis et rechercher les valeurs à remplir automatiquement.
 
Là où ça devient sport, c'est que c'est pas vraiment l'utilisation qui est prévue pour une JSP. Les JSPs sont normalement deja disponibles quand l'application tourne, et chez toi la définition d'un nouveau type se fait par ajout d'une page jsp. Je sais pas ce que ça donne de les déployer comme ça à la volée...
Et ensuite, faut faire quelque chose du résultat de ta première JSP. Tu vas avoir tous les champs saisis par l'utilisateur dans les paramètres d'une nouvelle requête. Et il faudra combiner ça avec le texte source de la JSP (remplacer les custom tags automatiques par leur valeurs) pour avoir ton texte final.  
Faut y reflechir, c'est ptet même pas si compliqué que comme je l'ai présenté, mais ça risque de demander un peu de créativité ou de bidouillage. Malheureusement, j'ai pas beaucoup travaillé avec les serveurs web pour voir si ma proposition ça passe ou ça casse.
 
bonne chance
gtm


Message édité par _gtm_ le 13-02-2003 à 10:41:19
Reply

Marsh Posté le 13-02-2003 à 10:51:45    

Ah ouais, je peux te dire que j'ai déja écris un paquet de jsp meme dans cette webapp :)
En fait ma première idée se rapproche assez de la tienne: j'ai transformé les lettres (au départ en format word) en page jsp :
 
les parties usuelles de la lettre sont placées dans des textarea,...
les parties a remplir automatiquement (adresses, ..) sont placées dans des beans qui sont utilisés pour remplir les champs "automatik" dans la jsp.
la jsp s'affiche et l'utilisateur peut modifier tout ce qui se trouve dans les textarea...
et ensuite je récupère les modifs et je réaffiche la jsp "lettre" finale..
 
Mais c un boulot de fou pour chaque nouvelle lettre, alors je me demandais s'il n'y avait pas une belle solution évolutive avec XML ? ou utiliser la BD pour stocker des parties de lettres ?
 

Reply

Marsh Posté le 13-02-2003 à 11:49:08    

personne n'a d'idée ? meme pas Darklord et benou ?
siouplet :)

Reply

Marsh Posté le 13-02-2003 à 12:04:18    

C'est quoi qui te fait un boulot fou dans tout ça ? Si tu détailles un peu on peut peut être trouver des otpimisations.
 
Sinon, tu as utilisé des customtags ?
Je verrais bien le tag qui fait la chose suivante (si c'est possible), pour gérer les données à entrer:
Il utilise un bean pour lire dans la session la valeur entrée pour l'utilisateur. Si il la trouve, il l'affiche, et si il ne la trouve pas, il mets un champ edit à la place.
 
Sinon, le assage à XML va pas t'apporter grand chose pour le problème comme tu le décris, vu que la JSP ressemble deja fortement à du XML. Par contre avec le XML tu pourrais utiliser des stylesheets, ce qui simplifierait la génération de JSPs, vu qu'il y aurait moins d'informations sur le formattage à spécifier dans le HTML.
 

Reply

Marsh Posté le 13-02-2003 à 12:15:57    

Je me rends bien compte que je ne suis pas très très clair :)
c'est la fatigue  :sleep:  
J'ai un ensemble de lettre type, cad des lettres de demande de renseignement,... Donc chaque lettre a déja tout un texte. L'adresse du client est a insérer a chaque fois dans la lettre, ainsi que les adaptations du style "Monsieur" si c'est un mec,...
Le problème est que toute la lettre doit être éditable et doit conserver une mise en page nickel.
 
Je suis plus clair ?
 
Ce que je voudrais, c'est un moyen de travailler qui me permettent de ne pas devoir passer bcp de temps chaque fois que j'ai une nouvelle lettre...

Reply

Marsh Posté le 13-02-2003 à 12:22:16    

XML?

Reply

Marsh Posté le 13-02-2003 à 12:30:16    

a mon avis les JSP tu peux pas les ajouter a la volee, tandis que le XML tu pourras effectivement le gerer dynamiquement. non ?
 
enfin je dis ca, moi les JSP j'y connais rien...  :sol: (vraiment rien en plus, c'est pas du degre n avec n>=2, c'est bien du premier degre!!)

Reply

Marsh Posté le 13-02-2003 à 13:40:36    

Salut !
 
j'ai fait une démo qui ressemblait (de loin  :D ) à ton truc.
 
J'utilisait un API Java (WordAPI) qui récupérait un template de document Word (donc ton modèle) et qui remplissait les trous (style adresse, nom) grâce à des méthodes Java...
 
Il pouvait ensuite t'ouvrir ou non Word pour que tu puisses ensuite retoucher à la main le document etc ...
 
C'est un freeware et disponible ici  
http://www.java400.de/
(section Freeware / Word für Windows ...)
 
C'est assez facile à implémenter...MAIS je l'ai fait que sur un poste unique avec Word (j'ai pas fait sur un poste client et un serveur...)
 
Par contre, les gros défauts :  
- il faut avoir Word sur la machine qui réalise le traitement
- dans ton architecture, faut voir comment faire ...
 
J'espère que j'ai bien saisi ta problématique et que j'aurais pu apporter un élément de réponse ou une piste... et sinon... beinh bonne lecture  :D  
 
Y'avait un projet sur le site de Jakarta je crois qui faisait a peu près le même truc mais je sais pas si c'est encore mature.

Reply

Marsh Posté le 13-02-2003 à 14:40:49    

Pour l'ajout de JSP à la volée, je pense que ça dépend du serveur web (donc risque de perte en portabilité).
Sinon, si tu as une mise en page standard pour toutes tes lettres, tu peux utiliser une feuille de style XSL.
 
Donc tu peux procéder de la manière suivante :  
-Tu écris un XML pour représenter les données de la lettre, avec des tags comme <adresse>, <champ_utilisateur>, ...
-Tu le passes par un parseur XSL qui transorme tout ça en source pour une JSP
-Tu de débrouilles pour que le serveur web trouve ta JSP
 
Là un déclic me vient... Cocoon. J'ai participé à un projet qui utilisait en partie cocoon, mais je n'ai pas fait cocoon directement, et ceux qui s'en sont occupés étaient un peu à la ramasse (faut dire que les tutoriels et l'aide ne sont pas très pratiques pour cocoon), mais je pense que ça pourrait t'aider. Mais attention, prévois une semaine entière au moins pour comprendre comment cocoon marche. Avec le peu d'expérience que j'en ai, je serais plutot pour le déconseiller, mais tu auras peut-être d'autres avis.

Reply

Marsh Posté le 13-02-2003 à 14:40:49   

Reply

Marsh Posté le 13-02-2003 à 17:35:28    

mon boss écrit ses lettres en XML et les publie avec le moteur de publication maison... reste plus qu'à les envoyer...
 
c'est (en gros) XML ---Java/XSL---> XHTML
 
et ça va tout seul.


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
Reply

Marsh Posté le 14-02-2003 à 08:42:57    

Merci pour tous ces conseils :)  
je vais checker un peu tout ça :)
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed