Мне нужна программа, которая читает из нескольких файлов и отображает отчет на основе диапазона дат, введенного пользователем. Данные в файлах выглядят так:
[C445] ComputerName:FRONTOFFICE UserID:YB Yenae Ball Station 7A LanId: | (11/23 17:01:55) | Client is disconnected from agent.
[C445] ComputerName:FRONTOFFICE UserID:YB Yenae Ball Station 7C LanId: | (11/23 17:02:00) | Client is connected to agent.
[C7AE] ComputerName:KCUTSHALL-PC UserID:GO kcutshall Station 9901 LanId: | (11/23 13:33:06 - 11/23 13:33:41)|Client is disconnected from agent.
Мне нужен вывод, например:
Computer Name No.of disconnects
A 4
B 2
C 1
т.е. число отключений для определенного имени компьютера в порядке убывания, соответствующем введенному диапазону дат.Я пытался сделать это, но я не могу получить сводный счетчик для компьютеров, а также не могу выполнить сортировку. Вывод, который я получил:
Имя компьютера Количество отключений
A 1
A 1
A 2
B 1
B 2
C 1
C 1
Пожалуйста, помогите мне в этом.Вот код, который я написал
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.Scanner;
import java.util.*;
import java.text.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class ReadZip{
public static void main(String args[]) throws ParseException {
try {
Scanner input1=new Scanner(System.in);
Scanner input2=new Scanner(System.in);
System.out.println("Enter start date");
String userDate1=input1.nextLine();
System.out.println("Enter end date");
String userDate2=input2.nextLine();
DateFormat df = new SimpleDateFormat ("MM/dd");
Date d1=df.parse(userDate1);
Date d2=df.parse(userDate2);
ZipFile zf=new ZipFile("C:\\Users\\Engineeir\\Desktop\\QoS_logs.zip");
Enumeration entries=zf.entries();
BufferedReader input=new BufferedReader(new InputStreamReader(
System.in));
while (entries.hasMoreElements()) {
ZipEntry ze=(ZipEntry) entries.nextElement();
BufferedReader br=new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));
String line; String name;String compnames;int lines=0;
while ((line=br.readLine())!=null) {
String[] st=line.split("\\|",-1);
if(st.length>1){
String dates=st[1];
String[] parts=dates.split("-");
SimpleDateFormat f=new SimpleDateFormat("(MM/dd");
String[] ob=parts[0].split(" ");
String finaldate=ob[1];
Date d3=f.parse(finaldate);
if(d3.after(d1) && d3.before(d2)){
compnames=getName(st);
if(line.contains("Client is disconnected from agent")==true)
{
//compnames=getName(st);
lines++;
}
System.out.println(compnames+"\t"+lines);}
else{break;}
//System.out.println(compnames+"\t"+lines);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getName(String[] st)
{
String[] name=st[0].split("\\:",-1);
String[] comp=name[1].split("\\ ",-1);
return(comp[0]);
}
}