Package com.google.gdt.eclipse.designer.hosted.tdz.log

Source Code of com.google.gdt.eclipse.designer.hosted.tdz.log.LogSupport

/*******************************************************************************
* Copyright 2011 Google Inc. All Rights Reserved.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
package com.google.gdt.eclipse.designer.hosted.tdz.log;

import java.io.File;
import java.io.FilterWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;

import org.apache.commons.lang.StringUtils;
import org.eclipse.jdt.core.IJavaProject;

import com.google.gdt.eclipse.designer.hosted.ILogSupport;
import com.google.gdt.eclipse.designer.hosted.log.RotatingFileWriter;
import com.google.gdt.eclipse.designer.hosted.tdz.HostedModeSupport;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.dev.util.log.AbstractTreeLogger;
import com.google.gwt.dev.util.log.PrintWriterTreeLogger;

/**
* Implementation of {@link ILogSupport} for GWT.
*
* @author mitin_aa
*/
public final class LogSupport implements ILogSupport {
  private static final String ERROR_TYPE_LABEL = "[" + TreeLogger.ERROR.getLabel() + "]";
  private static final String LINE_SEPARATOR = System.getProperty("line.separator");
  private static final TreeLogger.Type[] TREE_LOGGER_TYPES = {
      TreeLogger.ERROR,
      TreeLogger.WARN,
      TreeLogger.INFO,
      TreeLogger.TRACE,
      TreeLogger.DEBUG,
      TreeLogger.SPAM,
      TreeLogger.ALL};
  private final PrintWriter m_writer;
  private final TreeLogger m_logger;
  private String m_errors = "";
  ////////////////////////////////////////////////////////////////////////////
  //
  // Constructor
  //
  ////////////////////////////////////////////////////////////////////////////
  public LogSupport(TreeLogger.Type type, IJavaProject javaProject) throws Exception {
    if ("true".equalsIgnoreCase(System.getProperty(WBP_TESTING_TIME))) {
      m_logger = TreeLogger.NULL;
      m_writer = null;
    } else {
      // prepare directory to write log files to
      String logDir = HostedModeSupport.getTemporaryDirectoryName(javaProject);
      // prepare logger
      Writer rotatingWriter =
          RotatingFileWriter.getInstance(logDir + File.separator + ".gwt-log", 10, 3);
      m_writer = new PrintWriter(new FilterWriter(rotatingWriter) {
        private String m_buffer = new String();
        @Override
        public void write(String message, int off, int len) throws IOException {
          super.write(message, off, len);
          int eolIndex = message.indexOf(LINE_SEPARATOR);
          if (eolIndex != -1) {
            m_buffer += message.substring(0, eolIndex);
            if (m_buffer.indexOf(ERROR_TYPE_LABEL) != -1) {
              m_errors += m_buffer + LINE_SEPARATOR;
            }
            m_buffer = message.substring(eolIndex + 1);
          } else {
            m_buffer += message;
          }
        }
      });
      m_logger = new PrintWriterTreeLogger(m_writer);
      ((AbstractTreeLogger) m_logger).setMaxDetail(type);
    }
  }
  ////////////////////////////////////////////////////////////////////////////
  //
  // ILogSupport
  //
  ////////////////////////////////////////////////////////////////////////////
  /**
   * @return the {@link TreeLogger} instance.
   */
  public Object getLogger() {
    return m_logger;
  }
  public void setLogLevel(int logLevel) {
    if (m_writer != null) {
      if (logLevel >= 0 && logLevel < TREE_LOGGER_TYPES.length + 1) {
        ((AbstractTreeLogger) m_logger).setMaxDetail(TREE_LOGGER_TYPES[logLevel]);
      }
    }
  }
  public String getErrorMessages() {
    if (StringUtils.isEmpty(m_errors)) {
      return "<none>";
    }
    return m_errors;
  }
  ////////////////////////////////////////////////////////////////////////////
  //
  // Dispose
  //
  ////////////////////////////////////////////////////////////////////////////
  public void dispose() {
    if (m_writer != null) {
      m_writer.close();
    }
  }
}
TOP

Related Classes of com.google.gdt.eclipse.designer.hosted.tdz.log.LogSupport

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.