根据database_params.conf数据库配置信息重写hibernate.cfg.xml文件

根据同事的需求写的。

用这个工具可以解决配置文件只需要配一次数据库信息。

 

 package com.utstar.nms.vmm.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Hashtable;

import com.utstar.ems.omcs.kernel.KernelServer;
import com.utstar.ems.omcs.ufc.jdbc.SQLExecutor;
import com.utstar.ems.omcs.ufc.jdbc.pool.ConnectionPool;
import com.utstar.ems.omcs.ufc.jdbc.pool.OmcsConnectionPoolFactory;
import com.utstar.nms.vmm.services.VMMAPI;
import com.utstar.nms.vmm.services.VMMService;
import com.utstar.ems.omcs.ufc.wacos.WacosConfigurator;


/**
 * Author: Steven Zhu
 * Date:2008-1-18 下午05:27:08
 * NMS, UTStarcom, Shenzhen
 */

public class HibernateConfigFileTool
{

 public static void reWriteHibernateConfigFile(String fromFile, String toFile)
 {
   String database_params =fromFile;
  
   File hibernateConfigFile = new File(toFile);
   File tmpConfigFile = new File("conf/qpf/hibernate/hibernate_tmp.cfg.xml");
  
   BufferedReader br;
   BufferedWriter bw;
   String line="";
  try
  {
   Hashtable dbParamHash =readDatabaseConfigInfo(database_params);
   br = new BufferedReader(new FileReader(hibernateConfigFile));
   bw = new BufferedWriter(new FileWriter(tmpConfigFile));
   line = br.readLine();
   
   while(line !=null)
   {
    line = reWriteDatabaseInfo(line,dbParamHash);
    bw.write(line);
    bw.newLine();
    line=br.readLine();
   }
   
   if(br !=null)  br.close();
      if(bw != null)  bw.close();
      //把替换后的结果覆盖hibernate配置文件
      FileTool.copySingleFile(tmpConfigFile, hibernateConfigFile);
      //删除临时文件
      FileTool.deleteFile(tmpConfigFile.getAbsolutePath());
  }
  catch (Exception e)
  {
           e.printStackTrace();
  }
     
        
 }
 
 public static String replaceMiddleString(String inString,String prefix,String suffix,String replaceStr )
 {
   String result=prefix+replaceStr+suffix;  
  return result;
 }

 public static Hashtable readDatabaseConfigInfo(String stringConfigurationFileName)
 {
  
  try
  {
   Hashtable hashresult = WacosConfigurator.readDatabaseParametersConfigurationFile(stringConfigurationFileName); 
     return hashresult;
  }
  catch (Exception e)
  {
           e.printStackTrace();
          
  }
  return null;
     
 }
   
 public static String reWriteDatabaseInfo(String line,Hashtable hash)
 {
  //System.out.println("before:"+line);
  String result="";
  String prefix="";
  String suffix="</property>";
  String replacement="";
  String connection_username = "<property name=/"connection.username/">";
  String connection_password = "<property name=/"connection.password/">";
  String connection_url = "<property name=/"connection.url/">";
  String connection_drivername="<property name=/"connection.driver_class/">";
  try
  {
   
   if(line.indexOf(connection_username)>=0)
   {//本行用配置文件的用户名来替换
     prefix=connection_username;
     replacement= (String)(hash.get("username"));
    
    result =replaceMiddleString(line,prefix,suffix,replacement);
   }
   else if(line.indexOf(connection_password)>=0)
   {   //本行用配置文件的密码来替换
    prefix=connection_password;
       replacement= (String)(hash.get("password"));
    
    result =replaceMiddleString(line,prefix,suffix,replacement);
   }
   else if(line.indexOf(connection_url)>=0)
   {
     //本行用配置文件的url来替换
    prefix=connection_url;
       replacement= (String)(hash.get("url"));
    
    result =replaceMiddleString(line,prefix,suffix,replacement);
   }else if(line.indexOf(connection_drivername)>=0){
    prefix=connection_drivername;
       replacement= (String)(hash.get("drivername"));
    
    result =replaceMiddleString(line,prefix,suffix,replacement);
   }
   else
   {
    result=line;
   }
  
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
  //System.out.println("after:"+result);
  return result;
 }
 
 
 public static void main(String[] args)
 {
  //reWriteHibernateConfigFile();

 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值