Projekt Import - Archi-Lab/prox-search-service GitHub Wiki
Für die Suche nach Projekten muss der Search Service Projekte vom Project Service und Tags vom Tag Service importieren.
Die Klasse ProjectImportService ist für den Import der Projekte inkl. Tags zuständig. Hier wird die Methode importProjects() durch den Scheduled Task in ImportConfig regelmäßig aufgerufen.
Beim Project Service werden in jedem Durchlauf nur die Projekte angefragt, die sich seit der letzten Anfrage verändert haben. Dazu wurde das ProjectRepository im Project Service um folgende Methode erweitert:
Set<Project> findAllByModifiedAfter(
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Param(value = "modified") Date modified);
Dazu speichert sich der Search Service die Zeit der letzten Anfrage immer in einer Variable ab.
Nachdem die Projekte vom Project Service geladen wurden, werden diese im Search Service gespeichert.
Während des Imports der Projekte werden auch die Tags vom Tag Service geladen. Beim Verarbeiten der einzelnen Projekte wird über die Resource der Link auf die TagCollection des Projektes aufgerufen, um auch die Tags zu erhalten. Diese werden dann direkt dem Projekt hinzugefügt.
Link tagCollection = projectResource.getLink("tagCollection");
Für den regelmäßigen Import können zwei Zeiten definiert werden. Mit inital delay wird die Zeit bis zum ersten Import in Sekunden gesetzt und mit dem zweiten Wert der Intervall.
import.delay.initial.seconds = 10
import.delay.seconds = 10
Die Zeiten für den Import Intervall können relativ klein gesetzt werden, da beim Import nur die Änderungen vom Projekt/Tag Service geladen werden.
Beim Import vom Projekten gibt werden nur Projekte geladen, welche nach dem letzten Import bearbeitet wurden. Wenn allerdings Projekte gelöscht werden, erkennt der Search Service diese Änderungen nicht. Um diese Projekte aus dem Search Service zu entfernen wird täglich um Mitternacht ein Import aller Projekte durchgeführt.