/*
* Copyright (C) Lennart Martens
*
* Contact: lennart.martens AT UGent.be (' AT ' to be replaced with '@')
*/
/*
* Created by IntelliJ IDEA.
* User: Lennart
* Date: 24-dec-02
* Time: 15:52:54
*/
package com.compomics.util.db;
import org.apache.log4j.Logger;
import com.compomics.util.db.components.*;
import java.util.Date;
import java.text.SimpleDateFormat;
/*
* CVS information:
*
* $Revision: 1.4 $
* $Date: 2007/07/06 09:41:53 $
*/
/**
* This class represents an accessor class' sourcecode as generated by the DBAccessorGenerator
* class.
*
* @author Lennart Martens
*/
public class DBAccessor {
// Class specific log4j logger for DBAccessor instances.
Logger logger = Logger.getLogger(DBAccessor.class);
/**
* The name for the generated class.
*/
private String iName = null;
/**
* The package for the generated class.
*/
private String iPackage = null;
/**
* The getters and setters for the generated class' variables.
*/
private GettersAndSetters iGetSet = null;
/**
* The generated class' variables.
*/
private InstanceVariables iVars = null;
/**
* The generated class' constructor.
*/
private Constructors iConstr = null;
/**
* The generated code to implement deleteable.
*/
private DeleteableCode iDeleteable = null;
/**
* The generated code to implement Retrieveable.
*/
private RetrievableCode iRetrieveable = null;
/**
* The generated code to implement Updateable
*/
private UpdateableCode iUpdateable = null;
/**
* The generated code to implement Persistable.
*/
private PersistableCode iPersistable = null;
/**
* This constructor creates all code for the accessor,
* based on the specified metadata.
*
* @param aMeta DBMetaData with the metadata to generate
* the accessor for.
* @param aPackage String with the packagename for the class ('null' if none is desired).
* @param debug boolean to indicate whether output to stdout is necessary (or desired).
*/
public DBAccessor(DBMetaData aMeta, String aPackage, boolean debug) {
// The class name will be extracted here, the rest is up to the individual components.
String name = aMeta.getTableName();
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
this.iName = name + "TableAccessor";
iPackage = aPackage.trim();
// Individual components.
if(debug)logger.info("\nGenerating instance variables...");
iVars = new InstanceVariables(aMeta);
if(debug)logger.info("Variables done.\nGenerating constructors...");
iConstr = new Constructors(aMeta);
if(debug)logger.info("Constructors done.\nGenerating Getters and Setters...");
iGetSet = new GettersAndSetters(aMeta);
if(debug)logger.info("Getters and Setters done.\nGenerating Deleteable implementation...");
iDeleteable = new DeleteableCode(aMeta);
if(debug)logger.info("Deleteable implementation done.\nGenerating Retrievable implementation...");
iRetrieveable = new RetrievableCode(aMeta);
if(debug)logger.info("Retrievable implementation done.\nGenerating Updateable implementation...");
iUpdateable = new UpdateableCode(aMeta);
if(debug)logger.info("Updateable implementation done.\nGenerating Persistable implementation...");
iPersistable = new PersistableCode(aMeta);
if(debug)logger.info("Persistable implementation done.\n\nGeneration process complete!.");
}
/**
* This method returns the generated code as a String.
*
* @return String with the generated code.
*/
public String toString() {
// Start with the class declaration.
// Date and time of creation.
Date date = new Date();
SimpleDateFormat lsdDate = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat lsdTime = new SimpleDateFormat("HH:mm:ss");
String lDate = lsdDate.format(date);
String time = lsdTime.format(date);
StringBuffer lsb = new StringBuffer(
"/*\n * Created by the DBAccessor generator.\n * Programmer: Lennart Martens\n * Date: "
+ lDate + "\n * Time: " + time + "\n */\n");
// Package (if any).
if(iPackage != null && !iPackage.equals("")) {
lsb.append("package " + iPackage + ";\n");
}
// Imports.
lsb.append("\nimport java.sql.*;\n");
lsb.append("import java.io.*;\n");
lsb.append("import java.util.*;\n");
lsb.append("import com.compomics.util.db.interfaces.*;\n");
// CVS information.
lsb.append("\n/*\n * CVS information:\n *\n * $Revision: 1.4 $\n * $Date: 2007/07/06 09:41:53 $\n */\n");
// Class documentation.
int location = iName.indexOf("Table");
lsb.append("\n/**\n * This class is a generated accessor for the " + iName.substring(0, location)
+ " table.\n *\n * @author DBAccessor generator class (Lennart Martens).\n */\n");
// Class name + extensions/interfaces.
lsb.append("public class " + iName + " implements Deleteable, Retrievable, Updateable, Persistable {\n");
// Class components.
lsb.append(iVars.toString());
lsb.append(iConstr.toString());
lsb.append(iGetSet.toString());
lsb.append(iDeleteable.toString());
lsb.append(iRetrieveable.toString());
lsb.append(iUpdateable.toString());
lsb.append(iPersistable.toString());
// Closing bracket.
lsb.append("}");
return lsb.toString();
}
}