001 // Copyright 2007 by Basil Vandegriend. All rights reserved.
002 package com.basilv.envgen;
003
004 import java.io.IOException;
005 import java.io.Writer;
006 import java.util.Map;
007
008 import freemarker.template.TemplateModelException;
009 import freemarker.template.TemplateTransformModel;
010
011 /**
012 * Template to skip generation of the target file.
013 * If the target file exists previously it is deleted.
014 */
015 public class SkipGenerationTransform implements TemplateTransformModel {
016
017
018 private static final ThreadLocal skipGenerationFlag = new ThreadLocal();
019
020 public static boolean isSkipGenerationAndResetFlag() {
021 boolean isSkipGen = Boolean.TRUE.equals(skipGenerationFlag.get());
022 skipGenerationFlag.set(null);
023 return isSkipGen;
024 }
025
026
027 /**
028 * Must have a default no-arg constructor.
029 */
030 public SkipGenerationTransform() {
031 }
032
033
034 public Writer getWriter(Writer out, Map args) throws TemplateModelException {
035 SkipGenerationTransform.skipGenerationFlag.set(Boolean.TRUE);
036 // Return a do-nothing writer.
037 return new Writer() {
038 public void write(char cbuf[], int off, int len) {
039 }
040
041 public void flush() throws IOException {
042 }
043
044 public void close() throws IOException {
045 }
046 };
047
048 }
049
050
051 }