/* * Copyright (C) 2020 Christian Pierre MOMON * * 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 . */ package fr.devinsy.statoolinfos.core; import java.io.File; import java.io.IOException; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * The Class CrawlCache. */ public class CrawlCache { private static Logger logger = LoggerFactory.getLogger(CrawlCache.class); private File directory; /** * Instantiates a new crawl cache. * * @param directory * the directory * @throws StatoolInfosException * the statool infos exception */ public CrawlCache(final File directory) throws StatoolInfosException { if (directory == null) { throw new IllegalArgumentException("Null parameter."); } else if (StringUtils.isBlank(directory.getName())) { throw new IllegalArgumentException("Blank directory."); } else if (!directory.exists()) { throw new IllegalArgumentException("Directory does not exist."); } else { this.directory = directory; } } /** * Builds the file. * * @param url * the url * @return the file */ private File buildFile(final String url) { File result; // result = new File(this.directory, DigestUtils.sha1Hex(url)); String normalizeUrl = StringUtils.removeAll(url, "^https*://").replace('/', '+'); result = new File(this.directory, normalizeUrl); // return result; } /** * Clear file in cache. Only files ending with ".property" are deleted. */ public void clear() { for (File file : this.directory.listFiles()) { if ((file.isFile()) && (file.getName().endsWith(".properties"))) { logger.info("Deleting " + file.getName()); file.delete(); } } } /** * Load. * * @param url * the url * @return the path property list * @throws IOException * Signals that an I/O exception has occurred. */ public PathPropertyList load(final String url) throws IOException { PathPropertyList result; File file = buildFile(url); result = PathPropertyUtils.load(file); // return result; } /** * Store. * * @param url * the url * @param properties * the properties * @return the file * @throws IOException * Signals that an I/O exception has occurred. */ public File store(final String url, final PathPropertyList properties) throws IOException { File result; result = buildFile(url); PathPropertyUtils.save(result, properties); // return result; } }