Iratmintakezelés Word-ben Java Swing-es alkalmazáson keresztül #1

Van egy java-s swing-es alkalmazásunk amelyhez már vagy 5 éve nem nyúltunk hozzá, mivel nem volt support szerződésünk, a felhasználónak meg pénze. Az elmúlt időszakban azért felgyülemlettek igények, amelyhez most sikerült is némi pénzt szerezni. Az egyik ilyen igény, hogy a korábbi az alkalmazásban megoldott iratminta kitöltést (ügyintéző általi kitöltés és az adatok visszaolvasása) cseréljük le Word-re.

Ennek a megrendelő oldaláról két fő oka volt: az iratminta template-k szerkesztéséhez xml állományt és xslt-eket kellet varázsolni. Ami érthető módon nem igazán állt közel a szívéhez. A másik ok pedig, hogy legyen helyesírás ellenőrzés is.

Néhány évvel ezelőtt már volt egy R&D jellegű próbálkozás még a Word2003 időszakban arra, hogy java-ból manipuláljuk az xml formátumú dokumentumot. Igaz akkor még csak a dokumentumban elhelyezett “metaadatok” kicseréléséig jutottunk el. Erre a “tudásra” alapozva elvállaltuk a feladatot.

A pályázati anyagban a megrendelőnek javasoltuk, hogy Word2007-t használjon mivel a docx xml alapú és iso szabvány többé kevésbé, továbbá a Word GUI-ja már átalakult és a fejlesztések sem kompatibilisek a korábbi verziókkal. Azonban a megrendelő nem tudott/akart Word2007-re váltani a meglévő Word2003-ról így erre kellett elkezdeni kifejleszteni a megoldást.

A feladat megvalósításához ötletgyűjtés gyanánt megkerestem Bátorfy Zsolt-ot, hogy adjon tanácsokat, javasoljon megoldási ötleteket. Sajnos Zsolt a helyzet felvázolása és némi egyeztetés után az őszinte részvétét fejezte ki a feladat megoldása kapcsán. Ismerőseimnek is elsírtam bánatom de a probléma mélyebb megértése után ők is osztották Zsolt nézeteit.

Ebből a helyzetből kell határidőre elkészítenem a megoldást!
Ez a fejlesztés jelenleg is folyik, és igyekszem folyamatosan megosztani a tapasztalataimat.

1. zsákutca: JAXB és a WordprocessingML Schemas

Első lépésként megpróbáltam JAXB (Java Architecture for XML Binding) segítségével lefordítani a WordprocessingML xsd-jéit. “Némi” kézimunkával és sok verejtékes órát rászánva elmerültem a JAXB-ben és sikerült előállítanom az xsd-kből a java osztályokat.
Következő lépés annak kipróbálása volt, hogy ezekkel a java osztályokkal sikerül-e felolvasnom és visszaírnom egy Word2003Xml dokumentumot. Sikerült!
Nagy kő esett le a szívemről mivel tényleg elég sok időt öltem bele.
Következő lépés felderíthető-e a dokumentum tartalma. Na itt ért az első kellemetlen meglepetés mivel az xsd-kben keresztbe voltak hivatkozva a namespace-k és ráadásul anyType-ként volt megadva a tartalom. Ezt nyilván a java osztályok is ilyen szinten követték le (sehogy).
Tettem egy próbát arra, hogy a fel nem oldott elementekből lehetne-e java objektumokat kapni. Az első 1-2 elementet még sikerült objektumosítani, azonban a mélyebb/többi elementet már nem.
Ha sikerül is az lett volna a következménye, hogy kézzel kellett volna a különböző collectionokat manipulálni annak érdekében, hogy a sorrend megmaradjon.
Sebaj! Megy a kukába! Majd elővesszük a kézzel megírt nagyon részleges lefedettségű pár éves kódot és majd azt visszük tovább.

folytatom…

Advertisements
Kategória: #JavaWord2003 | Közvetlen link a könyvjelzőhöz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s