// Path: im-log-stats-project/src/main/java/net/mikaboshi/intra_mart/tools/log_stats/entity/ConcurrentRequest.java
// public class ConcurrentRequest {
// 
// 	public enum EventType {
// 
// 		/** 受信時刻 */
// 		ACCEPT_TIME,
// 
// 		/** 返信時刻 */
// 		RESPONSE_TIME;
// 	}
// 
// 	private final EventType type;
// 
// 	private final long time;
// 
// 	private int count = 0;
// 
// 	private String tenantId;
// 
// 	public ConcurrentRequest(EventType type, long time, String tenantId) {
// 		this.type = type;
// 		this.time = time;
// 		this.tenantId = tenantId;
// 	}
// 
// 	public EventType getType() {
// 		return type;
// 	}
// 
// 	public long getTime() {
// 		return time;
// 	}
// 
// 	public void setCount(int count) {
// 		this.count = count;
// 	}
// 
// 	public int getCount() {
// 		return count;
// 	}
// 
// 	/**
// 	 * テナントIDを取得する。
// 	 * @since 1.0.16
// 	 * @return
// 	 */
// 	public String getTenantId() {
// 		return tenantId;
// 	}
// }


import java.util.Date;
import java.util.List;
import net.mikaboshi.intra_mart.tools.log_stats.entity.ConcurrentRequest;
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * 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 net.mikaboshi.intra_mart.tools.log_stats.report;




/**
 * 時間分割統計
 *
 * @version 1.0.16
 * @author <a href="https://github.com/cwan">cwan</a>
 */
public class TimeSpanStatistics extends BasicStatistics {

	/**
	 * スパン開始日時
	 */
	private Date startDate = null;

	/**
	 * スパン終了日時
	 * @since 1.0.13
	 */
	private Date endDate = null;

	/**
	 * コンストラクタ
	 * @param transitionLogOnly 画面遷移ログのみ（リクエストログなし）かどうか
	 */
	public TimeSpanStatistics(boolean transitionLogOnly) {
		super(transitionLogOnly);
	}

	/**
	 * スパン開始日時を設定する。
	 * @param startDate スパン開始日時
	 */
	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}

	/**
	 * スパン開始日時を取得する。
	 * @return
	 */
	public Date getStartDate() {
		return startDate;
	}

	/**
	 * スパン終了日時を設定する。
	 * @param endDate スパン終了日時
	 */
	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}

	/**
	 * スパン終了日時を取得する。
	 * @return
	 * @since 1.0.13
	 */
	public Date getEndDate() {
		return endDate;
	}

	/**
	 * 同時リクエスト数の最大値を調べる。
	 * @param concurrentRequestList
	 * @since 1.0.13
	 */
	public void countMaxConcurrentRequest(List<ConcurrentRequest> concurrentRequestList) {

		long lStartTime = this.startDate.getTime();
		long lEndTime = this.endDate.getTime();

// Path: im-log-stats-project/src/main/java/net/mikaboshi/intra_mart/tools/log_stats/entity/ConcurrentRequest.java
// public class ConcurrentRequest {
// 
// 	public enum EventType {
// 
// 		/** 受信時刻 */
// 		ACCEPT_TIME,
// 
// 		/** 返信時刻 */
// 		RESPONSE_TIME;
// 	}
// 
// 	private final EventType type;
// 
// 	private final long time;
// 
// 	private int count = 0;
// 
// 	private String tenantId;
// 
// 	public ConcurrentRequest(EventType type, long time, String tenantId) {
// 		this.type = type;
// 		this.time = time;
// 		this.tenantId = tenantId;
// 	}
// 
// 	public EventType getType() {
// 		return type;
// 	}
// 
// 	public long getTime() {
// 		return time;
// 	}
// 
// 	public void setCount(int count) {
// 		this.count = count;
// 	}
// 
// 	public int getCount() {
// 		return count;
// 	}
// 
// 	/**
// 	 * テナントIDを取得する。
// 	 * @since 1.0.16
// 	 * @return
// 	 */
// 	public String getTenantId() {
// 		return tenantId;
// 	}
// }


// Path: im-log-stats-project/src/main/java/net/mikaboshi/intra_mart/tools/log_stats/report/TimeSpanStatistics.java
import java.util.Date;
import java.util.List;
import net.mikaboshi.intra_mart.tools.log_stats.entity.ConcurrentRequest;

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * 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 net.mikaboshi.intra_mart.tools.log_stats.report;




/**
 * 時間分割統計
 *
 * @version 1.0.16
 * @author <a href="https://github.com/cwan">cwan</a>
 */
public class TimeSpanStatistics extends BasicStatistics {

	/**
	 * スパン開始日時
	 */
	private Date startDate = null;

	/**
	 * スパン終了日時
	 * @since 1.0.13
	 */
	private Date endDate = null;

	/**
	 * コンストラクタ
	 * @param transitionLogOnly 画面遷移ログのみ（リクエストログなし）かどうか
	 */
	public TimeSpanStatistics(boolean transitionLogOnly) {
		super(transitionLogOnly);
	}

	/**
	 * スパン開始日時を設定する。
	 * @param startDate スパン開始日時
	 */
	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}

	/**
	 * スパン開始日時を取得する。
	 * @return
	 */
	public Date getStartDate() {
		return startDate;
	}

	/**
	 * スパン終了日時を設定する。
	 * @param endDate スパン終了日時
	 */
	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}

	/**
	 * スパン終了日時を取得する。
	 * @return
	 * @since 1.0.13
	 */
	public Date getEndDate() {
		return endDate;
	}

	/**
	 * 同時リクエスト数の最大値を調べる。
	 * @param concurrentRequestList
	 * @since 1.0.13
	 */
	public void countMaxConcurrentRequest(List<ConcurrentRequest> concurrentRequestList) {

		long lStartTime = this.startDate.getTime();
		long lEndTime = this.endDate.getTime();

		for (ConcurrentRequest req : concurrentRequestList) {