Java tutorial
/** * Copyright 2014 Comcast Cable Communications Management, LLC * * This file is part of CATS. * * CATS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * CATS 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with CATS. If not, see <http://www.gnu.org/licenses/>. */ package com.comcast.cats.monitor.util; import java.io.File; import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.regex.Pattern; import org.apache.commons.io.FileUtils; import org.apache.commons.io.LineIterator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Collection of utility file search methods. * * @author SSugun00c * */ public final class FileSearchUtil { private static final Logger LOGGER = LoggerFactory.getLogger(FileSearchUtil.class); private static final String UTF_8_ENCODING = "UTF-8"; private static final String OR = "|"; private FileSearchUtil() { } public static Integer countHitsByRegex(String filePath, String expression) throws IOException { int hits = 0; if ((null == expression) || (expression.isEmpty()) || (null == filePath) || (filePath.isEmpty())) { throw new IllegalArgumentException("Expression/FilePath is NULL of EMPTY !!!"); } else { File file = new File(filePath); Pattern pattern = Pattern.compile(expression); if (file.exists()) { LineIterator lineIterator = FileUtils.lineIterator(file, UTF_8_ENCODING); LOGGER.info("Expression under search = " + expression); try { while (lineIterator.hasNext()) { String line = lineIterator.nextLine(); if (pattern.matcher(line).find()) { hits++; } } } finally { LineIterator.closeQuietly(lineIterator); } } } return hits; } public static Integer countHitsByRegexList(String filePath, List<String> expressions) throws IOException { if ((null == expressions) || (expressions.isEmpty()) || (null == filePath) || (filePath.isEmpty())) { throw new IllegalArgumentException("Expressions/FilePath is NULL of EMPTY !!!"); } LOGGER.info("Expressions to be searched = " + expressions); String combainedExpression = null; for (String expression : expressions) { if (null == combainedExpression) { combainedExpression = expression; } else { combainedExpression += OR + expression; } } return countHitsByRegex(filePath, combainedExpression); } public static List<String> getLinesByRegex(String filePath, String expression) throws IOException { if ((null == expression) || (expression.isEmpty()) || (null == filePath) || (filePath.isEmpty())) { throw new IllegalArgumentException("Expressions/FilePath is NULL of EMPTY !!!"); } File file = new File(filePath); Pattern pattern = Pattern.compile(expression); List<String> lines = new LinkedList<String>(); if (file.exists()) { LineIterator lineIterator = FileUtils.lineIterator(file, UTF_8_ENCODING); try { while (lineIterator.hasNext()) { String line = lineIterator.nextLine(); if (pattern.matcher(line).find()) { lines.add(line); } } } finally { LineIterator.closeQuietly(lineIterator); } } return lines; } public static List<String> getLinesByRegexList(String filePath, List<String> expressions) throws IOException { if ((null == expressions) || (expressions.isEmpty()) || (null == filePath) || (filePath.isEmpty())) { throw new IllegalArgumentException("Expressions/FilePath is NULL of EMPTY !!!"); } String combainedExpression = null; for (String expression : expressions) { combainedExpression += OR + expression; } return getLinesByRegex(filePath, combainedExpression); } }