Package org.beangle.spring.config

Source Code of org.beangle.spring.config.ConfigResource

/* Copyright c 2005-2012.
* Licensed under GNU  LESSER General Public License, Version 3.
* http://www.gnu.org/licenses
*/
package org.beangle.spring.config;

import java.io.IOException;
import java.net.URL;
import java.util.List;

import org.beangle.commons.collection.CollectUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;

public class ConfigResource {

  private static Logger logger = LoggerFactory.getLogger(ConfigResource.class);

  private URL global;

  private List<URL> locals = CollectUtils.newArrayList();

  private URL user;

  public List<URL> getAllPaths() {
    List<URL> all = CollectUtils.newArrayList();
    if (null != global) {
      all.add(global);
    }
    if (null != locals) {
      all.addAll(locals);
    }
    if (null != user) {
      all.add(user);
    }
    return all;
  }

  public boolean isEmpty() {
    return null == global && null == user && (null == locals || locals.isEmpty());
  }

  public URL getGlobal() {
    return global;
  }

  public void setGlobal(URL first) {
    this.global = first;
  }

  public List<URL> getLocals() {
    return locals;
  }

  public void setLocals(List<URL> paths) {
    this.locals = paths;
  }

  public URL getUser() {
    return user;
  }

  public void setUser(URL last) {
    this.user = last;
  }

  public Resource[] getGlobals() {
    if (null == global) {
      return new Resource[0];
    } else {
      return new Resource[] { new UrlResource(global) };
    }
  }

  public Resource[] getUsers() {
    if (null == user) {
      return new Resource[0];
    } else {
      return new Resource[] { new UrlResource(user) };
    }
  }

  /**
   * 提供0到多个的global配置方法
   *
   * @param resources
   */
  public void setGlobals(Resource[] resources) {
    if (null == resources || resources.length == 0) {
      global = null;
      return;
    }
    if (resources.length == 1) {
      try {
        global = resources[0].getURL();
      } catch (IOException e) {
        e.printStackTrace();
      }
    } else {
      logger.warn("there is {} resource,need only one", resources.length);
      int i = 0;
      for (Resource resource : resources) {
        logger.warn("resource {} is {}", i++, resource);
      }
    }
  }

  public void setUsers(Resource[] resources) {
    if (null == resources || resources.length == 0) {
      user = null;
      return;
    }
    if (resources.length == 1) {
      try {
        user = resources[0].getURL();
      } catch (IOException e) {
        e.printStackTrace();
      }
    } else {
      logger.warn("there is {} resource,need only one", resources.length);
      int i = 0;
      for (Resource resource : resources) {
        logger.warn("resource {} is {}", i++, resource);
      }
    }
  }

  public Resource[] getLocations() {
    Resource[] resources = new Resource[locals.size()];
    int i = 0;
    for (URL location : locals) {
      resources[i++] = new UrlResource(location);
    }
    return resources;
  }

  public void setLocations(Resource[] resources) {
    if (null != resources) {
      for (Resource r : resources) {
        try {
          locals.add(r.getURL());
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    } else {
      locals.clear();
    }
  }
}
TOP

Related Classes of org.beangle.spring.config.ConfigResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.