_Rub a dub dub
A note to myself: don't be afraid from refactoring.
- Címkék: groovy, java, refactoring
- ____2009-01-28 18:09:47 bridgeman (hozzászólások: 0)
A note to myself: don't be afraid from refactoring.
Egy fárasztó héttel kezdődött az egész. Már majdnem
becsavarodtunk az intenzív tanulástól, amikoris inkább elmentünk
randizni. Moziba, mert az olyan nekem való nyugdíjas program. Eddig
rendben is volna, de valamiért a Kaméleont
választottuk. Amit a kritikusok-nézők
egybehangzóan dicsérnek. Az index ugyan megemlít egy-két
negatívumot is, de dicsérik.
És igen, a képek szépek, már-már reklámfilmesek, jó a forgatókönyv,
a zene se rossz, csak néha zavarnak a ragrímek. Nade a színészek.
Gondolkodtunk, mi lehet a baj: a színészválasztás, színészvezetés,
nem tudjuk. De kb. annyira valóságosak a figurák, mint mondjuk a
Sin City karakterei. Namost képregényből ritkán hoznak ki
érzelmeket, erkölcsi tanulságot, ilyeneket. Tudom, többszáz eredeti
japán manga képes rá, szóval ezt most a nyugati kúltúrkör
képregényeire mondtam. Képregényősökből azt lehet kihozni, amit a
Heath Ledger a
Sötét Lovagban alakított. Ennyin múlik a
"mikorleszmárvége?".
Persze így is kilóg a magyar mezőnyből.
Aztán hazasétáltunk.
Tegnap - több hónap kihagyás után - újra gyalog mentem haza a harmadik emeletre. Mára izomlázam lett.
Az új munkahelyemen is én lettem a hekkmester. Azazhogy:
- Írj egy szkriptet, ami BPEL 1.1-ről 2.0-ra fordít! Azaz
írd át és javítsd ki az 1.0-ról 2.0-ra fordítót.
- Írj egy szkriptet az ellenirányú transzformációra!
- Írj egy szkriptet, ami egy egyszerű excel táblázatból XSLT-t
csinál!
- Írj egy szkriptet, ami az IBM-féle esql-ből XSLT-re fordít!
A legutóbbi kapcsán jutott eszembe, hogy nem csak osztályok-metódusok alapján lehetne szétszedni a feladatokat, hanem lebonthatnám lépésekre: kódtisztítás, XML-fa építése, újabb kódtisztítás, stb. Ezt eddig úgy oldottam meg, hogy volt számtalan, String tömböt kérő metódusom, ami aztán vagy String tömböt adott vissza, vagy rögtön írt az outputra.
Kicsit ronda, kicsit össze-vissza, de működött, mostanáig. Groovyban viszont nem használhatom ezt a módszert, mert a MarkupBuilder egy PrintStream-re ír. Úgyhogy, gondoltam, írok egy általános osztályt, aminek bejön egy BufferedReader, kimegy egy PrintWriter, és akkor oda be lehet tolni az okosságot. Imígyen:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package streamdecorator;
import java.io.BufferedReader;
import java.io.PrintWriter;
//some imports omitted
public abstract class StringStreamDecorator extends Thread {
private BufferedReader inChannel;
private PrintWriter outChannel;
//some constructors omitted
//constructor
public StringStreamDecorator(BufferedReader inChannel,
PrintWriter outChannel) {
this.inChannel = inChannel;
this.outChannel = outChannel;
}
abstract protected String decorateLine(String line);
@Override
public void run() {
if (outChannel != null && inChannel != null) {
String input;
try {
while ((input = inChannel.readLine()) != null) {
//outChannel.println(input +" decorated :-)");
outChannel.println(decorateLine(input));
}
} catch (IOException e) {
System.out.println("Problems with IO: " +
e.getMessage() + "\nDecorating terminated");
e.printStackTrace();
} finally{
outChannel.close();
}
}
}
}
Használata:
1. Örököltetjük a fenti osztályt. A decoreateLine metódusba
tesszük az aktuális transzformációt.
2. Pár PipedReader - PipedWriter-rrel összekötjük őket:
PipedWriter pipeOut = new PipedWriter();
PipedReader pipeIn = new PipedReader(pipeOut);
PrintWriter out = new PrintWriter(pipeOut);
new MyStreamDecorator(new BufferedReader(pipeIn),
System.out).start();
out.println("trallala");
out.println("apple");
out.println("plum");
out.close();
Forrás letölthető innen. Ha
valaki tudja, hol oszthatom meg - angolul - a hasonló osztályokat a
java-s közösséggel, az nyugodtan szólhat.
HH
Újra dolgozom. Illetve decemberben is dolgoztam, csak most újra bejárok az irodába. Élvezem. Feltölt. Érdekel. Aztán ez a poszt is azért rövid, mert mostanáig a Saxon és az Xslt mélységeit kóstolgattam.
Egész pontosan arról volt szó, hogy OpenESB-ben hogyan lehet egy
XSLT-ben több forrásfájlból dolgozni. Majd jelzem, ha megvan a
megoldás. Addigis, pár igéretes link:
http://www.daniweb.com/forums/post735870.html
http://www.saxonica.com/documentation/javadoc/index.html?net/sf/saxon/s9api/DocumentBuilder.html
http://www.saxonica.com/documentation/javadoc/index.html?net/sf/saxon/s9api/XdmNode.html
Az a perverzióm, hogy az informatika szakra járok, és közben néha verseket írok, meg a dokk.hu -n gyilkolászok. Úgyhogy igyekszem ide is érdekesen írni, aztán ti majd döntötök, sikerült-e.