use of com.pratilipi.data.type.PratilipiContentDoc in project pratilipi by Pratilipi.
the class PratilipiDocUtil method getContentIndex.
// Content doc
public static JsonArray getContentIndex(Long pratilipiId) throws InsufficientAccessException, UnexpectedServerException {
DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
Pratilipi pratilipi = dataAccessor.getPratilipi(pratilipiId);
if (!PratilipiDataUtil.hasAccessToReadPratilipiContent(pratilipi))
throw new InsufficientAccessException();
DocAccessor docAccessor = DataAccessorFactory.getDocAccessor();
PratilipiContentDoc pcDoc = docAccessor.getPratilipiContentDoc(pratilipiId);
return pcDoc == null ? null : pcDoc.getIndex();
}
use of com.pratilipi.data.type.PratilipiContentDoc in project pratilipi by Pratilipi.
the class PratilipiDocUtil method updateMeta.
public static boolean updateMeta(Long pratilipiId) throws UnexpectedServerException {
DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
Pratilipi pratilipi = dataAccessor.getPratilipi(pratilipiId);
DocAccessor docAccessor = DataAccessorFactory.getDocAccessor();
PratilipiContentDoc pcDoc = docAccessor.getPratilipiContentDoc(pratilipiId);
PratilipiMetaDoc pmDoc = docAccessor.getPratilipiMetaDoc(pratilipiId);
if (pmDoc == null)
pmDoc = docAccessor.newPratilipiMetaDoc();
int wordCount = 0;
int imageCount = 0;
int chapterCount = 0;
Map<String, Integer> wordCounts = new HashMap<>();
for (PratilipiContentDoc.Chapter chapter : pcDoc.getChapterList()) {
String content = chapter.getTitle() == null ? "" : chapter.getTitle();
for (PratilipiContentDoc.Page page : chapter.getPageList()) {
for (PratilipiContentDoc.Pagelet pagelet : page.getPageletList()) {
if (pagelet.getType() == PratilipiContentDoc.PageletType.IMAGE)
imageCount++;
else
content += " " + pagelet.getDataAsString();
}
}
content = content.trim();
if (content.length() > 1) {
String[] words = content.replaceAll(nonKeywordsPattern, " ").split("[\\s]+");
for (String word : words) {
Integer count = wordCounts.get(word);
count = count == null ? 1 : count++;
wordCounts.put(word, count);
}
wordCount += words.length;
}
chapterCount++;
}
boolean isChanged = wordCounts.size() != pmDoc.getWordCounts().size();
if (!isChanged) {
for (Entry<String, Integer> entry : pmDoc.getWordCounts().entrySet()) {
if (!entry.getValue().equals(wordCounts.get(entry.getKey()))) {
isChanged = true;
break;
}
}
}
if (isChanged) {
// Update & Save Pratilipi Meta Doc
pmDoc.setWordCounts(wordCounts);
docAccessor.save(pratilipiId, pmDoc);
// Update counts in Pratilipi Entity
AuditLog auditLog = dataAccessor.newAuditLog(AccessTokenFilter.getAccessToken(), AccessType.PRATILIPI_UPDATE, pratilipi);
pratilipi.setWordCount(wordCount);
pratilipi.setImageCount(imageCount);
pratilipi.setChapterCount(chapterCount);
pratilipi = dataAccessor.createOrUpdatePratilipi(pratilipi, auditLog);
}
return isChanged;
}
use of com.pratilipi.data.type.PratilipiContentDoc in project pratilipi by Pratilipi.
the class InitV1Api method get.
@Get
public Response get(GetRequest request) throws UnexpectedServerException {
DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
List<Response.Section> sectionList = new LinkedList<>();
List<Long> pratilipiIdMasterList = new LinkedList<>();
for (String listName : dataAccessor.getHomeSectionList(request.language)) {
String title = dataAccessor.getPratilipiListTitle(listName, request.language);
if (title == null)
continue;
if (title.indexOf('|') != -1)
title = title.substring(0, title.indexOf('|')).trim();
PratilipiFilter pratilipiFilter = new PratilipiFilter();
pratilipiFilter.setLanguage(request.language);
pratilipiFilter.setListName(listName);
pratilipiFilter.setState(PratilipiState.PUBLISHED);
List<Long> pratilipiIdList = dataAccessor.getPratilipiIdList(pratilipiFilter, null, null, 6).getDataList();
if (pratilipiIdList.size() < 6)
continue;
sectionList.add(new Response.Section(title, "/" + listName));
pratilipiIdMasterList.addAll(pratilipiIdList);
}
List<PratilipiData> pratilipiDataMasterList = PratilipiDataUtil.createPratilipiDataList(pratilipiIdMasterList, true);
if (UxModeFilter.isAndroidApp()) {
DocAccessor docAccessor = DataAccessorFactory.getDocAccessor();
for (PratilipiData pratilipiData : pratilipiDataMasterList) {
PratilipiContentDoc pcDoc = docAccessor.getPratilipiContentDoc(pratilipiData.getId());
if (pcDoc == null)
continue;
pratilipiData.setIndex(pcDoc.getIndex());
}
}
for (int i = 0; i < sectionList.size(); i++) sectionList.get(i).setPratilipiList(pratilipiDataMasterList.subList(i * 6, i * 6 + 6));
return new Response(sectionList);
}
Aggregations