10.3. A frissítés folyamata

A 11. ábrán a frissítés folyamatát bemutató Java-stílusú pszeudokód látható. A folyamatot az időzítő ütése indítja, amely ekkor átadja a frissítendő UserURL objektum egyedi azonosítóját a metódusnak.

// frissítendő UserURL objektum betöltése
final UserURL workUrl = loadUrl();

if (workUrl.isRefreshDisabled()) {
	// ha az UserURL figyelése le van tiltva
	return;
}

if (workUrl.isDisabledBeforeNow()) {
	// ha az UserURL frissítése egy adott jövőbeli időpontig
	// le van tiltva hibák miatt
	return;
}

// ugyanezt a weblapot figyelő más UserURL-ek összegyűjtése
List<UserURL> similarUrls = findSimilarUrls(workUrl);
similarUrls.add(workUrl);

// a listából kikeressük az utoljára frissített elemet
UserURL lastUpdatedUrl = findLastUpdatedUrl(similarUrls);

URLData recvData;
int minRefreshPeriod = 10; // percekben

if (lastUpdatedUrl.refreshedRecently(minRefreshPeriod)) {
	// ha az utolsó 10 percben le volt kérdezve a weblap
	// a szervertől, akkor a régi tartalmat használjuk
	recvData = lastUpdatedUrl.getRecvDataOld();
} else {
	recvData = getContentFromWeb(workUrl);
}

for (UserURL anUrl: similarUrls) {
	URLData aRecvData = recvData.clone();
	for (Filter aFilter: anUrl.getFilters()) {
		// szűrők futtatása
		aRecvData = aFitler.run(aRecvData);
	}
	List<News> news = anUrl.getModule().run(aRecvData);
	anUrl.addAllNews(news);
}

11. ábra: A frissítés folyamata

A folyamat a korábbi fejezetekben bemutatott aktivitás-diagramokat annyival egészíti ki, hogy képes az alwaysRefresh attribútum kezelésére, tehát a felhasználók akkor is kaphatnak értesítést a figyelt weboldal módosításáról, ha más felhasználók időzítője indítja a frissítési folyamatot.

Ha a folyamat során bármilyen kivétel dobódik, akkor növeljük az errorCount számlálót, és a korábban ismertetett hibakezelést hajtjuk végre, melynek során például a disabledBefore értékét is beállítjuk.

Tartalom átvétel