Merge "Bug 1073: Implemented Transaction chain on InMemoryDOMDataStore level."
[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
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19
20 /**
21  * logback config utils
22  */
23 public final class LogbackConfigUtil {
24
25     /** logback config file pattern (*.xml) */
26     protected static final String LOGBACK_CONFIG_FILE_REGEX_SEED = ".+\\.xml";
27     private static final Logger LOG = LoggerFactory
28             .getLogger(LogbackConfigUtil.class);
29
30     /**
31      *  forbidden ctor
32      */
33     private LogbackConfigUtil() {
34         throw new UnsupportedOperationException();
35     }
36
37     /**
38      * @param logConfigRoot folder containing configuration files
39      * @return sorted list of found files
40      */
41     public static List<File> harvestSortedConfigFiles(File logConfigRoot) {
42         final Pattern xmlFilePattern = Pattern.compile(LOGBACK_CONFIG_FILE_REGEX_SEED);
43         File[] configs = logConfigRoot.listFiles(new FileFilter() {
44             @Override
45             public boolean accept(File pathname) {
46                 return pathname.isFile()
47                         && xmlFilePattern.matcher(pathname.getName()).find();
48             }
49         });
50
51         List<File> sortedConfigFiles = new ArrayList<File>(configs.length);
52         for (File cfgItem : configs) {
53             LOG.trace("config: {}", cfgItem.toURI());
54             sortedConfigFiles.add(cfgItem);
55         }
56         Collections.sort(sortedConfigFiles);
57
58         return sortedConfigFiles;
59     }
60
61 }