FireStorm/DAO Architect Edition - Example of Code Generation

/*
* Copyright 2008 CodeFutures Corporation. All rights reserved.
*
* This is vendor code. Use is subject to license terms.
*
* Author: Andy Grove
* Date: 21-Jan-2008
* Time: 08:57:11
*
* Visit / for more information.
*/

package com.codefutures.firestorm.codegen.dao;

import com.codefutures.jingo.source.dom.JClass;
import com.codefutures.jingo.source.dom.JAttribute;
import com.codefutures.jingo.source.factory.SourceFactory;
import com.codefutures.firestorm.project.dom.TableDao;
import com.codefutures.firestorm.project.dom.TableDaoColumn;
import com.codefutures.firestorm.project.dom.PrimaryKey;
import com.codefutures.firestorm.api.CommonOptions;

public class GenTablePk
{
    public static JClass generate(
    TableDao dao,
    CommonOptions config
    )
    {
        JClass c = SourceFactory.createClass(
        config.getDtoPackageName(),
        dao.getJavaName()
        + DaoConst.PK_SUFFIX
        );

        c.setJavaDoc(
            "This class represents the primary key of the "
            + dao.getSqlName()
            + " table."
        );

        c.addImport( "java.io.Serializable" );
        c.addImplements( "Serializable");

        PrimaryKey pk = dao.getPrimaryKey();

        if (pk != null)
        {
            TableDaoColumn col[] = dao.getPrimaryKeyColumnList();
            for (int i = 0; i < col.length; i++)
            {
                JAttribute attr = c.createAttribute(
                col[i].getJavaType(),
                col[i].getJavaName()
                );

                c.createAccessorMethods( attr );
            }

            c.createConstructor( c.getAttributeList() );
        }

        DaoCodeGenHelper.createToStringMethod(
            c,
            dao.getPrimaryKeyColumnList()
        );

        return c;
    }

}