Technische Praesentation(pdf) - Christian-Daniel Wirth
Technische Praesentation(pdf) - Christian-Daniel Wirth
Technische Praesentation(pdf) - Christian-Daniel Wirth
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
ISS<br />
DER UMWELT<br />
CAMPUS<br />
BIRKENFELD<br />
Institut für Softwaresysteme<br />
in Wirtschaft, Umwelt und Verwaltung<br />
<strong>Technische</strong> Präsentation<br />
zum<br />
Web Mining Projekt<br />
UDK- Loganalyzer<br />
<strong>Christian</strong> <strong>Wirth</strong> und Hasiba Sarwari<br />
Angewandte Informatik UCB<br />
im 5-ten Semester<br />
Praxissemester bei ISS seit 01.03.2005<br />
Büro: 25/135 Tel. 17/1957<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 1
<strong>Technische</strong> echnische Präsentation<br />
Pr sentation<br />
� Was war zu tun?<br />
� Problemstellung<br />
� Lösung:<br />
UDK-Loganalyzer<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 2
<strong>Technische</strong> echnische Präsentation<br />
Pr sentation<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 3
Coding oding : GUI - initialize<br />
public class Graphics extends JFrame {<br />
/**<br />
* This is the default constructor<br />
*/<br />
public Graphics() {<br />
super();<br />
initialize();<br />
}<br />
private void initialize() {<br />
Quelle[0] = new File("C:\\");<br />
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();<br />
d.height = d.height / 2;<br />
d.width = (d.width / 2);<br />
this.setContentPane(getJContentPane());<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 4
Coding oding : GUI - initialize<br />
}<br />
this.setLocation((int) ((d.width - getSize().width) / 3),<br />
(d.height - getSize().height) / 2);<br />
d.width = (int) (d.width * 1.25);<br />
this.setSize(d);<br />
this.setTitle("UDK-Loganalyzer");<br />
this.setVisible(true);<br />
this.addWindowListener(new WindowAdapter() {<br />
public void windowActivated(WindowEvent event) {<br />
repaint();<br />
quellordner_txt.setText(getQuell_Ordner());<br />
zielordner_txt.setText(getZiel_Ordner());<br />
}<br />
});<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 5
Coding : GUI - JContentPane<br />
private JPanel getJContentPane() {<br />
if (jContentPane == null) {<br />
jContentPane = new javax.swing.JPanel();<br />
jContentPane.setLayout(new java.awt.BorderLayout());<br />
jContentPane.setToolTipText("Udk-Loganalyzer ");<br />
jContentPane.add(getJPanel(),<br />
java.awt.BorderLayout.NORTH);<br />
jContentPane.add(getJPanel1(),<br />
java.awt.BorderLayout.SOUTH);<br />
jContentPane.add(getJPanel2(),<br />
java.awt.BorderLayout.EAST);<br />
jContentPane.add(getJPanel3(),<br />
java.awt.BorderLayout.WEST);<br />
jContentPane.add(getJTabbedPane(),<br />
java.awt.BorderLayout.CENTER); }<br />
return jContentPane;<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 6
Coding : GUI - JPanel<br />
private JPanel getJPanel1() {<br />
if (jPanel1 == null) {<br />
jPanel1 = new JPanel();<br />
jPanel1.add(programmstart(), null);<br />
jPanel1.add(getJbutton_einstellungen(), null);<br />
jPanel1.add(hilfe(), null);<br />
jPanel1.add(ausstieg(), null);<br />
}<br />
return jPanel1;<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 7
Coding : GUI - JButton<br />
private JButton programmstart() {<br />
if (jButton == null) {<br />
jButton = new JButton();<br />
jButton.setText("Run UDK-Loganalyzer");<br />
jButton.setPreferredSize(new java.awt.Dimension(156, 42));<br />
jButton.setSelected(true);<br />
jButton.setToolTipText("Dieser Button startet die Auswertung mit den<br />
angegebenen Einstellungen");<br />
jButton.setComponentOrientation(java.awt.ComponentOrientation.UNKNOWN);<br />
jButton.addMouseListener(new java.awt.event.MouseAdapter() {<br />
public void mouseClicked(java.awt.event.MouseEvent e) {<br />
if (Ziel_Ordner.equals("Ziel-Ordner:")) {<br />
JOptionPane.showMessageDialog(null,<br />
"Bitte Zielordner aussuchen", "Fehler",<br />
JOptionPane.ERROR_MESSAGE);<br />
} else if (von.equals(bis)) {<br />
JOptionPane.showMessageDialog(null,<br />
"Anfangs-Datum = End-Datum", "Fehler",<br />
JOptionPane.ERROR_MESSAGE);<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 8
Coding : GUI - JButton<br />
} else {<br />
for (int i = 0; i < 7; i++) {<br />
ausgabe_html[i] = null;<br />
}<br />
System.out.println(von + "\n" + bis + "\n"<br />
+ Quell_Ordner);<br />
for (int i = 0; i
Coding : GUI - JTabbedPane<br />
private JTabbedPane getJTabbedPane() {<br />
if (jTabbedPane == null) {<br />
jTabbedPane = new JTabbedPane();<br />
jTabbedPane.addTab("Dateien auswählen", null,<br />
getJSplitPane(), null);<br />
jTabbedPane.addTab("UDK-Log Einstellungen", null,<br />
getJPanel_UDKLOGEINSTELLUNGEN(),<br />
"Ausgabeformatierung");<br />
jTabbedPane.addTab("Credits", null, getJPanel_CREDITS(),<br />
"Credits");<br />
}<br />
return jTabbedPane;<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 10
Coding : GUI - JSplitPane<br />
private JSplitPane getJSplitPane() {<br />
if (jSplitPane == null) {<br />
jSplitPane = new JSplitPane();<br />
jSplitPane.setDividerLocation(0.8);<br />
jSplitPane.setLeftComponent(dat_ausw_links());<br />
jSplitPane.setRightComponent(ausg_ausw_rechts());<br />
jSplitPane.setDividerSize(6);<br />
jSplitPane.setToolTipText("Hier können sie die<br />
auszuwertenden Dateien auswählen und den Zielordner<br />
für die Ausgabe Dateien bestimmen");<br />
}<br />
return jSplitPane;<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 11
Coding : GUI - GriBagLayout<br />
private JPanel dat_ausw_links() {<br />
if (dateiauswahlfenster == null) {<br />
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();<br />
GridBagConstraints gridBagConstraints2 = new GridBagConstraints();<br />
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();<br />
GridBagConstraints gridBagConstraints4 = new GridBagConstraints();<br />
//1)Textfeld-Possition: Zeitraum eingeben<br />
gridBagConstraints1.gridx = 0;<br />
gridBagConstraints1.gridy = 0;<br />
gridBagConstraints1.weightx = 1.0;<br />
gridBagConstraints1.weighty = 1.0;<br />
gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;<br />
//2)von_Datums_Feld-Possition<br />
gridBagConstraints2.gridx = 0;<br />
gridBagConstraints2.gridy = 1;<br />
gridBagConstraints2.weightx = 1.0;<br />
gridBagConstraints2.weighty = 1.0;<br />
//3)bis_Datums_Feld-Possition<br />
gridBagConstraints3.gridx = 0;<br />
gridBagConstraints3.gridy = 2;<br />
gridBagConstraints3.weightx = 1.0;<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 12
Coding : GUI - GriBagLayout<br />
gridBagConstraints3.weighty = 1.0;<br />
//4)Quellordner_Feld-Possition<br />
gridBagConstraints4.gridx = 0;<br />
gridBagConstraints4.gridy = 3;<br />
gridBagConstraints4.weightx = 1.0;<br />
gridBagConstraints4.weighty = 1.0;<br />
//gridBagConstraints4.fill = java.awt.GridBagConstraints.BOTH;<br />
//Panel initialisieren<br />
dateiauswahlfenster = new JPanel();<br />
dateiauswahlfenster.setLayout(new GridBagLayout());<br />
dateiauswahlfenster.setName("Eingabe");<br />
dateiauswahlfenster.setToolTipText("Hier sind die Eingabeeinstellungen<br />
auszusuchen");<br />
dateiauswahlfenster.setBorder(BorderFactory<br />
.createTitledBorder("Eingabe"));<br />
//Felder einfügen und lokalisieren<br />
dateiauswahlfenster.add(getZeitraum_txt(), gridBagConstraints1);<br />
dateiauswahlfenster.add(getJPanel_datum_von(), gridBagConstraints2);<br />
dateiauswahlfenster.add(getJPanel_datum_bis(), gridBagConstraints3);<br />
dateiauswahlfenster.add(getJPanel_Quellordner(),gridBagConstraints4);<br />
}<br />
return dateiauswahlfenster;<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 13
Coding : GUI – Date-Combo<br />
Date Combo-Box Box<br />
Import com.pallas.swing.date.DateComboBox;<br />
public DateComboBox getDate() {<br />
if (date == null) {<br />
date = new DateComboBox(new Date(),<br />
"dd\'/\'MM\'/\'yyyy");<br />
date.addFormat("dd\'/\'MM\'/\'yyyy");<br />
date.setDate(new<br />
GregorianCalendar().getTime());<br />
date.addItemListener(new ItemListener() {<br />
public void itemStateChanged(ItemEvent e) {<br />
von = e.getItem().toString();<br />
}<br />
});<br />
}<br />
return date;<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 14
Coding : GUI - JFileChooser<br />
public class Ordner_öffnen {<br />
private JFileChooser Einstellungen = null;<br />
private JFileChooser Eingabe = null;<br />
private JFileChooser Ausgabe = null;<br />
private String Standardordner = "G:\\webmining\\UDK-<br />
Weblogs";<br />
public Ordner_öffnen() {<br />
}<br />
public Ordner_öffnen(String ausw, Graphics gui) {<br />
super();<br />
if (ausw.equals("Einstellungen")) {<br />
getEinstellungen();<br />
} else if (ausw.equals("Eingabe")) {<br />
getEingabe(gui);<br />
} else if (ausw.equals("Ausgabe")) {<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 15
Coding : GUI – JFileChooser<br />
getAusgabe(gui);<br />
}<br />
}<br />
private JFileChooser getEinstellungen() {<br />
Einstellungen = new JFileChooser();<br />
Einstellungen.setApproveButtonText("Auswählen");<br />
int returnVal = Einstellungen.showSaveDialog(null);<br />
if (returnVal == JFileChooser.APPROVE_OPTION) {<br />
File file = Einstellungen.getSelectedFile();<br />
} else<br />
System.out.println("Auswahl abgebrochen");<br />
return Einstellungen;<br />
}<br />
private JFileChooser getEingabe(Graphics gui) {<br />
Eingabe = new JFileChooser(Standardordner);<br />
Eingabe.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES<br />
_ONLY);<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 16
Coding : GUI - JFileChooser<br />
Eingabe.setMultiSelectionEnabled(true);<br />
[....]<br />
Eingabe.setApproveButtonText("Auswählen");<br />
int returnVal = Eingabe.showOpenDialog(null);<br />
if (returnVal == JFileChooser.APPROVE_OPTION)<br />
{<br />
File[] file = Eingabe.getSelectedFiles();<br />
String string = new String();<br />
string = file[0].toString();<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 17
Einstellungen speichern<br />
� Beispiel für eine Speicher-Datei:<br />
Quelle:<br />
G:\webmining\UDK-Weblogs\vudk<br />
Ziel:<br />
G:\webmining\ziel\auswertungen\09_06_05_vudk_komplett<br />
01/04/2004<br />
31/10/2004<br />
UDK-Logdatei-Auswertung BW VUDK<br />
http://www.umweltdatenkatalog.de<br />
false<br />
false<br />
false<br />
false<br />
false<br />
true<br />
vudk<br />
ende<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 18
GUI<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 19
<strong>Technische</strong> echnische Präsentation<br />
Pr sentation<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 20
<strong>Technische</strong> echnische Präsentation<br />
Pr sentation<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 21
Coding: oding: File-List File List erstellen<br />
� Zentrale übergibt Pfad der Log-Dateien und Zeitraum<br />
� Pfad wird abgearbeitet und auf weitere Ordner überprüft<br />
� Sämtliche Dateien werden auf Datum überprüft<br />
� Liste mit passenden Log-Files wird erstellt und<br />
weitergegeben.<br />
BufferedReader bufReader = new BufferedReader(fileReader);<br />
while (true) {<br />
String s = bufReader.readLine();<br />
if (s == null) {<br />
break;<br />
}<br />
StringTokenizer tokens = new StringTokenizer(s,"\b\t\n;!");<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 22
Coding: oding: File-List File List erstellen<br />
//hier wird Datum gelesen<br />
if (tokens.hasMoreTokens()) {<br />
String vergleich = tokens.nextToken();<br />
if (vergleich.startsWith("From")) {<br />
if (tokens.hasMoreTokens()) {<br />
String datum = tokens.nextToken();<br />
FromDatum = DateReader.format_StringToDate(datum);<br />
FromDatumNeu =DateReader.format_DateToDate(FromDatum);<br />
}<br />
if ((FromDatumNeu.after(ab) || FromDatumNeu.equals(ab)) &&<br />
(FromDatumNeu.before(bis) || (FromDatumNeu.equals(bis))))<br />
list.addElement(fileNames[i]);<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 23
Coding:Dateien<br />
oding:Dateien auslesen<br />
public static int daten_auslesen(Db db, Vector list) throws IOException {<br />
for (Enumeration el = list.elements(); el.hasMoreElements();) {<br />
File inFile = (File) el.nextElement();<br />
FileReader fileReader = new FileReader(inFile);<br />
BufferedReader bufReader = new BufferedReader(fileReader);<br />
String FromDate = null;<br />
Insert ins = new Insert();<br />
while (true) {<br />
String s = bufReader.readLine();<br />
if (s == null) {<br />
break;<br />
}<br />
StringTokenizer tokens = new StringTokenizer(s, "\b\t\n!");<br />
if (tokens.hasMoreTokens()) {<br />
String vergleich = tokens.nextToken();<br />
//Z.B.:<br />
(else) if (vergleich.startsWith("Adresse:")) {<br />
ins.Insert_Adresse_Detail(tokens, FromDate, db);<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 24
Coding: oding: Datum anpassen<br />
� Problem: verschiedene Formate beim Datum<br />
� Unterschiedlich in Dateien und auch in Anwendung<br />
� Formate: Bsp.:<br />
� Mm/dd/yyyy 12.00 pm<br />
� Dd/mm/yyyy 24.00<br />
� ...<br />
� Java.util.date<br />
� GregorianCalendar.Date<br />
� Sql-Date<br />
� Mit und ohne Uhrzeit<br />
� Dazu wurden verschiedene Methoden entwickelt, um diese<br />
anzugleichen und damit arbeiten zu können<br />
� StringTokenizer<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 25
Coding: Datum anpassen<br />
/** Konvertiert String Format "MM/dd/yy hh:mm a ", "dd.MM.yy hh:mm a",<br />
* "dd.MM.yy hh:mm"(aus unser .stats) zu java.util.Date<br />
*/<br />
static Date format_StringToDate(String s) {<br />
Date myDate = null;<br />
SimpleDateFormat dateFormat1 = new SimpleDateFormat("MM/dd/yy hh:mm a");<br />
try {<br />
myDate = dateFormat1.parse(s);<br />
} catch (ParseException e1) {<br />
SimpleDateFormat dateFormat2 = new SimpleDateFormat("MM.dd.yy hh:mm a");<br />
try {<br />
myDate = dateFormat2.parse(s);<br />
} catch (ParseException e2) {<br />
try {<br />
StringTokenizer tokens = new StringTokenizer(s, " :");<br />
if (tokens.hasMoreTokens()) {<br />
String datum = tokens.nextToken();<br />
String uhr = tokens.nextToken();<br />
String mm = tokens.nextToken();<br />
int hh = 0;<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 26
Coding: Datum anpassen<br />
}<br />
}<br />
return myDate;<br />
}<br />
try {<br />
hh = Integer.parseInt(uhr);<br />
} catch (NumberFormatException e) {}<br />
if (hh >= 12) {<br />
hh = hh - 12;<br />
s = datum.concat(" " + hh + ":" + mm + " PM");<br />
} else<br />
s = s.concat(" AM");<br />
SimpleDateFormat dateFormat3 = new SimpleDateFormat(<br />
"dd.MM.yy hh:mm a");<br />
myDate = dateFormat3.parse(s);<br />
}<br />
} catch (ParseException e3) {<br />
e3.printStackTrace();<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 27
<strong>Technische</strong> echnische Präsentation<br />
Pr sentation<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 28
Coding: Auslesen und<br />
Datenbank füllen<br />
� Datenbank: hsqldb<br />
� jdbc connection<br />
Class.forName("org.hsqldb.jdbcDriver");<br />
c = DriverManager.getConnection("jdbc:hsqldb:mem:aname",<br />
"sa", "");<br />
� Starten<br />
Db dbank = new Db();<br />
dbank.jdbc_connect("db_file");<br />
� Abfrage<br />
st = c.createStatement();<br />
rs = st.executeQuery(expression);<br />
� Aktualisierung<br />
st = c.createStatement();<br />
int i = st.executeUpdate(expression);<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 29
Coding: Auslesen und<br />
Datenbank füllen<br />
� Class Create erzeugt verschiedene Tabellen<br />
public static void create_Adresse_Detail(Db db) {<br />
try {<br />
db.update("Create Table Adress_Detaildarstellung("adr_nr”+<br />
“VARCHAR(64),FromDate DATE,adresse”+<br />
“VARCHAR(32), anzahl INTEGER)");<br />
} catch (SQLException e) {<br />
e.printStackTrace();<br />
}<br />
}<br />
� Class Insert hat Methoden, die für das Füllen der Tabellen<br />
zuständig sind.<br />
� Die Methoden bekommen als Parameter einen tokenierten<br />
String, der aus der Log-Datei gelesen wurde. Dieser wird<br />
weiter bearbeitet und in die richtige Tabelle eingefügt.<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 30
Coding: Auslesen und<br />
Datenbank füllen<br />
public void Insert_Adresse_Detail(StringTokenizer tokens,<br />
String adr_FromDate, Db db) {<br />
if (tokens.countTokens() == 3) {<br />
while (tokens.hasMoreTokens()) {<br />
String adr_name = tokens.nextToken();<br />
String adr_nr = tokens.nextToken();<br />
String adr_anzahl = tokens.nextToken();<br />
int anz = 0;<br />
try {<br />
anz = Integer.parseInt(adr_anzahl);<br />
} catch (NumberFormatException e) {}<br />
try { db.update("INSERT INTO Adress_Detaildarstellung“+<br />
(adr_nr,FromDate,adresse,anzahl)„ +<br />
"VALUES('"+ adr_nr+ "','"+ adr_FromDate+ "','"+<br />
adr_name+ "'," + anz + ")");<br />
} catch (SQLException e) {<br />
e.printStackTrace();}}}}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 31
Coding: Datumsfelder erzeugen<br />
Calendar c = new GregorianCalendar();<br />
Calendar f = new GregorianCalendar();<br />
c.set(year, month - 1, day);<br />
f.set(year2, month2 - 1, day2);<br />
date = DateReader.format_DateToSqlDate(c.getTime());<br />
String date_anf = DateReader.format_DateToSqlDate(c.getTime());<br />
while (c.before(f) || c.equals(f)) {<br />
try {<br />
date = DateReader.format_DateToSqlDate(c.getTime());<br />
week = c.get(3); // 3 steht für Woche<br />
if (week < 10) {<br />
woche = Integer.toString(c.get(1)).concat("/0").concat( //1 steht für Jahr<br />
Integer.toString(c.get(3)));<br />
} else<br />
woche = Integer.toString(c.get(1)).concat("/").concat(<br />
Integer.toString(c.get(3)));<br />
db.update("INSERT INTO von_bis(dates)VALUES( '" + date + "')");<br />
if ((c.get(2) == c.getActualMaximum(2)) && (c.get(3) == 1)) { //2 steht für Monat<br />
week = c.get(3);<br />
if (week < 10) {<br />
woche = Integer.toString(c.get(1) + 1).concat("/0")<br />
.concat(Integer.toString(c.get(3)));<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 32
Coding: Datumsfelder erzeugen<br />
} else<br />
woche = Integer.toString(c.get(1) + 1).concat("/")<br />
.concat(Integer.toString(c.get(3)));<br />
db.update("INSERT INTO wochen(tage,woche)VALUES( '" + date<br />
+ "','" + woche + "')");<br />
} else {<br />
if (week < 10) {<br />
woche = Integer.toString(c.get(1)).concat("/0").concat(<br />
Integer.toString(c.get(3)));<br />
} else<br />
woche = Integer.toString(c.get(1)).concat("/").concat(<br />
Integer.toString(c.get(3)));<br />
db.update("INSERT INTO wochen(tage,woche)VALUES( '" + date<br />
+ "','" + woche + "')");<br />
}<br />
if (c.get(5) == c.getActualMaximum(5)) {<br />
date = DateReader.format_DateToSqlDate(c.getTime());<br />
if (week < 10) {<br />
woche = Integer.toString(c.get(1)).concat("/0").concat(<br />
Integer.toString(c.get(3)));<br />
} else<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 33
Coding: Datumsfelder erzeugen<br />
woche = Integer.toString(c.get(1)).concat("/").concat(<br />
Integer.toString(c.get(3)));<br />
db.update("INSERT INTO von_bis(dates)VALUES( '" + date<br />
+ "')");<br />
db.update("INSERT INTO monate(monat_anf,monat_end)VALUES(<br />
+ date_anf + "','" + date + "')");<br />
if (c.get(2) == c.getMaximum(2)<br />
&& c.get(5) == c.getActualMaximum(5)) { //5 steht für Tag<br />
c.roll(1, true);<br />
}<br />
c.roll(2, true);<br />
c.set(5, 1);<br />
date = DateReader.format_DateToSqlDate(c.getTime());<br />
date_anf = DateReader.format_DateToSqlDate(c.getTime());<br />
db.update("INSERT INTO von_bis(dates)VALUES( '" + date<br />
+ "')");<br />
week = c.get(3);<br />
if (week < 10) {<br />
woche = Integer.toString(c.get(1) + 1).concat("/0")<br />
.concat(Integer.toString(c.get(3)));<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 34
Coding: Datumsfelder erzeugen<br />
}<br />
} else<br />
woche = Integer.toString(c.get(1)).concat("/").concat(<br />
Integer.toString(c.get(3)));<br />
db.update("INSERT INTO wochen(tage,woche)VALUES( '"<br />
+ date_anf + "','" + woche + "')");<br />
}<br />
c.roll(5, true);<br />
} catch (SQLException e) {<br />
e.printStackTrace();<br />
}<br />
}<br />
date = DateReader.format_DateToSqlDate(f.getTime());<br />
week = c.get(3);<br />
if (week < 10) {<br />
woche = Integer.toString(c.get(1) + 1).concat("/0").concat(<br />
Integer.toString(c.get(3)));<br />
} else<br />
woche = Integer.toString(c.get(1)).concat("/").concat(<br />
Integer.toString(c.get(3)));<br />
db.update("INSERT INTO monate(monat_anf,monat_end)VALUES( '" + date_anf<br />
+ "','" + date + "')");<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 35
<strong>Technische</strong> echnische Präsentation<br />
Pr sentation<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 36
Coding: Auswertung<br />
� Abhängig von der Auswahl der check Boxes und anderen Einstellungen,<br />
werden verschiedene Auswertungen durchgeführt. Die Ausgabe wird von<br />
hier gesteuert und alle dazu notwendigen Daten und Graphiken werden<br />
bereitgestellt.<br />
� Nachfolgende Methode liefert einen Wert, der für die Berechnung der<br />
relativen Häufigkeiten bei der Erzeugung der Graphik nötig ist:<br />
public double add_Gesammtsummen(ResultSet rs_Tagesprotokoll)<br />
throws SQLException {<br />
double sum = 0.0;<br />
ResultSetMetaData meta = rs_Tagesprotokoll.getMetaData();<br />
int spaltmax = meta.getColumnCount();<br />
Object o = null;<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 37
Coding: Auswertung<br />
}<br />
for (; rs_Tagesprotokoll.next();) {<br />
for (int i = 1; i < spaltmax; ++i) {<br />
o = rs_Tagesprotokoll.getObject(i + 1);<br />
if (o != null)<br />
sum = sum + Double.parseDouble(o.toString());<br />
}<br />
}<br />
return sum;<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 38
Coding: Auswertung<br />
� Nächststehende Methode liefert z.B. Anzahl der gesuchten<br />
Begriffe, gruppiert pro Monat.<br />
public ResultSet werte_monat_anzahl(Db db, String tabelle2)<br />
throws SQLException{<br />
//tabelle2 ist auszuwertende Tabelle<br />
rs = db.query("SELECT DISTINCT monat_anf,SUM(anzahl) FROM "<br />
+ tabelle2+”,monate WHERE FromDate BETWEEN”+<br />
“monat_anf AND monat_end”+<br />
“GROUP BY monat_anf ");<br />
return rs;<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 39
Coding: Graphik<br />
� Nachfolgend einige Infos über die Erzeugung solch einer<br />
Grafik.<br />
� Beispiel: Daten werden für PieChart gelesen<br />
� Zuerst erzeugt man eine Instanz der Dataset Class, für Pie<br />
Chart ist PieDataset und in diesem Fall DefaultPieDataset<br />
zuständig.<br />
DefaultPieDataset dataset = new DefaultPieDataset();<br />
ResultSetMetaData meta = rs_Tagesprotokoll.getMetaData();<br />
int spaltmax = meta.getColumnCount();<br />
Object o = null;<br />
String[] str = { "Adress-Detail-Darstellung",<br />
"Objekt-Detail-Darstellung", "einfache Suche nach<br />
Adressen","einfache Suche nach Objekten ", "Expertensuche<br />
nach Adressen","Expertensuche nach Objekten", "Thesaurus-<br />
Suche" };<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 40
Coding: Graphik<br />
for (; rs_Tagesprotokoll.next();) {<br />
for (int i = 1; i < spaltmax; ++i) {<br />
o = rs_Tagesprotokoll.getObject(i + 1);<br />
if (o == null)<br />
break;<br />
dataset.setValue(str[i - 1], Double.parseDouble(o.toString())<br />
/sum);<br />
}<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 41
Coding: Graphik<br />
� Als nächstes wird die Art der Grafik festgelegt und eine<br />
Instanz der JFreeChart Class erzeugt, die wiederum<br />
org.jfree.chart.ChartFactory Class verwendet um Dataset zu<br />
Chart umzuwandeln.<br />
JFreeChart chart = ChartFactory.createPieChart3D(<br />
"VERTEILUNG DER RELATIVEN HÄUFIGKEITEN",<br />
dataset, true, true,true);<br />
Nachfolgend einige Möglichkeiten die Charts zu formatieren:<br />
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.WHITE, 1000, 0,<br />
Color.WHITE));<br />
PiePlot pie = (PiePlot) chart.getPlot();<br />
pie.setForegroundAlpha(0.9f); //Transparenz Diagramm<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 42
Coding: Graphik<br />
pie.setLabelBackgroundPaint(Color.WHITE);<br />
pie.setBaseSectionOutlinePaint(Color.BLACK);<br />
pie.setStartAngle(180.0);<br />
pie.setOutlinePaint(Color.black);<br />
� Speichern als Bild (jpg): nachdem man Chart in einem<br />
JFreeChart Objekt gespeichert hat, muss man es in ein<br />
sichtbares Format konvertieren(z.B. .jpg, .png)<br />
File file = new File(charts_ordner + " \\gesamtsummen2.jpeg");<br />
ChartUtilities.saveChartAsJPEG(file, chart, 700, 400);<br />
� Erzeugung des Bildes<br />
ChartFactory.createPieChart("Gesamtsummen",dataset, true, true,true);<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 43
Coding: Graphik<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 44
Coding: Ausgabe<br />
� Hier werden die Html-Seiten für die Ausgabe erzeugt.<br />
� Die Datenbank wird ausgelesen und die Elemente in<br />
Schleifen in den Html-Code eingefügt und somit Tabellen<br />
für die Auswertung generiert.<br />
for (; rs_fehlende.next();) {<br />
monat = DateReader.format_SqlDateToString_kurz(rs_fehlende<br />
.getObject(1).toString());<br />
n = Integer.parseInt(rs_fehlende.getObject(2).toString());<br />
bw.write("" + monat + "");<br />
for (int i = 0; i < n; i++) {<br />
rs_fehlende_dateien.next();<br />
o = rs_fehlende_dateien.getObject(1);<br />
String str = DateReader.format_SqlDateToString(o.toString());<br />
if (str.endsWith(monat)) {<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 45
Coding: Ausgabe<br />
bw.write("");<br />
bw.write(str);<br />
bw.write("");<br />
}<br />
else<br />
break;<br />
}<br />
}<br />
bw.write("");<br />
bw.close();<br />
gui.setAusgabe_html(new File(komplett_ansicht.toString()));<br />
gui.setAusgabe_html(new File(ordner.toString() + "\\fehltage.html"));<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 46
<strong>Technische</strong> echnische Präsentation<br />
Pr sentation<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 47
http-Abfrage<br />
� Hier wird Verbindung mit dem Server hergestellt und Anfrage<br />
geschickt und zwar mit einzelnen Suchbegriffen( einfache<br />
Suche Adresse/Objekt) aus der Tabelle.<br />
� Das Ergebnis, in Form einer Html-Seite, wird ausgelesen und<br />
auch in die Tabelle (Datenbank) geschrieben.<br />
public void udk_anfrage_einf(Db db, String table, String column,String suche,<br />
String udk, String adresse)<br />
throws ParseException,IOException,<br />
ModuleException, SQLException {<br />
ResultSet rs = null;<br />
Object o = null;<br />
String str = null;<br />
if (udk.startsWith("vudk")) {<br />
adresse = "http://www.umweltdatenkatalog.de";<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 48
http-Abfrage<br />
URL url = new URL(adresse);<br />
HTTPConnection verbindung = new HTTPConnection(url);<br />
verbindung.setAllowUserInteraction(false);<br />
String udkverbindung = null;<br />
String antwort = null;<br />
if (udk.equals("wwwudk")) {<br />
udkverbindung = "/wwwudk/UDKServlet";<br />
antwort = "/wwwudk";<br />
}<br />
else {<br />
udkverbindung = "/V-UDKServlet";<br />
antwort = "";<br />
}<br />
HTTPResponse rsp = verbindung.Get(udkverbindung);<br />
try {<br />
rs = db.query("SELECT " + column + " FROM " + table );<br />
} catch (SQLException e) {<br />
e.printStackTrace();<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 49
http-Abfrage<br />
ResultSetMetaData meta = rs.getMetaData();<br />
int spaltmax = meta.getColumnCount();<br />
int i = 0;<br />
while (true) {<br />
if (rs.next()) {<br />
o = rs.getObject(1);<br />
str = o.toString();<br />
System.out.println("O " + str);<br />
rsp.getStatusCode();<br />
rsp = verbindung.Get(udkverbindung<br />
+ "?Type=Dispatcher&SRC=Menu&Menu." + "category="<br />
+ suche + "&Menu.searchterm=" + str<br />
+ "&Menu.quick.x=85&Menu.quick.y=11");<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 50
http-Abfrage<br />
int statuscode = rsp.getStatusCode();<br />
rsp = verbindung.Get(antwort + "/jsp/" + suche<br />
+ "ListBottom.jsp?Category=" + suche<br />
+ "&uURL=1&no-wait=true");<br />
statuscode = rsp.getStatusCode();<br />
BufferedReader br = new BufferedReader(new StringReader(rsp.getText()));<br />
while (true) {<br />
String s = br.readLine();<br />
if (s == null) {<br />
break;<br />
}<br />
StringTokenizer tokens = new StringTokenizer(s, "\b\t\n;!");<br />
if (tokens.hasMoreTokens()) {<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 51
http-Abfrage<br />
String vergleich = tokens.nextToken();<br />
if (vergleich.startsWith("Anzahl gefundener ")) {<br />
s = br.readLine();<br />
tokens = new StringTokenizer(s, "\t < >");<br />
if (tokens.hasMoreTokens()) {<br />
tokens.nextToken();<br />
tokens.nextToken();<br />
tokens.nextToken();<br />
int result = Integer.parseInt(tokens.nextToken());<br />
try {<br />
db.update("UPDATE " + table<br />
+ " SET udk_anfrage=" + result<br />
+ " WHERE " + column + "='" + str+ "'");<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 52
http-Abfrage<br />
}<br />
}<br />
} else<br />
return;<br />
}<br />
}<br />
i++;<br />
} catch (SQLException e) {<br />
e.printStackTrace();<br />
}<br />
}<br />
} else if (vergleich.startsWith("Achtung ")) {<br />
return;<br />
}<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 53
<strong>Technische</strong> echnische Präsentation<br />
Pr sentation<br />
Institut für Softwaresysteme in Wirtschaft, Umwelt und Verwaltung Folie 54