Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
vertigo - simple java starter Copyright (C) 2013, KleeGroup, direction.technique@kleegroup.com (http://www.kleegroup.com) KleeGroup, Centre d'affaire la Boursidiere - BP 159 - 92357 Le Plessis Robinson Cedex - France Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package io.vertigo.studio.plugins.mda;
 
 
 import java.io.File;
 import java.util.Map;
 
Génération des fichiers avec FreeMarker.

Author(s):
dchallas
 
 public final class FileGeneratorFreeMarker implements FileGenerator {
Répertoire des fichiers TOUJOURS générés Doit être renseigné dans le fichier properties [targetDir]
 
 	private final Map<StringObjectmapRoot;
 	private final String classSimpleName;
 	private final String packageName;
 	private final String fileExtention;
 	private final String templateName;
 	private final String targetGenDir;
 	private final String encoding;
 	private final Configuration configuration;

Constructeur.

Parameters:
mapRoot context
classSimpleName className
packageName Nom du package
fileExtention Extension du ficher (sql, java...)
templateName Nom du template
targetGenDir Target dir for gen files
encoding Encoding use
referenceClass ReferenceClass for ftl loading
 
 	public FileGeneratorFreeMarker(final Map<StringObjectmapRootfinal String classSimpleNamefinal String packageNamefinal String fileExtentionfinal String templateNamefinal String targetGenDirfinal String encodingfinal Class<?> referenceClass) {
 		Assertion.checkNotNull(mapRoot);
 		Assertion.checkNotNull(classSimpleName);
 		Assertion.checkNotNull(packageName);
 		Assertion.checkNotNull(fileExtention);
 		Assertion.checkNotNull(templateName);
 		Assertion.checkArgNotEmpty(targetGenDir);
 		Assertion.checkArgNotEmpty(encoding);
 		Assertion.checkNotNull(referenceClass);
 		//-----
 		this. = mapRoot;
 		this. = classSimpleName;
 		this. = packageName;
 		this. = fileExtention;
 		this. = templateName;
 		this. = targetGenDir;
 		this. = encoding;
 		 = initConfiguration(referenceClass);
 	}

Parameters:
referenceClass Class de référence du template
Returns:
Configuration de FreeMarker
 
 	private static Configuration initConfiguration(final Class<?> referenceClass) {
 		final Configuration config = new Configuration();
 		config.setSharedVariable("constToCamelCase"new TemplateMethodStringUtil());
 		setTemplateLoading(configreferenceClass);
 		return config;
 	}
 
 	private static void setTemplateLoading(final Configuration configfinal Class<?> referenceClass) {
 		config.setClassForTemplateLoading(referenceClass"");
	}

	public void generateFile(final ResultBuilder resultBuilder) {
		final File file = new File(getFileName());
		try {
			generateFile(resultBuilderfile);
catch (final Exception e) {
			throw new RuntimeException(e);
		}
	}
	private static String package2directory(final String packageName) {
		return packageName.replace('.''/').replace('\\''/');
	}
	private String getFileName() {
		final String finalTargetDir = ;
		final String currentPath = finalTargetDir + package2directory();
		return currentPath + '/' +  + ;
	}
	private void generateFile(final ResultBuilder resultBuilderfinal File file2createthrows IOExceptionTemplateException {
		// On crée le répertoire
		final File directory2create = file2create.getParentFile();
		directory2create.mkdirs();
		// Cette ligne doit se trouver avant le writer car si le fichier est
		// deja ouvert en ecriture il y a pb, on ne peut pas lire le code
		// deja existant
		final String content = buildContentFile();
		// pour optimisation de l'écriture et de la compilation,
		// on vérifie qu'on ne réécrit pas exactement la même chose que ce
		// qu'il y a déjà
		final String currentContent = FileUtil.readContentFile(file2create);
		if (content.equals(currentContent)) {
			// Les deux fichiers sont identiques
			resultBuilder.addIdenticalFile(file2create);
else {
			// Si le contenu est différent on réécrit le fichier.
			final boolean success = FileUtil.writeFile(file2createcontent);
			resultBuilder.addFileWritten(file2createsuccess);
		}
	}

Crée le contenu d'un fichier.

Returns:
Contenu du fichier
		// Si le fichier existe on le remplace par le fichier créé.
		// Si le fichier n'existe pas on en crée un.
		final StringWriter writer = new StringWriter(); // Il est inutile de fermer une StringWriter.
		// Génération du contenu du fichier.
		// Vertigo étant en UTF-8, les fichiers ftl doivent être lu en UTF-8
		final Template template = .getTemplate("UTF-8");
		template.process(writer);
		return writer.toString();
	}
New to GrepCode? Check out our FAQ X