Refactored logo htmlize management.
This commit is contained in:
parent
45debe8fc1
commit
0f26fff93e
14 changed files with 224 additions and 14 deletions
|
@ -24,5 +24,6 @@
|
|||
<classpathentry kind="lib" path="lib/commons-lang3-3.11.jar" sourcepath="lib/commons-lang3-3.11-sources.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-text-1.9.jar" sourcepath="lib/commons-text-1.9-sources.jar"/>
|
||||
<classpathentry kind="lib" path="lib/catgenerator-0.1.2.jar" sourcepath="lib/catgenerator-0.1.2-sources.zip"/>
|
||||
<classpathentry kind="lib" path="lib/tika-core-1.24.1.jar" sourcepath="lib/tika-core-1.24.1-sources.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
BIN
lib/tika-core-1.24.1-sources.jar
Normal file
BIN
lib/tika-core-1.24.1-sources.jar
Normal file
Binary file not shown.
BIN
lib/tika-core-1.24.1.jar
Normal file
BIN
lib/tika-core-1.24.1.jar
Normal file
Binary file not shown.
|
@ -164,6 +164,7 @@ public class Factory
|
|||
PathProperties properties = PathPropertyUtils.load(federationFile);
|
||||
result = new Federation(properties);
|
||||
result.setInputFile(federationFile);
|
||||
result.setLogoFileName(result.getTechnicalName() + "-logo" + StringUtils.defaultIfBlank(cache.getExtension(result.getLogoURL()), ".png"));
|
||||
|
||||
PathProperties subs = result.getByPrefix("subs");
|
||||
for (PathProperty property : subs)
|
||||
|
@ -236,6 +237,7 @@ public class Factory
|
|||
result = new Organization(properties);
|
||||
result.setInputFile(inputFile);
|
||||
result.setInputURL(inputURL);
|
||||
result.setLogoFileName(result.getTechnicalName() + "-logo" + StringUtils.defaultIfBlank(cache.getExtension(result.getLogoURL()), ".png"));
|
||||
|
||||
PathProperties subs = result.getByPrefix("subs");
|
||||
for (PathProperty property : subs)
|
||||
|
@ -245,6 +247,7 @@ public class Factory
|
|||
URL serviceInputURL = new URL(property.getValue());
|
||||
Service service = loadService(serviceInputURL, cache);
|
||||
service.setOrganization(result);
|
||||
result.setLogoFileName(result.getTechnicalName() + "-" + result.getLogoFileName());
|
||||
result.getServices().add(service);
|
||||
}
|
||||
}
|
||||
|
@ -269,6 +272,7 @@ public class Factory
|
|||
result = new Service(properties);
|
||||
result.setInputFile(inputFile);
|
||||
result.setInputURL(inputURL);
|
||||
result.setLogoFileName(result.getTechnicalName() + "-logo" + StringUtils.defaultIfBlank(cache.getExtension(result.getLogoURL()), ".png"));
|
||||
|
||||
//
|
||||
return result;
|
||||
|
|
|
@ -36,6 +36,7 @@ public class Federation extends PathPropertyList
|
|||
private static final long serialVersionUID = -8970835291634661580L;
|
||||
private Organizations organizations;
|
||||
private File inputFile;
|
||||
private String logoFileName;
|
||||
|
||||
/**
|
||||
* Instantiates a new federation.
|
||||
|
@ -63,6 +64,7 @@ public class Federation extends PathPropertyList
|
|||
else
|
||||
{
|
||||
this.organizations = new Organizations();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -166,6 +168,11 @@ public class Federation extends PathPropertyList
|
|||
return result;
|
||||
}
|
||||
|
||||
public String getLogoFileName()
|
||||
{
|
||||
return this.logoFileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the logo URL.
|
||||
*
|
||||
|
@ -352,8 +359,19 @@ public class Federation extends PathPropertyList
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the input file.
|
||||
*
|
||||
* @param inputFile
|
||||
* the new input file
|
||||
*/
|
||||
public void setInputFile(final File inputFile)
|
||||
{
|
||||
this.inputFile = inputFile;
|
||||
}
|
||||
|
||||
public void setLogoFileName(final String logoFileName)
|
||||
{
|
||||
this.logoFileName = logoFileName;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ public class Organization extends PathPropertyList
|
|||
private Services services;
|
||||
private File inputFile;
|
||||
private URL inputURL;
|
||||
private String logoFileName;
|
||||
|
||||
/**
|
||||
* Instantiates a new organization.
|
||||
|
@ -208,6 +209,21 @@ public class Organization extends PathPropertyList
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the logo file name.
|
||||
*
|
||||
* @return the logo file name
|
||||
*/
|
||||
public String getLogoFileName()
|
||||
{
|
||||
String result;
|
||||
|
||||
result = this.logoFileName;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the logo URL.
|
||||
*
|
||||
|
@ -491,4 +507,9 @@ public class Organization extends PathPropertyList
|
|||
{
|
||||
this.inputURL = inputURL;
|
||||
}
|
||||
|
||||
public void setLogoFileName(final String logoFileName)
|
||||
{
|
||||
this.logoFileName = logoFileName;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import java.time.LocalDateTime;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.apache.commons.lang3.RegExUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -56,8 +57,8 @@ public class Service extends PathPropertyList
|
|||
|
||||
private Organization organization;
|
||||
private File inputFile;
|
||||
|
||||
private URL inputURL;
|
||||
private String logoFileName;
|
||||
|
||||
/**
|
||||
* Instantiates a new service.
|
||||
|
@ -188,6 +189,11 @@ public class Service extends PathPropertyList
|
|||
return result;
|
||||
}
|
||||
|
||||
public String getLogoFileName()
|
||||
{
|
||||
return this.logoFileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the logo URL.
|
||||
*
|
||||
|
@ -293,6 +299,12 @@ public class Service extends PathPropertyList
|
|||
|
||||
result = get("service.name");
|
||||
|
||||
if (StringUtils.isBlank(result))
|
||||
{
|
||||
String seed = get("crawl.url");
|
||||
result = DigestUtils.md5Hex(seed).substring(0, 8);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
@ -653,6 +665,11 @@ public class Service extends PathPropertyList
|
|||
this.inputURL = inputURL;
|
||||
}
|
||||
|
||||
public void setLogoFileName(final String logoFileName)
|
||||
{
|
||||
this.logoFileName = logoFileName;
|
||||
}
|
||||
|
||||
public void setOrganization(final Organization organization)
|
||||
{
|
||||
this.organization = organization;
|
||||
|
|
|
@ -40,6 +40,10 @@ import org.apache.commons.io.FileUtils;
|
|||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.apache.tika.Tika;
|
||||
import org.apache.tika.mime.MimeType;
|
||||
import org.apache.tika.mime.MimeTypeException;
|
||||
import org.apache.tika.mime.MimeTypes;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -119,6 +123,34 @@ public class StatoolInfosUtils
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find extension.
|
||||
*
|
||||
* @param file
|
||||
* the file
|
||||
* @return the string
|
||||
*/
|
||||
public static String findExtension(final File file)
|
||||
{
|
||||
String result;
|
||||
|
||||
try
|
||||
{
|
||||
Tika tika = new Tika();
|
||||
String mimeTypeLabel = tika.detect(file);
|
||||
MimeType mimeType = MimeTypes.getDefaultMimeTypes().forName(mimeTypeLabel);
|
||||
result = mimeType.getExtension();
|
||||
}
|
||||
catch (IOException | MimeTypeException exception)
|
||||
{
|
||||
exception.printStackTrace();
|
||||
result = "";
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate cat logo.
|
||||
*
|
||||
|
|
|
@ -111,6 +111,31 @@ public class CrawlCache
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the extension.
|
||||
*
|
||||
* @param url
|
||||
* the url
|
||||
* @return the extension
|
||||
*/
|
||||
public String getExtension(final URL url)
|
||||
{
|
||||
String result;
|
||||
|
||||
File file = restoreFile(url);
|
||||
if (file == null)
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = StatoolInfosUtils.findExtension(file);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore file.
|
||||
*
|
||||
|
@ -124,7 +149,7 @@ public class CrawlCache
|
|||
|
||||
if (StringUtils.isBlank(key))
|
||||
{
|
||||
throw new IllegalArgumentException("Null parameter.");
|
||||
result = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -150,7 +175,14 @@ public class CrawlCache
|
|||
{
|
||||
File result;
|
||||
|
||||
if (url == null)
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = restoreFile(url.toString());
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
|
@ -417,7 +449,7 @@ public class CrawlCache
|
|||
|
||||
try
|
||||
{
|
||||
if ((url == null) || (!StringUtils.startsWith(url.getProtocol(), "http")))
|
||||
if ((url == null) || (!StringUtils.startsWithIgnoreCase(url.getProtocol(), "http")))
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@ public class Crawler
|
|||
cache.store(input.get("federation.name"), configuration.getCrawlInputFile());
|
||||
cache.storeQuietly(input.getURL("federation.logo"));
|
||||
}
|
||||
else
|
||||
else if (configuration.isOrganization())
|
||||
{
|
||||
cache.store(input.get("organization.name"), configuration.getCrawlInputFile());
|
||||
cache.storeQuietly(input.getURL("organization.logo"));
|
||||
|
|
|
@ -57,7 +57,7 @@ public class FederationPage
|
|||
TagDataManager data = new TagDataManager();
|
||||
|
||||
data.setAttribute("federationRawButton", "href", federation.getTechnicalName() + ".properties");
|
||||
data.setAttribute("federationLogo", "src", federation.getTechnicalName() + "-logo.png");
|
||||
data.setAttribute("federationLogo", "src", federation.getLogoFileName());
|
||||
data.setEscapedContent("federationName", federation.getName());
|
||||
data.setEscapedContent("federationDescription", federation.getDescription());
|
||||
|
||||
|
@ -106,7 +106,7 @@ public class FederationPage
|
|||
for (Organization organization : federation.getOrganizations().sortByReverseServiceCount())
|
||||
{
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineNameLink", "href", organization.getTechnicalName() + ".xhtml");
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "src", organization.getTechnicalName() + "-logo.png");
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "src", organization.getLogoFileName());
|
||||
data.setAttribute("organizationListLine", index, "organizationListLineLogo", "alt", organization.getName());
|
||||
data.setEscapedContent("organizationListLine", index, "organizationListLineNameValue", organization.getName());
|
||||
|
||||
|
|
|
@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import fr.devinsy.catgenerator.core.BirdGenerator;
|
||||
import fr.devinsy.catgenerator.core.CatGenerator;
|
||||
import fr.devinsy.statoolinfos.checker.PropertyChecker;
|
||||
import fr.devinsy.statoolinfos.checker.PropertyChecks;
|
||||
import fr.devinsy.statoolinfos.core.Categories;
|
||||
|
@ -315,7 +317,7 @@ public class Htmlizer
|
|||
|
||||
// Manage the logo file.
|
||||
logger.info("Htmlize federation logo.");
|
||||
cache.restoreLogoTo(federation.getLogoURL(), new File(htmlizeDirectory, federation.getTechnicalName() + "-logo.png"), federation.getTechnicalName(), DefaultLogoGenerator.CAT);
|
||||
htmlizeFederationLogo(federation, cache, htmlizeDirectory);
|
||||
logger.info("Htmlize federation properties files.");
|
||||
FileUtils.copyFile(federation.getInputFile(), new File(htmlizeDirectory, federation.getTechnicalName() + ".properties"));
|
||||
|
||||
|
@ -333,7 +335,7 @@ public class Htmlizer
|
|||
{
|
||||
// Manage the logo file.
|
||||
logger.info("Htmlize organization logo: {}.", organization.getName());
|
||||
cache.restoreLogoTo(organization.getLogoURL(), new File(htmlizeDirectory, organization.getTechnicalName() + "-logo.png"), organization.getTechnicalName(), DefaultLogoGenerator.CAT);
|
||||
htmlizeOrganizationLogo(organization, cache, htmlizeDirectory);
|
||||
logger.info("Htmlize organization properties file: {}.", organization.getName());
|
||||
FileUtils.copyFile(organization.getInputFile(), new File(htmlizeDirectory, organization.getTechnicalName() + ".properties"));
|
||||
|
||||
|
@ -347,8 +349,7 @@ public class Htmlizer
|
|||
{
|
||||
// Manage the logo file.
|
||||
logger.info("Htmlize service logo: {}.", service.getName());
|
||||
cache.restoreLogoTo(service.getLogoURL(), new File(htmlizeDirectory, organization.getTechnicalName() + "-" + service.getTechnicalName() + "-logo.png"), service.getTechnicalName(),
|
||||
DefaultLogoGenerator.BIRD);
|
||||
htmlizeServiceLogo(service, cache, htmlizeDirectory);
|
||||
logger.info("Htmlize service properties file: {}.", service.getName());
|
||||
FileUtils.copyFile(service.getInputFile(),
|
||||
new File(htmlizeDirectory, organization.getTechnicalName() + "-" + service.getTechnicalName() + ".properties"));
|
||||
|
@ -470,6 +471,36 @@ public class Htmlizer
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
|
@ -512,4 +543,58 @@ public class Htmlizer
|
|||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ public class OrganizationPage
|
|||
|
||||
data.setAttribute("organizationRawButton", "href", organization.getTechnicalName() + ".properties");
|
||||
|
||||
data.setAttribute("organizationLogo", "src", organization.getTechnicalName() + "-logo.png");
|
||||
data.setAttribute("organizationLogo", "src", organization.getLogoFileName());
|
||||
data.setEscapedContent("organizationName", organization.get("organization.name"));
|
||||
|
||||
data.setEscapedContent("organizationURL", organization.getWebsite());
|
||||
|
|
|
@ -60,12 +60,12 @@ public class ServiceListView
|
|||
int index = 0;
|
||||
for (Service service : services.sortByName())
|
||||
{
|
||||
data.setAttribute("serviceListLine", index, "serviceListLineLogo", "src", service.getOrganization().getTechnicalName() + "-" + service.getTechnicalName() + "-logo.png");
|
||||
data.setAttribute("serviceListLine", index, "serviceListLineLogo", "src", service.getLogoFileName());
|
||||
data.setEscapedContent("serviceListLine", index, "serviceListLineNameValue", service.getName());
|
||||
data.setAttribute("serviceListLine", index, "serviceListLineNameLink", "href", service.getOrganization().getTechnicalName() + "-" + service.getTechnicalName() + ".xhtml");
|
||||
|
||||
data.setAttribute("serviceListLine", index, "serviceListLineOrganizationLink", "href", service.getOrganization().getTechnicalName() + ".xhtml");
|
||||
data.setAttribute("serviceListLine", index, "serviceListLineOrganizationLogo", "src", service.getOrganization().getTechnicalName() + "-logo.png");
|
||||
data.setAttribute("serviceListLine", index, "serviceListLineOrganizationLogo", "src", service.getOrganization().getLogoFileName());
|
||||
data.setEscapedContent("serviceListLine", index, "serviceListLineOrganizationValue", service.getOrganization().getName());
|
||||
|
||||
data.setEscapedContent("serviceListLine", index, "serviceListLineUrlLink", service.getWebsite());
|
||||
|
|
Loading…
Reference in a new issue