001/** 002 * GRANITE DATA SERVICES 003 * Copyright (C) 2006-2014 GRANITE DATA SERVICES S.A.S. 004 * 005 * This file is part of the Granite Data Services Platform. 006 * 007 * Granite Data Services is free software; you can redistribute it and/or 008 * modify it under the terms of the GNU Lesser General Public 009 * License as published by the Free Software Foundation; either 010 * version 2.1 of the License, or (at your option) any later version. 011 * 012 * Granite Data Services is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser 015 * General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this library; if not, write to the Free Software 019 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 020 * USA, or see <http://www.gnu.org/licenses/>. 021 */ 022package org.granite.generator.ant; 023 024import java.io.PrintWriter; 025import java.io.StringWriter; 026 027import org.apache.tools.ant.Project; 028import org.apache.tools.ant.Task; 029import org.granite.generator.Input; 030import org.granite.generator.Listener; 031import org.granite.generator.Output; 032 033/** 034 * @author Franck WOLFF 035 */ 036public class AntListener implements Listener { 037 038 private final Task task; 039 040 public AntListener(Task task) { 041 this.task = task; 042 } 043 044 @Override 045 public void generating(Input<?> input, Output<?> output) { 046 log(" Generating: " + output.getDescription() + " (" + output.getMessage() + ")", Project.MSG_INFO, null); 047 } 048 049 @Override 050 public void generating(String file, String message) { 051 log(" Generating: " + file + " (" + message + ")", Project.MSG_INFO, null); 052 } 053 054 @Override 055 public void removing(Input<?> input, Output<?> output) { 056 } 057 058 @Override 059 public void removing(String file, String message) { 060 } 061 062 @Override 063 public void skipping(Input<?> input, Output<?> output) { 064 log(" Skipping: " + output.getDescription() + " (" + output.getMessage() + ")", Project.MSG_DEBUG, null); 065 } 066 067 @Override 068 public void skipping(String file, String message) { 069 log(" Skipping: " + file + " (" + message + ")", Project.MSG_DEBUG, null); 070 } 071 072 @Override 073 public void debug(String message) { 074 log(message, Project.MSG_DEBUG, null); 075 } 076 077 @Override 078 public void debug(String message, Throwable t) { 079 log(message, Project.MSG_DEBUG, t); 080 } 081 082 @Override 083 public void info(String message) { 084 log(message, Project.MSG_INFO, null); 085 } 086 @Override 087 public void info(String message, Throwable t) { 088 log(message, Project.MSG_INFO, t); 089 } 090 091 @Override 092 public void warn(String message) { 093 log(message, Project.MSG_WARN, null); 094 } 095 @Override 096 public void warn(String message, Throwable t) { 097 log(message, Project.MSG_WARN, t); 098 } 099 100 @Override 101 public void error(String message) { 102 log(message, Project.MSG_ERR, null); 103 } 104 @Override 105 public void error(String message, Throwable t) { 106 log(message, Project.MSG_ERR, t); 107 } 108 109 private void log(String message, int level, Throwable t) { 110 if (t != null) 111 message += "\n" + getStackTrace(t); 112 task.log(message, level); 113 } 114 115 private static String getStackTrace(Throwable t) { 116 StringWriter sw = new StringWriter(); 117 PrintWriter pw = new PrintWriter(sw); 118 t.printStackTrace(pw); 119 return sw.toString(); 120 } 121}