Package org.svnadmin.dao

Source Code of org.svnadmin.dao.I18nDao

/**
*
*/
package org.svnadmin.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;
import org.svnadmin.entity.I18n;

/**
* 语言DAO
*
* @author <a href="mailto:yuanhuiwu@gmail.com">Huiwu Yuan</a>
* @since 3.0.2
*/
@Repository(I18nDao.BEAN_NAME)
public class I18nDao extends Dao {
  /**
   * Bean名称
   */
  public static final String BEAN_NAME="i18nDao";

  /**
   *
   * @param lang 语言
   * @param id 键值
   * @return 多语言
   */
  public I18n get(String lang,String id) {
    String sql = "select lang,id,lbl from i18n where lang=? and id=?";
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
      conn = this.getConnection();
      pstmt = conn.prepareStatement(sql);
      int index = 1;
      pstmt.setString(index++, lang);
      pstmt.setString(index++, id);

      rs = pstmt.executeQuery();
      if (rs.next()) {
        return readI18n(rs);
      }
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      this.close(rs, pstmt, conn);
    }
    return null;
  }
 
  /**
   *
   * @return 多语言列表
   */
  public List<I18n> getList() {
    String sql = "select lang,id,lbl from i18n order by lang,id";
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    List<I18n> results = new ArrayList<I18n>();
    try {
      conn = this.getConnection();
      pstmt = conn.prepareStatement(sql);

      rs = pstmt.executeQuery();
      while (rs.next()) {
        results.add(readI18n(rs));
      }
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      this.close(rs, pstmt, conn);
    }
    return results;
  }
  /**
   * @param id 键值
   * @return 相同键值的语言列表
   */
  public Map<String,I18n> getI18ns(String id) {
    String sql = "select lang,id,lbl from i18n where id=?";
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    Map<String,I18n> results = new HashMap<String,I18n>();
    try {
      conn = this.getConnection();
      pstmt = conn.prepareStatement(sql);
      int index = 1;
      pstmt.setString(index++, id);

      rs = pstmt.executeQuery();
      while (rs.next()) {
        I18n i18n = readI18n(rs);
        results.put(i18n.getLang(),i18n);
      }
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      this.close(rs, pstmt, conn);
    }
    return results;
  }
  /**
   * 从ResultSet中读取i18n对象
   *
   * @param rs
   *            ResultSet
   * @return i18n对象
   * @throws SQLException
   *             JDBC异常
   */
  I18n readI18n(ResultSet rs) throws SQLException {
    I18n result = new I18n();
    result.setLang(rs.getString("lang"));
    result.setId(rs.getString("id"));
    result.setLbl(rs.getString("lbl"));
    return result;
  }

  /**
   * 更新
   *
   * @param i18n 多语言
   *
   * @return 更新数量
   */
  public int update(I18n i18n) {
    String sql = "update i18n set lbl=? where lang=? and id=?";
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
      conn = this.getConnection();
      pstmt = conn.prepareStatement(sql);
      int index = 1;
      pstmt.setString(index++, i18n.getLbl());
      pstmt.setString(index++, i18n.getLang());
      pstmt.setString(index++, i18n.getId());

      return pstmt.executeUpdate();
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      this.close(null, pstmt, conn);
    }
  }

  /**
   * 增加
   *
   * @param i18n 多语言
   *
   * @return 更新数量
   */
  public int insert(I18n i18n) {
    String sql = "insert into i18n (lang,id,lbl) values (?,?,?)";
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
      conn = this.getConnection();
      pstmt = conn.prepareStatement(sql);
      int index = 1;
      pstmt.setString(index++, i18n.getLang());
      pstmt.setString(index++, i18n.getId());
      pstmt.setString(index++, i18n.getLbl());

      return pstmt.executeUpdate();
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      this.close(null, pstmt, conn);
    }
  }
  /**
   * 是否存在这种语言
   * @param lang 语言
   * @return true表示数据库存在这个语言,否则返回false
   */
  public boolean existsLang(String lang) {
    String sql = "select count(1) from i18n where lang=?";
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
      conn = this.getConnection();
      pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, lang);
      rs = pstmt.executeQuery();
      if (rs.next()) {
        return rs.getInt(1)>0;
      }
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      this.close(rs, pstmt, conn);
    }
    return false;
  }
  /**
   * @return 获取系统现有的语言
   */
  public List<String> getLangs() {
    String sql = "select distinct lang from i18n order by lang";
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    List<String> results = new ArrayList<String>();
    try {
      conn = this.getConnection();
      pstmt = conn.prepareStatement(sql);

      rs = pstmt.executeQuery();
      while (rs.next()) {
        results.add(rs.getString("lang"));
      }
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      this.close(rs, pstmt, conn);
    }
    return results;
  }
  /**
   * @return 键值列表
   */
  public List<I18n> getIds() {
    String sql = "select id,count(id) total from i18n group by id order by id";
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    List<I18n> results = new ArrayList<I18n>();
    try {
      conn = this.getConnection();
      pstmt = conn.prepareStatement(sql);
     
      rs = pstmt.executeQuery();
      while (rs.next()) {
        I18n i18n = new I18n();
        i18n.setId(rs.getString("id"));
        i18n.setTotal(rs.getInt("total"));
        results.add(i18n);
      }
    } catch (SQLException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    } finally {
      this.close(rs, pstmt, conn);
    }
    return results;
  }
}
TOP

Related Classes of org.svnadmin.dao.I18nDao

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.