AllMachineMerger.java 2.4 KB
Newer Older
Y
youyong205 已提交
1
package com.dianping.cat.report.page.storage.transform;
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

import com.dianping.cat.Constants;
import com.dianping.cat.consumer.storage.model.entity.Domain;
import com.dianping.cat.consumer.storage.model.entity.Operation;
import com.dianping.cat.consumer.storage.model.entity.Segment;
import com.dianping.cat.consumer.storage.model.entity.StorageReport;
import com.dianping.cat.consumer.storage.model.transform.BaseVisitor;

public class AllMachineMerger extends BaseVisitor {

	private StorageReport m_storageReport;

	private String m_currentDomain;

	private String m_currentOperation;

	public StorageReport getStorageReport() {
		return m_storageReport;
	}

	@Override
	public void visitDomain(Domain domain) {
		m_currentDomain = domain.getId();

		super.visitDomain(domain);
	}

	@Override
	public void visitOperation(Operation operation) {
		m_currentOperation = operation.getId();
		Operation to = m_storageReport.findOrCreateMachine(Constants.ALL).findOrCreateDomain(m_currentDomain)
		      .findOrCreateOperation(m_currentOperation);

		to.setCount(to.getCount() + operation.getCount());
		to.setLongCount(to.getLongCount() + operation.getLongCount());
		to.setError(to.getError() + operation.getError());
		to.setSum(to.getSum() + operation.getSum());
J
jialinsun 已提交
39
		to.setAvg(to.getCount() > 0 ? to.getSum() / to.getCount() : 0);
40 41 42 43 44 45 46 47 48 49 50 51 52

		super.visitOperation(operation);
	}

	@Override
	public void visitSegment(Segment segment) {
		Segment to = m_storageReport.findOrCreateMachine(Constants.ALL).findOrCreateDomain(m_currentDomain)
		      .findOrCreateOperation(m_currentOperation).findOrCreateSegment(segment.getId());

		to.setCount(to.getCount() + segment.getCount());
		to.setLongCount(to.getLongCount() + segment.getLongCount());
		to.setError(to.getError() + segment.getError());
		to.setSum(to.getSum() + segment.getSum());
J
jialinsun 已提交
53
		to.setAvg(to.getCount() > 0 ? to.getSum() / to.getCount() : 0);
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
	}

	@Override
	public void visitStorageReport(StorageReport storageReport) {
		m_storageReport = new StorageReport(storageReport.getId());

		m_storageReport.setName(storageReport.getName()).setType(storageReport.getType())
		      .setStartTime(storageReport.getStartTime()).setEndTime(storageReport.getEndTime());
		m_storageReport.getIds().addAll(storageReport.getIds());
		m_storageReport.getIps().addAll(storageReport.getIps());
		m_storageReport.getOps().addAll(storageReport.getOps());

		super.visitStorageReport(storageReport);
	}

}