Verified Owner
Top Description Fields Constructors Methods
org.jabref.logic.ai.summarization

public Class SummarizationTaskAggregator

extends Object
Class Inheritance
Imports
java.util.Comparator, .Optional, .TreeMap, org.jabref.logic.ai.summarization.tasks.GenerateSummaryTask, .GenerateSummaryTaskRequest, org.jabref.logic.ai.util.TrackedBackgroundTask, org.jabref.logic.util.TaskExecutor, org.jabref.model.entry.BibEntry

Deduplicates summarization tasks across the application lifetime.

Exactly one GenerateSummaryTask is created per BibEntry object reference (BibEntry#getId() is the tree key). A second call for the same entry while a task is still running returns the existing task — no duplicate generation.

When a task completes successfully, the result is written to the InMemorySummaryCache so that callers who were not listening at that moment can still retrieve it. The task is then removed from the internal map.

All public methods are synchronized to make them safe for concurrent access from both the JavaFX thread and background task threads.

Field Summary

Modifier and TypeField and Description
private final InMemorySummaryCache
private final TaskExecutor
private final TreeMap<BibEntry, GenerateSummaryTask>

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public synchronized Optional<GenerateSummaryTask>
public synchronized GenerateSummaryTask
start(GenerateSummaryTaskRequest request)

Starts a GenerateSummaryTask for the entry in request, or returns the already-running task if one exists for that entry.

public synchronized GenerateSummaryTask
start(GenerateSummaryTaskRequest request, boolean showToUser)

private synchronized GenerateSummaryTask
startNewTask(GenerateSummaryTaskRequest request, boolean showToUser)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

inMemoryCacheback to summary
private final InMemorySummaryCache inMemoryCache
taskExecutorback to summary
private final TaskExecutor taskExecutor
tasksback to summary
private final TreeMap<BibEntry, GenerateSummaryTask> tasks

Constructor Detail

SummarizationTaskAggregatorback to summary
public SummarizationTaskAggregator(TaskExecutor taskExecutor, InMemorySummaryCache inMemoryCache)

Method Detail

getTaskback to summary
public synchronized Optional<GenerateSummaryTask> getTask(BibEntry entry)
startback to summary
public synchronized GenerateSummaryTask start(GenerateSummaryTaskRequest request)

Starts a GenerateSummaryTask for the entry in request, or returns the already-running task if one exists for that entry.

computeIfAbsent is the deduplication mechanism — only one task per entry at a time.

Important Note

if you attach a status listener to the returned task, also check org.jabref.logic.ai.util.TrackedBackgroundTask#getStatus() immediately after attaching, in case the task already finished before the listener was registered.

startback to summary
public synchronized GenerateSummaryTask start(GenerateSummaryTaskRequest request, boolean showToUser)
startNewTaskback to summary
private synchronized GenerateSummaryTask startNewTask(GenerateSummaryTaskRequest request, boolean showToUser)