X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-persister-directory-xml-adapter%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fpersist%2Fstorage%2Fdirectory%2Fxml%2FXmlDirectoryPersister.java;h=ebba716e5a3d6f590025248eccae48b5b5247ac9;hp=0ca47edf0e5540cef5db8c2bcbb8f0d8f9dde611;hb=0e3f7da0306b3b723f87c79b82dfd2563a634e19;hpb=58fa0dd65634800eccaa1bbe85769835a0e6e071 diff --git a/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java b/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java index 0ca47edf0e..ebba716e5a 100644 --- a/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java +++ b/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java @@ -7,6 +7,8 @@ */ package org.opendaylight.controller.config.persist.storage.directory.xml; +import com.google.common.base.Optional; +import com.google.common.io.Files; import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; import org.opendaylight.controller.config.persist.api.Persister; import org.opendaylight.controller.config.persist.storage.file.xml.model.ConfigSnapshot; @@ -17,11 +19,13 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import java.io.File; +import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Set; import java.util.SortedSet; import static com.google.common.base.Preconditions.checkArgument; @@ -30,10 +34,26 @@ public class XmlDirectoryPersister implements Persister { private static final Logger logger = LoggerFactory.getLogger(XmlDirectoryPersister.class); private final File storage; + private final Optional extensionsFilter; + /** + * Creates XmlDirectoryPersister that picks up all files in specified folder + */ public XmlDirectoryPersister(File storage) { + this(storage, Optional.absent()); + } + + /** + * Creates XmlDirectoryPersister that picks up files only with specified file extension + */ + public XmlDirectoryPersister(File storage, Set fileExtensions) { + this(storage, Optional.of(getFilter(fileExtensions))); + } + + private XmlDirectoryPersister(File storage, Optional extensionsFilter) { checkArgument(storage.exists() && storage.isDirectory(), "Storage directory does not exist: " + storage); this.storage = storage; + this.extensionsFilter = extensionsFilter; } @Override @@ -43,7 +63,7 @@ public class XmlDirectoryPersister implements Persister { @Override public List loadLastConfigs() throws IOException { - File[] filesArray = storage.listFiles(); + File[] filesArray = extensionsFilter.isPresent() ? storage.listFiles(extensionsFilter.get()) : storage.listFiles(); if (filesArray == null || filesArray.length == 0) { return Collections.emptyList(); } @@ -96,6 +116,17 @@ public class XmlDirectoryPersister implements Persister { }; } + private static FilenameFilter getFilter(final SetfileExtensions) { + checkArgument(fileExtensions.isEmpty() == false, "No file extension provided", fileExtensions); + + return new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + String ext = Files.getFileExtension(name); + return fileExtensions.contains(ext); + } + }; + } @Override public void close() {