package net.krautchan.android.network; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import net.krautchan.android.Eisenheinrich; import net.krautchan.backend.DatabaseHelper; import net.krautchan.data.KCBoard; import net.krautchan.parser.KCBoardListParser; public class BoardListUpdater { public void updateBoards () { new Thread (new Runnable () { @Override public void run() { try { Map<String, KCBoard> boards = KCBoardListParser.getBoardList("http://krautchan.net/nav", "http://krautchan.net/", Eisenheinrich.GLOBALS.getUserAgentString()); ArrayList<KCBoard> boardL = new ArrayList<KCBoard>(); for (Entry<String, KCBoard> entry : boards.entrySet()) { boardL.add(entry.getValue()); } HashMap<Long, KCBoard> storedBoardMap = new HashMap<Long, KCBoard>(); Collection <KCBoard> storedBoards = Eisenheinrich.GLOBALS.getBoardCache().getAll(); for (KCBoard board : storedBoards) { storedBoardMap.put(board.dbId, board); } for (KCBoard board : boardL) { KCBoard storedBoard = storedBoardMap.get(board.dbId); if (null != storedBoard) { board.show = storedBoard.show; storedBoard.name = board.name; } } DatabaseHelper dbH = Eisenheinrich.getInstance().dbHelper; dbH.persistBoards(boardL); } catch (IOException e) { // do nothing, just terminate, ain't so important } } }).start(); } }