Index: topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOEntityGenerator.java diff -u topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOEntityGenerator.java:1.1 topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOEntityGenerator.java:1.2 --- topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOEntityGenerator.java:1.1 Fri Jul 30 14:38:58 2004 +++ topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOEntityGenerator.java Fri Aug 6 17:48:52 2004 @@ -23,10 +23,10 @@ * * @author Benjamin Poussin * Copyright Code Lutin - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ * - * Mise a jour: $Date: 2004/07/30 14:38:58 $ - * par : $Author: pineau $ + * Mise a jour: $Date: 2004/08/06 17:48:52 $ + * par : $Author: bpoussin $ */ package org.codelutin.topia.generators.jdo; @@ -37,6 +37,7 @@ import java.io.Writer; import java.util.Iterator; +import org.codelutin.generator.Generator; import org.codelutin.generator.models.object.ObjectModelAttribute; import org.codelutin.generator.models.object.ObjectModelClass; import org.codelutin.generator.models.object.ObjectModelClassifier; @@ -46,6 +47,17 @@ public class ObjectModelToJDOEntityGenerator extends TopiaAbstractObjectModelGenerator { // ObjectModelToJDOEntityGenerator + public ObjectModelToJDOEntityGenerator(){ + super(); + } + + public ObjectModelToJDOEntityGenerator(Generator parent){ + super(parent); + } + + /** true if in UML model, this entity has parent entity */ + protected boolean hasParent = false; + public String getFilenameForClassifier(ObjectModelClassifier clazz) { return (clazz.getPackageName()+".persistence.jdo.").replace('.', File.separatorChar)+clazz.getName()+"JDO.java"; } @@ -73,9 +85,12 @@ public void generateImportStatement(Writer output, ObjectModelClassifier clazz) throws IOException { super.generateImportStatement(output, clazz); /*{ -import org.codelutin.topia.persistence.jdo.AbstractJDOEntity; +//import org.codelutin.topia.persistence.jdo.AbstractJDOEntity; import org.codelutin.topia.persistence.jdo.JDOEntity; import <%=clazz.getPackageName()%>.*; +import javax.jdo.JDOHelper; +import javax.jdo.PersistenceManager; +import org.codelutin.topia.persistence.jdo.JDOPersistenceHelper; }*/ } @@ -87,14 +102,14 @@ if(clazzifier instanceof ObjectModelClass){ ObjectModelClass clazz = (ObjectModelClass)clazzifier; /*{ -public class <%=clazz.getName() + "JDO"%> extends }*/ +public class <%=clazz.getName() + "JDO"%>}*/ Iterator i = clazz.getSuperclasses().iterator(); - if (i.hasNext()) { + hasParent = i.hasNext(); + if (hasParent) { ObjectModelClass superclass = (ObjectModelClass) i.next(); - /*{<%=superclass.getName()%>JDO implements JDOEntity}*/ - } else { - /*{AbstractJDOEntity implements JDOEntity}*/ + /*{ extends <%=superclass.getName()%>JDO}*/ } + /*{ implements JDOEntity}*/ }else{ /*{ public interface <%=clazzifier.getName() + "JDO"%> extends JDOEntity}*/ @@ -166,8 +181,14 @@ * @param topiaEntity une vrai entity et pas un Lazy *) public void update(TopiaEntity topiaEntity, HashSet done) throws TopiaException { - super.update(topiaEntity, done); <%=clazz.getQualifiedName()%>Impl entity = (<%=clazz.getQualifiedName()%>Impl)topiaEntity; + + this._topiaId_ = entity.get_topiaId_(); + this._version_ = entity.get_version_(); + this._creationDate_ = (Date) entity.get_creationDate_().clone(); + this._lastUpdateDate_ = (Date) entity.get_lastUpdateDate_().clone(); + this._lastUpdateUser_ = entity.get_lastUpdateUser_(); + }*/ // Iterate on each attribute @@ -231,7 +252,12 @@ protected TopiaEntity convertToEntity(TopiaEntity result) throws TopiaException { <%=clazz.getName()%>Impl entity = (<%=clazz.getName()%>Impl)result; - super.convertToEntity(entity); + result.setContext(getContext()); + result.set_topiaId_(_topiaId_); + result.set_version_(_version_); + result.set_creationDate_(_creationDate_); + result.set_lastUpdateDate_(_lastUpdateDate_); + result.set_lastUpdateUser_(_lastUpdateUser_); }*/ // Iterate on each attribute for (Iterator i = clazz.getAttributes().iterator(); i.hasNext();) { @@ -275,7 +301,70 @@ return new <%=clazz.getName()%>Lazy(getContext(), result); } + + + ////////////////////////////////////////////////////////////////////// + // all next method are in abstract class before +}*/ + +if(!hasParent){ +/*{ + + protected String _topiaId_ = null; + protected String _version_; + protected Date _creationDate_; + protected Date _lastUpdateDate_; + protected TopiaUser _lastUpdateUser_; + + public String get_topiaId_(){ + return _topiaId_; + } + + public void set_topiaId_(String topiaId){ + if(_topiaId_ != null && !_topiaId_.equals(topiaId)){ + throw new RuntimeException("You're not allowed to change topiaId"); + } + this._topiaId_ = topiaId; + } + public String get_version_(){ + return _version_; + } + public void set_version_(String version){ + this._version_ = version; + } + + public Date get_creationDate_(){ + return _creationDate_; + } + public void set_creationDate_(Date creationDate){ + this._creationDate_ = creationDate; + } + + public Date get_lastUpdateDate_(){ + return _lastUpdateDate_; + } + public void set_lastUpdateDate_(Date lastUpdateDate){ + this._lastUpdateDate_ = lastUpdateDate; + } + + public TopiaUser get_lastUpdateUser_(){ + return _lastUpdateUser_; + } + public void set_lastUpdateUser_(TopiaUser lastUpdateUser){ + this._lastUpdateUser_ = lastUpdateUser; + } + + public JDOPersistenceHelper getPersistenceHelper(){ + PersistenceManager pm = JDOHelper.getPersistenceManager(this); + return (JDOPersistenceHelper)pm.getUserObject(); + } + + public TopiaContext getContext(){ + return getPersistenceHelper().getContext(); + } + }*/ +} } } // ObjectModelToJDOEntityGenerator Index: topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOMetaGenerator.java diff -u topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOMetaGenerator.java:1.2 topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOMetaGenerator.java:1.3 --- topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOMetaGenerator.java:1.2 Wed Aug 4 08:54:02 2004 +++ topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOMetaGenerator.java Fri Aug 6 17:48:52 2004 @@ -23,22 +23,25 @@ * * @author Benjamin Poussin * Copyright Code Lutin - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Mise a jour: $Date: 2004/08/04 08:54:02 $ + * Mise a jour: $Date: 2004/08/06 17:48:52 $ * par : $Author: bpoussin $ */ package org.codelutin.topia.generators.jdo; import org.codelutin.topia.generators.ObjectModelToTopiaMetaGenerator; -import org.codelutin.topia.generators.jdo.tjdo.ObjectModelToJDOEntityMetaDataGenerator; -import org.codelutin.topia.generators.jdo.tjdo.ObjectModelToPersistenceHelperPropertiesGenerator; +import org.codelutin.topia.generators.jdo.ObjectModelToJDOEntityMetaDataGenerator; +import org.codelutin.topia.generators.jdo.ObjectModelToPersistenceHelperPropertiesGenerator; import org.codelutin.topia.persistence.LazyEntityGenerator; +import org.codelutin.generator.Generator; import org.codelutin.generator.ObjectModelGenerator; import org.codelutin.generator.models.object.ObjectModel; import java.io.IOException; import java.io.File; +import java.util.logging.Level; +import java.util.logging.Logger; public class ObjectModelToJDOMetaGenerator extends ObjectModelGenerator { // JDOGenerator @@ -46,37 +49,31 @@ super(); } + public ObjectModelToJDOMetaGenerator(Generator parent){ + super(parent); + } + public void generate(ObjectModel model, File destDir) throws IOException { ObjectModelGenerator gen = null; - System.out.println("Generation de ObjectModelToTopiaMetaGenerator"); - gen = new ObjectModelToTopiaMetaGenerator(); - gen.setProperties(properties); - gen.setOverwrite(getOverwrite()); + Logger.getLogger(getClass().getName() + ".generate").log(Level.FINE, "Generation de ObjectModelToTopiaMetaGenerator"); + gen = new ObjectModelToTopiaMetaGenerator(this); gen.generate(model, destDir); - System.out.println("Generation de ObjectModelToJDOEntityGenerator"); - gen = new ObjectModelToJDOEntityGenerator(); - gen.setProperties(properties); - gen.setOverwrite(getOverwrite()); + Logger.getLogger(getClass().getName() + ".generate").log(Level.FINE, "Generation de ObjectModelToJDOEntityGenerator"); + gen = new ObjectModelToJDOEntityGenerator(this); gen.generate(model, destDir); - System.out.println("Generation de ObjectModelToJDOEntityMetaDataGenerator"); - gen = new ObjectModelToJDOEntityMetaDataGenerator(); - gen.setProperties(properties); - gen.setOverwrite(getOverwrite()); + Logger.getLogger(getClass().getName() + ".generate").log(Level.FINE, "Generation de ObjectModelToJDOEntityMetaDataGenerator"); + gen = new ObjectModelToJDOEntityMetaDataGenerator(this); gen.generate(model, destDir); - System.out.println("Generation de LazyEntityGenerator"); - gen = new LazyEntityGenerator(); - gen.setProperties(properties); - gen.setOverwrite(getOverwrite()); + Logger.getLogger(getClass().getName() + ".generate").log(Level.FINE, "Generation de LazyEntityGenerator"); + gen = new LazyEntityGenerator(this); gen.generate(model, destDir); - System.out.println("Generation de ObjectModelToPersistenceHelperPropertiesGenerator"); - gen = new ObjectModelToPersistenceHelperPropertiesGenerator(); - gen.setProperties(properties); - gen.setOverwrite(getOverwrite()); + Logger.getLogger(getClass().getName() + ".generate").log(Level.FINE, "Generation de ObjectModelToPersistenceHelperPropertiesGenerator"); + gen = new ObjectModelToPersistenceHelperPropertiesGenerator(this); gen.generate(model, destDir); } Index: topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOEntityMetaDataGenerator.java diff -u /dev/null topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOEntityMetaDataGenerator.java:1.1 --- /dev/null Fri Aug 6 17:48:58 2004 +++ topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToJDOEntityMetaDataGenerator.java Fri Aug 6 17:48:52 2004 @@ -0,0 +1,187 @@ +/* *##% + * Copyright (C) 2002, 2003 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +/* * + * ObjectModelToJDOEntityMetaDataGenerator.java + * + * Created: 6 juil. 2004 + * + * @author Benjamin Poussin + * Copyright Code Lutin + * @version $Revision: 1.1 $ + * + * Mise a jour: $Date: 2004/08/06 17:48:52 $ + * par : $Author: bpoussin $ + */ + +package org.codelutin.topia.generators.jdo; + +import java.io.File; +import java.io.IOException; +import java.io.Writer; +import java.util.Iterator; + +import org.codelutin.generator.Generator; +import org.codelutin.generator.ObjectModelGenerator; +import org.codelutin.generator.models.object.ObjectModelAttribute; +import org.codelutin.generator.models.object.ObjectModelClass; +import org.codelutin.generator.models.object.ObjectModelClassifier; +import org.codelutin.generator.models.object.ObjectModelInterface; +import org.codelutin.topia.generators.Util; + +public class ObjectModelToJDOEntityMetaDataGenerator extends ObjectModelGenerator { // ObjectModelToJDOEntityMetaDataGenerator + + boolean hasSuperClass = false; + + public ObjectModelToJDOEntityMetaDataGenerator(){ + super(); + } + + public ObjectModelToJDOEntityMetaDataGenerator(Generator parent){ + super(parent); + } + + protected boolean isTJDO(){ + return "tjdo".equals(getProperty("jdo.implementation")); + } + + public String getFilenameForClass(ObjectModelClass clazz) { + return (clazz.getPackageName()+".persistence.jdo.").replace('.', File.separatorChar)+clazz.getName()+"JDO.jdo"; + } + + public void generateFromClass(Writer output, ObjectModelClass clazz) + throws IOException { + + // Consider only entities, return immediately if not an entity + if (! Util.isEntity(clazz)) return; + +// ------------- XML header + /*{ + +}*/ + +// ------------- JDO start +/*{ + + + JDO"}*/ + } +// if(! hasSuperClass){ +///*{ persistence-capable-superclass="org.codelutin.topia.persistence.jdo.AbstractJDOEntity"}*/ +// } +if(hasSuperClass){ +/*{>}*/ +}else{ + if(isTJDO()){ + // TJDO doesn't support Application identity + /*{>}*/ + }else{ + /*{ identity-type="application" objectid-class="org.codelutin.topia.TopiaId">}*/ + } +/*{ + primary-key="true"<%}%>> + + + + + + + + + + +}*/ +} + +// ------------- Fields declaration + // Iterate on each attribute to generate fields declarations + for (Iterator i = clazz.getAttributes().iterator(); i.hasNext();) { + ObjectModelAttribute attribute = (ObjectModelAttribute) i.next(); + ObjectModelClassifier classifier = attribute.getClassifier(); +/*{ + +}*/ + if (Util.isNMultiplicity(attribute)) { + if(classifier != null){ +/*{ + JDO"> + + + +}*/ + }else{ +/*{ + + + +}*/ + + } + } else if ("java.lang.String".equals(attribute.getType())) { +/*{ + }*/ + } +/*{ + +}*/ + } + +// ------------- JDO end +/*{ + + + +}*/ + + } + + public String getFilenameForInterface(ObjectModelInterface interfacez) { + return (interfacez.getPackageName()+".persistence.jdo.").replace('.', File.separatorChar)+interfacez.getName()+"JDO.jdo"; + } + + public void generateFromInterface( + Writer output, + ObjectModelInterface interfacez) + throws IOException { + +// ------------- XML header +/*{ + +}*/ + +// ------------- JDO start +/*{ + + + + + +}*/ + + } + +} // ObjectModelToJDOEntityMetaDataGenerator + Index: topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToPersistenceHelperPropertiesGenerator.java diff -u /dev/null topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToPersistenceHelperPropertiesGenerator.java:1.1 --- /dev/null Fri Aug 6 17:48:58 2004 +++ topia/src/java/org/codelutin/topia/generators/jdo/ObjectModelToPersistenceHelperPropertiesGenerator.java Fri Aug 6 17:48:52 2004 @@ -0,0 +1,89 @@ +/* *##% + * Copyright (C) 2002, 2003 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +/* * + * ObjectModelToPersistenceHelperPropertiesGenerator.java + * + * Created: 6 juil. 2004 + * + * @author Benjamin Poussin + * Copyright Code Lutin + * @version $Revision: 1.1 $ + * + * Mise a jour: $Date: 2004/08/06 17:48:52 $ + * par : $Author: bpoussin $ + */ + +package org.codelutin.topia.generators.jdo; + +import java.io.IOException; +import java.io.Writer; +import java.util.Iterator; + +import org.codelutin.generator.Generator; +import org.codelutin.generator.ObjectModelGenerator; +import org.codelutin.generator.models.object.ObjectModel; +import org.codelutin.generator.models.object.ObjectModelClass; +import org.codelutin.generator.models.object.ObjectModelClassifier; +import org.codelutin.topia.generators.Util; + +public class ObjectModelToPersistenceHelperPropertiesGenerator extends ObjectModelGenerator { // ObjectModelToPersistenceHelperPropertiesGenerator + + public ObjectModelToPersistenceHelperPropertiesGenerator(){ + super(); + } + + public ObjectModelToPersistenceHelperPropertiesGenerator(Generator parent){ + super(parent); + } + + public String getFilenameForModel(ObjectModel model){ + return model.getName() + "JDOPersistenceHelper.properties"; + } + + public void generateFromModel(Writer output, ObjectModel model) throws IOException { +/*{ +# options jdo +javax.jdo.PersistenceManagerFactoryClass=<%=getProperty("javax.jdo.PersistenceManagerFactoryClass")%> +javax.jdo.option.ConnectionDriverName=org.postgresql.Driver +javax.jdo.option.ConnectionURL=jdbc:postgresql://localhost/database +javax.jdo.option.ConnectionUserName=dbuser +javax.jdo.option.ConnectionPassword=dbuser +javax.jdo.option.NontransactionalRead=true + +# specifique tjdo (triactive) +com.triactive.jdo.autoCreateTables=true + +#specifique jpox +org.jpox.autoCreateSchema=true +org.jpox.autoCreateTables=true +org.jpox.autoStartMechanism=SchemaTable + +# mapping des objets +}*/ + for(Iterator i=model.getClassifiers().iterator(); i.hasNext();){ + ObjectModelClassifier clazz = (ObjectModelClassifier)i.next(); + if(Util.isEntity(clazz)){ +/*{mapping.jdo.<%=clazz.getQualifiedName()%>=<%=clazz.getPackageName()%>.persistence.jdo.<%=clazz.getName()%>JDO +}*/ + } + } + } + +} // ObjectModelToPersistenceHelperPropertiesGenerator +