⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jclass.java

📁 把java对象映射成数据库表中的一条记录
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        }

        return filename;
    } //-- getFilename

    /**
     * Returns the Java Doc comment for this JClass
     * @return the JDocComment for this JClass
    **/
    public JDocComment getJDocComment() {
        return jdc;
    } //-- getJDocComment

    /**
     * Returns the member with the given name, or null if no member
     * was found with the given name
     * @param name the name of the member to return
     * @return the member with the given name, or null if no member
     * was found with the given name
    **/
    public JMember getMember(String name) {
        return (JMember)members.get(name);
    } //-- getMember

    public JMember[] getMembers() {
        int size = members.size();
        JMember[] marray = new JMember[size];
        for (int i = 0; i < size; i++) {
            marray[i] = (JMember)members.get(i);
        }
        return marray;
    } //-- getMembers

    public JMethod[] getMethods() {
        int size = methods.size();
        JMethod[] marray = new JMethod[size];

        for (int i = 0; i < methods.size(); i++) {
            marray[i] = (JMethod)methods.elementAt(i);
        }
        return marray;
    } //-- getMethods

    public JMethod getMethod(String name, int startIndex) {
        for (int i = startIndex; i < methods.size(); i++) {
            JMethod jMethod = (JMethod)methods.elementAt(i);
            if (jMethod.getName().equals(name)) return jMethod;
        }
        return null;
    }

    public JMethod getMethod(int index) {
        return (JMethod)methods.elementAt(index);
    }

    /**
     * Returns the JModifiers which allows the qualifiers to be changed
     * @return the JModifiers for this JClass
    **/
    public JModifiers getModifiers() {
        return modifiers;
    } //-- getModifiers

    /**
     * Returns the name of the package that this JClass is a member of
     * @return the name of the package that this JClass is a member of,
     * or null if there is no current package name defined
    **/
    public String getPackageName() {
        return this.packageName;
    } //-- getPackageName

    public static boolean isValidClassName(String name) {
        //** add class name validation */
        return true;
    } //-- isValidClassName

    public void print() {
        print(null,null);
    } //-- printSrouce

    /**
     * Prints the source code for this JClass
     * @param lineSeparator the line separator to use at the end of each line.
     * If null, then the default line separator for the runtime platform will
     * be used.
    **/

    public void print(String destDir, String lineSeparator) {
      print(destDir, lineSeparator, JSourceWriter.DEFAULT_SIZE);
    }

    public void print(String destDir, String lineSeparator, int size) {
        
        String name = getLocalName();
        
        //-- open output file
        String filename = getFilename(destDir);

        File file = new File(filename);
        JSourceWriter jsw = null;
        try {
            jsw = new JSourceWriter(new FileWriter(file), (short)size, false);
        }
        catch(java.io.IOException ioe) {
            System.out.println("unable to create class file: " + filename);
            return;
        }

        if (lineSeparator == null) {
            lineSeparator = System.getProperty("line.separator");
        }
        jsw.setLineSeparator(lineSeparator);

        StringBuffer buffer = new StringBuffer();


        //-- write class header
        if (header != null) header.print(jsw);
        else {
            jsw.writeln("/*");
            jsw.writeln(" * " + DEFAULT_HEADER);
            jsw.writeln("*/");
        }
        jsw.writeln();
        jsw.flush();

        //-- print package name
        if ((packageName != null) && (packageName.length() > 0)) {

            buffer.setLength(0);
            buffer.append("package ");
            buffer.append(packageName);
            buffer.append(';');
            jsw.writeln(buffer.toString());
            jsw.writeln();
        }

        //-- print imports
        jsw.writeln();
        for (int i = 0; i < imports.size(); i++) {
            jsw.write("import ");
            jsw.write(imports.elementAt(i));
            jsw.writeln(';');
        }
        jsw.writeln();

        //------------/
        //- Java Doc -/
        //------------/

        jdc.print(jsw);

        //-- print class information
        //-- we need to add some JavaDoc API adding comments

        buffer.setLength(0);

        if (modifiers.isPrivate()) {
            buffer.append("private ");
        }
        else if (modifiers.isPublic()) {
            buffer.append("public ");
        }

        if (modifiers.isAbstract()) {
            buffer.append("abstract ");
        }

        buffer.append("class ");
        buffer.append(getLocalName());
        buffer.append(' ');
        if (superClass != null) {
            buffer.append("extends ");
            buffer.append(superClass);
            buffer.append(' ');
        }
        if (interfaces.size() > 0) {
            int iSize = interfaces.size();
            boolean endl = false;
            if ((iSize > 1) || (superClass != null)) {
                jsw.writeln(buffer.toString());
                buffer.setLength(0);
                endl = true;
            }
            buffer.append("implements ");
            for (int i = 0; i < iSize; i++) {
                if (i > 0) buffer.append(", ");
                buffer.append(interfaces.elementAt(i));
            }
            if (endl) {
                jsw.writeln(buffer.toString());
                buffer.setLength(0);
            }
            else buffer.append(' ');
        }

        buffer.append('{');
        jsw.writeln(buffer.toString());
        buffer.setLength(0);
        jsw.writeln();

        jsw.indent();

        //-- declare members

        for (int i = 0; i < members.size(); i++) {

            JMember jMember = (JMember)members.get(i);

            //-- print Java comment
            JDocComment comment = jMember.getComment();
            if (comment != null) comment.print(jsw);

            // -- print member
            jsw.write(jMember.getModifiers().toString());
            jsw.write(' ');

            JType type = jMember.getType();
            String typeName = type.toString();
            //-- for esthetics use short name in some cases
            if (typeName.equals(toString())) {
                typeName = type.getLocalName();
            }
            jsw.write(typeName);
            jsw.write(' ');
            jsw.write(jMember.getName());

            String init = jMember.getInitString();
            if (init != null) {
                jsw.write(" = ");
                jsw.write(init);
            }

            jsw.writeln(';');
            //jsw.writeln();
        }
        jsw.writeln();

        //-- print constructors
        for (int i = 0; i < constructors.size(); i++) {
            JConstructor jConstructor = (JConstructor)constructors.elementAt(i);
            jConstructor.print(jsw);
            jsw.writeln();
        }


        for (int i = 0; i < methods.size(); i++) {
            JMethod jMethod = (JMethod)methods.elementAt(i);
            jMethod.print(jsw);
            jsw.writeln();
        }

        jsw.unindent();
        jsw.writeln('}');
        jsw.flush();
        jsw.close();
    } //-- printSource

    /**
     * Sets the header comment for this JClass
     * @param comment the comment to display at the top of the source file
     * when printed
    **/
    public void setHeader(JComment comment) {
        this.header = comment;
    } //-- setHeader

    /**
     * Allows changing the package name of this JClass
     * @param packageName the package name to use
    **/
    public void setPackageName(String packageName)  {
        this.packageName = packageName;
        changePackage(packageName);
    } //-- setPackageName

    /**
     * Sets the super Class that this class extends
     * @param superClass the super Class that this Class extends
    **/
    public void setSuperClass(String superClass) {
        this.superClass = superClass;
    } //-- setSuperClass

    //-------------------/
    //- Private Methods -/
    //-------------------/

    /**
     *
    **/
    private void printlnWithPrefix(String prefix, String source, JSourceWriter jsw) {
        jsw.write(prefix);
        if (source == null) return;

        char[] chars = source.toCharArray();
        int lastIdx = 0;
        for (int i = 0; i < chars.length; i++) {
            char ch = chars[i];
            if (ch == '\n') {
                //-- free buffer
                jsw.write(chars,lastIdx,(i-lastIdx)+1);
                lastIdx = i+1;
                if (i < chars.length) {
                    jsw.write(prefix);
                }
            }
        }
        //-- free buffer
        if (lastIdx < chars.length) {
            jsw.write(chars, lastIdx, chars.length-lastIdx);
        }
        jsw.writeln();

    } //-- printWithPrefix


    private static String getPackageFromClassName(String className) {
        int idx = -1;
        if ((idx = className.lastIndexOf('.')) > 0) {
            return className.substring(0, idx);
        }
        return null;
    } //-- getPackageFromClassName

    /**
     * Test drive method...to be removed or commented out
    **
    public static void main(String[] args) {
        JClass testClass = new JClass("Test");

        testClass.addImport("java.util.Vector");
        testClass.addMember(new JMember(JType.Int, "x"));
        JClass jcString = new JClass("String");

        JMember jMember = new JMember(jcString, "myString");
        jMember.getModifiers().makePrivate();
        testClass.addMember(jMember);

        //-- create constructor
        JConstructor cons = testClass.createConstructor();
        testClass.addConstructor(cons);
        cons.getSourceCode().add("this.x = 6;");
        
        JMethod jMethod = new JMethod(JType.Int, "getX");
        
        jMethod.setSourceCode("return this.x;");
        testClass.addMethod(jMethod);
        
        testClass.print();
    } //-- main
    /* */
    
} //-- JClass

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -