public CategoryBfs(CategoryGraph graph, int startId, NameSpace startNamespace, Language language, int maxResults, TIntSet validWpIds, LocalCategoryMemberDao categoryMemberDao, int direction) throws DaoException {
this.startPage = startId;
this.maxResults = maxResults;
this.graph = graph;
this.validWpIds = validWpIds;
this.categoryMemberDao = categoryMemberDao;
this.language = language;
pageDistances.put(startPage, 0.000000);
if (startNamespace == NameSpace.ARTICLE) {
Collection<Integer> cats = categoryMemberDao.getCategoryIds(language, startId);
if (cats!=null){
for (int catId : cats) {
int ci = graph.catIdToIndex(catId);
if (ci >= 0) {
openCats.add(new CategoryDistance(ci, graph.cats[ci], graph.catCosts[ci], (byte)direction));
}
}
}
} else if (startNamespace == NameSpace.CATEGORY) {
int ci = graph.catIdToIndex(startId);
if (ci >= 0) {
openCats.add(new CategoryDistance(ci, graph.cats[ci], 0.000000001, (byte)direction));
}
} else {
throw new IllegalArgumentException();
}
}