Hallo,
ich bin dabei ein Programm zu schreiben was eine Weblog Datei auswertet die folgende Art von einträgen beinhaltet:
209.131.40.83 - - [02/May/4053:02:40:57 +0200] "GET /robots.txt HTTP/1.0" 404 - "-" "Foxtrott/5.0 (frieden; Ya...
80.137.184.168 - mmarkow [02/May/4053:02:40:57 +0200] "HEAD /abc/temp/hohl/Analysis%201%20(IN-B2)...
209.131.40.83 - - [02/May/4053:02:40:58 +0200] "GET / HTTP/1.0" 200 1425 "-" "Foxtrott/5.0 (frieden; Yahoo...
209.131.40.83 - - [02/May/4053:02:40:58 +0200] "GET /robots.txt HTTP/1.0" 404 - "-" "Foxtrott/5.0 (frieden; ...
80.137.184.168 - mmarkow [02/May/4053:02:40:58 +0200] "GET /abc/temp/hohl/Analysis%201%20(IN-B2)/...
80.137.184.168 - - [02/May/4053:02:40:58 +0200] "GET /robots.txt HTTP/1.0" 404 - "-" "Wget/1.9.1"
Hier möchte ich gern auf der linken Seite die IP Adressen untereinander in einem JTree haben und doppelte IP's sollen rausgefiltert werden.
Wenn ich jetzt auf eine IP Klicke soll auf der rechten Seite in meiner TextArea der Eintrag nach der IP stehen.
Das rechte und linke Seite werden duch eine SplittPane geteilt.
Im oberen Teil des Fenstern soll ebenfall nach einer IP Adresse im log File gesucht werden können.
Meine Probleme:
-> wie kann ich die linke Seite meiner SplittPane auf eine feste Größe einsellen, so dass ich nicht nach jedem Start der GUI das Fenster mit der Maus einstellen muss
-> wie bekomme ich hin, dass alle IP's nach dem Start, wenn ich in der Main der Instanz keine IP mitgebe schön in meinen JTree Baum integriert werden... da habe ich schon zich Stunden vergeblich versuch das zu schaffen
-> ich weiß auch nicht wie ich es schaffe, wenn ich dann auf eine IP Adresse klicke, dass auf der rechten Seite der SplittPane der von der IP abgesplittete Inhalt steht
Hoffentlich kann mir hier jemand weiter helfen, denn bei google und go bin ich mit meinen Problemlösungen noch nicht weiter gekommen.
Mein Code bisher komplett:
Ich hoffe, dass meine Komentare im Code hilfreich sind und freue mich gaaaaaanz doll über Hilfe.
ich bin dabei ein Programm zu schreiben was eine Weblog Datei auswertet die folgende Art von einträgen beinhaltet:
209.131.40.83 - - [02/May/4053:02:40:57 +0200] "GET /robots.txt HTTP/1.0" 404 - "-" "Foxtrott/5.0 (frieden; Ya...
80.137.184.168 - mmarkow [02/May/4053:02:40:57 +0200] "HEAD /abc/temp/hohl/Analysis%201%20(IN-B2)...
209.131.40.83 - - [02/May/4053:02:40:58 +0200] "GET / HTTP/1.0" 200 1425 "-" "Foxtrott/5.0 (frieden; Yahoo...
209.131.40.83 - - [02/May/4053:02:40:58 +0200] "GET /robots.txt HTTP/1.0" 404 - "-" "Foxtrott/5.0 (frieden; ...
80.137.184.168 - mmarkow [02/May/4053:02:40:58 +0200] "GET /abc/temp/hohl/Analysis%201%20(IN-B2)/...
80.137.184.168 - - [02/May/4053:02:40:58 +0200] "GET /robots.txt HTTP/1.0" 404 - "-" "Wget/1.9.1"
Hier möchte ich gern auf der linken Seite die IP Adressen untereinander in einem JTree haben und doppelte IP's sollen rausgefiltert werden.
Wenn ich jetzt auf eine IP Klicke soll auf der rechten Seite in meiner TextArea der Eintrag nach der IP stehen.
Das rechte und linke Seite werden duch eine SplittPane geteilt.
Im oberen Teil des Fenstern soll ebenfall nach einer IP Adresse im log File gesucht werden können.
Meine Probleme:
-> wie kann ich die linke Seite meiner SplittPane auf eine feste Größe einsellen, so dass ich nicht nach jedem Start der GUI das Fenster mit der Maus einstellen muss
-> wie bekomme ich hin, dass alle IP's nach dem Start, wenn ich in der Main der Instanz keine IP mitgebe schön in meinen JTree Baum integriert werden... da habe ich schon zich Stunden vergeblich versuch das zu schaffen
-> ich weiß auch nicht wie ich es schaffe, wenn ich dann auf eine IP Adresse klicke, dass auf der rechten Seite der SplittPane der von der IP abgesplittete Inhalt steht
Hoffentlich kann mir hier jemand weiter helfen, denn bei google und go bin ich mit meinen Problemlösungen noch nicht weiter gekommen.
Mein Code bisher komplett:
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit [url]www.cloudgarden.com[/url] for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class NewJFrame extends javax.swing.JFrame {
private JMenuBar MenuLeiste;
private JTextField jTextField1;
private JMenu fileMenu1;
private JMenuItem ExitMenuItem1;
private JButton SearchButton1;
private JLabel chooseLabel1;
private JMenu fileMenue;
private JSplitPane jSplitPane1;
private JScrollPane jScrollPane1;
private JMenuItem exitMenuItem1;
private JSeparator jSeparator1;
private JMenuItem openMenuItem1;
private JTree jTree1;
private String ip = "";
private Scanner s;
private FileWriter fstream;
private BufferedWriter out;
private Matcher mat = null;
private static final long serialVersionUID = 1L;
static String PATH = "d:\\Test\\weblog.log";
static String OUTFILE = "d:\\Test\\TestWrite.txt";
static String suchwort = "145.254.32.119";
/**
* Auto-generated main method to display this JFrame
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
NewJFrame inst = new NewJFrame("145.254.32.119");
inst.setVisible(true);
inst.pack();
inst.setSize(793, 646);
}
public NewJFrame(String ip) throws FileNotFoundException, IOException {
super();
this.ip = ip;
initGUI(ip);
}
private void initGUI(String ip) throws FileNotFoundException, IOException {
this.s = new Scanner(new File(PATH));
this.fstream = new FileWriter(OUTFILE);
this.out = new BufferedWriter(fstream);
setTitle("Search for IP Address in LogFiles");
this.setLayout(null);
try {
// Close window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
{
jTextField1 = new JTextField();
getContentPane().add(jTextField1);
jTextField1.setText("");
jTextField1.setBounds(7, 7, 462, 28);
}
{
chooseLabel1 = new JLabel();
getContentPane().add(chooseLabel1);
chooseLabel1.setText("Choose the IP Address");
chooseLabel1.setBounds(476, 7, 130, 28);
}
{
SearchButton1 = new JButton();
getContentPane().add(SearchButton1);
SearchButton1.setText("Search");
SearchButton1.setBounds(623, 7, 133, 28);
SearchButton1.addActionListener(new Ereignis());
}
{
jSplitPane1 = new JSplitPane();
getContentPane().add(jSplitPane1);
jSplitPane1.setBounds(7, 42, 770, 539);
{
JTextArea text = new JTextArea();
String zweiterTeil = "";
while (s.hasNextLine()) {
String str = s.nextLine();
//if (str.startsWith(suchwort)) {
if (str.startsWith(ip)) {
// Ausgabe von IP+Seite
//System.out.println(str);
// Daten in Datei schreiben
//out.write(str);
//out.newLine();
//Füllen der TextArea
//jTextArea1.setText("sdlkjskdlvnlsdknvlksdnvl");
//text.append(str);
//text.append("\n");
//2.Teil in TexArea fügen
zweiterTeil = str.split("(\\d+)(\\.\\d+){3}")[1];
text.append(zweiterTeil);
text.append("\n");
//text.setLineWrap(false); // Zeilenumbruch
mat = Pattern.compile("(\\d+)(\\.\\d+){3}").matcher(str);
}
}
jScrollPane1 = new JScrollPane(text);
jSplitPane1.add(jScrollPane1, JSplitPane.RIGHT);
JFrame frame = new JFrame();
DefaultMutableTreeNode root=new DefaultMutableTreeNode("IP Adressen");
//einfügen der IP Adressen in den Baum
while(mat.find()){
String ipAddress = mat.group(0).toString(); // temporärer string
root.add(new DefaultMutableTreeNode(ipAddress));
}
jTree1 = new JTree(root);
frame.add( new JScrollPane( jTree1 ) );
//frame.pack();
//frame.setVisible( true );
jTree1.getSelectionModel().addTreeSelectionListener(
new TreeSelectionListener()
{
public void valueChanged( TreeSelectionEvent e )
{
TreePath path = e.getNewLeadSelectionPath();
System.out.println( path );
}
}
);
jSplitPane1.add(jTree1, JSplitPane.LEFT);
}
}
{
MenuLeiste = new JMenuBar();
setJMenuBar(MenuLeiste);
MenuLeiste.setPreferredSize(new java.awt.Dimension(785, 27));
{
fileMenu1 = new JMenu();
MenuLeiste.add(fileMenu1);
fileMenu1.setText("File");
{
openMenuItem1 = new JMenuItem();
fileMenu1.add(openMenuItem1);
openMenuItem1.setText("open");
openMenuItem1.addActionListener(new Ereignis());
}
{
jSeparator1 = new JSeparator();
fileMenu1.add(jSeparator1);
}
{
exitMenuItem1 = new JMenuItem();
fileMenu1.add(exitMenuItem1);
exitMenuItem1.setText("exit");
exitMenuItem1.addActionListener(new Ereignis());
}
}
}
pack();
setSize(793, 646);
} catch (Exception e) {
e.printStackTrace();
}
//BufferedWriter schliessen
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Scanner schliessen
s.close();
}
public class Ereignis implements ActionListener {
//Create a file chooser
final JFileChooser fc = new JFileChooser("D:/Test");
public void actionPerformed(ActionEvent e) {
//Handle open button action.
if (e.getSource() == openMenuItem1) {
int returnVal = fc.showOpenDialog(NewJFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
System.out.println(file.getAbsolutePath());
} else
System.out.println("Auswahl abgebrochen");
//System.exit(1);
}
if (e.getSource() == exitMenuItem1) {
//Close window
dispose();
System.exit(0);
}
if (e.getSource() == SearchButton1) {
ip = jTextField1.getText();
System.out.println(ip);
try {
initGUI(ip);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}
Ich hoffe, dass meine Komentare im Code hilfreich sind und freue mich gaaaaaanz doll über Hilfe.