Update App.java, LogEntry.java, and 5 more files...
This commit is contained in:
parent
824b362710
commit
39751747c3
@ -12,6 +12,7 @@ import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import java.io.IOException;
|
||||
import org.slf4j.event.Level;
|
||||
|
||||
/**
|
||||
* JavaFX App
|
||||
@ -22,6 +23,7 @@ public class App extends Application {
|
||||
private static TdClusterManager clusterManager;
|
||||
|
||||
private static TransferService transferService;
|
||||
private static LogService logService;
|
||||
|
||||
private static Scene scene;
|
||||
|
||||
@ -29,6 +31,10 @@ public class App extends Application {
|
||||
public void start(Stage stage) throws IOException, CantLoadLibrary {
|
||||
Init.start();
|
||||
clusterManager = new TdClusterManager(null, null, Vertx.vertx(), null);
|
||||
|
||||
logService = new LogServiceImpl();
|
||||
logService.append(Level.INFO, "Initializing");
|
||||
|
||||
transferService = new TransferServiceImpl(clusterManager);
|
||||
|
||||
transferService.setApiId(94575);
|
||||
@ -37,6 +43,7 @@ public class App extends Application {
|
||||
scene = new Scene(loadFXML("primary"), 800, 600);
|
||||
stage.setScene(scene);
|
||||
stage.show();
|
||||
logService.append(Level.INFO, "Initialized");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -61,4 +68,8 @@ public class App extends Application {
|
||||
public static TransferService getTransferService() {
|
||||
return transferService;
|
||||
}
|
||||
|
||||
public static LogService getLogService() {
|
||||
return logService;
|
||||
}
|
||||
}
|
65
src/main/java/it/cavallium/LogEntry.java
Normal file
65
src/main/java/it/cavallium/LogEntry.java
Normal file
@ -0,0 +1,65 @@
|
||||
package it.cavallium;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Objects;
|
||||
import java.util.StringJoiner;
|
||||
import org.slf4j.event.Level;
|
||||
|
||||
public class LogEntry {
|
||||
private final long time;
|
||||
private final Level level;
|
||||
private final String text;
|
||||
|
||||
public LogEntry(long time, Level level, String text) {
|
||||
this.time = time;
|
||||
this.level = level;
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public Level getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public long getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault()).toString() + " [" + level + "] " + text;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
LogEntry logEntry = (LogEntry) o;
|
||||
|
||||
if (time != logEntry.time) {
|
||||
return false;
|
||||
}
|
||||
if (level != logEntry.level) {
|
||||
return false;
|
||||
}
|
||||
return Objects.equals(text, logEntry.text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = (int) (time ^ (time >>> 32));
|
||||
result = 31 * result + (level != null ? level.hashCode() : 0);
|
||||
result = 31 * result + (text != null ? text.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
}
|
14
src/main/java/it/cavallium/LogService.java
Normal file
14
src/main/java/it/cavallium/LogService.java
Normal file
@ -0,0 +1,14 @@
|
||||
package it.cavallium;
|
||||
|
||||
import java.util.List;
|
||||
import org.slf4j.event.Level;
|
||||
import reactor.core.publisher.Flux;
|
||||
|
||||
public interface LogService {
|
||||
|
||||
Flux<LogEntry> listenUpdates();
|
||||
|
||||
void append(Level level, String message);
|
||||
|
||||
int getMaxSize();
|
||||
}
|
31
src/main/java/it/cavallium/LogServiceImpl.java
Normal file
31
src/main/java/it/cavallium/LogServiceImpl.java
Normal file
@ -0,0 +1,31 @@
|
||||
package it.cavallium;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import org.slf4j.event.Level;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.ReplayProcessor;
|
||||
|
||||
public class LogServiceImpl implements LogService {
|
||||
|
||||
private static final int SIZE = 1000;
|
||||
|
||||
private ReplayProcessor<LogEntry> logs = ReplayProcessor.create(SIZE);
|
||||
|
||||
@Override
|
||||
public Flux<LogEntry> listenUpdates() {
|
||||
return logs.hide();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void append(Level level, String message) {
|
||||
logs.onNext(new LogEntry(System.currentTimeMillis(), level, message));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxSize() {
|
||||
return SIZE;
|
||||
}
|
||||
}
|
@ -33,6 +33,7 @@ public class PrimaryController {
|
||||
@FXML private ListView<Text> userbotsList;
|
||||
@FXML private ComboBox<BaseChatInfo> sourceGroupCombo;
|
||||
@FXML private ComboBox<BaseChatInfo> destGroupCombo;
|
||||
@FXML private ListView<LogEntry> log;
|
||||
|
||||
@FXML
|
||||
protected void initialize() {
|
||||
@ -55,6 +56,15 @@ public class PrimaryController {
|
||||
for (BaseChatInfo destSupergroups : App.getTransferService().getAdminSupergroups(false, true)) {
|
||||
destItems.add(destSupergroups);
|
||||
}
|
||||
|
||||
App.getLogService().listenUpdates().subscribeOn(Schedulers.boundedElastic()).flatMap(logString -> MonoFxUtils.runLater(() -> {
|
||||
if (log.getItems().size() >= App.getLogService().getMaxSize()) {
|
||||
log.getItems().remove(0);
|
||||
}
|
||||
log.getItems().add(logString);
|
||||
log.scrollTo(logString);
|
||||
return Mono.empty();
|
||||
})).subscribe();
|
||||
}
|
||||
|
||||
private void disableClicks() {
|
||||
|
@ -29,7 +29,9 @@ import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.reactivestreams.Publisher;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.warp.commonutils.error.InitializationException;
|
||||
import reactor.core.publisher.EmitterProcessor;
|
||||
import reactor.core.publisher.Flux;
|
||||
|
@ -127,7 +127,7 @@
|
||||
</Text>
|
||||
</top>
|
||||
<center>
|
||||
<ListView prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
|
||||
<ListView fx:id="log" BorderPane.alignment="CENTER" style="-fx-font-size: 8"/>
|
||||
</center>
|
||||
</BorderPane>
|
||||
</items>
|
||||
|
Loading…
Reference in New Issue
Block a user