Refactored htmlizer with MVC concept (view search data).
This commit is contained in:
parent
71246687d3
commit
626180e0c3
15 changed files with 756 additions and 402 deletions
196
src/fr/devinsy/statoolinfos/HtmlizerContext.java
Normal file
196
src/fr/devinsy/statoolinfos/HtmlizerContext.java
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package fr.devinsy.statoolinfos;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.core.Categories;
|
||||||
|
import fr.devinsy.statoolinfos.core.Configuration;
|
||||||
|
import fr.devinsy.statoolinfos.core.Factory;
|
||||||
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class Manager.
|
||||||
|
*/
|
||||||
|
public class HtmlizerContext
|
||||||
|
{
|
||||||
|
private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(HtmlizerContext.class);
|
||||||
|
|
||||||
|
private static class SingletonHolder
|
||||||
|
{
|
||||||
|
private static final HtmlizerContext instance = new HtmlizerContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Configuration configuration;
|
||||||
|
private Federation federation;
|
||||||
|
private Categories categories;
|
||||||
|
private CrawlCache cache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new manager.
|
||||||
|
*/
|
||||||
|
private HtmlizerContext()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure.
|
||||||
|
*
|
||||||
|
* @param configurationFile
|
||||||
|
* the configuration file
|
||||||
|
* @throws IOException
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
*/
|
||||||
|
public void configure(final File configurationFile) throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
this.configuration = Factory.loadConfiguration(configurationFile);
|
||||||
|
|
||||||
|
logger.info("Cache setting: {}", this.configuration.getCrawlCachePath());
|
||||||
|
logger.info("Htmlize input setting: {}", this.configuration.getHtmlizeInputPath());
|
||||||
|
logger.info("Htmlize directory setting: {}", this.configuration.getHtmlizeDirectoryPath());
|
||||||
|
|
||||||
|
File htmlizeInput = this.configuration.getHtmlizeInput();
|
||||||
|
File htmlizeDirectory = this.configuration.getHtmlizeDirectory();
|
||||||
|
if (htmlizeInput == null)
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Htmlize input undefined.");
|
||||||
|
}
|
||||||
|
else if (!htmlizeInput.exists())
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Htmlize input is missing.");
|
||||||
|
}
|
||||||
|
else if (htmlizeInput.isDirectory())
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Htmlize input is a directory.");
|
||||||
|
}
|
||||||
|
else if (htmlizeDirectory == null)
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Htmlize directory undefined.");
|
||||||
|
}
|
||||||
|
else if (!htmlizeDirectory.exists())
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Htmlize directory is missing.");
|
||||||
|
}
|
||||||
|
else if (!htmlizeDirectory.isDirectory())
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Htmlize directory is not a directory.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (this.configuration.isFederation())
|
||||||
|
{
|
||||||
|
this.cache = this.configuration.getCrawlCache();
|
||||||
|
this.federation = Factory.loadFederation(this.configuration.getHtmlizeInput(), this.cache);
|
||||||
|
this.categories = Factory.loadCategories(this.configuration.getCategoryFile(), this.federation);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Not a federation configuration.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the cache.
|
||||||
|
*
|
||||||
|
* @return the cache
|
||||||
|
*/
|
||||||
|
public CrawlCache getCache()
|
||||||
|
{
|
||||||
|
CrawlCache result;
|
||||||
|
|
||||||
|
result = this.cache;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the categories.
|
||||||
|
*
|
||||||
|
* @return the categories
|
||||||
|
*/
|
||||||
|
public Categories getCategories()
|
||||||
|
{
|
||||||
|
Categories result;
|
||||||
|
|
||||||
|
result = this.categories;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the configuration.
|
||||||
|
*
|
||||||
|
* @return the configuration
|
||||||
|
*/
|
||||||
|
public Configuration getConfiguration()
|
||||||
|
{
|
||||||
|
Configuration result;
|
||||||
|
|
||||||
|
result = this.configuration;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the federation.
|
||||||
|
*
|
||||||
|
* @return the federation
|
||||||
|
*/
|
||||||
|
public Federation getFederation()
|
||||||
|
{
|
||||||
|
Federation result;
|
||||||
|
|
||||||
|
result = this.federation;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Htmlize directory.
|
||||||
|
*
|
||||||
|
* @return the file
|
||||||
|
*/
|
||||||
|
public File getHtmlizeDirectory()
|
||||||
|
{
|
||||||
|
File result;
|
||||||
|
|
||||||
|
result = this.configuration.getHtmlizeDirectory();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instance.
|
||||||
|
*
|
||||||
|
* @return the manager
|
||||||
|
*/
|
||||||
|
public static HtmlizerContext instance()
|
||||||
|
{
|
||||||
|
return SingletonHolder.instance;
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,10 +18,18 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
import fr.devinsy.xidyn.data.TagDataManager;
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||||
|
@ -33,6 +41,26 @@ public class AboutPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(AboutPage.class);
|
private static Logger logger = LoggerFactory.getLogger(AboutPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
* @throws IOException
|
||||||
|
* Signals that an I/O exception has occurred.
|
||||||
|
*/
|
||||||
|
public static void build() throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
logger.info("Htmlize about page.");
|
||||||
|
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
CrawlCache cache = HtmlizerContext.instance().getCache();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
String page = htmlize();
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "about.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -40,7 +68,7 @@ public class AboutPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build() throws StatoolInfosException
|
public static String htmlize() throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,19 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
|
import fr.devinsy.statoolinfos.core.Categories;
|
||||||
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.stats.StatAgent;
|
||||||
import fr.devinsy.statoolinfos.stats.categories.CategoryStat;
|
import fr.devinsy.statoolinfos.stats.categories.CategoryStat;
|
||||||
import fr.devinsy.statoolinfos.stats.categories.CategoryStats;
|
import fr.devinsy.statoolinfos.stats.categories.CategoryStats;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
|
@ -35,6 +44,24 @@ public class CategoriesPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(CategoriesPage.class);
|
private static Logger logger = LoggerFactory.getLogger(CategoriesPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static void build() throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
Categories categories = HtmlizerContext.instance().getCategories();
|
||||||
|
|
||||||
|
logger.info("Htmlize categories page.");
|
||||||
|
CategoryStats stats = StatAgent.statAllCategories(federation, categories);
|
||||||
|
String page = CategoriesPage.htmlize(stats);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "categories.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -44,7 +71,7 @@ public class CategoriesPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final CategoryStats stats) throws StatoolInfosException
|
public static String htmlize(final CategoryStats stats) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,21 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
|
import fr.devinsy.statoolinfos.core.Categories;
|
||||||
import fr.devinsy.statoolinfos.core.Category;
|
import fr.devinsy.statoolinfos.core.Category;
|
||||||
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
import fr.devinsy.statoolinfos.core.Services;
|
import fr.devinsy.statoolinfos.core.Services;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
import fr.devinsy.xidyn.data.TagDataManager;
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||||
|
@ -35,6 +44,28 @@ public class CategoryPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(CategoryPage.class);
|
private static Logger logger = LoggerFactory.getLogger(CategoryPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @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();
|
||||||
|
Categories categories = HtmlizerContext.instance().getCategories();
|
||||||
|
|
||||||
|
logger.info("Htmlize category pages.");
|
||||||
|
for (Category category : categories)
|
||||||
|
{
|
||||||
|
Services services = federation.getAllServices().getBy(category);
|
||||||
|
String page = CategoryPage.htmlize(category, services);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "category-" + category.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -46,7 +77,7 @@ public class CategoryPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final Category category, final Services services) throws StatoolInfosException
|
public static String htmlize(final Category category, final Services services) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,25 +18,59 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.catgenerator.core.CatGenerator;
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
import fr.devinsy.statoolinfos.core.Federation;
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
import fr.devinsy.statoolinfos.core.Organization;
|
import fr.devinsy.statoolinfos.core.Organization;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
import fr.devinsy.xidyn.data.DisplayMode;
|
import fr.devinsy.xidyn.data.DisplayMode;
|
||||||
import fr.devinsy.xidyn.data.TagDataManager;
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class OrganizationPage.
|
* The Class FederationPage.
|
||||||
*/
|
*/
|
||||||
public class FederationPage
|
public class FederationPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(FederationPage.class);
|
private static Logger logger = LoggerFactory.getLogger(FederationPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static void build() throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
CrawlCache cache = HtmlizerContext.instance().getCache();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
//
|
||||||
|
logger.info("PAGE FEDERATION Htmlize federation logo.");
|
||||||
|
htmlizeFederationLogo(federation, cache, htmlizeDirectory);
|
||||||
|
|
||||||
|
//
|
||||||
|
logger.info("PAGE FEDERATION Htmlize federation properties files.");
|
||||||
|
FileUtils.copyFile(federation.getInputFile(), new File(htmlizeDirectory, federation.getTechnicalName() + ".properties"));
|
||||||
|
|
||||||
|
logger.info("PAGE FEDERATION federation page: {}.", federation.getName());
|
||||||
|
String page = htmlize(federation);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "index.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -46,7 +80,7 @@ public class FederationPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final Federation federation) throws StatoolInfosException
|
public static String htmlize(final Federation federation) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
@ -133,4 +167,34 @@ public class FederationPage
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Htmlize federation logo.
|
||||||
|
*
|
||||||
|
* @param federation
|
||||||
|
* the federation
|
||||||
|
* @param cache
|
||||||
|
* the cache
|
||||||
|
* @param htmlizeDirectory
|
||||||
|
* the htmlize directory
|
||||||
|
* @throws IOException
|
||||||
|
* Signals that an I/O exception has occurred.
|
||||||
|
*/
|
||||||
|
private static void htmlizeFederationLogo(final Federation federation, final CrawlCache cache, final File htmlizeDirectory) throws IOException
|
||||||
|
{
|
||||||
|
logger.info("Htmlize federation logo.");
|
||||||
|
|
||||||
|
File target = new File(htmlizeDirectory, federation.getLogoFileName());
|
||||||
|
|
||||||
|
File logoFile = cache.restoreFile(federation.getLogoURL());
|
||||||
|
if (logoFile == null)
|
||||||
|
{
|
||||||
|
logger.info("CatGeneratoring cat avatar: {}", target.getAbsoluteFile());
|
||||||
|
CatGenerator.buildAvatarTo(federation.getTechnicalName(), target);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FileUtils.copyFile(logoFile, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,38 +20,15 @@ package fr.devinsy.statoolinfos.htmlize;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import fr.devinsy.catgenerator.core.BirdGenerator;
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
import fr.devinsy.catgenerator.core.CatGenerator;
|
|
||||||
import fr.devinsy.statoolinfos.checker.PropertyChecker;
|
|
||||||
import fr.devinsy.statoolinfos.checker.PropertyChecks;
|
|
||||||
import fr.devinsy.statoolinfos.core.Categories;
|
|
||||||
import fr.devinsy.statoolinfos.core.Category;
|
|
||||||
import fr.devinsy.statoolinfos.core.Configuration;
|
import fr.devinsy.statoolinfos.core.Configuration;
|
||||||
import fr.devinsy.statoolinfos.core.Factory;
|
|
||||||
import fr.devinsy.statoolinfos.core.Federation;
|
|
||||||
import fr.devinsy.statoolinfos.core.Organization;
|
|
||||||
import fr.devinsy.statoolinfos.core.Organizations;
|
|
||||||
import fr.devinsy.statoolinfos.core.Service;
|
|
||||||
import fr.devinsy.statoolinfos.core.Services;
|
|
||||||
import fr.devinsy.statoolinfos.core.SocialNetworks;
|
|
||||||
import fr.devinsy.statoolinfos.core.Software;
|
|
||||||
import fr.devinsy.statoolinfos.core.Softwares;
|
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosUtils;
|
import fr.devinsy.statoolinfos.core.StatoolInfosUtils;
|
||||||
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
|
||||||
import fr.devinsy.statoolinfos.crawl.CrawlCache.DefaultLogoGenerator;
|
|
||||||
import fr.devinsy.statoolinfos.stats.StatAgent;
|
|
||||||
import fr.devinsy.statoolinfos.stats.categories.CategoryStats;
|
|
||||||
import fr.devinsy.statoolinfos.stats.properties.PropertyStats;
|
|
||||||
import fr.devinsy.statoolinfos.stats.propertyfiles.PropertiesFileStats;
|
|
||||||
import fr.devinsy.statoolinfos.stats.softwares.SoftwareStats;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class Htmlizer.
|
* The Class Htmlizer.
|
||||||
|
@ -214,65 +191,6 @@ public class Htmlizer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Htmlize.
|
|
||||||
*
|
|
||||||
* @param configuration
|
|
||||||
* the configuration
|
|
||||||
* @throws IOException
|
|
||||||
* Signals that an I/O exception has occurred.
|
|
||||||
* @throws StatoolInfosException
|
|
||||||
* the statool infos exception
|
|
||||||
*/
|
|
||||||
public static void htmlize(final Configuration configuration) throws IOException, StatoolInfosException
|
|
||||||
{
|
|
||||||
logger.info("Cache setting: {}", configuration.getCrawlCachePath());
|
|
||||||
logger.info("Htmlize input setting: {}", configuration.getHtmlizeInputPath());
|
|
||||||
logger.info("Htmlize directory setting: {}", configuration.getHtmlizeDirectoryPath());
|
|
||||||
|
|
||||||
File htmlizeInput = configuration.getHtmlizeInput();
|
|
||||||
File htmlizeDirectory = configuration.getHtmlizeDirectory();
|
|
||||||
if (htmlizeInput == null)
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("Htmlize input undefined.");
|
|
||||||
}
|
|
||||||
else if (!htmlizeInput.exists())
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("Htmlize input is missing.");
|
|
||||||
}
|
|
||||||
else if (htmlizeInput.isDirectory())
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("Htmlize input is a directory.");
|
|
||||||
}
|
|
||||||
else if (htmlizeDirectory == null)
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("Htmlize directory undefined.");
|
|
||||||
}
|
|
||||||
else if (!htmlizeDirectory.exists())
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("Htmlize directory is missing.");
|
|
||||||
}
|
|
||||||
else if (!htmlizeDirectory.isDirectory())
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("Htmlize directory is not a directory.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (configuration.isFederation())
|
|
||||||
{
|
|
||||||
Htmlizer.htmlizeFederation(configuration);
|
|
||||||
}
|
|
||||||
else if (configuration.isOrganization())
|
|
||||||
{
|
|
||||||
Htmlizer.htmlizeOrganisation(configuration);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
logger.warn("No htmlize for this input: {}.", configuration.getClassName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Htmlize.
|
* Htmlize.
|
||||||
*
|
*
|
||||||
|
@ -287,312 +205,23 @@ public class Htmlizer
|
||||||
{
|
{
|
||||||
logger.info("Htmlize {}", configurationFile.getAbsolutePath());
|
logger.info("Htmlize {}", configurationFile.getAbsolutePath());
|
||||||
|
|
||||||
Configuration configuration = Factory.loadConfiguration(configurationFile);
|
HtmlizerContext.instance().configure(configurationFile);
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
htmlize(configuration);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Htmlize federation.
|
|
||||||
*
|
|
||||||
* @param configuration
|
|
||||||
* the configuration
|
|
||||||
* @throws IOException
|
|
||||||
* Signals that an I/O exception has occurred.
|
|
||||||
* @throws StatoolInfosException
|
|
||||||
* the statool infos exception
|
|
||||||
*/
|
|
||||||
public static void htmlizeFederation(final Configuration configuration) throws IOException, StatoolInfosException
|
|
||||||
{
|
|
||||||
CrawlCache cache = configuration.getCrawlCache();
|
|
||||||
File htmlizeInput = configuration.getHtmlizeInput();
|
|
||||||
File htmlizeDirectory = configuration.getHtmlizeDirectory();
|
|
||||||
|
|
||||||
Federation federation = Factory.loadFederation(htmlizeInput, cache);
|
|
||||||
Categories categories = Factory.loadCategories(configuration.getCategoryFile(), federation);
|
|
||||||
|
|
||||||
copyStuff(htmlizeDirectory);
|
copyStuff(htmlizeDirectory);
|
||||||
|
|
||||||
// Manage the logo file.
|
AboutPage.build();
|
||||||
logger.info("Htmlize federation logo.");
|
FederationPage.build();
|
||||||
htmlizeFederationLogo(federation, cache, htmlizeDirectory);
|
OrganizationPage.buildAll();
|
||||||
logger.info("Htmlize federation properties files.");
|
ServicePage.buildAll();
|
||||||
FileUtils.copyFile(federation.getInputFile(), new File(htmlizeDirectory, federation.getTechnicalName() + ".properties"));
|
ServicesPage.build();
|
||||||
|
PropertyFileCheckPage.buildAll();
|
||||||
//
|
PropertiesFilesPage.build();
|
||||||
logger.info("Htmlize about page.");
|
PropertyStatsPage.buildAll();
|
||||||
String page = AboutPage.build();
|
CategoriesPage.build();
|
||||||
FileUtils.write(new File(htmlizeDirectory, "about.xhtml"), page, StandardCharsets.UTF_8);
|
CategoryPage.buildAll();
|
||||||
|
SoftwaresPage.build();
|
||||||
//
|
SoftwarePage.buildAll();
|
||||||
logger.info("Htmlize federation page: {}.", federation.getName());
|
SocialNetworksPage.buildAll();
|
||||||
page = FederationPage.build(federation);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "index.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
for (Organization organization : federation.getOrganizations())
|
|
||||||
{
|
|
||||||
// Manage the logo file.
|
|
||||||
logger.info("Htmlize organization logo: {}.", organization.getName());
|
|
||||||
htmlizeOrganizationLogo(organization, cache, htmlizeDirectory);
|
|
||||||
logger.info("Htmlize organization properties file: {}.", organization.getName());
|
|
||||||
FileUtils.copyFile(organization.getInputFile(), new File(htmlizeDirectory, organization.getTechnicalName() + ".properties"));
|
|
||||||
|
|
||||||
//
|
|
||||||
logger.info("Htmlize organization page: {}.", organization.getName());
|
|
||||||
page = OrganizationPage.build(organization);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
//
|
|
||||||
for (Service service : organization.getServices())
|
|
||||||
{
|
|
||||||
// Manage the logo file.
|
|
||||||
logger.info("Htmlize service logo: {}.", service.getName());
|
|
||||||
htmlizeServiceLogo(service, cache, htmlizeDirectory);
|
|
||||||
logger.info("Htmlize service properties file: {}.", service.getName());
|
|
||||||
FileUtils.copyFile(service.getInputFile(),
|
|
||||||
new File(htmlizeDirectory, organization.getTechnicalName() + "-" + service.getTechnicalName() + ".properties"));
|
|
||||||
|
|
||||||
logger.info("Htmlize service page: {}.", service.getName());
|
|
||||||
page = ServicePage.build(organization, service);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + "-" + service.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
logger.info("Htmlize services page.");
|
|
||||||
page = ServicesPage.build(federation.getAllServices());
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "services.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
//
|
|
||||||
PropertyChecker checker = new PropertyChecker();
|
|
||||||
|
|
||||||
PropertyChecks checks = checker.checkFederation(federation.getInputFile());
|
|
||||||
page = PropertyFileCheckPage.build("Fédération", checks);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, federation.getTechnicalName() + "-check.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
for (Organization organization : federation.getOrganizations())
|
|
||||||
{
|
|
||||||
checks = checker.checkOrganization(organization.getInputFile());
|
|
||||||
page = PropertyFileCheckPage.build("Organisation", checks);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + "-check.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
for (Service service : organization.getServices())
|
|
||||||
{
|
|
||||||
checks = checker.checkService(service.getInputFile());
|
|
||||||
page = PropertyFileCheckPage.build("Service", checks);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + "-" + service.getTechnicalName() + "-check.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
{
|
|
||||||
logger.info("Htmlize propertiesFiles page.");
|
|
||||||
PropertiesFileStats stats = StatAgent.statAllPropertiesFiles(federation, cache).sortByName();
|
|
||||||
page = PropertiesFilesPage.build(stats);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "propertiesFiles.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
{
|
|
||||||
logger.info("Htmlize propertyStats page.");
|
|
||||||
|
|
||||||
PropertyStats stats = StatAgent.statAllProperties(federation);
|
|
||||||
page = PropertyStatsPage.build("Toutes les propriétés", stats);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "propertyStats.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
PropertyStats federationStats = StatAgent.statFederationProperties(federation);
|
|
||||||
page = PropertyStatsPage.build("Les propriétés de la fédération", federationStats);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "propertyStats-federation.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
PropertyStats organizationsStats = StatAgent.statOrganizationsProperties(federation.getOrganizations());
|
|
||||||
page = PropertyStatsPage.build("Les propriétés des organizations", organizationsStats);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "propertyStats-organizations.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
PropertyStats servicesStats = StatAgent.statServicesProperties(federation.getAllServices());
|
|
||||||
page = PropertyStatsPage.build("Les propriétés des services", servicesStats);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "propertyStats-services.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
{
|
|
||||||
logger.info("Htmlize categories page.");
|
|
||||||
CategoryStats stats = StatAgent.statAllCategories(federation, categories);
|
|
||||||
page = CategoriesPage.build(stats);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "categories.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
{
|
|
||||||
logger.info("Htmlize category pages.");
|
|
||||||
for (Category category : categories)
|
|
||||||
{
|
|
||||||
Services services = federation.getAllServices().getBy(category);
|
|
||||||
page = CategoryPage.build(category, services);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "category-" + category.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
{
|
|
||||||
logger.info("Htmlize softwares page.");
|
|
||||||
SoftwareStats stats = StatAgent.statAllSoftwares(federation, categories);
|
|
||||||
page = SoftwaresPage.build(stats);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "softwares.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
{
|
|
||||||
logger.info("Htmlize software pages.");
|
|
||||||
Softwares catalog = federation.getSoftwares();
|
|
||||||
for (Software software : catalog.values())
|
|
||||||
{
|
|
||||||
Services services = federation.getAllServices().getBy(software);
|
|
||||||
page = SoftwarePage.build(software, services);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "software-" + software.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
{
|
|
||||||
logger.info("Htmlize social networks pages.");
|
|
||||||
Organizations organizations = federation.getOrganizations().filterBySocialNetworks();
|
|
||||||
page = SocialNetworksPage.build("Tous", organizations);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "socialNetworks.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
organizations = federation.getOrganizations().filterBySocialNetwork(SocialNetworks.DIASPORA);
|
|
||||||
page = SocialNetworksPage.build("Disapora*", organizations);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "socialNetworks-diaspora.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
organizations = federation.getOrganizations().filterBySocialNetwork(SocialNetworks.MASTODON);
|
|
||||||
page = SocialNetworksPage.build("Mastodon", organizations);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "socialNetworks-mastodon.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Htmlize federation logo.
|
|
||||||
*
|
|
||||||
* @param federation
|
|
||||||
* the federation
|
|
||||||
* @param cache
|
|
||||||
* the cache
|
|
||||||
* @param htmlizeDirectory
|
|
||||||
* the htmlize directory
|
|
||||||
* @throws IOException
|
|
||||||
* Signals that an I/O exception has occurred.
|
|
||||||
*/
|
|
||||||
private static void htmlizeFederationLogo(final Federation federation, final CrawlCache cache, final File htmlizeDirectory) throws IOException
|
|
||||||
{
|
|
||||||
logger.info("Htmlize federation logo.");
|
|
||||||
|
|
||||||
File target = new File(htmlizeDirectory, federation.getLogoFileName());
|
|
||||||
|
|
||||||
File logoFile = cache.restoreFile(federation.getLogoURL());
|
|
||||||
if (logoFile == null)
|
|
||||||
{
|
|
||||||
logger.info("CatGeneratoring cat avatar: {}", target.getAbsoluteFile());
|
|
||||||
CatGenerator.buildAvatarTo(federation.getTechnicalName(), target);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FileUtils.copyFile(logoFile, target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Htmlize organisation.
|
|
||||||
*
|
|
||||||
* @param configuration
|
|
||||||
* the configuration
|
|
||||||
* @throws IOException
|
|
||||||
* Signals that an I/O exception has occurred.
|
|
||||||
* @throws StatoolInfosException
|
|
||||||
* the statool infos exception
|
|
||||||
*/
|
|
||||||
public static void htmlizeOrganisation(final Configuration configuration) throws IOException, StatoolInfosException
|
|
||||||
{
|
|
||||||
CrawlCache cache = configuration.getCrawlCache();
|
|
||||||
File htmlizeInput = configuration.getHtmlizeInput();
|
|
||||||
File htmlizeDirectory = configuration.getHtmlizeDirectory();
|
|
||||||
|
|
||||||
Organization organization = Factory.loadOrganization(configuration.getBuildInput(), cache);
|
|
||||||
|
|
||||||
copyStuff(htmlizeDirectory);
|
|
||||||
|
|
||||||
// Manage the logo file.
|
|
||||||
cache.restoreLogoTo(organization.getLogoURL(), new File(htmlizeDirectory, organization.getTechnicalName() + "-logo.jpg"), organization.getTechnicalName(), DefaultLogoGenerator.CAT);
|
|
||||||
|
|
||||||
//
|
|
||||||
logger.info("Htmlize about page.");
|
|
||||||
String page = AboutPage.build();
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "about.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
//
|
|
||||||
page = OrganizationPage.build(organization);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, "index.xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
|
|
||||||
for (Service service : organization.getServices())
|
|
||||||
{
|
|
||||||
// Manage the logo file.
|
|
||||||
cache.restoreLogoTo(service.getLogoURL(), new File(htmlizeDirectory, service.getTechnicalName() + "-logo.jpg"), service.getTechnicalName(), DefaultLogoGenerator.BIRD);
|
|
||||||
|
|
||||||
//
|
|
||||||
page = ServicePage.build(organization, service);
|
|
||||||
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + "-" + service.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Htmlize organization logo.
|
|
||||||
*
|
|
||||||
* @param organization
|
|
||||||
* the organization
|
|
||||||
* @param cache
|
|
||||||
* the cache
|
|
||||||
* @param htmlizeDirectory
|
|
||||||
* the htmlize directory
|
|
||||||
* @throws IOException
|
|
||||||
* Signals that an I/O exception has occurred.
|
|
||||||
*/
|
|
||||||
private static void htmlizeOrganizationLogo(final Organization organization, final CrawlCache cache, final File htmlizeDirectory) throws IOException
|
|
||||||
{
|
|
||||||
logger.info("Htmlize organization logo.");
|
|
||||||
|
|
||||||
File target = new File(htmlizeDirectory, organization.getLogoFileName());
|
|
||||||
|
|
||||||
File logoFile = cache.restoreFile(organization.getLogoURL());
|
|
||||||
if (logoFile == null)
|
|
||||||
{
|
|
||||||
logger.info("CatGeneratoring cat avatar: {}", target.getAbsoluteFile());
|
|
||||||
CatGenerator.buildAvatarTo(organization.getTechnicalName(), target);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FileUtils.copyFile(logoFile, target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param service
|
|
||||||
* @param cache
|
|
||||||
* @param htmlizeDirectory
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
|
||||||
private static void htmlizeServiceLogo(final Service service, final CrawlCache cache, final File htmlizeDirectory) throws IOException
|
|
||||||
{
|
|
||||||
logger.info("Htmlize organization logo.");
|
|
||||||
|
|
||||||
File target = new File(htmlizeDirectory, service.getLogoFileName());
|
|
||||||
|
|
||||||
File logoFile = cache.restoreFile(service.getLogoURL());
|
|
||||||
if (logoFile == null)
|
|
||||||
{
|
|
||||||
logger.info("BirdGeneratoring cat avatar: {}", target.getAbsoluteFile());
|
|
||||||
BirdGenerator.buildAvatarTo(service.getTechnicalName(), target);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FileUtils.copyFile(logoFile, target);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,12 +18,20 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.catgenerator.core.CatGenerator;
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
import fr.devinsy.statoolinfos.core.Organization;
|
import fr.devinsy.statoolinfos.core.Organization;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
import fr.devinsy.xidyn.data.DisplayMode;
|
import fr.devinsy.xidyn.data.DisplayMode;
|
||||||
import fr.devinsy.xidyn.data.TagDataManager;
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
|
@ -36,6 +44,47 @@ public class OrganizationPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(OrganizationPage.class);
|
private static Logger logger = LoggerFactory.getLogger(OrganizationPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the view.
|
||||||
|
*
|
||||||
|
* @param organization
|
||||||
|
* the organization
|
||||||
|
* @throws IOException
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
*/
|
||||||
|
public static void build(final Organization organization) throws IOException, StatoolInfosException
|
||||||
|
{
|
||||||
|
CrawlCache cache = HtmlizerContext.instance().getCache();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
// Manage the logo file.
|
||||||
|
logger.info("Htmlize organization logo: {}.", organization.getName());
|
||||||
|
htmlizeOrganizationLogo(organization, cache, htmlizeDirectory);
|
||||||
|
|
||||||
|
//
|
||||||
|
logger.info("Htmlize organization properties file: {}.", organization.getName());
|
||||||
|
FileUtils.copyFile(organization.getInputFile(), new File(htmlizeDirectory, organization.getTechnicalName() + ".properties"));
|
||||||
|
|
||||||
|
//
|
||||||
|
logger.info("Htmlize organization page: {}.", organization.getName());
|
||||||
|
String page = OrganizationPage.htmlize(organization);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the all.
|
||||||
|
*
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static void buildAll() throws IOException, StatoolInfosException
|
||||||
|
{
|
||||||
|
for (Organization organization : HtmlizerContext.instance().getFederation().getOrganizations())
|
||||||
|
{
|
||||||
|
build(organization);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -45,7 +94,7 @@ public class OrganizationPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final Organization organization) throws StatoolInfosException
|
public static String htmlize(final Organization organization) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
@ -118,4 +167,34 @@ public class OrganizationPage
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Htmlize organization logo.
|
||||||
|
*
|
||||||
|
* @param organization
|
||||||
|
* the organization
|
||||||
|
* @param cache
|
||||||
|
* the cache
|
||||||
|
* @param htmlizeDirectory
|
||||||
|
* the htmlize directory
|
||||||
|
* @throws IOException
|
||||||
|
* Signals that an I/O exception has occurred.
|
||||||
|
*/
|
||||||
|
private static void htmlizeOrganizationLogo(final Organization organization, final CrawlCache cache, final File htmlizeDirectory) throws IOException
|
||||||
|
{
|
||||||
|
logger.info("Htmlize organization logo.");
|
||||||
|
|
||||||
|
File target = new File(htmlizeDirectory, organization.getLogoFileName());
|
||||||
|
|
||||||
|
File logoFile = cache.restoreFile(organization.getLogoURL());
|
||||||
|
if (logoFile == null)
|
||||||
|
{
|
||||||
|
logger.info("CatGeneratoring cat avatar: {}", target.getAbsoluteFile());
|
||||||
|
CatGenerator.buildAvatarTo(organization.getTechnicalName(), target);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FileUtils.copyFile(logoFile, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,14 +18,23 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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.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.PropertiesFileStat;
|
||||||
import fr.devinsy.statoolinfos.stats.propertyfiles.PropertiesFileStats;
|
import fr.devinsy.statoolinfos.stats.propertyfiles.PropertiesFileStats;
|
||||||
import fr.devinsy.statoolinfos.util.BuildInformation;
|
import fr.devinsy.statoolinfos.util.BuildInformation;
|
||||||
|
@ -40,6 +49,25 @@ public class PropertiesFilesPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(PropertiesFilesPage.class);
|
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.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -49,7 +77,7 @@ public class PropertiesFilesPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final PropertiesFileStats stats) throws StatoolInfosException
|
public static String htmlize(final PropertiesFileStats stats) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,21 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
import fr.devinsy.statoolinfos.checker.PropertyCheck;
|
import fr.devinsy.statoolinfos.checker.PropertyCheck;
|
||||||
|
import fr.devinsy.statoolinfos.checker.PropertyChecker;
|
||||||
import fr.devinsy.statoolinfos.checker.PropertyChecks;
|
import fr.devinsy.statoolinfos.checker.PropertyChecks;
|
||||||
|
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.core.StatoolInfosException;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
import fr.devinsy.xidyn.data.TagDataManager;
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
|
@ -35,6 +45,38 @@ public class PropertyFileCheckPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(PropertyFileCheckPage.class);
|
private static Logger logger = LoggerFactory.getLogger(PropertyFileCheckPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
*/
|
||||||
|
public static void buildAll() throws IOException, StatoolInfosException
|
||||||
|
{
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
PropertyChecker checker = new PropertyChecker();
|
||||||
|
|
||||||
|
PropertyChecks checks = checker.checkFederation(federation.getInputFile());
|
||||||
|
String page = PropertyFileCheckPage.htmlize("Fédération", checks);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, federation.getTechnicalName() + "-check.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
for (Organization organization : federation.getOrganizations())
|
||||||
|
{
|
||||||
|
checks = checker.checkOrganization(organization.getInputFile());
|
||||||
|
page = PropertyFileCheckPage.htmlize("Organisation", checks);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + "-check.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
for (Service service : organization.getServices())
|
||||||
|
{
|
||||||
|
checks = checker.checkService(service.getInputFile());
|
||||||
|
page = PropertyFileCheckPage.htmlize("Service", checks);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, organization.getTechnicalName() + "-" + service.getTechnicalName() + "-check.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -46,7 +88,7 @@ public class PropertyFileCheckPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final String title, final PropertyChecks checks) throws StatoolInfosException
|
public static String htmlize(final String title, final PropertyChecks checks) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,20 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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.core.StatoolInfosException;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosUtils;
|
import fr.devinsy.statoolinfos.core.StatoolInfosUtils;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
|
import fr.devinsy.statoolinfos.stats.StatAgent;
|
||||||
import fr.devinsy.statoolinfos.stats.properties.PropertyStat;
|
import fr.devinsy.statoolinfos.stats.properties.PropertyStat;
|
||||||
import fr.devinsy.statoolinfos.stats.properties.PropertyStatList;
|
import fr.devinsy.statoolinfos.stats.properties.PropertyStatList;
|
||||||
import fr.devinsy.statoolinfos.stats.properties.PropertyStats;
|
import fr.devinsy.statoolinfos.stats.properties.PropertyStats;
|
||||||
|
@ -37,6 +46,39 @@ public class PropertyStatsPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(PropertyStatsPage.class);
|
private static Logger logger = LoggerFactory.getLogger(PropertyStatsPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @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();
|
||||||
|
CrawlCache cache = HtmlizerContext.instance().getCache();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
logger.info("Htmlize propertyStats page.");
|
||||||
|
|
||||||
|
PropertyStats stats = StatAgent.statAllProperties(federation);
|
||||||
|
String page = PropertyStatsPage.htmlize("Toutes les propriétés", stats);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "propertyStats.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
PropertyStats federationStats = StatAgent.statFederationProperties(federation);
|
||||||
|
page = PropertyStatsPage.htmlize("Les propriétés de la fédération", federationStats);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "propertyStats-federation.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
PropertyStats organizationsStats = StatAgent.statOrganizationsProperties(federation.getOrganizations());
|
||||||
|
page = PropertyStatsPage.htmlize("Les propriétés des organizations", organizationsStats);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "propertyStats-organizations.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
PropertyStats servicesStats = StatAgent.statServicesProperties(federation.getAllServices());
|
||||||
|
page = PropertyStatsPage.htmlize("Les propriétés des services", servicesStats);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "propertyStats-services.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -48,7 +90,7 @@ public class PropertyStatsPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final String title, final PropertyStats stats) throws StatoolInfosException
|
public static String htmlize(final String title, final PropertyStats stats) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,14 +18,22 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.catgenerator.core.BirdGenerator;
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
import fr.devinsy.statoolinfos.core.Metric;
|
import fr.devinsy.statoolinfos.core.Metric;
|
||||||
import fr.devinsy.statoolinfos.core.Organization;
|
import fr.devinsy.statoolinfos.core.Organization;
|
||||||
import fr.devinsy.statoolinfos.core.Service;
|
import fr.devinsy.statoolinfos.core.Service;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
import fr.devinsy.statoolinfos.htmlize.charts.BarMonthsChartView;
|
import fr.devinsy.statoolinfos.htmlize.charts.BarMonthsChartView;
|
||||||
import fr.devinsy.statoolinfos.htmlize.charts.ChartColors;
|
import fr.devinsy.statoolinfos.htmlize.charts.ChartColors;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
|
@ -34,12 +42,54 @@ import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
import fr.devinsy.xidyn.presenters.PresenterUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class OrganizationPage.
|
* The Class ServicePage.
|
||||||
*/
|
*/
|
||||||
public class ServicePage
|
public class ServicePage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(ServicePage.class);
|
private static Logger logger = LoggerFactory.getLogger(ServicePage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the view.
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
*/
|
||||||
|
public static void build(final Service service) throws IOException, StatoolInfosException
|
||||||
|
{
|
||||||
|
CrawlCache cache = HtmlizerContext.instance().getCache();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
// Manage the logo file.
|
||||||
|
logger.info("Htmlize service logo: {}.", service.getName());
|
||||||
|
htmlizeServiceLogo(service, cache, htmlizeDirectory);
|
||||||
|
|
||||||
|
//
|
||||||
|
logger.info("Htmlize service properties file: {}.", service.getName());
|
||||||
|
FileUtils.copyFile(service.getInputFile(),
|
||||||
|
new File(htmlizeDirectory, service.getOrganization().getTechnicalName() + "-" + service.getTechnicalName() + ".properties"));
|
||||||
|
|
||||||
|
//
|
||||||
|
logger.info("Htmlize service page: {}.", service.getName());
|
||||||
|
String page = ServicePage.htmlize(service.getOrganization(), service);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, service.getOrganization().getTechnicalName() + "-" + service.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the all.
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
* Signals that an I/O exception has occurred.
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* the statool infos exception
|
||||||
|
*/
|
||||||
|
public static void buildAll() throws IOException, StatoolInfosException
|
||||||
|
{
|
||||||
|
for (Service service : HtmlizerContext.instance().getFederation().getAllServices())
|
||||||
|
{
|
||||||
|
build(service);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -49,7 +99,7 @@ public class ServicePage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final Organization organization, final Service service) throws StatoolInfosException
|
public static String htmlize(final Organization organization, final Service service) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
@ -188,4 +238,28 @@ public class ServicePage
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param service
|
||||||
|
* @param cache
|
||||||
|
* @param htmlizeDirectory
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
private static void htmlizeServiceLogo(final Service service, final CrawlCache cache, final File htmlizeDirectory) throws IOException
|
||||||
|
{
|
||||||
|
logger.info("Htmlize organization logo.");
|
||||||
|
|
||||||
|
File target = new File(htmlizeDirectory, service.getLogoFileName());
|
||||||
|
|
||||||
|
File logoFile = cache.restoreFile(service.getLogoURL());
|
||||||
|
if (logoFile == null)
|
||||||
|
{
|
||||||
|
logger.info("BirdGeneratoring cat avatar: {}", target.getAbsoluteFile());
|
||||||
|
BirdGenerator.buildAvatarTo(service.getTechnicalName(), target);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FileUtils.copyFile(logoFile, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,16 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
import fr.devinsy.statoolinfos.core.Services;
|
import fr.devinsy.statoolinfos.core.Services;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
|
@ -34,6 +41,22 @@ public class ServicesPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(ServicesPage.class);
|
private static Logger logger = LoggerFactory.getLogger(ServicesPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
*/
|
||||||
|
public static void build() throws IOException, StatoolInfosException
|
||||||
|
{
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
logger.info("Htmlize services page.");
|
||||||
|
String page = ServicesPage.htmlize(federation.getAllServices());
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "services.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -43,7 +66,7 @@ public class ServicesPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final Services services) throws StatoolInfosException
|
public static String htmlize(final Services services) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,13 +18,22 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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.Organization;
|
||||||
import fr.devinsy.statoolinfos.core.Organizations;
|
import fr.devinsy.statoolinfos.core.Organizations;
|
||||||
|
import fr.devinsy.statoolinfos.core.SocialNetworks;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
|
import fr.devinsy.statoolinfos.crawl.CrawlCache;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
import fr.devinsy.xidyn.data.DisplayMode;
|
import fr.devinsy.xidyn.data.DisplayMode;
|
||||||
import fr.devinsy.xidyn.data.TagDataManager;
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
|
@ -37,6 +46,32 @@ public class SocialNetworksPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(SocialNetworksPage.class);
|
private static Logger logger = LoggerFactory.getLogger(SocialNetworksPage.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 social networks pages.");
|
||||||
|
Organizations organizations = federation.getOrganizations().filterBySocialNetworks();
|
||||||
|
String page = SocialNetworksPage.htmlize("Tous", organizations);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "socialNetworks.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
organizations = federation.getOrganizations().filterBySocialNetwork(SocialNetworks.DIASPORA);
|
||||||
|
page = SocialNetworksPage.htmlize("Disapora*", organizations);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "socialNetworks-diaspora.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
organizations = federation.getOrganizations().filterBySocialNetwork(SocialNetworks.MASTODON);
|
||||||
|
page = SocialNetworksPage.htmlize("Mastodon", organizations);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "socialNetworks-mastodon.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -48,7 +83,7 @@ public class SocialNetworksPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final String title, final Organizations organizations) throws StatoolInfosException
|
public static String htmlize(final String title, final Organizations organizations) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,19 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
import fr.devinsy.statoolinfos.core.Services;
|
import fr.devinsy.statoolinfos.core.Services;
|
||||||
import fr.devinsy.statoolinfos.core.Software;
|
import fr.devinsy.statoolinfos.core.Software;
|
||||||
|
import fr.devinsy.statoolinfos.core.Softwares;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
import fr.devinsy.xidyn.data.TagDataManager;
|
import fr.devinsy.xidyn.data.TagDataManager;
|
||||||
|
@ -35,6 +43,27 @@ public class SoftwarePage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(SoftwarePage.class);
|
private static Logger logger = LoggerFactory.getLogger(SoftwarePage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the all.
|
||||||
|
*
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static void buildAll() throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
|
||||||
|
logger.info("Htmlize software pages.");
|
||||||
|
Softwares catalog = federation.getSoftwares();
|
||||||
|
for (Software software : catalog.values())
|
||||||
|
{
|
||||||
|
Services services = federation.getAllServices().getBy(software);
|
||||||
|
String page = SoftwarePage.htmlize(software, services);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "software-" + software.getTechnicalName() + ".xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -46,7 +75,7 @@ public class SoftwarePage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final Software software, final Services services) throws StatoolInfosException
|
public static String htmlize(final Software software, final Services services) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,20 @@
|
||||||
*/
|
*/
|
||||||
package fr.devinsy.statoolinfos.htmlize;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import fr.devinsy.statoolinfos.HtmlizerContext;
|
||||||
|
import fr.devinsy.statoolinfos.core.Categories;
|
||||||
|
import fr.devinsy.statoolinfos.core.Federation;
|
||||||
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
import fr.devinsy.statoolinfos.core.StatoolInfosException;
|
||||||
import fr.devinsy.statoolinfos.htmlize.CategoriesView.Mode;
|
import fr.devinsy.statoolinfos.htmlize.CategoriesView.Mode;
|
||||||
|
import fr.devinsy.statoolinfos.stats.StatAgent;
|
||||||
import fr.devinsy.statoolinfos.stats.softwares.SoftwareStat;
|
import fr.devinsy.statoolinfos.stats.softwares.SoftwareStat;
|
||||||
import fr.devinsy.statoolinfos.stats.softwares.SoftwareStats;
|
import fr.devinsy.statoolinfos.stats.softwares.SoftwareStats;
|
||||||
import fr.devinsy.xidyn.XidynException;
|
import fr.devinsy.xidyn.XidynException;
|
||||||
|
@ -36,6 +45,24 @@ public class SoftwaresPage
|
||||||
{
|
{
|
||||||
private static Logger logger = LoggerFactory.getLogger(SoftwaresPage.class);
|
private static Logger logger = LoggerFactory.getLogger(SoftwaresPage.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the.
|
||||||
|
*
|
||||||
|
* @throws StatoolInfosException
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static void build() throws StatoolInfosException, IOException
|
||||||
|
{
|
||||||
|
Federation federation = HtmlizerContext.instance().getFederation();
|
||||||
|
File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory();
|
||||||
|
Categories categories = HtmlizerContext.instance().getCategories();
|
||||||
|
|
||||||
|
logger.info("Htmlize softwares page.");
|
||||||
|
SoftwareStats stats = StatAgent.statAllSoftwares(federation, categories);
|
||||||
|
String page = SoftwaresPage.htmlize(stats);
|
||||||
|
FileUtils.write(new File(htmlizeDirectory, "softwares.xhtml"), page, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds the.
|
* Builds the.
|
||||||
*
|
*
|
||||||
|
@ -45,7 +72,7 @@ public class SoftwaresPage
|
||||||
* @throws StatoolInfosException
|
* @throws StatoolInfosException
|
||||||
* the statool infos exception
|
* the statool infos exception
|
||||||
*/
|
*/
|
||||||
public static String build(final SoftwareStats stats) throws StatoolInfosException
|
public static String htmlize(final SoftwareStats stats) throws StatoolInfosException
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue