/* * Copyright (C) 2020-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.net.MalformedURLException; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Locale; 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.statoolinfos.crawl.CrawlCache; import fr.devinsy.statoolinfos.stats.StatAgent; import fr.devinsy.statoolinfos.stats.propertyfiles.PropertiesFileStat; import fr.devinsy.statoolinfos.stats.propertyfiles.PropertiesFileStats; import fr.devinsy.statoolinfos.util.BuildInformation; import fr.devinsy.xidyn.XidynException; import fr.devinsy.xidyn.data.TagDataManager; import fr.devinsy.xidyn.presenters.PresenterUtils; /** * The Class OrganizationPage. */ public class PropertiesFilesPage { private static Logger logger = LoggerFactory.getLogger(PropertiesFilesPage.class); /** * Builds the. * * @throws IOException * @throws MalformedURLException * @throws StatoolInfosException */ public static void build() throws MalformedURLException, IOException, StatoolInfosException { Federation federation = HtmlizerContext.instance().getFederation(); CrawlCache cache = HtmlizerContext.instance().getCache(); File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory(); logger.info("Htmlize propertiesFiles page."); PropertiesFileStats stats = StatAgent.statAllPropertiesFiles(federation, cache).sortByName(); String page = PropertiesFilesPage.htmlize(stats); FileUtils.write(new File(htmlizeDirectory, "propertiesFiles.xhtml"), page, StandardCharsets.UTF_8); } /** * Builds the. * * @param stats * the stats * @return the string * @throws StatoolInfosException * the statool infos exception */ public static String htmlize(final PropertiesFileStats stats) throws StatoolInfosException { String result; try { logger.debug("Building propertyFiles page."); TagDataManager data = new TagDataManager(); data.setContent("versionsup", BuildInformation.instance().version()); data.setContent("lastUpdateDate", LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy HH':'mm", Locale.FRANCE))); data.setContent("fileCount", stats.size()); data.setContent("lineCount", stats.getLineCount()); data.setContent("propertyCount", stats.getPropertyCount()); data.setContent("blankPropertyCount", stats.getBlankPropertyCount()); data.setContent("filledPropertyCount", stats.getFilledPropertyCount()); data.setContent("warningCount", stats.getWarningCount()); data.setContent("errorCount", stats.getErrorCount()); data.setContent("voidCount", stats.getVoidCount()); // int index = 0; for (PropertiesFileStat stat : stats.sortByName()) { data.setAttribute("fileListLine", index, "fileListLineNameLink", "href", stat.getLocalName()); data.setEscapedContent("fileListLine", index, "fileListLineNameLink", stat.getLocalName()); data.setAttribute("fileListLine", index, "fileListLineOwnerLink", "href", stat.getOrganization().getTechnicalName() + ".xhtml"); data.setEscapedContent("fileListLine", index, "fileListLineNameValue", stat.getOrganization().getName()); data.setAttribute("fileListLine", index, "fileListLineOwnerLogo", "src", stat.getOrganization().getLogoFileName()); data.setContent("fileListLine", index, "fileListLineLineCount", stat.getLineCount()); data.setContent("fileListLine", index, "fileListLineActiveCount", stat.getPropertyCount()); data.setContent("fileListLine", index, "fileListLineBlankPropertyCount", stat.getBlankPropertyCount()); data.setContent("fileListLine", index, "fileListLineFilledPropertyCount", stat.getFilledPropertyCount()); if (stat.getWarningCount() > 0) { data.setAttribute("fileListLine", index, "fileListLineWarningCountLink", "href", stat.getLocalName().replace(".properties", "-check.xhtml")); data.setContent("fileListLine", index, "fileListLineWarningCountLink", stat.getWarningCount()); data.setAttribute("fileListLine", index, "fileListLineWarningCount", "style", "background-color: yellow;"); } else { data.setContent("fileListLine", index, "fileListLineWarningCount", stat.getWarningCount()); } if (stat.getErrorCount() > 0) { data.setAttribute("fileListLine", index, "fileListLineErrorCountLink", "href", stat.getLocalName().replace(".properties", "-check.xhtml")); data.setContent("fileListLine", index, "fileListLineErrorCountLink", stat.getErrorCount()); data.setAttribute("fileListLine", index, "fileListLineErrorCount", "style", "background-color: red;"); } else { data.setContent("fileListLine", index, "fileListLineErrorCount", stat.getErrorCount()); } if (stat.getVoidCount() > 0) { data.setAttribute("fileListLine", index, "fileListLineVoidCountLink", "href", stat.getLocalName().replace(".properties", "-check.xhtml")); data.setContent("fileListLine", index, "fileListLineVoidCountLink", stat.getVoidCount()); data.setAttribute("fileListLine", index, "fileListLineVoidCount", "style", "background-color: rgb(54, 162, 235, 0.2);"); } else { data.setContent("fileListLine", index, "fileListLineVoidCount", stat.getVoidCount()); } data.setContent("fileListLine", index, "fileListLineDate", stat.getUpdateDate().toString()); index += 1; } String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/propertiesFiles.xhtml", data).toString(); BreadcrumbTrail trail = new BreadcrumbTrail(); trail.add("Fichiers", "propertiesFiles.xhtml"); result = WebCharterView.build(content, trail); } catch (XidynException exception) { throw new StatoolInfosException("Error building propertiesFiles page: " + exception.getMessage(), exception); } // return result; } }