BUG-1051: logback configuration loader proposal
[controller.git] / opendaylight / config / logback-config-loader / src / main / java / org / opendaylight / controller / logback / config / loader / impl / LogbackConfigUtil.java
diff --git a/opendaylight/config/logback-config-loader/src/main/java/org/opendaylight/controller/logback/config/loader/impl/LogbackConfigUtil.java b/opendaylight/config/logback-config-loader/src/main/java/org/opendaylight/controller/logback/config/loader/impl/LogbackConfigUtil.java
new file mode 100644 (file)
index 0000000..ddf14d7
--- /dev/null
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.logback.config.loader.impl;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * logback config utils
+ */
+public final class LogbackConfigUtil {
+
+    /** logback config file pattern (*.xml) */
+    protected static final String LOGBACK_CONFIG_FILE_REGEX_SEED = ".+\\.xml";
+    private static final Logger LOG = LoggerFactory
+            .getLogger(LogbackConfigUtil.class);
+
+    /**
+     *  forbidden ctor
+     */
+    private LogbackConfigUtil() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * @param logConfigRoot folder containing configuration files
+     * @return sorted list of found files
+     */
+    public static List<File> harvestSortedConfigFiles(File logConfigRoot) {
+        final Pattern xmlFilePattern = Pattern.compile(LOGBACK_CONFIG_FILE_REGEX_SEED);
+        File[] configs = logConfigRoot.listFiles(new FileFilter() {
+            @Override
+            public boolean accept(File pathname) {
+                return pathname.isFile()
+                        && xmlFilePattern.matcher(pathname.getName()).find();
+            }
+        });
+
+        List<File> sortedConfigFiles = new ArrayList<File>(configs.length);
+        for (File cfgItem : configs) {
+            LOG.trace("config: {}", cfgItem.toURI());
+            sortedConfigFiles.add(cfgItem);
+        }
+        Collections.sort(sortedConfigFiles);
+
+        return sortedConfigFiles;
+    }
+
+}