statoolinfosweb/src/fr/devinsy/statoolinfos/core/StatoolInfosUtils.java

402 lines
9.5 KiB
Java
Raw Normal View History

2020-09-13 01:28:27 +02:00
/*
* 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.core;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Iterator;
import java.util.Locale;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
2020-09-13 01:28:27 +02:00
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.strings.StringList;
import fr.devinsy.strings.StringsUtils;
/**
* The Class StatoolInfosUtils.
*/
public class StatoolInfosUtils
{
private static Logger logger = LoggerFactory.getLogger(StatoolInfosUtils.class);
public static final DateTimeFormatter PATTERN_SHORTDATE = DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.FRANCE);
public static final DateTimeFormatter PATTERN_LONGDATE = DateTimeFormatter.ofPattern("dd/MM/yyyy HH':'mm", Locale.FRANCE);
/**
* Builds the technical name.
*
* @return the string
*/
public static String buildTechnicalName(final String source)
{
String result;
if (source == null)
{
result = null;
}
else
{
result = source.toLowerCase().replaceAll("[^a-z_0-9]", "");
}
//
return result;
}
/**
* Copy ressource.
*
* @param source
* the source
* @param target
* the target directory
* @throws IOException
*/
public static void copyRessource(final String source, final File target) throws IOException
{
URL url = StatoolInfosUtils.class.getResource(source);
File finalTarget;
if (target.isDirectory())
{
String fileName = FilenameUtils.getName(source);
finalTarget = new File(target, fileName);
}
else
{
finalTarget = target;
}
FileUtils.copyURLToFile(url, finalTarget);
}
2020-09-13 01:28:27 +02:00
/**
* Generate cat logo.
*
* @param seed
* the seed
* @param target
* the target
* @throws IOException
* Signals that an I/O exception has occurred.
2020-09-13 01:28:27 +02:00
*/
public static void generateCatLogo(final String seed, final File target) throws IOException
{
URL source = new URL("https://www.peppercarrot.com/extras/html/2016_cat-generator/avatar.php?seed=" + seed);
2020-09-17 03:59:11 +02:00
FileUtils.copyURLToFile(source, target, 5000, 5000);
2020-09-13 01:28:27 +02:00
}
/**
* Gets the current time in long format.
*
* @return the long
*/
public static long now()
{
return new Date().getTime();
}
/**
* To human long.
*
* @param value
* the value
* @return the string
*/
public static String toHumanLong(final LocalDateTime value)
{
String result;
result = toHumanLong(value, null);
//
return result;
}
/**
* To human long.
*
* @param value
* the value
* @param defaultValue
* the default value
* @return the string
*/
public static String toHumanLong(final LocalDateTime value, final String defaultValue)
{
String result;
if (value == null)
{
result = null;
}
else
{
result = value.format(PATTERN_LONGDATE);
}
//
return result;
}
/**
* To human short.
*
* @param value
* the value
* @return the string
*/
public static String toHumanShort(final LocalDateTime value)
{
String result;
result = toHumanShort(value, null);
//
return result;
}
/**
* To human short.
*
* @param value
* the value
* @param defaultValue
* the default value
* @return the string
*/
public static String toHumanShort(final LocalDateTime value, final String defaultValue)
{
String result;
if (value == null)
{
result = null;
}
else
{
result = value.format(PATTERN_SHORTDATE);
}
//
return result;
}
public static Integer toInteger(final String value)
{
Integer result;
if ((value == null) || (!NumberUtils.isDigits(value)))
{
result = null;
}
else
{
result = Integer.parseInt(value);
}
//
return result;
}
/**
* To Json numbers.
*
* @param source
* the source
* @return the string
*/
public static String toJSonNumbers(final StringList source)
{
String result;
result = StringsUtils.toString(source, "[", ",", "]");
//
return result;
}
/**
* To J son numbers.
*
* @param labels
* the labels
* @param values
* the source
* @return the string
*/
public static String toJSonNumbers(final StringList labels, final StringList values)
{
String result;
Iterator<String> labelIterator = labels.iterator();
Iterator<String> valueIterator = values.iterator();
StringList buffer = new StringList();
while (labelIterator.hasNext())
{
String label = labelIterator.next();
String value = valueIterator.next();
// buffer.append("{t: new Date('" + label + "'), y: " + value +
// "}");
buffer.append("{t: '" + label + "', y: " + value + "}");
}
result = StringsUtils.toString(buffer, "[", ",", "]");
//
return result;
}
/**
* To Json strings.
*
* @param source
* the source
* @return the string
*/
public static String toJSonStrings(final StringList source)
{
String result;
StringList target = new StringList();
target.append("[");
for (String string : source)
{
target.append("'");
target.append(string);
target.append("'");
target.append(",");
}
target.removeLast();
target.append("]");
result = target.toString();
//
return result;
}
/**
* To technical name.
*
* @param source
* the source
* @return the string
*/
public static String toTechnicalName(final String source)
{
String result;
if (source == null)
{
result = null;
}
else
{
result = StringUtils.stripAccents(source).replaceAll("[^A-Za-z0-9]+", "");
}
//
return result;
}
/**
* To year week.
*
* @param source
* the source
* @return the string
*/
public static String toYearWeek(final LocalDate source)
{
String result;
if (source == null)
{
result = null;
}
else
{
result = source.format(DateTimeFormatter.ofPattern("YYYYww", Locale.FRANCE));
}
//
return result;
}
/**
* Unactivate SSL check.
*/
public static void unactivateSSLCheck()
{
// Create a trust manager that does not validate certificate chains.
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager()
{
@Override
public void checkClientTrusted(final java.security.cert.X509Certificate[] certs, final String authType)
{
}
@Override
public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, final String authType)
{
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers()
{
return null;
}
}
};
// Install the all-trusting trust manager.
try
{
// SSLContext context = SSLContext.getInstance("SSL");
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
}
catch (Exception exception)
{
}
}
}