    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}