ICE生成的model没有get和set方法


ackage com.yesky.wstsearch.common;

import  java.io.File;
import  java.net.URL;
import  java.util.ArrayList;
import  java.util.List;

public   class  ClassUtil {

    
/**
     * 获取一个包下所有类对象
     *
     * 
@param  packageName
     * 
@return
     
*/
    
public   static  List < Class >  getClasses(String packageName) {
        List
< Class >  res  =   new  ArrayList < Class > ();
        String name 
=   new  String(packageName);
        
if  ( ! name.startsWith( " / " )) {
            name 
=   " / "   +  name;
        }
        name 
=  name.replace( ' . ' ' / ' );

        URL url 
=  Class. class .getResource(name);
        
if  (url  ==   null ) {
            
return  res;
        }
        File directory 
=   new  File(url.getFile());

        
if  (directory.exists()) {

            String[] files 
=  directory.list();
            
for  ( int  i  =   0 ; i  <  files.length; i ++ ) {

                
if  (files[i].endsWith( " .class " )) {

                    String classname 
=  files[i].substring( 0 ,
                        files[i].length() 
-   6 );
                    
try  {
                        String clsName 
=  packageName  +   " . "   +  classname;

                        Class clazz 
=  Class.forName(clsName);

                        res.add(clazz);
                    } 
catch  (Exception e) {

                    }
                }
            }
        }

        
return  res;   
    }  

}

package  com.yesky.wstsearch.common;

import  java.io. * ;

/*
 * Copyright (c) 2005 重庆天极信息发展有限公司. All Rights Reserved.
 
*/

