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 zahlen

    Es 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.


Anmelden zum Antworten