Optimize use of YangInstanceIdentifier.getPathArguments()
[controller.git] / opendaylight / config / logback-config-loader / src / main / java / org / opendaylight / controller / logback / config / loader / impl / LogbackConfigUtil.java
1 /**
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.logback.config.loader.impl;
9
10 import java.io.File;
11 import java.io.FileFilter;
12 import java.util.ArrayList;
13 import java.util.Collections;
14 import java.util.List;
15 import java.util.regex.Pattern;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18
19 /**
20  * logback config utils
21  */
22 public final class LogbackConfigUtil {
23
24     /** logback config file pattern (*.xml) */
25     protected static final String LOGBACK_CONFIG_FILE_REGEX_SEED = ".+\\.xml";
26     private static final Logger LOG = LoggerFactory
27             .getLogger(LogbackConfigUtil.class);
28
29     /**
30      *  forbidden ctor
31      */
32     private LogbackConfigUtil() {
33         throw new UnsupportedOperationException();
34     }
35
36     /**
37      * @param logConfigRoot folder containing configuration files
38      * @return sorted list of found files
39      */
40     public static List<File> harvestSortedConfigFiles(File logConfigRoot) {
41         final Pattern xmlFilePattern = Pattern.compile(LOGBACK_CONFIG_FILE_REGEX_SEED);
42         File[] configs = logConfigRoot.listFiles(new FileFilter() {
43             @Override
44             public boolean accept(File pathname) {
45                 return pathname.isFile()
46                         && xmlFilePattern.matcher(pathname.getName()).find();
47             }
48         });
49
50         List<File> sortedConfigFiles = new ArrayList<File>(configs.length);
51         for (File cfgItem : configs) {
52             LOG.trace("config: {}", cfgItem.toURI());
53             sortedConfigFiles.add(cfgItem);
54         }
55         Collections.sort(sortedConfigFiles);
56
57         return sortedConfigFiles;
58     }
59
60 }