Printemps-Lots Multi-ligne Point d'enregistrement de l'Écrivain avec un nombre variable de lignes par enregistrement
J'ai le dessous de l'exigence, mais ne suis pas en mesure de décider de l'approche à prendre:
J'ai besoin d'écrire des données dans un format fixe hors de placer le fichier dans lequel chaque enregistrement qui s'étend sur plusieurs lignes comme ci-dessous:
000120992599999990000000000000009291100000000000000000000000010000
000000000000000000000006050052570009700000050000990494920000111100
ABCDE:WXYZ 0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
000000000000000000000006050052730005700001100000090494920000221200
ABCDE:WXYZ 0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
000000000000000000000006050113110009700000000000000494920000311100
ABCDE:WXYZ 0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
000012099259999999000000000000000929110000000000000000000000001000
C'est un enregistrement à partir de l'exemple ci-dessus:
000000000000000000000006050052570009700000050000990494920000111100
ABCDE:WXYZ 0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
La première et de la dernière ligne sont l'en-tête et pied de page, respectivement.
Première ligne de chaque enregistrement contient plusieurs détails.
2e ligne ont quelques autres détails, avec des espaces.
J'ai une description longue de terrain qui j'ai besoin de diviser en 56 caractères sections et ajoutez ceux avec un record de la ligne 3 à partir.
Donc, dans certains dossiers, cela peut être juste une ligne alors que dans certains, il pourrait être trois lignes.
J'ai besoin de conseils sur la façon de concevoir mon itemwriter dans le scénario ci-dessus.
Nik
OriginalL'auteur Vicky | 2011-10-20
Vous devez vous connecter pour publier un commentaire.
il y a une multiligne enregistrements écrivain exemple dans l'officiel printemps-lot-échantillons, recherche pour
multiline.xml
etMultiLineTradeItemWriter
de son fond de l'habituel délégué principe, vous avez juste besoin d'un objet de domaine avec supposable une liste de ces 1..n lignes intermédiaires
Il a travaillé. Merci!!!!!
OriginalL'auteur Michael Pralow
vous pouvez le faire dans CustomExtractor.
par Exemple:
OriginalL'auteur ken
J'ai eu un problème similaire de l'écriture de plusieurs lignes dans une base de données. Parce que l'étape de travail sera de créer une Liste de vos articles, comment pouvez-vous retourner une Liste à partir du processeur de l'écrivain? Créer une Liste de Listes, et le doWrite méthode de l'Écrivain n'est pas configuré pour gérer ce scénario.
Je suis à l'aide de la version 1.2.0 printemps-amorçage-starter-mère (qui me donne printemps-core 4.1.3) avec mise en veille prolongée (4.3.7), Dans mon cas, j'ai des "créances", et pour tous les 1 à recevoir ce que j'ai lu à partir d'un fichier csv, je puis peut-être besoin de mettre à jour ou insérer le nombre de créances dans ma table. Je suis également en utilisant HibernateItemWriter.
Ma solution a été d'étendre la HibernateItemWriter. La sessionFactory domaine est privé, donc je suis de passage via le constructeur et en utilisant également le setter (à accueillir le code existant). Donc mon code d'origine (qui fonctionne très bien pour un seul 'recevoir') à l'origine ressemblait à ceci:
Après l'extension de la HibernateItemWriter, et la modification de mon processeur pour revenir une Liste, mon code a changé:
Et mon extension de la classe ressemble à ceci (j'ai peut la nettoyer, mais c'est mon premier passage. Je souhaite également la sessionFactory et clearSession champs n'ont pas été privé)
Gros shout out à grepcode.com pour rendre la vie plus facile.
OriginalL'auteur MattC