001// Copyright 2007 by Basil Vandegriend.  All rights reserved.
002package com.basilv.envgen;
003
004import java.io.IOException;
005import java.io.Writer;
006import java.util.Map;
007
008import freemarker.template.TemplateModelException;
009import 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 */
015public 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}