From a374975723e4f490638adb800b7496ffeb30e1f8 Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Sat, 12 Jun 2021 03:05:40 +0200 Subject: [PATCH] Refactored Craw Journal page with header views. --- ...JournalPage.java => CrawlJournalView.java} | 53 ++-------- .../htmlize/FederationCrawlJournalPage.java | 78 +++++++++++++++ .../statoolinfos/htmlize/Htmlizer.java | 4 +- .../htmlize/OrganizationCrawlJournalPage.java | 94 ++++++++++++++++++ .../htmlize/ServiceCrawlJournalPage.java | 96 +++++++++++++++++++ .../htmlize/headerContentView.xhtml | 17 ++++ 6 files changed, 294 insertions(+), 48 deletions(-) rename src/fr/devinsy/statoolinfos/htmlize/{CrawlJournalPage.java => CrawlJournalView.java} (61%) create mode 100644 src/fr/devinsy/statoolinfos/htmlize/FederationCrawlJournalPage.java create mode 100644 src/fr/devinsy/statoolinfos/htmlize/OrganizationCrawlJournalPage.java create mode 100644 src/fr/devinsy/statoolinfos/htmlize/ServiceCrawlJournalPage.java create mode 100644 src/fr/devinsy/statoolinfos/htmlize/headerContentView.xhtml diff --git a/src/fr/devinsy/statoolinfos/htmlize/CrawlJournalPage.java b/src/fr/devinsy/statoolinfos/htmlize/CrawlJournalView.java similarity index 61% rename from src/fr/devinsy/statoolinfos/htmlize/CrawlJournalPage.java rename to src/fr/devinsy/statoolinfos/htmlize/CrawlJournalView.java index 45828da..d7b519b 100644 --- a/src/fr/devinsy/statoolinfos/htmlize/CrawlJournalPage.java +++ b/src/fr/devinsy/statoolinfos/htmlize/CrawlJournalView.java @@ -18,63 +18,26 @@ */ package fr.devinsy.statoolinfos.htmlize; -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.time.format.DateTimeFormatter; -import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import fr.devinsy.statoolinfos.HtmlizerContext; -import fr.devinsy.statoolinfos.core.Federation; -import fr.devinsy.statoolinfos.core.Organization; -import fr.devinsy.statoolinfos.core.Service; import fr.devinsy.statoolinfos.core.StatoolInfosException; -import fr.devinsy.statoolinfos.crawl.CrawlCache; import fr.devinsy.statoolinfos.crawl.CrawlJournal; import fr.devinsy.statoolinfos.crawl.CrawlLog; import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; import fr.devinsy.xidyn.presenters.PresenterUtils; +import fr.devinsy.xidyn.utils.XidynUtils; /** * The Class CrawlJournalPage. */ -public class CrawlJournalPage +public class CrawlJournalView { - private static Logger logger = LoggerFactory.getLogger(CrawlJournalPage.class); - - /** - * Builds the all. - * - * @throws StatoolInfosException - * @throws IOException - */ - public static void buildAll() throws StatoolInfosException, IOException - { - Federation federation = HtmlizerContext.instance().getFederation(); - CrawlCache cache = HtmlizerContext.instance().getCache(); - File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory(); - - logger.info("Htmlize Crawl Journal pages."); - String page = htmlize("Journal des téléchargements", federation.getCrawlJournal()); - FileUtils.write(new File(htmlizeDirectory, federation.getTechnicalName() + "-crawl.xhtml"), page, StandardCharsets.UTF_8); - - for (Organization organization : federation.getOrganizations()) - { - page = htmlize("Journal des téléchargements de " + organization.getName(), organization.getCrawlJournal()); - FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + "-crawl.xhtml"), page, StandardCharsets.UTF_8); - } - - for (Service service : federation.getServicesAll()) - { - page = htmlize("Journal des téléchargements de " + service.getName(), service.getCrawlJournal()); - FileUtils.write(new File(htmlizeDirectory, service.getOrganization().getTechnicalName() + "-" + service.getTechnicalName() + "-crawl.xhtml"), page, StandardCharsets.UTF_8); - } - } + private static Logger logger = LoggerFactory.getLogger(CrawlJournalView.class); /** * Htmlize. @@ -87,17 +50,15 @@ public class CrawlJournalPage * @throws StatoolInfosException * the statool infos exception */ - public static String htmlize(final String title, final CrawlJournal journal) throws StatoolInfosException + public static String htmlize(final CrawlJournal journal) throws StatoolInfosException { String result; try { - logger.debug("Building Crawl journal page…"); - TagDataManager data = new TagDataManager(); - data.setEscapedContent("title", title); + data.setEscapedContent("title", "Journal des téléchargements"); data.setContent("date", journal.getDatetime().format(DateTimeFormatter.ofPattern("dd/MM/YYYY HH:mm"))); data.setContent("totalCount", journal.size()); data.setContent("errorCount", journal.getErrors().size()); @@ -124,9 +85,7 @@ public class CrawlJournalPage } String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/crawlJournal.xhtml", data).toString(); - - BreadcrumbTrail trail = new BreadcrumbTrail(); - result = WebCharterView.build(content, trail); + result = XidynUtils.extractBodyContent(content); } catch (XidynException exception) { diff --git a/src/fr/devinsy/statoolinfos/htmlize/FederationCrawlJournalPage.java b/src/fr/devinsy/statoolinfos/htmlize/FederationCrawlJournalPage.java new file mode 100644 index 0000000..9dd2894 --- /dev/null +++ b/src/fr/devinsy/statoolinfos/htmlize/FederationCrawlJournalPage.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2021 Christian Pierre MOMON + * + * This file is part of StatoolInfos, simple service statistics tool. + * + * StatoolInfos is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * StatoolInfos is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with StatoolInfos. If not, see . + */ +package fr.devinsy.statoolinfos.htmlize; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import fr.devinsy.statoolinfos.HtmlizerContext; +import fr.devinsy.statoolinfos.core.Federation; +import fr.devinsy.statoolinfos.core.StatoolInfosException; +import fr.devinsy.xidyn.XidynException; +import fr.devinsy.xidyn.data.TagDataManager; +import fr.devinsy.xidyn.presenters.PresenterUtils; + +/** + * The Class CrawlJournalFederationPage. + */ +public class FederationCrawlJournalPage +{ + private static Logger logger = LoggerFactory.getLogger(FederationCrawlJournalPage.class); + + /** + * Htmlize. + * + * @param title + * the title + * @param journal + * the journal + * @return the string + * @throws StatoolInfosException + * the statool infos exception + * @throws IOException + */ + public static void build() throws StatoolInfosException, IOException + { + try + { + Federation federation = HtmlizerContext.instance().getFederation(); + File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory(); + + TagDataManager data = new TagDataManager(); + + data.setContent("headerView", FederationHeaderView.htmlize(federation)); + data.setContent("contentView", CrawlJournalView.htmlize(federation.getCrawlJournal())); + + String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/headerContentView.xhtml", data).toString(); + + BreadcrumbTrail trail = new BreadcrumbTrail(); + String page = WebCharterView.build(content, trail); + FileUtils.write(new File(htmlizeDirectory, federation.getLocalFileBaseName() + "-crawl.xhtml"), page, StandardCharsets.UTF_8); + } + catch (XidynException exception) + { + throw new StatoolInfosException("Error building federation crawl journal page: " + exception.getMessage(), exception); + } + } +} diff --git a/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java b/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java index 206f12e..1a62105 100644 --- a/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java +++ b/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java @@ -160,7 +160,9 @@ public class Htmlizer AboutPage.build(); CategoriesPage.build(); CategoryPage.buildAll(); - CrawlJournalPage.buildAll(); + FederationCrawlJournalPage.build(); + OrganizationCrawlJournalPage.buildAll(); + ServiceCrawlJournalPage.buildAll(); EditoPage.build(); ExportsPage.build(); FederationPage.build(); diff --git a/src/fr/devinsy/statoolinfos/htmlize/OrganizationCrawlJournalPage.java b/src/fr/devinsy/statoolinfos/htmlize/OrganizationCrawlJournalPage.java new file mode 100644 index 0000000..ee9a91c --- /dev/null +++ b/src/fr/devinsy/statoolinfos/htmlize/OrganizationCrawlJournalPage.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2021 Christian Pierre MOMON + * + * This file is part of StatoolInfos, simple service statistics tool. + * + * StatoolInfos is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * StatoolInfos is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with StatoolInfos. If not, see . + */ +package fr.devinsy.statoolinfos.htmlize; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import fr.devinsy.statoolinfos.HtmlizerContext; +import fr.devinsy.statoolinfos.core.Federation; +import fr.devinsy.statoolinfos.core.Organization; +import fr.devinsy.statoolinfos.core.StatoolInfosException; +import fr.devinsy.xidyn.XidynException; +import fr.devinsy.xidyn.data.TagDataManager; +import fr.devinsy.xidyn.presenters.PresenterUtils; + +/** + * The Class CrawlJournalOrganizationPage. + */ +public class OrganizationCrawlJournalPage +{ + private static Logger logger = LoggerFactory.getLogger(OrganizationCrawlJournalPage.class); + + /** + * Builds the. + * + * @param organization + * the organization + * @throws StatoolInfosException + * the statool infos exception + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public static void build(final Organization organization) throws StatoolInfosException, IOException + { + try + { + File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory(); + + TagDataManager data = new TagDataManager(); + + data.setContent("headerView", OrganizationHeaderView.htmlize(organization)); + data.setContent("contentView", CrawlJournalView.htmlize(organization.getCrawlJournal())); + + String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/headerContentView.xhtml", data).toString(); + + BreadcrumbTrail trail = new BreadcrumbTrail(); + String page = WebCharterView.build(content, trail); + FileUtils.write(new File(htmlizeDirectory, organization.getLocalFileBaseName() + "-crawl.xhtml"), page, StandardCharsets.UTF_8); + } + catch (XidynException exception) + { + throw new StatoolInfosException("Error building organization crawl journal page: " + exception.getMessage(), exception); + } + } + + /** + * Builds the all. + * + * @throws StatoolInfosException + * the statool infos exception + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public static void buildAll() throws StatoolInfosException, IOException + { + Federation federation = HtmlizerContext.instance().getFederation(); + + for (Organization organization : federation.getOrganizations()) + { + build(organization); + } + } +} diff --git a/src/fr/devinsy/statoolinfos/htmlize/ServiceCrawlJournalPage.java b/src/fr/devinsy/statoolinfos/htmlize/ServiceCrawlJournalPage.java new file mode 100644 index 0000000..1b63519 --- /dev/null +++ b/src/fr/devinsy/statoolinfos/htmlize/ServiceCrawlJournalPage.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2021 Christian Pierre MOMON + * + * This file is part of StatoolInfos, simple service statistics tool. + * + * StatoolInfos is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * StatoolInfos is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with StatoolInfos. If not, see . + */ +package fr.devinsy.statoolinfos.htmlize; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import fr.devinsy.statoolinfos.HtmlizerContext; +import fr.devinsy.statoolinfos.core.Federation; +import fr.devinsy.statoolinfos.core.Service; +import fr.devinsy.statoolinfos.core.StatoolInfosException; +import fr.devinsy.xidyn.XidynException; +import fr.devinsy.xidyn.data.TagDataManager; +import fr.devinsy.xidyn.presenters.PresenterUtils; + +/** + * The Class CrawlJournalServicePage. + */ +public class ServiceCrawlJournalPage +{ + private static Logger logger = LoggerFactory.getLogger(ServiceCrawlJournalPage.class); + + /** + * Builds the. + * + * @param service + * the service + * @throws StatoolInfosException + * the statool infos exception + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public static void build(final Service service) throws StatoolInfosException, IOException + { + try + { + File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory(); + + TagDataManager data = new TagDataManager(); + + data.setContent("headerView", ServiceHeaderView.htmlize(service)); + data.setContent("contentView", CrawlJournalView.htmlize(service.getCrawlJournal())); + + String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/headerContentView.xhtml", data).toString(); + + BreadcrumbTrail trail = new BreadcrumbTrail(); + trail.add(service.getOrganization().getName(), service.getOrganization().getLocalFileBaseName() + ".xhtml"); + trail.add(service.getName(), service.getLocalFileBaseName() + ".xhtml"); + String page = WebCharterView.build(content, trail); + FileUtils.write(new File(htmlizeDirectory, service.getLocalFileBaseName() + "-crawl.xhtml"), page, StandardCharsets.UTF_8); + } + catch (XidynException exception) + { + throw new StatoolInfosException("Error building service crawl journal page: " + exception.getMessage(), exception); + } + } + + /** + * Builds the all. + * + * @throws StatoolInfosException + * the statool infos exception + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public static void buildAll() throws StatoolInfosException, IOException + { + Federation federation = HtmlizerContext.instance().getFederation(); + + for (Service service : federation.getServicesAll()) + { + build(service); + } + } +} diff --git a/src/fr/devinsy/statoolinfos/htmlize/headerContentView.xhtml b/src/fr/devinsy/statoolinfos/htmlize/headerContentView.xhtml new file mode 100644 index 0000000..d97da95 --- /dev/null +++ b/src/fr/devinsy/statoolinfos/htmlize/headerContentView.xhtml @@ -0,0 +1,17 @@ + + + + + StatoolInfos + + + + + + + +
+
+ +