/**
 * 操作文件的一些相关方法,该类不需要实例化,不允许继承。
 
*/
public   final   class  FileUtil {
    
/**
     * 该类不需要实例化
     
*/
    
private  FileUtil() {
    }

    
/**
     * --------------------------------------------------------------------------
     *
     * 
@param  fileFullName 文件名,包括路径
     * 
@return  文件内容
     * 
@throws  IOException 读取例外。
     
*/
    
public   static  String fileRead(String fileFullName)  throws  IOException {
        
// ---------------------------------
        
//  定义返回结果变量
        
// ---------------------------------
        String result  =   null ;
        InputStream in 
=   null ;
        
try  {
            File file 
=   new  File(fileFullName);
            
long  len  =  file.length();
            
if  (len  >   0 ) {
                
// ---------------------------------
                
//  如果文件的字节数大于0,打开流
                
// ---------------------------------
                in  =   new  FileInputStream(file);
                
byte [] bytes  =   new   byte [( int ) len];
                
// ---------------------------------
                
//  读入全部内容到byte数组中
                
// ---------------------------------
                in.read(bytes);
                
// ---------------------------------
                
//  把byte数组中的内容转换成String
                
// ---------------------------------
                result  =   new  String(bytes);
                bytes 
=   null ;
            }
        } 
finally  {
            
if  (in  !=   null ) {
                
// ---------------------------------
                
//  如果流不为空,则最后要关闭流。
                
// ---------------------------------
                 try  {
                    in.close();
                    in 
=   null ;
                } 
catch  (IOException e) {
                    
// ---------------------------------
                    
//  该例外不需要处理。
                    
// ---------------------------------
                }
            }
        }
        
return  result;
    }

    
/**
     * 将String写入到文件,该方法是以文本形式写得到文件中<br>
     * --------------------------------------------------------------------------
     *
     * 
@param  fileFullName 文件全名
     * 
@param  fileContent  内容
     * 
@param  append       是否追加
     * 
@throws  IOException 例外
     
*/
    
public   static   void  fileWrite(String fileFullName, String fileContent,  boolean  append)  throws  IOException {
        fileWrite(
new  File(fileFullName), fileContent, append);
    }

    
/**
     * 将String写入到文件,该方法是以文本形式写得到文件中<br>
     * --------------------------------------------------------------------------
     *
     * 
@param  fileFullName 文件全名
     * 
@param  fileContent  内容
     * 
@param  append       是否追加
     * 
@throws  IOException 例外
     
*/
    
public   static   void  fileWrite(File fileFullName, String fileContent,  boolean  append)  throws  IOException {
        FileWriter writer 
=   null ;
        
try  {
            
// ---------------------------------
            
//  获得一个文件写入的句柄
            
// ---------------------------------
            writer  =   new  FileWriter(fileFullName, append);
            
// ---------------------------------
            
//  写入内容
            
// ---------------------------------
            writer.write(fileContent);
            
// ---------------------------------
            
//  将内容写到碰盘上
            
// ---------------------------------
            writer.flush();
        } 
finally  {
            
if  (writer  !=   null ) {
                
// ---------------------------------
                
//  如果句柄不为空。则最后要关闭句柄
                
// ---------------------------------
                 try  {
                    writer.close();
                    writer 
=   null ;
                } 
catch  (IOException e) {
                }
            }
        }
    }

    
/**
     * 将byte数组写入到文件,本方法是以二进制的形式写到碰盘上<br>
     * --------------------------------------------------------------------------
     *
     * 
@param  fileFullName 文件全名
     * 
@param  fileContent  内容
     * 
@param  append       是否追加
     * 
@throws  IOException 例外
     
*/
    
public   static   void  fileWrite(String fileFullName,  byte [] fileContent,  boolean  append)  throws  IOException {
        fileWrite(
new  File(fileFullName), fileContent, append);
    }

    
/**
     * 将byte数组写入到文件,本方法是以二进制的形式写到碰盘上<br>
     * --------------------------------------------------------------------------<br>
     *
     * 
@param  fileFullName 文件全名
     * 
@param  fileContent  内容
     * 
@param  append       是否追加
     * 
@throws  IOException 例外
     
*/
    
public   static   void  fileWrite(File fileFullName,  byte [] fileContent,  boolean  append)  throws  IOException {
        File parent 
=  fileFullName.getParentFile();
        
if  ( ! parent.exists()) {
            parent.mkdirs();
        }
        FileOutputStream outputStream 
=   null ;
        
try  {
            
// ---------------------------------
            
//  获得一个二进制写入流的句柄
            
// ---------------------------------
            outputStream  =   new  FileOutputStream(fileFullName,
                    append);
            
// ---------------------------------
            
//  写入内容
            
// ---------------------------------
            outputStream.write(fileContent);
            
// ---------------------------------
            
//  将内容写到碰盘上
            
// ---------------------------------
            outputStream.flush();
        } 
finally  {
            
if  (outputStream  !=   null ) {
                
// ---------------------------------
                
//  如果句柄不为空。则最后要关闭句柄
                
// ---------------------------------
                 try  {
                    outputStream.close();
                    outputStream 
=   null ;
                } 
catch  (Exception e) {
                }
            }
        }
    }

    
public   static   void  fileWrite(File path, String fileName, String content,  boolean  append)  throws  IOException {
        
if  ( ! path.exists()  ||   ! path.isDirectory()) {
            path.mkdirs();
        }
        File file 
=   new  File(path, fileName);
        fileWrite(file.getPath(), content, append);
    }

    
public   static   void  delFile(String filepath)  throws  IOException {
        File f 
=   new  File(filepath); // 定义文件路径
         boolean  flag  =   false ;
        
if  (f.exists()  &&  f.isDirectory()) { // 判断是文件还是目录
             if  (f.listFiles().length  ==   0   &&  flag  ==   true ) { // 若目录下没有文件则直接删除
                f.delete();
            } 
else  { // 若有则把文件放进数组,并判断是否有下级目录
                flag  =   true ;
                File delFile[] 
=  f.listFiles();
                
int  i  =  f.listFiles().length;
                
for  ( int  j  =   0 ; j  <  i; j ++ ) {
                    
if  (delFile[j].isDirectory()) {
                        delFile(delFile[j].getAbsolutePath());
// 递归调用del方法并取得子目录路径
                    }
                    delFile[j].delete();
// 删除文件
                }
            }
        }
    }

    
public   static   void  main(String[] args) {
        
try  {
            delFile(
" D:\\temp " );
        } 
catch  (IOException e) {
            e.printStackTrace();  
// To change body of catch statement use File | Settings | File Templates.
        }
    }
}


package  com.yesky.wstsearch.common;

import  java.io.IOException;
import  java.lang.reflect.Field;
import  java.util.List;

