r875 - in trunk/eugene/src/main/java/org/nuiton/eugene: . java models/object
Author: fdesbois Date: 2010-04-28 10:41:45 +0200 (Wed, 28 Apr 2010) New Revision: 875 Log: - Evo #553 : Add neutral JavaInterfaceTransformer from ToPIA - Clean headers Added: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java trunk/eugene/src/main/java/org/nuiton/eugene/Template.java trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelTransformer.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java 2010-04-27 16:25:21 UTC (rev 874) +++ trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java 2010-04-28 08:41:45 UTC (rev 875) @@ -28,20 +28,22 @@ import org.nuiton.eugene.models.Model; import java.io.*; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * AbstractGenerator * * Created: 28 oct. 2009 * - * @param <M> - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : */ + * @param <M> type of Model + * + * @author fdesbois <fdesbois@codelutin.com> + */ public abstract class AbstractGenerator<M extends Model> extends Template<M> { + private static final Log log = LogFactory.getLog(AbstractGenerator.class); + protected AbstractGenerator<M> parent; public AbstractGenerator() { Modified: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java 2010-04-27 16:25:21 UTC (rev 874) +++ trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java 2010-04-28 08:41:45 UTC (rev 875) @@ -31,6 +31,8 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * Abstract meta transformer which contains some templates to apply to an @@ -40,14 +42,16 @@ * * Created: 20 déc. 2009 * - * @author Tony Chemit <chemit@codelutin.com> Copyright Code Lutin - * @version $Revision$ - * <p/> - * Mise a jour: $Date$ par : - * * @since 2.0.0 + * @param <M> type of Model + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 2.0.0 */ public abstract class AbstractMetaTransformer<M extends Model> extends AbstractGenerator<M> { + private static final Log log = + LogFactory.getLog(AbstractMetaTransformer.class); + private final Class<? extends Template<M>>[] transformers; public AbstractMetaTransformer( Modified: trunk/eugene/src/main/java/org/nuiton/eugene/Template.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/Template.java 2010-04-27 16:25:21 UTC (rev 874) +++ trunk/eugene/src/main/java/org/nuiton/eugene/Template.java 2010-04-28 08:41:45 UTC (rev 875) @@ -45,14 +45,9 @@ * @param <M> Model associated to the generator (input model) * * @author Cedric Pineau <pineau@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : */ + */ public abstract class Template<M extends Model> { - protected static Log log = LogFactory.getLog(Template.class); - public static final String PROP_DEFAULT_PACKAGE = "defaultPackage"; public static final String PROP_OVERWRITE = "overwrite"; public static final String PROP_ENCODING = "encoding"; @@ -61,7 +56,6 @@ public static final String PROP_EXCLUDE_TEMPLATES = "excludeTemplates"; protected Properties properties = new Properties(); - //protected boolean overwrite = true; protected List<String> excludeTemplates; @@ -71,12 +65,7 @@ * If {@code null} or empty, generate all packages. */ protected List<String> generatedPackages; - -// protected String encoding; - /** date de derniere modification de la source la plus recente */ - //protected long lastModifiedSource = 0; - /** Model */ protected M model; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2010-04-27 16:25:21 UTC (rev 874) +++ trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2010-04-28 08:41:45 UTC (rev 875) @@ -38,11 +38,9 @@ * @param <I> input model to transform * @param <O> output model transformed * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : */ -public abstract class Transformer<I extends Model, O extends Model> extends Template<I> { + */ +public abstract class Transformer<I extends Model, O extends Model> + extends Template<I> { /** * Output generator, to generate files from Output model. Added: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java 2010-04-28 08:41:45 UTC (rev 875) @@ -0,0 +1,101 @@ +/* + * #%L + * EUGene :: EUGene + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2004 - 2010 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 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 Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +package org.nuiton.eugene.java; + +import java.util.Iterator; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + +/*{generator option: parentheses = false}*/ +/*{generator option: writeString = +}*/ + +/** + * JavaInterfaceTransformer generates simple interfaces for Java language. + * + * Created: 7 nov. 2009 + * + * @author fdesbois <fdesbois@codelutin.com> + * @since 2.0.2 + * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.java.JavaInterfaceTransformer" + */ +public class JavaInterfaceTransformer extends ObjectModelTransformerToJava { + + private static final Log log = + LogFactory.getLog(JavaInterfaceTransformer.class); + + @Override + public void transformFromInterface(ObjectModelInterface interfacez) { + // Can only generate an interface with no stereotypes + if (!interfacez.getStereotypes().isEmpty()) { + return; + } + + ObjectModelInterface resultInterface = createInterface( + interfacez.getName(), interfacez.getPackageName()); + + if (log.isDebugEnabled()) { + log.debug("generate interface " + + resultInterface.getQualifiedName()); + } + + // extend interface + Iterator<ObjectModelInterface> it = + interfacez.getInterfaces().iterator(); + + if (it.hasNext()) { + ObjectModelInterface extend = it.next(); + addInterface(resultInterface, extend.getQualifiedName()); + } + + // constant attributes + for (ObjectModelAttribute attr : interfacez.getAttributes()) { + // only static attribut with value + if (!attr.isStatic() && + StringUtils.isNotEmpty(attr.getDefaultValue())) { + addConstant(resultInterface, attr.getName(), attr.getType(), + attr.getDefaultValue(), ObjectModelModifier.PUBLIC); + } + } + + // interface operations + for (ObjectModelOperation op : interfacez.getOperations()) { + ObjectModelOperation resultOp = addOperation(resultInterface, + op.getName(), op.getReturnType()); + for (ObjectModelParameter param : op.getParameters()) { + addParameter(resultOp, param.getType(), param.getName()); + } + for (String exception : op.getExceptions()) { + addException(resultOp, exception); + } + } + } +} Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-04-27 16:25:21 UTC (rev 874) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-04-28 08:41:45 UTC (rev 875) @@ -31,15 +31,10 @@ import org.nuiton.eugene.models.object.*; /** - * OM2JavaTransformer - * <p/> * Created: 28 oct. 2009 * - * @author fdesbois - * @version $Revision$ - * <p/> - * Mise a jour: $Date$ - * par : */ + * @author fdesbois <fdesbois@codelutin.com> + */ public abstract class ObjectModelTransformerToJava extends ObjectModelTransformer<ObjectModel> { private static final Log log = Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelTransformer.java 2010-04-27 16:25:21 UTC (rev 874) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelTransformer.java 2010-04-28 08:41:45 UTC (rev 875) @@ -31,19 +31,14 @@ import java.util.Collection; /** - * ObjectModelTransformer - * <p/> - * Created: 28 oct. 2009 - * - * * L'initialisation du modèle de sortie et du générateur de sortie associée, * se fait dans la superclass grâce à la méthode init. * - * @author fdesbois - * @version $Revision$ - * <p/> - * Mise a jour: $Date$ - * par : * @param <O> + * @param <O> + * + * Created: 28 oct. 2009 + * + * @author fdesbois <fdesbois@codelutin.com> */ public abstract class ObjectModelTransformer<O extends Model> extends Transformer<ObjectModel, O> {
participants (1)
-
fdesbois@users.nuiton.org