This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository eugene. See http://git.nuiton.org/eugene.git commit bd55c40568f9325335afaa09a26be795ed19c021 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun May 24 12:58:29 2015 +0200 Use also resources to get last modified file (refs #3693) --- .../org/nuiton/eugene/plugin/GenerateMojo.java | 66 +++++++++++++++++++--- .../plugin/writer/BaseChainedFileWriter.java | 12 +++- .../writer/BaseChainedFileWriterToMemoryModel.java | 37 ++++++++++-- .../eugene/plugin/writer/XmiChainedFileWriter.java | 21 ++++--- .../main/java/org/nuiton/eugene/ModelReader.java | 26 --------- .../object/reader/AbstractObjectModelReader.java | 7 +-- .../eugene/models/state/StateModelGenerator.java | 20 ------- .../org/nuiton/eugene/writer/WriterReport.java | 26 +++++++++ 8 files changed, 140 insertions(+), 75 deletions(-) diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java index ff88360..4e600ae 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java @@ -365,6 +365,16 @@ public class GenerateMojo extends AbstractPlugin implements ChainedFileWriterCon getLog().debug(String.format("[%1$s] Will generate %2$s", entry, file)); } } + @Override + public void addResource(String entry, File file, boolean b) { + super.addResource(entry, file, b); + if (b || isVerbose()) { + getLog().info("Will copy resource " + file); + } + if (getLog().isDebugEnabled()) { + getLog().debug(String.format("[%1$s] Will copy resource %2$s", entry, file)); + } + } }; return writerReport; } @@ -534,9 +544,14 @@ public class GenerateMojo extends AbstractPlugin implements ChainedFileWriterCon models.add(writerToMemoryModel); } else { - // print phase generation result - String message = reportGeneratedFiles(writer.getWriterReport(), t0); + WriterReport writerReport = writer.getWriterReport(); + + String messageResources = reportCopiedResources(writerReport); + getLog().info(messageResources); + + String message = reportGeneratedFiles(writerReport, t0); getLog().info(message); + } } @@ -1033,16 +1048,53 @@ public class GenerateMojo extends AbstractPlugin implements ChainedFileWriterCon } protected String reportGeneratedFiles(WriterReport writerReport, long t0) { + + String result; + int nbFiles = writerReport.getFilesCount(); if (nbFiles == 0) { - return "No file generated."; + + result = "No file generated."; + + } else { + + long delay = System.nanoTime() - t0; + if (nbFiles == 1) { + result = "Generate one file in " + StringUtil.convertTime(delay) + "."; + } else { + result = "Generate " + nbFiles + " files in " + StringUtil.convertTime(delay) + "."; + } + } - long delay = System.nanoTime() - t0; - if (nbFiles == 1) { - return "Generate one file in " + StringUtil.convertTime(delay) + "."; + return result; + + } + + protected String reportCopiedResources(WriterReport writerReport) { + + String result; + + int nbResources = writerReport.getResourcesCount(); + + if (nbResources == 0) { + result = "No resources copied."; + } else { + if (nbResources == 1) { + result = "One resource copied."; + } else { + result = nbResources + " resources copied."; + } + +// int nbFiles = writerReport.getFilesCount(); +// if (nbFiles == 0) { +// result += " (will regenerate all files)."; +// } } - return "Generate " + nbFiles + " files in " + StringUtil.convertTime(delay) + "."; + + return result; + } + } diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriter.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriter.java index d3f0e9b..8ca67b4 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriter.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriter.java @@ -294,9 +294,19 @@ public abstract class BaseChainedFileWriter extends AbstractChainedFileWriter { } if (overwrite) { + + getWriterReport().addResource(getClass().getName(), out, configuration.isVerbose()); FileUtils.copyFile(in, out); + } else { - FileUtils.copyFileIfModified(in, out); + + if (out.lastModified() < in.lastModified()) { + + getWriterReport().addResource(getClass().getName(), out, configuration.isVerbose()); + FileUtils.copyFile(in, out); + + } + } } } diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java index f8b8781..47b6a29 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriterToMemoryModel.java @@ -31,6 +31,7 @@ import org.nuiton.eugene.writer.ChainedFileWriterToMemoryModel; import java.io.File; import java.io.IOException; +import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -59,7 +60,7 @@ public abstract class BaseChainedFileWriterToMemoryModel extends BaseChainedFile protected Model model; - protected long lastModifiedSource; + protected File lastModifiedFile; protected File outputDirectory; @@ -79,8 +80,9 @@ public abstract class BaseChainedFileWriterToMemoryModel extends BaseChainedFile return model; } + @Override public long getLastModifiedSource() { - return lastModifiedSource; + return lastModifiedFile == null ? 0 : lastModifiedFile.lastModified(); } @Override @@ -191,7 +193,13 @@ public abstract class BaseChainedFileWriterToMemoryModel extends BaseChainedFile Set<File> modelFiles = new HashSet<File>(); for (List<File> files : filesByRoot.values()) { modelFiles.addAll(files); + setLastModifiedSource(files); + } + + for (List<File> files : resourcesByFile.values()) { + setLastModifiedSource(files); } + File[] filesToRead = modelFiles.toArray(new File[modelFiles.size()]); if (configuration.isVerbose()) { @@ -201,10 +209,31 @@ public abstract class BaseChainedFileWriterToMemoryModel extends BaseChainedFile // read memory model from all files models model = getModelReader().read(filesToRead); - // get the last modified source timestamp from reader - lastModifiedSource = getModelReader().getLastModifiedSource(); + if (configuration.isVerbose()) { + + getLog().info("Last modified file: " + lastModifiedFile + " - " + new Date(getLastModifiedSource())); + + } // set the ouput directory outputDirectory = outputDir; } + + protected void setLastModifiedSource(Iterable<File> files) { + + for (File file : files) { + + if (file.lastModified() > getLastModifiedSource()) { + + lastModifiedFile = file; + + if (getLog().isDebugEnabled()) { + getLog().debug("New lastModifiedFile date: " + lastModifiedFile + " : " + getLastModifiedSource()); + } + } + + } + + } + } diff --git a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiChainedFileWriter.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiChainedFileWriter.java index 914dcf7..7102fa1 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiChainedFileWriter.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiChainedFileWriter.java @@ -167,19 +167,18 @@ public class XmiChainedFileWriter extends BaseChainedFileWriter { for (File file : files) { - // lancement des traitements xsl sur les fichiers trouvés - // dans le repertoire - boolean reacted = actionXsl(configuration, - outputDirectory, - inputDirectory, - file + // lancement des traitements xsl sur les fichiers trouvés dans le repertoire + actionXsl(configuration, + outputDirectory, + inputDirectory, + file ); - if (!reacted) { - - // file was not treated, nothing else to do - continue; - } +// if (!reacted) { +// +// // file was not treated, nothing else to do +// continue; +// } // copy resources associated with the file copyResources(configuration, diff --git a/eugene/src/main/java/org/nuiton/eugene/ModelReader.java b/eugene/src/main/java/org/nuiton/eugene/ModelReader.java index aa506e8..0cb92f9 100644 --- a/eugene/src/main/java/org/nuiton/eugene/ModelReader.java +++ b/eugene/src/main/java/org/nuiton/eugene/ModelReader.java @@ -22,8 +22,6 @@ package org.nuiton.eugene; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.Model; import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider; import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider; @@ -42,11 +40,6 @@ import java.io.IOException; */ public abstract class ModelReader<M extends Model> { - private static final Log log = LogFactory.getLog(ModelReader.class); - - /** Date of the las modification of any source files. */ - protected long lastModifiedSource; - /** * A verbose flag to see more things. * @@ -110,25 +103,6 @@ public abstract class ModelReader<M extends Model> { this.strictLoading = strictLoading; } - protected void setLastModifiedSource(File... files) { - for (File file : files) { - if (file.lastModified() > getLastModifiedSource()) { - lastModifiedSource = file.lastModified(); - - if (log.isDebugEnabled()) { - log.debug("source date: " + lastModifiedSource - + " files[i] date: " + file.lastModified() + - "(" + file + ")"); - } - } - } - } - - /** @return the last modified file source (says the newer incoming file) */ - public long getLastModifiedSource() { - return lastModifiedSource; - } - /** * Read files to produce a memory model. * diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java index c1299cb..3efcb10 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/reader/AbstractObjectModelReader.java @@ -57,7 +57,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -97,11 +96,6 @@ public abstract class AbstractObjectModelReader extends ModelReader<ObjectModel> protected abstract void readFileToModel(File file, ObjectModel model) throws IOException; protected void beforeReadFile(File... files) { - setLastModifiedSource(files); - if (log.isDebugEnabled()) { - log.debug("LastModifiedSource = " + getLastModifiedSource() + - " for file " + Arrays.toString(files)); - } if (tagValueDefinitionProvider == null) { if (log.isDebugEnabled()) { @@ -115,6 +109,7 @@ public abstract class AbstractObjectModelReader extends ModelReader<ObjectModel> } setStereotypeDefinitionProvider(StereotypeDefinitionProviders.newProvider(getClass().getClassLoader(), false)); } + } @Override diff --git a/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelGenerator.java b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelGenerator.java index 5e686e9..8bd1a52 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelGenerator.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelGenerator.java @@ -71,26 +71,6 @@ public class StateModelGenerator extends AbstractGenerator<StateModel> { super(parent); } -// /* -// * @see org.nuiton.eugene.Generator#generate(java.io.File[], java.io.File) -// */ -// @Override -// @Deprecated -// public void generate(File[] files, File destDir) { -// -// StateModelReader reader = new StateModelReader(); -// StateModel stateModel = reader.read(files); -// setLastModifiedSource(reader.getLastModifiedSource()); -// -// // generate code -// try { -// applyTemplate(stateModel, destDir); -// } catch (IOException e) { -// log.warn("Can't generate code for files", e); -// } -// } - - /** * Par défaut, appel {@link #generateFromModel(MonitorWriter , StateModel)} pour le * model et {@link #generateFromState(Writer,StateModelState)} pour tous les diff --git a/eugene/src/main/java/org/nuiton/eugene/writer/WriterReport.java b/eugene/src/main/java/org/nuiton/eugene/writer/WriterReport.java index c610dee..9e291f9 100644 --- a/eugene/src/main/java/org/nuiton/eugene/writer/WriterReport.java +++ b/eugene/src/main/java/org/nuiton/eugene/writer/WriterReport.java @@ -37,6 +37,8 @@ public class WriterReport { protected Map<String, List<File>> datas; + protected Map<String, List<File>> resources; + public Map<String, List<File>> getDatas() { if (datas == null) { datas = new TreeMap<String, List<File>>(); @@ -44,6 +46,13 @@ public class WriterReport { return datas; } + public Map<String, List<File>> getResources() { + if (resources== null) { + resources= new TreeMap<String, List<File>>(); + } + return resources; + } + public void addFile(String entry, File file, boolean verbose) { List<File> files = getDatas().get(entry); if (files == null) { @@ -53,6 +62,15 @@ public class WriterReport { files.add(file); } + public void addResource(String entry, File file, boolean verbose) { + List<File> files = getResources().get(entry); + if (files == null) { + files = new ArrayList<File>(); + getResources().put(entry, files); + } + files.add(file); + } + public int getFilesCount() { int tot = 0; for (List<File> files : getDatas().values()) { @@ -60,4 +78,12 @@ public class WriterReport { } return tot; } + + public int getResourcesCount() { + int tot = 0; + for (List<File> files : getResources().values()) { + tot += files.size(); + } + return tot; + } } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.