Package org.platformlayer.ops.jobstore

Source Code of org.platformlayer.ops.jobstore.SimpleJobLogger

package org.platformlayer.ops.jobstore;

import java.util.List;

import org.platformlayer.AppendOnlyList;
import org.platformlayer.jobs.model.JobLogExceptionInfo;
import org.platformlayer.jobs.model.JobLogLine;
import org.platformlayer.ops.log.JobLogger;
import org.platformlayer.ops.log.JobUtils;

public class SimpleJobLogger implements JobLogger {
  final AppendOnlyList<JobLogLine> lines = AppendOnlyList.create();

  public SimpleJobLogger() {
  }

  @Override
  public void logMessage(String message, List<String[]> exceptionStacks, int level) {
    JobLogExceptionInfo jobLogExceptionInfo = null;
    if (exceptionStacks != null) {
      jobLogExceptionInfo = JobUtils.buildJobLogExceptionInfo(exceptionStacks);
    }

    JobLogLine jobLogLine = new JobLogLine(System.currentTimeMillis(), level, message, jobLogExceptionInfo);
    lines.add(jobLogLine);
  }

  public Iterable<JobLogLine> getLogEntries() {
    // TODO: We might need a special iterator here that tolerates concurrent modifications
    // class AppendOnlyListIterator implements Iterator<T> {
    // final int size;
    // int position = -1;
    //
    // AppendOnlyListIterator() {
    // size = list.size();
    // }
    //
    // public boolean hasNext() {
    // if ((position + 1) < size)
    // return true;
    // return false;
    // }
    //
    // public T next() {
    // position++;
    // return list.get(position);
    // }
    //
    // public void remove() {
    // throw new UnsupportedOperationException();
    // }
    // }
    //
    //
    return lines;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    for (JobLogLine jobLogLine : this.getLogEntries()) {
      sb.append(jobLogLine.getMessage());

      JobLogExceptionInfo exception = jobLogLine.getException();

      if (exception != null) {
        List<String> infos = exception.getInfo();

        for (int i = 0; i < infos.size(); i++) {
          String infoLine = infos.get(i);
          if (i != 0) {
            sb.append('\n');
          }
          sb.append(infoLine);
        }
      }

      sb.append("\n");
    }
    return sb.toString();
  }

  @Override
  public void enterScope(Object controller) {
    String name = ControllerNameStrategy.getName(controller);
    JobLogLine line = new JobLogLine();
    line.type = JobLogLine.TYPE_ENTER_SCOPE;
    line.message = name;
    lines.add(line);
  }

  @Override
  public void exitScope() {
    JobLogLine line = new JobLogLine();
    line.type = JobLogLine.TYPE_EXIT_SCOPE;
    lines.add(line);
  }

}
TOP

Related Classes of org.platformlayer.ops.jobstore.SimpleJobLogger

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.