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());
            }
        }
    }
}