/**
* Copyright (c) Codice Foundation
* <p>
* This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser
* General Public License as published by the Free Software Foundation, either version 3 of the
* License, or any later version.
* <p>
* This program 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
* Lesser General Public License for more details. A copy of the GNU Lesser General Public License
* is distributed along with this program and can be found at
* <http://www.gnu.org/licenses/lgpl.html>.
**/
package org.codice.ddf.branding.impl;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.io.IOUtils;
import org.codice.ddf.branding.BrandingPlugin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DdfBrandingPlugin implements BrandingPlugin {
private static final Logger LOGGER = LoggerFactory.getLogger(DdfBrandingPlugin.class);
private String brandingPropertiesFilePath;
private String productName;
private String productURL;
private String productImage;
private String vendorName;
private String vendorURL;
private String vendorImage;
private String favIcon;
public DdfBrandingPlugin(String brandingPropertiesFilePath) {
this.brandingPropertiesFilePath = brandingPropertiesFilePath;
}
public void init() {
try {
PropertiesConfiguration propertiesConfiguration =
new PropertiesConfiguration(getClass().getResource(brandingPropertiesFilePath));
productName = propertiesConfiguration.getString("branding.product.name", "DDF");
productURL = propertiesConfiguration.getString("branding.product.url",
"http://codice.org/ddf");
productImage = propertiesConfiguration.getString("branding.product.image",
"/ddf/ddf.png");
vendorName = propertiesConfiguration.getString("branding.vendor.name", "Codice");
vendorURL = propertiesConfiguration.getString("branding.vendor.url",
"http://codice.org");
vendorImage = propertiesConfiguration.getString("branding.vendor.image",
"/ddf/logo.png");
favIcon = propertiesConfiguration.getString("branding.favicon", "/ddf/favicon.png");
} catch (ConfigurationException e) {
LOGGER.info("Unable to read properties file {}",
brandingPropertiesFilePath,
e.getMessage());
productName = "DDF";
productURL = "http://codice.org/ddf";
productImage = "/ddf/ddf.png";
vendorName = "Codice";
vendorURL = "http://codice.org";
vendorImage = "/ddf/logo.png";
favIcon = "/ddf/favicon.png";
}
}
@Override
public String getProductName() {
return productName;
}
@Override
public String getProductURL() {
return productURL;
}
@Override
public String getProductImage() {
return productImage;
}
@Override
public String getBase64ProductImage() throws IOException {
try (InputStream inputStream = DdfBrandingPlugin.class.getResourceAsStream(getProductImage())) {
byte[] productImageAsBytes = IOUtils.toByteArray(inputStream);
if (productImageAsBytes.length > 0) {
return Base64.getEncoder()
.encodeToString(productImageAsBytes);
}
}
return "";
}
@Override
public String getVendorName() {
return vendorName;
}
@Override
public String getVendorURL() {
return vendorURL;
}
@Override
public String getVendorImage() {
return vendorImage;
}
@Override
public String getBase64VendorImage() throws IOException {
try (InputStream inputStream = DdfBrandingPlugin.class.getResourceAsStream(getVendorImage())) {
byte[] vendorImageAsBytes = IOUtils.toByteArray(inputStream);
if (vendorImageAsBytes.length > 0) {
return Base64.getEncoder()
.encodeToString(vendorImageAsBytes);
}
}
return "";
}
@Override
public String getFavIcon() {
return favIcon;
}
@Override
public String getBase64FavIcon() throws IOException {
try (InputStream inputStream = DdfBrandingPlugin.class.getResourceAsStream(getFavIcon())) {
byte[] favIconAsBytes = IOUtils.toByteArray(inputStream);
if (favIconAsBytes.length > 0) {
return Base64.getEncoder()
.encodeToString(favIconAsBytes);
}
}
return "";
}
}