ConfigIO.java :  » Wiki-Engine » ocwiki » org » ocwiki » conf » Java Open Source

Java Open Source » Wiki Engine » ocwiki 
ocwiki » org » ocwiki » conf » ConfigIO.java
package org.ocwiki.conf;

import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.IOException;

import org.ocwiki.util.XMLUtils;

public class ConfigIO {

  public static final String DEFAULT_FILE_NAME = "default.xml";
  
  public static void load(File file, Config config) {
    try {
      if (file.isDirectory()) {
        loadDirectory(file, config);
      } else {
        loadFile(file, config);
      }
      config.doneLoading();
    } catch (Exception e) {
      throw new ConfigIOException(file, e);
    }
  }

  public static void load(String path, Config config) {
    load(new File(path), config);
  }
  
  private static void loadFile(File file, Config config) throws IOException {
    FileInputStream input = null;
    try {
      input = new FileInputStream(file);
      XMLUtils.getXStream().fromXML(input, config);
    } finally {
      if (input != null) {
        input.close();
      }
    }
  }
  
  private static void loadDirectory(File dir, Config config) throws IOException {
    File defaultFile = new File(dir.getAbsolutePath() + "/" + DEFAULT_FILE_NAME);
    if (defaultFile.exists()) {
      loadFile(defaultFile, config);
    }
    File[] confFiles = dir.listFiles(CONFIG_FILE_FILTER);
    for (File file : confFiles) {
      if (!file.equals(defaultFile)) {
        loadFile(file, config);
      }
    }
  }

  private static FilenameFilter CONFIG_FILE_FILTER = new FilenameFilter() {

    @Override
    public boolean accept(File dir, String name) {
      return name.endsWith(".xml");
    }
  };

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.