Update of 
/cvsroot/xdoclet-plugins/xdoclet-plugins/plugin-ejb/src/main/java/org/xdoclet/plugin/ejb/entity
In directory 
sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6319/plugin-ejb/src/main/java/org/xdoclet/plugin/ejb/entity

Added Files:
        PrimaryKeyClassPlugin.vm PrimaryKeyClassPlugin.java 
Log Message:
alpha commit

--- NEW FILE: PrimaryKeyClassPlugin.java ---
/*
 * Copyright (c) 2005
 * XDoclet Team
 * All rights reserved.
 */
package org.xdoclet.plugin.ejb.entity;

import java.text.MessageFormat;

import org.generama.QDoxCapableMetadataProvider;
import org.generama.TemplateEngine;
import org.generama.WriterMapper;

import org.generama.defaults.JavaGeneratingPlugin;

import org.xdoclet.plugin.ejb.EjbConfig;
import org.xdoclet.plugin.ejb.EjbRuntime;
import org.xdoclet.plugin.ejb.EjbUtils;
import org.xdoclet.plugin.ejb.qtags.EjbPkTag;
import org.xdoclet.plugin.ejb.qtags.TagLibrary;

import com.thoughtworks.qdox.model.JavaClass;

/**
 * Primary key class plugin
 *
 * @author Diogo Quintela
 * @version $Revision: 1.1 $
 */
public class PrimaryKeyClassPlugin extends JavaGeneratingPlugin {
    private EjbUtils ejbUtils;
    private String fileregex;
    private String filereplace;
    private String packageregex;
    private String packagereplace;

    public PrimaryKeyClassPlugin(TemplateEngine templateEngine, 
QDoxCapableMetadataProvider metadataProvider,
        WriterMapper writerMapper, EjbConfig config) throws 
ClassNotFoundException {
        super(templateEngine, metadataProvider, writerMapper);

        EjbRuntime.init(config, metadataProvider);
        EjbRuntime.setPlugin(this);

        setPackageregex("beans");
        setPackagereplace("util");
        setFileregex(config.getEjbReplaceRegex());
        setFilereplace("PK");
        setMultioutput(true);

        this.ejbUtils = new EjbUtils();

        new TagLibrary(metadataProvider);
    }

    public EjbConfig getConfig() {
        return EjbRuntime.getConfig();
    }

    public EjbUtils getEjbUtils() {
        return this.ejbUtils;
    }

    public void setFileregex(String fileregex) {
        if (fileregex == null) {
            throw new NullPointerException();
        }

        this.fileregex = fileregex;
        super.setFileregex(fileregex);
    }

    public void setFilereplace(String filereplace) {
        if (filereplace == null) {
            throw new NullPointerException();
        }

        this.filereplace = filereplace;
        super.setFilereplace(filereplace);
    }

    public void setPackageregex(String packageregex) {
        if (packageregex == null) {
            throw new NullPointerException();
        }

        this.packageregex = packageregex;
        super.setPackageregex(packageregex);
    }

    public void setPackagereplace(String packagereplace) {
        if (packagereplace == null) {
            throw new NullPointerException();
        }

        this.packagereplace = packagereplace;
        super.setPackagereplace(packagereplace);
    }

    public boolean shouldGenerate(Object metadata) {
        JavaClass javaClass = (JavaClass) metadata;
        boolean generate = ejbUtils.shouldGenerate(javaClass);
        generate &= ejbUtils.isEntityBean(javaClass);
        EjbPkTag pkTag = (EjbPkTag) javaClass.getTagByName("ejb.pk");

        if (pkTag != null) {
            generate &= pkTag.isGenerate();
            // TODO: We should only generate if there is at least
            // one @ejb.pk-field i guess
        }

        return generate;
    }

    public String getDestinationFilename(Object metadata) {
        JavaClass javaClass = (JavaClass) metadata;
        String retVal = null;
        EjbPkTag pkTag = (EjbPkTag) javaClass.getTagByName("ejb.pk");

        if (pkTag != null) {
            retVal = pkTag.getClass_();

            if (retVal != null) {
                int idx = retVal.lastIndexOf('.');
                retVal = (idx >= 0) ? retVal.substring(idx + 1) : retVal;
            }
        }

        if (retVal == null) {
            if (pkTag != null && pkTag.getPattern() != null) {
                retVal = MessageFormat.format(pkTag.getPattern(), new String[] 
{ejbUtils.getEjbName(javaClass)});
            } else {
                retVal = javaClass.getName();
                retVal = retVal.replaceAll(fileregex, filereplace);
            }
        }

        return retVal + ".java";
    }

    public String getDestinationPackage(Object metadata) {
        JavaClass javaClass = (JavaClass) metadata;
        String retVal = null;
        EjbPkTag pkTag = (EjbPkTag) javaClass.getTagByName("ejb.pk");

        if (pkTag != null) {
            retVal = pkTag.getClass_();

            if (retVal != null) {
                int idx = retVal.lastIndexOf('.');
                retVal = (idx >= 0) ? retVal.substring(0, idx) : "";
            }

            if (retVal == null) {
                retVal = pkTag.getPackage();
            }
        }

        if (retVal == null) {
            retVal = javaClass.getPackage();
            retVal = retVal.replaceAll(packageregex, packagereplace);
        }

        return retVal;
    }
}
--- NEW FILE: PrimaryKeyClassPlugin.vm ---
#set( $class = $metadata )
// ${dontedit}
// Generated by $plugin.class.name from $class.fullyQualifiedName
package ${plugin.getDestinationPackage($class)};

public class ${plugin.getDestinationClassname($class)} {
  // TODO:
}



-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
xdoclet-plugins-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-plugins-commits

Reply via email to