Package com.dianping.cat.report.page.model.spi.internal

Source Code of com.dianping.cat.report.page.model.spi.internal.BaseHistoricalModelService

package com.dianping.cat.report.page.model.spi.internal;

import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;

import com.dianping.cat.ServerConfigManager;
import com.dianping.cat.message.Message;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.service.ModelRequest;
import com.dianping.cat.service.ModelResponse;

public abstract class BaseHistoricalModelService<T> extends ModelServiceWithCalSupport implements ModelService<T>,
      Initializable {
  private boolean m_localMode = true;

  private String m_name;

  public BaseHistoricalModelService(String name) {
    m_name = name;
  }

  protected abstract T buildModel(ModelRequest request) throws Exception;

  @Override
  public String getName() {
    return m_name;
  }

  @Override
  public void initialize() throws InitializationException {
    ServerConfigManager manager = lookup(ServerConfigManager.class);

    m_localMode = manager.isLocalMode();
  }

  @Override
  public ModelResponse<T> invoke(ModelRequest request) {
    ModelResponse<T> response = new ModelResponse<T>();
    Transaction t = newTransaction("ModelService", getClass().getSimpleName());
    t.addData("thread", Thread.currentThread());

    try {
      T model = buildModel(request);

      response.setModel(model);
      t.setStatus(Message.SUCCESS);
    } catch (Exception e) {
      logError(e);
      t.setStatus(e);
      response.setException(e);
    } finally {
      t.complete();
    }

    return response;
  }

  @Override
  public boolean isEligable(ModelRequest request) {
    return request.getPeriod().isHistorical();
  }

  protected boolean isLocalMode() {
    return m_localMode;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder(64);

    sb.append(getClass().getSimpleName()).append('[');
    sb.append("name=").append(m_name).append(']');

    return sb.toString();
  }
}
TOP

Related Classes of com.dianping.cat.report.page.model.spi.internal.BaseHistoricalModelService

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.