33import java .io .File ;
44import java .io .FileWriter ;
55import java .io .IOException ;
6- import java .time .LocalDate ;
76import java .time .LocalDateTime ;
87import java .time .format .DateTimeFormatter ;
9- import java .util .ArrayList ;
10- import java .util .Comparator ;
11- import java .util .LinkedHashSet ;
128import java .util .LinkedList ;
139
10+ import javafx .animation .PauseTransition ;
11+ import javafx .scene .control .Alert ;
12+ import javafx .scene .control .Alert .AlertType ;
1413import javafx .stage .FileChooser ;
1514import javafx .stage .Stage ;
15+ import javafx .util .Duration ;
1616
1717public class FunkyLogSorter {
1818 private static int MAX_LEN = 1200 ;
@@ -26,6 +26,11 @@ public class FunkyLogSorter {
2626 public static LinkedList <Message > messages = new LinkedList <>();
2727 public static LinkedList <Message > filtered = new LinkedList <>();
2828
29+ public static int num_open_alerts = 0 ;
30+
31+ public static String log_file_directory = System .getProperty ("user.dir" ) + "/logs846" ;
32+ public static FileWriter log_file ;
33+
2934 public static void clear () {
3035 messages .clear ();
3136 filtered .clear ();
@@ -35,7 +40,7 @@ public static void reFilter() {
3540 filtered .clear ();
3641
3742 for (Message m : messages ) {
38- if (!checkMessageBySearch (m )) {
43+ if (!checkMessageBySearch (m )) {
3944 continue ;
4045 } else if (allowLogs && m .isLog ()) {
4146 filtered .add (m );
@@ -48,7 +53,8 @@ public static void reFilter() {
4853 }
4954
5055 private static boolean checkMessageBySearch (Message msg ) {
51- if (searchTerm .equals ("" )) return true ;
56+ if (searchTerm .equals ("" ))
57+ return true ;
5258
5359 return msg .getSender ().contains (searchTerm ) || msg .getContent ().contains (searchTerm );
5460 }
@@ -73,7 +79,39 @@ public static void addMessage(Message m) {
7379
7480 messages .add (m );
7581
76- if (!checkMessageBySearch (m )) {
82+ if (log_file != null ) {
83+ try {
84+ log_file .write (m .toString () + "\n " );
85+ } catch (IOException exc ) {
86+ exc .printStackTrace ();
87+ }
88+ }
89+
90+ if (m .isError ()) {
91+ if (num_open_alerts < 5 ) {
92+ Alert alert = new Alert (AlertType .ERROR );
93+ alert .setTitle ("FunkyLogs Error Notification" );
94+ alert .setHeaderText (m .getSender ());
95+ alert .setContentText (m .getContent ());
96+
97+ alert .setX (alert .getX () + (num_open_alerts * 70 ));
98+ alert .setY (alert .getY () + (num_open_alerts * 70 ));
99+
100+ alert .show ();
101+
102+ PauseTransition delay = new PauseTransition (Duration .seconds (5 ));
103+
104+ delay .setOnFinished (event -> {
105+ alert .close ();
106+ FunkyLogSorter .num_open_alerts --;
107+ });
108+
109+ delay .play ();
110+
111+ }
112+ }
113+
114+ if (!checkMessageBySearch (m )) {
77115
78116 } else if (allowLogs && m .isLog ()) {
79117 filtered .add (m );
@@ -114,6 +152,31 @@ public static void logAllMessages() {
114152 System .out .println ("END\n " );
115153 }
116154
155+ public static String makeLogFileName () {
156+ LocalDateTime dateTime = LocalDateTime .now ();
157+ DateTimeFormatter formatter = DateTimeFormatter .ofPattern ("yyyy-MM-dd-HH-mm-ss" );
158+ String dateString = dateTime .format (formatter );
159+ return dateString + ".log846" ;
160+ }
161+
162+ public static String getLogFileDirectory () {
163+ return log_file_directory ;
164+ }
165+
166+ public static void makeNewLogFile () {
167+ try {
168+ File directory = new File (log_file_directory );
169+ if (!directory .exists ()) {
170+ directory .mkdir ();
171+ }
172+ if (log_file != null )
173+ log_file .close ();
174+ log_file = new FileWriter (log_file_directory + "/" + makeLogFileName ());
175+ } catch (IOException exc ) {
176+ exc .printStackTrace ();
177+ }
178+ }
179+
117180 public static String stringifyAllMessages () {
118181 StringBuilder result = new StringBuilder ();
119182 for (Message m : messages ) {
@@ -127,14 +190,14 @@ public static void saveToFile(Stage pstage) {
127190 FileChooser fileChooser = new FileChooser ();
128191 fileChooser .setTitle ("Save Log File" );
129192
193+ FileChooser .ExtensionFilter extFilter = new FileChooser .ExtensionFilter ("FunkyLogs File" , ".log846" );
194+ fileChooser .getExtensionFilters ().add (extFilter );
195+
130196 LocalDateTime dateTime = LocalDateTime .now ();
131197 DateTimeFormatter formatter = DateTimeFormatter .ofPattern ("yyyy-MM-dd-HH-mm-ss" );
132198 String dateString = dateTime .format (formatter );
133199
134- fileChooser .setInitialFileName (dateString + ".txt" );
135-
136- FileChooser .ExtensionFilter extFilter = new FileChooser .ExtensionFilter ("Text documents" , ".txt" );
137- fileChooser .getExtensionFilters ().add (extFilter );
200+ fileChooser .setInitialFileName (dateString + ".log846" );
138201
139202 File file = fileChooser .showSaveDialog (pstage );
140203
@@ -159,7 +222,7 @@ public static void createTestWarning(Stage pstage) {
159222 }
160223
161224 public static void createTestError (Stage pstage ) {
162- addMessage (new Message ("2;TestSender;This is an Error;0.0;0;0.0" ));
225+ addMessage (new Message ("2;TestSender;This is an Error;0.0;0;0.0" ));
163226 logAllMessages ();
164227 }
165228
0 commit comments