protected void addCategorySiteMapEntries( Category parentCategory, int currentDepth, CategorySiteMapGeneratorConfiguration categorySMGC, SiteMapBuilder siteMapBuilder) { // If we've reached beyond the ending depth, don't proceed if (currentDepth > categorySMGC.getEndingDepth()) { return; } // If we're at or past the starting depth, add this category to the site map if (currentDepth >= categorySMGC.getStartingDepth()) { constructSiteMapURL(categorySMGC, siteMapBuilder, parentCategory); } // Recurse on child categories in batches of size rowLimit int rowOffset = 0; List<Category> categories; do { categories = categoryDao.readActiveSubCategoriesByCategory(parentCategory, rowLimit, rowOffset); rowOffset += categories.size(); for (Category category : categories) { if (StringUtils.isNotEmpty(category.getUrl())) { addCategorySiteMapEntries(category, currentDepth + 1, categorySMGC, siteMapBuilder); } else { LOG.debug("Skipping empty category URL: " + category.getId()); } } } while (categories.size() == rowLimit); }
@Override public void addSiteMapEntries(SiteMapGeneratorConfiguration smgc, SiteMapBuilder siteMapBuilder) { CategorySiteMapGeneratorConfiguration categorySMGC = (CategorySiteMapGeneratorConfiguration) smgc; // Recursively construct the category SiteMap URLs addCategorySiteMapEntries(categorySMGC.getRootCategory(), 0, categorySMGC, siteMapBuilder); }
protected void constructSiteMapURL( CategorySiteMapGeneratorConfiguration categorySMGC, SiteMapBuilder siteMapBuilder, Category category) { SiteMapURLWrapper siteMapUrl = new SiteMapURLWrapper(); // location siteMapUrl.setLoc(generateUri(siteMapBuilder, category)); // change frequency siteMapUrl.setChangeFreqType(categorySMGC.getSiteMapChangeFreq()); // priority siteMapUrl.setPriorityType(categorySMGC.getSiteMapPriority()); // lastModDate siteMapUrl.setLastModDate(generateDate(category)); siteMapBuilder.addUrl(siteMapUrl); }