001package org.kuali.common.util.log; 002 003import static com.google.common.base.Preconditions.checkNotNull; 004 005import org.kuali.common.util.execute.Executable; 006 007public class LoggerExecutable implements Executable { 008 009 private static final Object[] EMPTY_OBJECT_ARRAY = {}; 010 011 private final LoggerContext context; 012 private final boolean skip; 013 014 @Override 015 public void execute() { 016 if (!skip) { 017 LoggerUtils.logMsg(context.getMsg(), context.getArgs().toArray(EMPTY_OBJECT_ARRAY), context.getLogger(), context.getLevel()); 018 } 019 } 020 021 private LoggerExecutable(Builder builder) { 022 this.context = builder.context; 023 this.skip = builder.skip; 024 } 025 026 public static LoggerExecutable create(LoggerContext context) { 027 return builder(context).build(); 028 } 029 030 public static Builder builder(LoggerContext context) { 031 return new Builder(context); 032 } 033 034 public static class Builder { 035 036 // Required 037 private final LoggerContext context; 038 039 // Optional 040 private boolean skip = false; 041 042 public Builder(LoggerContext context) { 043 this.context = context; 044 } 045 046 public Builder skip(boolean skip) { 047 this.skip = skip; 048 return this; 049 } 050 051 public LoggerExecutable build() { 052 LoggerExecutable instance = new LoggerExecutable(this); 053 validate(instance); 054 return instance; 055 } 056 057 private static void validate(LoggerExecutable instance) { 058 checkNotNull(instance.context, "context may not be null"); 059 } 060 } 061 062 public LoggerContext getContext() { 063 return context; 064 } 065 066 public boolean isSkip() { 067 return skip; 068 } 069 070}