wer kann mir helfen
-
Hallo Zusammen!
Ich bin in Shell nicht so fit wie manche von Euch hier.
Ich versuche gerade ein Skript zu schreiben das folgendes
machen soll. Ich bin bereit dafür gerne auch etwas zu zahlenEs gibt Verzeichnisse und darin Dateien mit Programmcode.
Nun soll das Skript in jedes Verzeichnis rein
prüfen ob die Datei mit java endet z,B "Test.java", wenn ja
dann unten gekennzeichnete Zeile hinzufügen.Zuerst diese Zeilen.
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;als zweites direkt unter dem Klassennamen diese Zeile hinzufügen
static Logger logger = Logger.getLogger(Clock.class);
An der Stelle wo Clock steht soll eben dynamisch
der Dateiname stehen, In Java ist es in aller Regel
auch der Klassenname.und als drittes in jede Methode diese Zeile hinzufügen.
logger.info("actionPerformed");
Anfangs reicht es aus wenn nur die Methoden berücksichtigt
werden die eine void Anweisung haben. Bsp puclic void rechen() {}
Anstelle actionPerformed soll ebenfalls dynamisch der
Methodenname stehen. Das ist in aller Regel die Zeichenkette
nach dem void Befehl.-------------------------------------- Vorher -------------------------------------- import java.awt.event.ActionListener; public class ClockTimer extends Thread { private ActionListener al; public ClockTimer(ActionListener cl) { super(); al=cl; start(); } public void run() { while(true) { try { sleep(1000); al.actionPerformed(null); } catch(Exception ex){} } } } -------------------------------------- Nachher -------------------------------------- import java.awt.event.ActionListener; [quote]import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator;[/quote] public class ClockTimer extends Thread { private ActionListener al; [quote]static Logger logger = Logger.getLogger(ClockTimer.class);[/quote] public ClockTimer(ActionListener cl) { super(); al=cl; start(); } public void run() { [quote]logger.info("run!");[/quote] while(true) { try { sleep(1000); al.actionPerformed(null); } catch(Exception ex){} } } } --------------------------------------
-
Ich geb Dir mal ein bisschen Pseudocode:
for file in *.java do CLASSNAME=`echo $file | sed -e 's/.java$//g'` mv $file $file.orig cat dateianfang.txt > $file cat $file.orig >> $file sed -i "s/(.*public class $CLASSNAME.*{)/\1${NEWLINE}${LOGGERZEILE}/g" $file done
Ist natürlich nur Pseudocode, aber Du hast mal einen Ansatz.
Für die Sache mit 'logger.info("actionPerformed");' in jede Methode musst Du Dir selbst was ausdenken, da ist mir auf die schnelle nichts ausreichend Elegantes eingefallen, da wirst Du vmtl. nach dem Skript auch nochmal nachbessern müssen.