/**
 * 使用方法:
 * 1.编译ICE文件
 * 2.编译此类及ClassUtil,FileUtil;
 * 3.运行此类
 *
 * 
@author  Owner
 
*/
public   class  AddGetterSetter {

    
public  String getGetterSetter(Class className) {

        StringBuffer setergeters 
=   new  StringBuffer();
        
if  (className  !=   null ) {

            Field[] fieldobject 
=  className.getFields();
            String getter, setter;

            
for  ( int  i  =   0 ; i  <  fieldobject.length; i ++ ) {

                String objectname 
=  fieldobject[i].getName();
                String objDataType 
=  (fieldobject[i].getType().getName()).toString();
                
if  ( " [Ljava.lang.String; " .equals(objDataType)) {
                    objDataType 
=   " String[] " ;
                } 
else   if  ( " [I " .equals(objDataType)) {
                    objDataType 
=   " int[] " ;
                }

                getter 
=   " \tpublic  "   +  objDataType  +   "  get "   +  ( char ) (objectname.charAt( 0 -   32 )
                        
+  objectname.substring( 1 +   " () {\r\n\t\t " ;
                
try  {
                    
if  ( " java.lang.String " .equals(objDataType)) {
                        getter 
+=   " if( "   +  objectname  +   "  == null) {\r\n\t\t\t "   +  objectname  +   "  = \ " \ " ;\r\n\t\t}\r\n\t\t " ;
                    }
                } 
catch  (Exception e) {
                    e.printStackTrace();  
// To change body of catch statement use File | Settings | File Templates.
                }
                getter 
+=   " return  "
                        
+  objectname  +   " ;\r\n\t}\r\n\r\n " ;

                setter 
=   " \tpublic void set "   +  ( char ) (objectname.charAt( 0 -   32 +  objectname.substring( 1 )
                        
+   " ( "   +  objDataType  +   "   "   +  objectname  +   " ) {\r\n\t\t "
                        
+   " this. "   +  objectname  +   "  =  "   +  objectname  +   " ;\r\n\t}\r\n\r\n " ;

                setergeters.append(getter).append(setter);
            }

            
if  (fieldobject.length  >   0 ) {
                setergeters.append(
" \t//icemodel2bean generated. " );
            }
        }

        
return  setergeters.toString();
    }

    
public   void  writeSource(String sourcePath, String content) {

        
try  {
            String fileContent 
=  FileUtil.fileRead(sourcePath);
            
if  (fileContent.indexOf( " icemodel2bean " ==   - 1 ) {
                
int  end  =  fileContent.lastIndexOf( " } " );

                String subContent 
=  fileContent.substring( 0 , end);

                fileContent 
=  subContent  +  content  +   " \r\n} " ;

                FileUtil.fileWrite(sourcePath, fileContent, 
false );
            } 
else  {
                System.out.println(sourcePath 
+   "  icemodel2bean already generated. " );
            }

        } 
catch  (IOException e) {

            e.printStackTrace();
        }

    }

    
public   static   void  main(String[] args) {

        AddGetterSetter adder 
=   new  AddGetterSetter();

        List
< Class >  classList  =  ClassUtil.getClasses( " com.tmg.rescenter.serviceice.modelice " );

        String realPath 
=  Class. class .getResource( " / " ).getPath();

        realPath 
=  realPath.substring( 0 , realPath.indexOf( " rescenter " +   9 +   " /src/com/tmg/rescenter/serviceice/modelice/ " ;

        String clazzName;

        
for  (Class clazz : classList) {

            clazzName 
=  clazz.getSimpleName();
            
if  (clazzName.matches( " .+Ice$ " )) {

                adder.writeSource(realPath 
+  clazzName  +   " .java " , adder.getGetterSetter(clazz));
                System.out.println(clazz.getSimpleName());
            }
        }

        
// ------------------------------
        List < Class >  classList1  =  ClassUtil.getClasses( " com.tmg.rescenter.serviceice.modelice.productextension " );


        realPath 
=  realPath.substring( 0 , realPath.indexOf( " rescenter " +   9 +   " /src/com/tmg/rescenter/serviceice/modelice/productextension/ " ;

        String clazzName1;

        
for  (Class clazz : classList1) {

            clazzName1 
=  clazz.getSimpleName();
            
if  (clazzName1.matches( " .+Ice$ " )) {

                adder.writeSource(realPath 
+  clazzName1  +   " .java " , adder.getGetterSetter(clazz));
                System.out.println(clazz.getSimpleName());
            }
        }

        
// ------------------------------
        List < Class >  classList2  =  ClassUtil.getClasses( " com.yesky.wstsearch.modelIce " );

        realPath 
=   " E:/workspace/WsSearch2010/src/com/yesky/wstsearch/modelIce/ " ;

        String clazzName2;

        
for  (Class clazz : classList2) {
            clazzName2 
=  clazz.getSimpleName();
            System.out.println(clazzName2);
            
if  (clazzName2.matches( " .+Ice$ " )) {
                System.out.println(realPath);
                adder.writeSource(realPath 
+  clazzName2  +   " .java " , adder.getGetterSetter(clazz));
                System.out.println(clazz.getSimpleName());
            }
        }
    }
}