private List<YContentDirectory> findChapters(List<YContentEntry> contentList, Locale locale) { List<YContentDirectory> result = new ArrayList<YContentDirectory>(); for (YContentEntry<?> content : contentList) { if (content instanceof YContentDirectory) { YContentDirectory dir = (YContentDirectory) content; if (ContentTypes.CONTENT_PAGED.equals(dir.getType())) { result.add(dir); } else { result.addAll(findChapters(dir.getEntries(), locale)); } } } return result; }
private YContentDirectory findChapter(String id, YElement elements, List<String> chapters) { Queue<YContentEntry> fifo = new LinkedList<YContentEntry>(); YContentDirectory foundChapter = null; fifo.addAll(elements.getContents()); while (!fifo.isEmpty()) { YContentEntry e = fifo.poll(); if (e.isDirectory()) { YContentDirectory dir = (YContentDirectory) e; if (dir.getType().equals(YConstants.CONTENT_PAGED)) { chapters.add(dir.getId()); if (id == null) { if (foundChapter == null) { foundChapter = dir; } } else if (id.equals(dir.getId())) { foundChapter = dir; } } else { fifo.addAll(dir.getEntries()); } } } return foundChapter; } }
@SuppressWarnings("rawtypes") private boolean checkContentAvailable(List<YContentEntry> contentList, String mainLevel) { for (YContentEntry<?> content : contentList) { if (content instanceof YContentFile) { if (isFileAccepted((YContentFile) content, mainLevel)) { return true; } } else if (content instanceof YContentDirectory) { YContentDirectory dir = (YContentDirectory) content; if (acceptedDirectoryTypes.contains(dir.getType()) && checkContentAvailable(dir.getEntries(), mainLevel)) { return true; } } } return false; }
private boolean hasChapteredContent(List<YContentEntry> contentList) { for (YContentEntry<?> content : contentList) { if (content instanceof YContentDirectory) { YContentDirectory dir = (YContentDirectory) content; if ((ContentTypes.CONTENT_PAGED.equals(dir.getType()) && findIfContentExists(dir.getEntries(), null)) || hasChapteredContent(dir.getEntries())) { return true; } } } return false; }
private Page resolveMultiFile(YContentDirectory dir) { Page result = new Page(); if (dir.getType().equals(YConstants.CONTENT_MULTI_TYPE)) { for (YContentEntry e : dir.getEntries()) { if (e.isFile()) { YContentFile file = (YContentFile) e; if (!file.getLocations().isEmpty()) { String location = file.getLocations().get(0) .replace("yar://", ""); if (file.getType().equals(YConstants.FT_PLAIN_TEXT)) { result.setText(location); } else { result.setScan(location); } } } } } return result; }
private List<ContentEntryData> translateContent(List<YContentEntry> contentList, Locale locale, String mainLevel) { List<ContentEntryData> result = new ArrayList<ContentEntryData>(); for (YContentEntry<?> content : contentList) { if (content instanceof YContentFile) { YContentFile file = (YContentFile) content; if (yModelPropertyExtractor.isFileAccepted(file, mainLevel)) { result.add(new ContentFileData(file.getId(), YModelUtils.getDefaultName(file), fetchName(file.getFormat(), locale), yModelPropertyExtractor.prepareLocation(file.getLocations()))); } } else if (content instanceof YContentDirectory) { YContentDirectory dir = (YContentDirectory) content; if (ContentTypes.CONTENT_PAGED.equals(dir.getType()) && findIfContentExists(dir.getEntries(), mainLevel)) { result.add(new ContentDirectoryData(dir.getId(), getDirectoryName(dir), dir.getType(), fetchName(dir.getType(), locale))); } else if(findIfContentExists(dir.getEntries(), mainLevel)) { result.add(new ContentDirectoryData(dir.getId(), getDirectoryName(dir), dir.getType(), fetchName(dir.getType(), locale), translateContent(dir.getEntries(), locale, mainLevel))); } } } return result; }
private List<ContentFileData> findChapterPages(List<YContentEntry> chapterEntries, Locale locale, String mainLevel) { List<ContentFileData> result = new ArrayList<ContentFileData>(); for (YContentEntry<?> content : chapterEntries) { if (content instanceof YContentFile) { YContentFile file = (YContentFile) content; if (yModelPropertyExtractor.isFileAccepted(file, mainLevel)) { result.add(new ContentFileData(file.getId(), YModelUtils.getDefaultName(file), fetchName(file.getFormat(), locale), yModelPropertyExtractor.prepareLocation(file.getLocations()))); } } else if (content instanceof YContentDirectory) { YContentDirectory dir = (YContentDirectory) content; if (ContentTypes.CONTENT_MULTI_TYPE.equals(dir.getType())) { result.addAll(findChapterPages(dir.getEntries(), locale, mainLevel)); } } } return result; }
private YDirectory resolveDirectory(YContentDirectory dir, IFilteringContext filteringContext, ContentResolvingContext contentResolvingContext) { YDirectory result = new YDirectory(dir.getId(), dir.getType(), getFolderName(dir)); List<Content> cList = new LinkedList<Content>(); boolean containsAvailableFile = false; for (YContentEntry<?> entry : dir.getEntries()) { if (!entry.isFile()) { YDirectory toBeAdded = resolveDirectory((YContentDirectory) entry, filteringContext, contentResolvingContext); if (toBeAdded.isContainsAvailableFile()) { containsAvailableFile = true; } cList.add(toBeAdded); } else { YFile toBeAdded = resolveFile((YContentFile) entry, filteringContext, dir.getType(), contentResolvingContext); if (toBeAdded.isAvailable()) { containsAvailableFile = true; } cList.add(toBeAdded); } } result.setContents(cList); result.setContainsAvailableFile(containsAvailableFile); return result; }