Class UpdNow

java.lang.Object
  extended by de.frame4j.util.App
      extended by UpdNow
All Implemented Interfaces:
AttrSettable, TextHelper.MessageComponents, UIInfo, ActionListener, EventListener, DynamicMBean

public class UpdNow
extends App

Aktualisieren einer .xml-Info-Datei für XSLT.

XSLT und XPath kennen (leider Stand Februar 2006) keine Funktionen, die Systeminformationen oder auch nur das aktuelle Datum liefern. Der portabelste Weg, diesen Mangel zu beheben, ist das Ablegen dieser Informationen in einer .xml-Datei an allen benötigten Stellen.

So können diese Informationen beispielsweise als Datei "now.xml" im selben Verzeichnis wie das transformierende XSLT style sheet abgelegt werden. Von diesem aus wäre das Aktualisierungsdatum in der vergleich- und sortierbaren Form "20060216" dann mit
xsl:variable name="nowDateSort" \ select="document('now.xml')//nowDateSort"
auslesbar, und (im Beispiel) in einer Variable namens nowDateSort hinterlegbar und so für Datumsvergleiche und datumsbasierte Auswahlen etc. beliebig verwertbar.

Diese Anwendung erstellt bzw. aktualisiert und verbreitet eine solche Datei oder deren zwei. Als Ziel(e) können Dateien oder Verzeichnisse angegeben werden. Bei Angabe von Verzeichnissen ist der zugehörige Dateiname "now.xml". Die so angegebene Dateien können auch auf Netzlaufwerken ("\\Pd310s\wichtel-intra\now.xml" z.B.) liegen. Sie werden ohne Nachfrage überschrieben, falls sie bereits existieren.

Die Aktualisierung kann einmalig sofort oder zeitgesteuert mit Startzeit und Wiederholrate und optional zusätzlich sofort erfolgen.

Inhalt, Verbreitungswege und Aktualisierung sind über Kommandozeilenparameter und .properties-Dateien steuerbar.

Versionshinweis: V02.04 erstellt den XML-Inhalt mit über Properties variablen Seitenklammern aber sonst festen Inhalten (Tags).

Diese noch einfache beta-Version sorgt im Dauerbetrieb für die Aktualisierung von now.xml.


Hinweis: Zu dieser Anwendung gehört (als integraler) Bestandteil eine Properties-Datei namens UpdNow.properties. Zu ihrer Platzierung und Bedeutung siehe die Hinweise in der Beschreibung des Pakets de.a_weinert.


© Copyright 2006   Albrecht Weinert

Version:
14 (21.05.2010)
Author:
Albrecht Weinert

Field Summary
 String byTool
          Zeile für Werkzeugangabe.
 boolean insertHour
          Stunde der Aktualisierung einfügen.
 String pageBodyStart
          Start des Seiteninhalts.
 String pageEnd
          Ende der Seite.
 String pageStart
          Start der Seite.
protected  long rate
          Die Periode der Aktualisierung (in Millisekunden).
 boolean runAtStart
          Bei Start der Anwendung sofort einmal aktualisieren.
 String startTime
          Startzeit der periodischen Aktualisierung.
 String ziel
          Der Name der Zieldatei oder des Zielverzeichnisses.
 String ziel2
          Der Name der zweiten Zieldatei oder des Verzeichnisses.
 
Fields inherited from class de.frame4j.util.App
ano, appBase, appIO, appStartTime, args, bgColor, err, fullClassName, help, icon, INIT_ERROR, jmxRemoteNote, JOB_DONE_OK, log, LOG_OUT_ERROR, MAIN_THREAD_EXC, mainThread, myClass, myFrame, name, NO_PARS_ERROR, objectName, out, outMode, packName, prop, retCode, runFlag, shortClassName, title, verbose, verbosity
 
Fields inherited from interface de.frame4j.net.AttrSettable
ILLEGAL_TYPE, ILLEGAL_VALUE, NO_ATTRIBUTE, NO_KNOWN_ATTRIBUTE, NO_VALUE, OK
 
Constructor Summary
UpdNow()
           
 
Method Summary
 int doIt()
          Arbeitsmethode von UpdNow.
 long getRate()
          Die Periode der Aktualisierung (in Millisekunden).
static void main(String[] args)
          Startmethode von UpdNow.
 void setRate(CharSequence rate)
          Die Periode der Aktualisierung (in Millisekunden) setzen.
 
