Step in dev.

This commit is contained in:
Christian P. MOMON 2020-09-17 03:59:11 +02:00
parent 3de7de0ef1
commit 9ee525ffe7
10 changed files with 128 additions and 33 deletions

View file

@ -119,12 +119,68 @@ public class CrawlCache
else
{
result = buildFile(url.toString());
if (!result.exists())
{
result = null;
}
}
//
return result;
}
/**
* Restore file to.
*
* @param url
* the url
* @param target
* the target
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public void restoreFileTo(final URL url, final File target) throws IOException
{
if (url != null)
{
File logoFile = restoreFile(url);
if (logoFile != null)
{
FileUtils.copyFile(logoFile, target);
}
}
}
/**
* Restore file to.
*
* @param url
* the url
* @param targetDirectory
* the target directory
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public void restoreLogoTo(final URL url, final File target) throws IOException
{
if (url == null)
{
StatoolInfosUtils.generateCatLogo(target.getName(), target);
}
else
{
File logoFile = restoreFile(url);
if (logoFile == null)
{
StatoolInfosUtils.generateCatLogo(target.getName(), target);
}
else
{
FileUtils.copyFile(logoFile, target);
}
}
}
/**
* Restore properties.
*
@ -167,7 +223,7 @@ public class CrawlCache
if (StringUtils.startsWith(url.getProtocol(), "http"))
{
final int TIMEOUT = 5000;
result = restoreFile(url);
result = buildFile(url.toString());
FileUtils.copyURLToFile(url, result, TIMEOUT, TIMEOUT);
}
else
@ -230,8 +286,9 @@ public class CrawlCache
else
{
final int TIMEOUT = 5000;
result = restoreFile(url);
result = buildFile(url.toString());
FileUtils.copyURLToFile(url, result, TIMEOUT, TIMEOUT);
logger.info("Crawled {}", url);
}
}
catch (IOException exception)

View file

@ -66,7 +66,9 @@ public class Factory
{
if (StringUtils.startsWith(property.getValue(), "http"))
{
PathProperties subProperties = cache.restoreProperties(new URL(property.getValue()));
URL url = new URL(property.getValue());
result.setLocalFile(cache.restoreFile(url));
PathProperties subProperties = cache.restoreProperties(url);
Organization organization = loadOrganization(subProperties, cache);
result.getOrganizations().add(organization);

View file

@ -18,6 +18,10 @@
*/
package fr.devinsy.statoolinfos.core;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.lang3.StringUtils;
import fr.devinsy.statoolinfos.properties.PathProperties;
@ -30,6 +34,7 @@ public class Federation extends PathPropertyList
{
private static final long serialVersionUID = -8970835291634661580L;
private Organizations organizations;
private File localFile;
/**
* Instantiates a new federation.
@ -69,7 +74,36 @@ public class Federation extends PathPropertyList
{
String result;
result = get("service.description");
result = get("federation.description");
//
return result;
}
public File getLocalFile()
{
return this.localFile;
}
/**
* Gets the logo URL.
*
* @return the logo URL
* @throws MalformedURLException
*/
public URL getLogoURL() throws MalformedURLException
{
URL result;
String path = get("federation.logo");
if ((StringUtils.isBlank(path)) || (!StringUtils.startsWith(path, "http")))
{
result = null;
}
else
{
result = new URL(path);
}
//
return result;
@ -109,4 +143,9 @@ public class Federation extends PathPropertyList
//
return result;
}
public void setLocalFile(final File localFile)
{
this.localFile = localFile;
}
}

View file

