All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.dreampie.common.plugin.sqlinxml.SqlKit Maven / Gradle / Ivy

There is a newer version: 1.2.2
Show newest version
/**
 * Copyright (c) 2011-2013, kidzhou 周磊 ([email protected])
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package cn.dreampie.common.plugin.sqlinxml;

import com.jfinal.ext.kit.JaxbKit;
import com.jfinal.log.Logger;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SqlKit {

  protected static final Logger LOG = Logger.getLogger(SqlKit.class);

  private static Map sqlMap;

  public static String sql(String groupNameAndsqlId) {
    if (sqlMap == null) {
      throw new NullPointerException("SqlInXmlPlugin not start");
    }
    return sqlMap.get(groupNameAndsqlId);
  }

  static void clearSqlMap() {
    sqlMap.clear();
  }

  static void init() {
    sqlMap = new HashMap();
    //加载sql文件
    loadFileList(SqlKit.class.getClassLoader().getResource("").getFile());
    LOG.debug("sqlMap" + sqlMap);
  }

  public static void loadFileList(String strPath) {
    List files = new ArrayList();
    File dir = new File(strPath);
    File[] dirs = dir.listFiles(new FileFilter() {
      @Override
      public boolean accept(File pathname) {
        if (pathname.getName().endsWith("sql") || pathname.getName().endsWith("sql.xml")) {
          return true;
        }
        return false;
      }
    });

    if (dirs == null)
      return;
    for (int i = 0; i < dirs.length; i++) {
      if (dirs[i].isDirectory()) {
        loadFileList(dirs[i].getAbsolutePath());
      } else {
        if (dirs[i].getName().endsWith("sql.xml")) {
          files.add(dirs[i]);
        }
      }
    }
    //加载sql文件
    loadFiles(files);
  }

  /**
   * 加载xml文件
   *
   * @param files
   */
  private static void loadFiles(List files) {
    for (File xmlfile : files) {
      SqlRoot root = JaxbKit.unmarshal(xmlfile, SqlRoot.class);
      for (SqlGroup sqlGroup : root.sqlGroups) {

        String name = sqlGroup.name;
        if (name == null || name.trim().equals("")) {
          name = xmlfile.getName();
        }
        for (SqlItem sqlItem : sqlGroup.sqlItems) {
          sqlMap.put(name + "." + sqlItem.id, sqlItem.value);
        }
      }
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy