in tools/src/main/java/org/apache/tuscany/sdo/generate/JavaGenerator.java [554:665]
private static GenModel ecore2GenModel(Collection ePackages, Hashtable packageInfoTable, int genOptions)
{
GenModel genModel = GenModelFactory.eINSTANCE.createGenModel();
genModel.initialize(ePackages);
genModel.setRootExtendsInterface("");
genModel.setRootImplementsInterface("commonj.sdo.DataObject");
genModel.setRootExtendsClass("org.apache.tuscany.sdo.impl.ExtensibleDataObjectImpl");
genModel.setFeatureMapWrapperInterface("commonj.sdo.Sequence");
genModel.setFeatureMapWrapperInternalInterface("org.apache.tuscany.sdo.util.BasicSequence");
genModel.setFeatureMapWrapperClass("org.apache.tuscany.sdo.util.BasicSequence");
genModel.setSuppressEMFTypes(true);
genModel.setSuppressEMFMetaData(true);
genModel.setSuppressEMFModelTags(true);
genModel.setCanGenerate(true);
//FIXME workaround java.lang.NoClassDefFoundError: org/eclipse/jdt/core/jdom/IDOMNode with 02162006 build
genModel.setFacadeHelperClass("Hack");
genModel.setForceOverwrite(true);
if ((genOptions & OPTION_NO_INTERFACES) != 0)
{
genModel.setSuppressInterfaces(true);
}
if ((genOptions & OPTION_SPARSE_PATTERN) != 0)
{
genModel.setFeatureDelegation(GenDelegationKind.VIRTUAL_LITERAL);
}
else if ((genOptions & OPTION_STORE_PATTERN) != 0)
{
genModel.setFeatureDelegation(GenDelegationKind.REFLECTIVE_LITERAL);
genModel.setRootExtendsClass("org.apache.tuscany.sdo.impl.StoreDataObjectImpl");
}
if ((genOptions & OPTION_NO_CONTAINMENT) != 0)
{
genModel.setSuppressContainment(true);
}
if ((genOptions & OPTION_NO_NOTIFICATION) != 0)
{
genModel.setSuppressNotification(true);
}
if ((genOptions & OPTION_ARRAY_ACCESSORS) != 0)
{
genModel.setArrayAccessors(true);
}
if ((genOptions & OPTION_NO_UNSETTABLE) != 0)
{
genModel.setSuppressUnsettable(true);
}
//if ((genOptions & OPTION_USE_EMF_PATTERNS) == 0)
{
genModel.setRootExtendsClass("org.apache.tuscany.sdo.impl.DataObjectBase");
}
if ((genOptions & OPTION_INTERFACE_DO) != 0)
{
genModel.setRootExtendsInterface("commonj.sdo.DataObject");
}
else
{
genModel.setRootExtendsInterface("java.io.Serializable");
}
//GenPackage genPackage = (GenPackage)genModel.getGenPackages().get(0);
Collection packages = genModel.getGenPackages();
for (Iterator iter1 = packages.iterator(); iter1.hasNext();)
{
GenPackage genPackage = (GenPackage)iter1.next();
PackageInfo packageInfo = (PackageInfo)packageInfoTable.get(genPackage.getEcorePackage());
if (packageInfo.getBasePackage() != null)
{
genPackage.setBasePackage(packageInfo.getBasePackage());
}
if (packageInfo.getPrefix() != null)
{
genPackage.setPrefix(packageInfo.getPrefix());
}
//FIXME Temporary, I need this option for now to get Switch classes generated for the SCDL models
if ((genOptions & OPTION_GENERATE_SWITCH) == 0)
{
genPackage.setAdapterFactory(false);
}
if ((genOptions & OPTION_GENERATE_LOADER) != 0)
{
//FIXME workaround compile error with 02162006 build, generated code references non-existent EcoreResourceImpl class
genPackage.setResource(GenResourceKind.XML_LITERAL);
//genPackage.setDataTypeConverters(true);
}
else
{
genPackage.setResource(GenResourceKind.NONE_LITERAL);
for (Iterator iter2 = genPackage.getGenClasses().iterator(); iter2.hasNext();)
{
GenClass genClass = (GenClass)iter2.next();
if ("DocumentRoot".equals(genClass.getName()))
{
genClass.setDynamic(true); // Don't generate DocumentRoot class
break;
}
}
}
}
return genModel;
}