@ -111,7 +111,7 @@ public class Service extends PathPropertyList
{
String result;
result = get("service.website.url");
result = get("service.website");
//
return result;

View file

@ -172,6 +172,13 @@ public class StatoolInfos
logger.info("Cache setting: {}", configuration.get("conf.crawl.cache"));
CrawlCache cache = new CrawlCache(new File(crawlCachePath));
cache.storeQuietly(configuration.getURL("federation.logo"));
cache.storeQuietly(configuration.getURL("federation.logo.url"));
cache.storeQuietly(configuration.getURL("organization.logo"));
cache.storeQuietly(configuration.getURL("organization.logo.url"));
cache.storeQuietly(configuration.getURL("service.logo"));
cache.storeQuietly(configuration.getURL("service.logo.url"));
PathProperties subs = configuration.getByPrefix("subs");
for (PathProperty property : subs)
{
@ -236,21 +243,20 @@ public class StatoolInfos
{
PathProperties properties = PathPropertyUtils.load(input);
String crawlCachePath = properties.get("conf.crawl.cache");
logger.info("Cache setting: {}", properties.get("conf.crawl.cache"));
CrawlCache cache = new CrawlCache(new File(crawlCachePath));
String className = properties.get("conf.class");
if (StringUtils.equals(className, "federation"))
{
Federation federation = Factory.loadFederation(properties);
Htmlizer.htmlize(federation);
Htmlizer.htmlize(federation, cache);
}
else if (StringUtils.equals(className, "organization"))
{
Organization organization = Factory.loadOrganization(properties);
Htmlizer.htmlize(organization);
}
else if (StringUtils.equals(className, "service"))
{
Service service = Factory.loadService(properties);
Htmlizer.htmlize(service);
Htmlizer.htmlize(organization, cache);
}
else
{

View file

@ -116,7 +116,7 @@ public class StatoolInfosUtils
{
URL source = new URL("https://www.peppercarrot.com/extras/html/2016_cat-generator/avatar.php?seed=" + seed);
FileUtils.copyURLToFile(source, target);
FileUtils.copyURLToFile(source, target, 5000, 5000);
}
/**

View file

@ -62,9 +62,11 @@ public class FederationPage
data.setContent("versionsup", BuildInformation.instance().version());
data.setContent("lastUpdateDate", LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy HH':'mm", Locale.FRANCE)));
data.setAttribute("federationLogo", "src", federation.getTechnicalName() + "-logo.jpg");
data.setEscapedContent("federationName", federation.getName());
data.setEscapedContent("federationDescription", federation.getDescription());
data.setContent("organizationCount", federation.getOrganizations().size());
data.setAttribute("federationRawButton", "href", federation.getTechnicalName() + "-origin.properties");
int index = 0;
for (Organization organization : federation.getOrganizations())

View file

@ -26,6 +26,7 @@ import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.core.CrawlCache;
import fr.devinsy.statoolinfos.core.Federation;
import fr.devinsy.statoolinfos.core.Organization;
import fr.devinsy.statoolinfos.core.Service;
@ -81,7 +82,7 @@ public class Htmlizer
* @throws IOException
* @throws StatoolInfosException
*/
public static void htmlize(final Federation federation) throws IOException, StatoolInfosException
public static void htmlize(final Federation federation, final CrawlCache cache) throws IOException, StatoolInfosException
{
File targetDirectory = new File(federation.get("conf.htmlize.directory"));
logger.info("Htmlize target directory: {}", targetDirectory.getAbsoluteFile());
@ -97,6 +98,7 @@ public class Htmlizer
else
{
copyStuff(targetDirectory);
cache.restoreLogoTo(federation.getLogoURL(), new File(targetDirectory, federation.getTechnicalName() + "-logo.jpg"));
//
String page = FederationPage.build(federation);
@ -136,7 +138,7 @@ public class Htmlizer
* @throws IOException
* @throws StatoolInfosException
*/
public static void htmlize(final Organization organization) throws IOException, StatoolInfosException
public static void htmlize(final Organization organization, final CrawlCache cache) throws IOException, StatoolInfosException
{
File targetDirectory = new File(organization.get("conf.htmlize.directory"));
logger.info("Htmlize target directory: {}", targetDirectory.getAbsoluteFile());
@ -174,15 +176,4 @@ public class Htmlizer
// Build service page.
}
}
/**
* Htmlize.
*
* @param service
* the service
*/
public static void htmlize(final Service service)
{
}
}

View file

@ -14,11 +14,8 @@
<div style="margin: 5px 10px 10px 10px;">
<h1><a href="index.xhtml"><img src="logo.jpg" style="width: 35px;"/> StatoolInfos</a><sup id="versionsup" style="font-size: 9px;">v0.0.14</sup> <a href="about.xhtml">About</a><span style="font-size: 9px; float: right;">Page updated on<br/><span id="lastUpdateDate" style="font-size: 9px;">xx/xx/xxxx xx:xx</span></span></h1>
<div style="margin: 5px;">
<a id="federationRawButton" href="#" class="button">Raw properties</a>
</div>
<h2><img id="federationLogo" src="#" style="width: 100px; heigth: 100px;"/> <span id="federationName">Federation name</span></h2>
<h2 id="federationName">Federation name</h2>
<p id="federationDescription">Bla bla description</p>
<div>Nombre de membres : <span id="organizationCount">n/a</span></div>
<div>

View file

@ -14,11 +14,12 @@
<div style="margin: 5px 10px 10px 10px;">
<h1><a href="index.xhtml"><img src="logo.jpg" style="width: 35px;"/> StatoolInfos</a><sup id="versionsup" style="font-size: 9px;">v0.0.14</sup> <a href="about.xhtml">About</a><span style="font-size: 9px; float: right;">Page updated on<br/><span id="lastUpdateDate" style="font-size: 9px;">xx/xx/xxxx xx:xx</span></span></h1>
<h2 id="organizationName">Organization name</h2>
<div style="margin: 5px;">
<a id="organizationRawButton" href="#" class="button">Raw properties</a>
<a id="federationRawButton" href="#" class="button">Raw properties</a>
</div>
<h2 id="organizationName">Organization name</h2>
<p id="organizationDescription">Bla bla description</p>
<div>Nombre de services : <span id="serviceCount">n/a</span></div>
<div>