/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://oss.oracle.com/licenses/CDDL+GPL-1.1
* or LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
/*
* CMP20TemplateFormatter.java
*
* Created on February 25, 2004
*/
package com.sun.jdo.spi.persistence.support.ejb.ejbc;
import java.io.*;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Properties;
import java.util.StringTokenizer;
import com.sun.jdo.spi.persistence.utility.generator.JavaClassWriterHelper;
/*
* This is the helper class for JDO specific generation of
* a concrete bean implementation for CMP 2.0 beans.
* Because both CMP11TemplateFormatter and this class extend
* CMPTemplateFormatter, and all references are static, properties
* in this class must differ in names if there is a similar property
* in the super class. Such properties have 2_0 or 20 in them.
*
* @author Marina Vatkina
*/
class CMP20TemplateFormatter extends CMPTemplateFormatter {
private final static String templateFile =
"com/sun/jdo/spi/persistence/support/ejb/ejbc/CMP20Templates.properties"; // NOI18N
// Strings for CMP 2.0 code generation:
public final static String local_ = "Local"; // NOI18N
public final static String ejbLocalObject_ = "EJBLocalObject"; // NOI18N
public final static String ejbLocalHome_ = "EJBLocalHome"; // NOI18N
public final static String getter_ = "getter"; // NOI18N
public final static String setter_ = "setter"; // NOI18N
public final static String assertPKsetter_ = "assertPKsetter"; // NOI18N
public final static String pksetter_ = "pksetter"; // NOI18N
public final static String pkstringsetter_ = "pkstringsetter"; // NOI18N
public final static String pkcopysetter_ = "pkcopysetter"; // NOI18N
public final static String copygetter_ = "copygetter"; // NOI18N
public final static String copysetter_ = "copysetter"; // NOI18N
public final static String arraygetter_ = "arraygetter"; // NOI18N
public final static String arraysetter_ = "arraysetter"; // NOI18N
public final static String sfldgetter_ = "sfldGetter"; // NOI18N
public final static String sfldsetter_ = "sfldSetter"; // NOI18N
public final static String cmrGetter_ = "cmrGetter"; // NOI18N
public final static String cmrSetter_ = "cmrSetter"; // NOI18N
public final static String cmrGetterCollection_ = "cmrGetterCollection"; // NOI18N
public final static String cmrSetterCollection_ = "cmrSetterCollection"; // NOI18N
public final static String startCascadeDelete_ = "startCascadeDelete"; // NOI18N
public final static String endCascadeDelete_ = "endCascadeDelete"; // NOI18N
public final static String cmrCascadeDelete_ = "cmrCascadeDelete"; // NOI18N
public final static String cmrCascadeDeleteCollection_ = "cmrCascadeDeleteCollection"; // NOI18N
public final static String localCmrVariables_ = "localCmrVariables"; // NOI18N
public final static String cleanCollectionCmr_ = "cleanCollectionCmr"; // NOI18N
public final static String ejbFinderSelectorParamCheckLocalInterface_
= "ejbFinderSelectorParamCheckLocalInterface"; // NOI18N
public final static String ejbFinderSelectorParamCheckRemoteInterface_
= "ejbFinderSelectorParamCheckRemoteInterface"; // NOI18N
public final static String ejbMultiSelectorBodyConversion_ = "ejbMultiSelectorBodyConversion"; // NOI18N
public final static String ejbMultiSelectorBody_ = "ejbMultiSelectorBody"; // NOI18N
public final static String ejbMultiSelectorBodySet_ = "ejbMultiSelectorBodySet"; // NOI18N
public final static String ejbSingleSelectorReturnBodyConversion_ = "ejbSingleSelectorReturnBodyConversion"; // NOI18N
public final static String ejbSingleSelectorReturnBody_ = "ejbSingleSelectorReturnBody"; // NOI18N
public final static String ejbAggregateSelectorPrimitiveReturnBody_ = "ejbAggregateSelectorPrimitiveReturnBody"; // NOI18N
public final static String ejbAggregateSelectorReturnBody_ = "ejbAggregateSelectorReturnBody"; // NOI18N
public final static String ejbAggregateSelectorReturnBodyConversion_ = "ejbAggregateSelectorReturnBodyConversion"; // NOI18N
public final static String ejbAggregateSelectorReturnBigDecimalConversion_ = "ejbAggregateSelectorReturnBigDecimalConversion"; // NOI18N
public final static String ejbAggregateSelectorReturnBigIntegerConversion_ = "ejbAggregateSelectorReturnBigIntegerConversion"; // NOI18N
public final static String ejbSingleSelectorBody_ = "ejbSingleSelectorBody"; // NOI18N
public final static String preSelect_ = "preSelect"; // NOI18N
public final static String convertPCToEJBLocalObject_
= "convertPCToEJBLocalObject"; // NOI18N
public final static String convertCollectionPCToEJBObject_
= "convertCollectionPCToEJBObject"; // NOI18N
public final static String convertCollectionPCToEJBObjectSet_
= "convertCollectionPCToEJBObjectSet"; // NOI18N
public final static String convertCollectionPCToEJBLocalObject_
= "convertCollectionPCToEJBLocalObject"; // NOI18N
public final static String convertCollectionPCToEJBLocalObjectSet_
= "convertCollectionPCToEJBLocalObjectSet"; // NOI18N
public final static String jdoCleanCollectionRef_ = "jdoCleanCollectionRef"; // NOI18N
// Inner helper Class strings.
public final static String helper20Interface_
= "com.sun.jdo.spi.persistence.support.sqlstore.ejb.JDOEJB20Helper"; // NOI18N
public final static String helper20Impl_
= "com.sun.jdo.spi.persistence.support.ejb.cmp.JDOEJB20HelperImpl"; // NOI18N
public final static String ejbHashSetImport_
= "com.sun.jdo.spi.persistence.support.ejb.cmp.EJBHashSet"; // NOI18N
public final static String assertInstanceOfLocalInterfaceImpl_
= "assertInstanceOfLocalInterfaceImpl"; // NOI18N
// property key for the CVS keyword substitution
public final static String signature2_0_ = "signature2_0"; //NOI18N
// getters and setters
public static MessageFormat gformatter = null; // CMP field getter
public static MessageFormat sformatter = null; // CMP field setter
public static MessageFormat copygformatter = null; // Date CMP field uses copygetter
public static MessageFormat copysformatter = null; // Date CMP field uses copysetter
public static MessageFormat arraygformatter = null; // byte[] CMP field uses arraygetter
public static MessageFormat arraysformatter = null; // byte[] CMP field uses arraysetter
public static MessageFormat assertpksformatter = null; // assert not null PK field setter
public static MessageFormat pksformatter = null; // PK field setter
public static MessageFormat pkstringsformatter = null; // String PK CMP field setter (calls trim())
public static MessageFormat pkcopysformatter = null; // Mutable PK CMP field setter (calls clone())
public static MessageFormat sfldgformatter = null; // Serializable CMP field getter
public static MessageFormat sfldsformatter = null; // Serializable CMP field setter
public static MessageFormat cmrgformatter = null; // 1-side CMR getter
public static MessageFormat cmrsformatter = null; // 1-side CMR setter
public static MessageFormat cmrCgformatter = null; // many-side CMR getter
public static MessageFormat cmrCsformatter = null; // many-side CMR setter
public static MessageFormat cmrcdformatter = null; // cascade-delete for one-one CMR
public static MessageFormat cmrcdCformatter = null; // cascade-delete for one-many CMR
// 2.0 variables
public static MessageFormat cmrvformatter = null; // local cmr variables
public static MessageFormat cleancmrformatter = null; // clean collection cmr references
// 2.0 methods
public static MessageFormat cformatter = null; // ejbCreate
public static MessageFormat cunpkformatter = null; // ejbCreateUnknownPK
public static MessageFormat postcformatter = null; // ejbPostCreate
public static MessageFormat rmformatter = null; // ejbRemove
// finder/selector methods
public static MessageFormat finderselectorchecklocalformatter = null; //common body for selector and finder param check for local interface impl class
public static MessageFormat finderselectorcheckremoteformatter = null; //common body for selector and finder param check for remote interface impl class
public static MessageFormat preselectformatter = null; // preSelect callback
public static MessageFormat multiselectorconvformatter = null; // selector for multi-value-objects body with resultset-conversion
public static MessageFormat multiselectorformatter = null; // selector for multi-value-objects body
public static MessageFormat multiselectorsetformatter = null; // selector for multi-value-objects body and conversion to Set
public static MessageFormat singleselectorreturnconvformatter = null; // selector for single-value-objects body with resultset-conversion
public static MessageFormat singleselectorreturnformatter = null; // selector for single-value-objects body with resultset-conversion
public static MessageFormat aggregateselectorprimitivereturnformatter = null; // selector for aggregate functions return primitive without object conversion
public static MessageFormat aggregateselectorreturnformatter = null; // selector for aggregate functions without object conversion
public static MessageFormat aggregateselectorreturnconvformatter = null; // selector for aggregate functions with object conversion
public static MessageFormat aggregateselectorreturnbigdecimalconvformatter = null; // selector for aggregate functions with BigDecimal conversion
public static MessageFormat aggregateselectorreturnbigintegerconvformatter = null; // selector for aggregate functions with BigInteger conversion
public static MessageFormat singleselectorformatter = null; // selector for single-value-objects body
// standard templates for the corresponding keys, so that a template "xxxTemplate"
// corresponds to a "xxx" key.
public static String startCascadeDeleteTemplate = null;
public static String endCascadeDeleteTemplate = null;
public static String assertInstanceOfLocalInterfaceImplTemplate = null;
public static String signature2_0Template = null;
private static boolean is20HelpersLoaded = false;
/**
* Constructs a new <code>CMP20TemplateFormatter</code> instance.
*/
CMP20TemplateFormatter() {
}
/**
* Initializes templates for code generation.
*/
static synchronized void initHelpers() throws IOException {
if (is20HelpersLoaded == false) {
loadProperties(helpers, templateFile);
init20Formatters();
init20Templates();
is20HelpersLoaded = true;
}
}
/**
* Initializes MessageFormats for code generation.
*/
private static void init20Formatters() {
// getters and setters
gformatter = new MessageFormat(helpers.getProperty(getter_));
sformatter = new MessageFormat(helpers.getProperty(setter_));
copygformatter = new MessageFormat(helpers.getProperty(copygetter_));
copysformatter = new MessageFormat(helpers.getProperty(copysetter_));
arraygformatter = new MessageFormat(helpers.getProperty(arraygetter_));
arraysformatter = new MessageFormat(helpers.getProperty(arraysetter_));
assertpksformatter = new MessageFormat(helpers.getProperty(assertPKsetter_));
pksformatter = new MessageFormat(helpers.getProperty(pksetter_));
pkstringsformatter = new MessageFormat(helpers.getProperty(pkstringsetter_));
pkcopysformatter = new MessageFormat(helpers.getProperty(pkcopysetter_));
sfldsformatter = new MessageFormat(helpers.getProperty(sfldsetter_));
sfldgformatter = new MessageFormat(helpers.getProperty(sfldgetter_));
cmrgformatter = new MessageFormat(helpers.getProperty(cmrGetter_));
cmrsformatter = new MessageFormat(helpers.getProperty(cmrSetter_));
cmrCgformatter = new MessageFormat(helpers.getProperty(cmrGetterCollection_));
cmrCsformatter = new MessageFormat(helpers.getProperty(cmrSetterCollection_));
cmrcdformatter = new MessageFormat(helpers.getProperty(cmrCascadeDelete_));
cmrcdCformatter = new MessageFormat(helpers.getProperty(cmrCascadeDeleteCollection_));
// 2.0 variables
cmrvformatter = new MessageFormat(helpers.getProperty(localCmrVariables_));
cleancmrformatter = new MessageFormat(helpers.getProperty(cleanCollectionCmr_));
// 2.0 methods
cformatter = new MessageFormat(helpers.getProperty(ejbCreate_));
cunpkformatter = new MessageFormat(helpers.getProperty(ejbCreateUnknownPK_));
postcformatter = new MessageFormat(helpers.getProperty(ejbPostCreate_));
rmformatter = new MessageFormat(helpers.getProperty(ejbRemove_));
// 2.0 finder/selector methods
finderselectorchecklocalformatter = new MessageFormat(helpers.getProperty(ejbFinderSelectorParamCheckLocalInterface_));
finderselectorcheckremoteformatter = new MessageFormat(helpers.getProperty(ejbFinderSelectorParamCheckRemoteInterface_));
preselectformatter = new MessageFormat(helpers.getProperty(preSelect_));
multiselectorconvformatter = new MessageFormat(helpers.getProperty(ejbMultiSelectorBodyConversion_));
multiselectorformatter = new MessageFormat(helpers.getProperty(ejbMultiSelectorBody_));
multiselectorsetformatter = new MessageFormat(helpers.getProperty(ejbMultiSelectorBodySet_));
singleselectorreturnconvformatter = new MessageFormat(helpers.getProperty(ejbSingleSelectorReturnBodyConversion_));
singleselectorreturnformatter = new MessageFormat(helpers.getProperty(ejbSingleSelectorReturnBody_));
aggregateselectorprimitivereturnformatter = new MessageFormat(helpers.getProperty(ejbAggregateSelectorPrimitiveReturnBody_));
aggregateselectorreturnformatter = new MessageFormat(helpers.getProperty(ejbAggregateSelectorReturnBody_));
aggregateselectorreturnconvformatter = new MessageFormat(helpers.getProperty(ejbAggregateSelectorReturnBodyConversion_));
aggregateselectorreturnbigdecimalconvformatter = new MessageFormat(helpers.getProperty(ejbAggregateSelectorReturnBigDecimalConversion_));
aggregateselectorreturnbigintegerconvformatter = new MessageFormat(helpers.getProperty(ejbAggregateSelectorReturnBigIntegerConversion_));
singleselectorformatter = new MessageFormat(helpers.getProperty(ejbSingleSelectorBody_));
}
/**
* Initializes standard templates for code generation.
*/
private static void init20Templates() {
startCascadeDeleteTemplate = helpers.getProperty(startCascadeDelete_);
endCascadeDeleteTemplate = helpers.getProperty(endCascadeDelete_);
assertInstanceOfLocalInterfaceImplTemplate = helpers.getProperty(
assertInstanceOfLocalInterfaceImpl_);
signature2_0Template = helpers.getProperty(signature2_0_);
}
}