Methods inherited from class de.frame4j.util.App
actionPerformed, allowNoPropertiesFile, clientOrder, condHelpLog, connect, errMeld, errMeld, errorExit, errorExit, errorExit, errorText, formMessage, formMessage, getAbout, getAboutText, getActTime, getAppLogger, getAppStartTime, getArgs, getAttribute, getAttributes, getAuthor, getCopyright, getDbLogger, getExecTimeMs, getExecTimeString, getHelp, getHelpText, getIcon, getLanguage, getLogHandler, getMBeanInfo, getMessageComponent, getMessageComponentsLength, getMyFrame, getName, getNameWithVersDate, getOutMode, getProp, getPurpose, getStartTime, getStateString, getTitle, getUsage, getVerbosity, getVerbosityString, getVersDate, getXMLinput, go, go, go, haveIcon, invoke, isDebug, isHelp, isHelpLog, isNormal, isRunFlag, isSilent, isTest, isVerbose, logVerbose, logVerbose, makeDbLogger, makeMenuBar, makeMenuBar, makeStatusTextEnd, makeStatusTextStart, messageFormat, normalExit, parsePartial, performeAction, postDeregister, postRegister, preRegister, queueAction, registerAsMBean, setAboutText, setAttribute, setAttribute, setAttribute, setAttributes, setAuthor, setBgColor, setCodePages, setCopyright, setHelp, setJmxRemoteNote, setLogOut2, setName, setOutMode, setOutMode, setPurpose, setTitle, setUsage, setVerbose, setVerbose, setVerbosity, setVerbosity, setVerbosityString, setVersDate, stop, threeLineEndMsg, toString, twoLineEndMsg, twoLineStartMsg, valueLang, valueLang, wakeMainThread
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

runAtStart

public boolean runAtStart
Bei Start der Anwendung sofort einmal aktualisieren.

default: true


startTime

public String startTime
Startzeit der periodischen Aktualisierung.

default: "morgen 00:11"

See Also:
TimeHelper.parse(...

rate

protected long rate
Die Periode der Aktualisierung (in Millisekunden).

See Also:
getRate()

ziel

public String ziel
Der Name der Zieldatei oder des Zielverzeichnisses.

default: "now.xml"


ziel2

public String ziel2
Der Name der zweiten Zieldatei oder des Verzeichnisses.

default: null


pageStart

public String pageStart
Start der Seite.

default: "<xml ... bis Aktualisierungsdatum (in Kommentar);


byTool

public String byTool
Zeile für Werkzeugangabe.

default: "\n * Tool: "


pageBodyStart

public String pageBodyStart
Start des Seiteninhalts.

default: ... (Kommentarende ...<now>"


pageEnd

public String pageEnd
Ende der Seite.

default: ... </now>"


insertHour

public boolean insertHour
Stunde der Aktualisierung einfügen.

Einsetzen als <hour>17</hour> und Verwenden ist i.A. nur bei mindestens stündlicher Aktualisierung sinnvoll.

default: true (trotzdem)

Constructor Detail

UpdNow

public UpdNow()
Method Detail

main

public static void main(String[] args)
Startmethode von UpdNow.

Parameters:
args - Kommandozeilenparameter
See Also:
doIt(), App.go(java.lang.String[], java.lang.String, boolean, java.lang.CharSequence)

getRate

public long getRate()
Die Periode der Aktualisierung (in Millisekunden).

Ein Wert >= 10000 (10s) und kleiner entsprechen 4 Wochen bewirkt, dass die Aktualisierung periodisch in dem entsprechenden Intervall durchgeführt wird.

Sinnvoll sind i.A. je nach Größenbereich (ganzzahlige) Vielfache von Minuten, Stunden, Tagen oder Wochen (vgl. ComVar.ONE_MINUTE, ComVar.ONE_HOUR, ComVar.ONE_DAY, ComVar.ONE_WEEK).

default: "1 d"

See Also:
TimeHelper.parse(..., setRate(CharSequence)

setRate

public void setRate(CharSequence rate)
             throws IllegalArgumentException
Die Periode der Aktualisierung (in Millisekunden) setzen.

Throws:
IllegalArgumentException
See Also:
getRate(), TimeHelper.parseDuration(...

doIt

public int doIt()
Arbeitsmethode von UpdNow.

Wird von main() via App.go() aufgerufen.

Specified by:
doIt in class App
Returns:
Wenn > 0 dann System.exit
See Also:
main(Strin[]), App.go(java.lang.String[], java.lang.String, boolean, java.lang.CharSequence)