/**
* TWNcidCmd.java
*
* @author Copyright 2010 by Thomas Wenzlaff ( <a
* @see <a href="http://www.wenzlaff.de">www.wenzlaff.de </a>
* @since 04.01.2010
*
* Source is only for non commercial and coaching usage. Not Warranty to use it.
*/
package de.wenzlaff.twncid.schnittstelle.impl;
import de.wenzlaff.twncid.schnittstelle.AnrufEvent;
import de.wenzlaff.twncid.schnittstelle.IAnrufListener;
import de.wenzlaff.twncid.schnittstelle.INcidController;
import de.wenzlaff.twncid.schnittstelle.NcidController;
import de.wenzlaff.twncid.schnittstelle.modell.AnrufModell;
import de.wenzlaff.twncid.schnittstelle.modell.IAnruf;
import de.wenzlaff.twncid.schnittstelle.modell.IAnrufModell;
import de.wenzlaff.twncid.schnittstelle.modell.ISetup;
import de.wenzlaff.twncid.schnittstelle.modell.Setup;
import de.wenzlaff.twncid.schnittstelle.util.DateHelper;
import de.wenzlaff.twncid.schnittstelle.util.TelHelper;
/**
* Kommando Zeilen NCID Client für die Ausgabe auf der Konsole.
*
* Mit -alle werden alle Anrufe aus der Box angezeigt die dort gespeichert sind. Mit -aktuelle wird auf der Konsolle jeder Anruf der Neu eingeht angezeigt.
*
* Reihenfolge der Aufruf-Parameter: ip kanal -aktuelle z.B. 192.168.2.1 3333 -alle
*
* @author Thomas Wenzlaff
* @version 1.0
*/
public final class TWNcidCmd {
/**
* Wenn -aktuelle dann werden nur die Aktuellen angezeigt, mit -alle werden auch die aus der History angezeigt
*/
private static String anzeigeFilter;
private TWNcidCmd() {
// keine Instanz bilden
}
/**
* Reihenfolge der Parameter: 192.168.2.1 3333 -alle
*
* ip kanal -aktuelle
*
* @param args
*/
@SuppressWarnings("boxing")
public static void main(String[] args) {
String ip;
int kanal;
if (args.length == 0) { // bei 0 setzt default
ip = "192.168.2.1";
kanal = 3333;
anzeigeFilter = "-alle";
} else if (args.length != 3) {
System.out.println("Aufruf mit: TWNcidCmd ip kanal [-aktuelle | -alle] z.B. 192.168.2.1 3333 -alle");
return;
} else {
// übergebene Parameter aus args nehmen
ip = args[0]; // "192.168.2.1"
kanal = Integer.valueOf(args[1]); // 3333
anzeigeFilter = args[2]; // -aktuelle oder -alle
}
// Die IP und den Kanal setzen
ISetup setup = new Setup(ip, kanal);
// hier das Daten Modell anlegen
IAnrufModell anruferModell = new AnrufModell();
// Den Controller starten, läuft dann in einen eigenen Thread endlos bis interrupt() aufgerufen wird
@SuppressWarnings("unused")
INcidController ctr = new NcidController(setup, anruferModell, new AnrufAusgabe());
System.out.println("Verbindungs Status: " + anruferModell.isVerbunden());
// Beenden würde mit interrupt laufen:
// ctr.interrupt();
}
/**
* Dies Klasse gibt die Anrufe entweder mit oder ohne History auf der Konsole aus. Jede Klasse die auf Anruf ereignisse reagieren soll, muss das {@code
* IAnrufListener} Interface implementieren.
*
* @author Thomas Wenzlaff
* @version 1.0
*/
private static class AnrufAusgabe implements IAnrufListener {
/**
* Diese Methode wird bei jedem Anruf ausgeführt.
*
* @param event
* der Anruf.
*/
@Override
public void eingehenderAnrufUpdate(AnrufEvent event) {
IAnruf anruf = event.getAnruf();
if (anruf.getStatus().isAktuellerAnruf() && anzeigeFilter.equalsIgnoreCase("-aktuelle")) {
// keine History nur neue Anrufe anzeigen
log(anruf);
} else if (anruf.getStatus().isAlterAnruf() && anzeigeFilter.equalsIgnoreCase("-alle")) {
// mit History alle anzeigen
log(anruf);
}
}
private void log(IAnruf a) {
System.out.println(DateHelper.formatDatum(a.getDate()) + ", " + DateHelper.formatUhrzeit(a.getTime()) + ", " + a.getZeitpunkt().getTime() + ", "
+ TelHelper.formatTelefonnummer(a.getNummer()));
}
}
}
|