1 package no.uio.ifi.refaktor.utils;
4 import java.io.IOException;
5 import java.io.PrintStream;
6 import java.io.PrintWriter;
7 import java.io.StringWriter;
9 import java.util.logging.FileHandler;
10 import java.util.logging.Handler;
11 import java.util.logging.Level;
12 import java.util.logging.Logger;
13 import java.util.logging.SimpleFormatter;
15 import org.eclipse.ltk.core.refactoring.Change;
16 import org.eclipse.ltk.core.refactoring.CompositeChange;
17 import org.eclipse.text.edits.TextEdit;
19 public class RefaktorDebug {
25 private static boolean debug = true;
26 private static PrintStream out;
27 private static Logger logger;
29 public static void initialize() {
31 debug = Boolean.parseBoolean(System.getProperty("refaktor.debug", "true"));
32 println("(Refaktor Debug active)");
35 public static void println() {
39 public static void println(Object o) {
40 println(o.toString());
43 public static void print(Object o) {
47 public static void println(Object caller, Object object) {
48 println(caller, object.toString());
51 public static void println(Object caller, String string) {
52 println(caller.getClass().getSimpleName() + ":\n" + string);
55 public static void println(String str) {
62 public static void print(String str) {
69 public static void printChange(Change change, Set<Change> s, int i) {
74 println("Level " + i++ + ": " + change.getClass());
75 CompositeChange c = (CompositeChange) change.getAdapter(CompositeChange.class);
77 for(Change ch: c.getChildren()) {
79 printChange(ch, s, i);
84 public static void printTextEdit(TextEdit edit, int i) {
88 println(i++ + ": " + edit.getClass());
89 for (TextEdit t: edit.getChildren())
94 public static void log(Throwable t) {
95 StringWriter stringWriter = new StringWriter();
96 t.printStackTrace(new PrintWriter(stringWriter));
97 log(stringWriter.toString());
100 public static void log(String string) {
101 logger.log(Level.SEVERE, string);
104 private static void createLogger() {
105 logger = Logger.getLogger(RefaktorDebug.class.getCanonicalName());
106 logger.setLevel(Level.ALL);
108 File homeDirectory = new File(System.getProperty("user.home"));
109 File defaultDirectory = new File(homeDirectory, "no.uio.ifi.refaktor.logs");
111 File loggingDirectory = new File(System.getProperty("refaktor.logs", defaultDirectory.getAbsolutePath()));
113 if (!loggingDirectory.exists())
114 loggingDirectory.mkdir();
117 Handler handler = new FileHandler(loggingDirectory.getAbsolutePath() + "/no.uio.ifi.refaktor.%g.log", true);
118 handler.setFormatter(new SimpleFormatter());
119 logger.addHandler(handler);
120 } catch (SecurityException e) {
122 } catch (IOException e) {