<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>MtasDataLongFull.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">MTAS</a> > <a href="index.source.html" class="el_package">mtas.codec.util.collector</a> > <span class="el_source">MtasDataLongFull.java</span></div><h1>MtasDataLongFull.java</h1><pre class="source lang-java linenums">package mtas.codec.util.collector;
import java.io.IOException;
import java.util.Collections;
import java.util.SortedSet;
import org.apache.commons.lang.ArrayUtils;
import mtas.codec.util.CodecUtil;
/**
* The Class MtasDataLongFull.
*/
public class MtasDataLongFull extends MtasDataFull<Long, Double> {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 1L;
/**
* Instantiates a new mtas data long full.
*
* @param collectorType the collector type
* @param statsItems the stats items
* @param sortType the sort type
* @param sortDirection the sort direction
* @param start the start
* @param number the number
* @param subCollectorTypes the sub collector types
* @param subDataTypes the sub data types
* @param subStatsTypes the sub stats types
* @param subStatsItems the sub stats items
* @param subSortTypes the sub sort types
* @param subSortDirections the sub sort directions
* @param subStart the sub start
* @param subNumber the sub number
* @param segmentRegistration the segment registration
* @param boundary the boundary
* @throws IOException Signals that an I/O exception has occurred.
*/
public MtasDataLongFull(String collectorType, SortedSet<String> statsItems,
String sortType, String sortDirection, Integer start, Integer number,
String[] subCollectorTypes, String[] subDataTypes, String[] subStatsTypes,
SortedSet<String>[] subStatsItems, String[] subSortTypes,
String[] subSortDirections, Integer[] subStart, Integer[] subNumber,
String segmentRegistration, String boundary) throws IOException {
<span class="fc" id="L45"> super(collectorType, CodecUtil.DATA_TYPE_LONG, statsItems, sortType,</span>
sortDirection, start, number, subCollectorTypes, subDataTypes,
subStatsTypes, subStatsItems, subSortTypes, subSortDirections, subStart,
subNumber, new MtasDataLongOperations(), segmentRegistration, boundary);
<span class="fc" id="L49"> }</span>
/*
* (non-Javadoc)
*
* @see mtas.codec.util.DataCollector.MtasDataCollector#getItem(int)
*/
@Override
protected MtasDataItemLongFull getItem(int i) {
<span class="pc bpc" id="L58" title="2 of 4 branches missed."> if (i >= 0 && i < size) {</span>
<span class="fc" id="L59"> return new MtasDataItemLongFull(ArrayUtils.toPrimitive(fullValueList[i]),</span>
<span class="pc bpc" id="L60" title="1 of 2 branches missed."> hasSub() ? subCollectorListNextLevel[i] : null, getStatsItems(),</span>
sortType, sortDirection, errorNumber[i], errorList[i],
sourceNumberList[i]);
} else {
<span class="nc" id="L64"> return null;</span>
}
}
/*
* (non-Javadoc)
*
* @see mtas.codec.util.DataCollector.MtasDataCollector#add(long, long)
*/
@Override
public MtasDataCollector<?, ?> add(long valueSum, long valueN)
throws IOException {
<span class="nc" id="L76"> throw new IOException("not supported");</span>
}
/*
* (non-Javadoc)
*
* @see mtas.codec.util.DataCollector.MtasDataCollector#add(long[], int)
*/
@Override
public MtasDataCollector<?, ?> add(long[] values, int number)
throws IOException {
<span class="fc" id="L87"> MtasDataCollector<?, ?> dataCollector = add(false);</span>
<span class="fc" id="L88"> setValue(newCurrentPosition, ArrayUtils.toObject(values), number,</span>
newCurrentExisting);
<span class="fc" id="L90"> return dataCollector;</span>
}
/*
* (non-Javadoc)
*
* @see mtas.codec.util.DataCollector.MtasDataCollector#add(double, long)
*/
@Override
public MtasDataCollector<?, ?> add(double valueSum, long valueN)
throws IOException {
<span class="nc" id="L101"> throw new IOException("not supported");</span>
}
/*
* (non-Javadoc)
*
* @see mtas.codec.util.DataCollector.MtasDataCollector#add(double[], int)
*/
@Override
public MtasDataCollector<?, ?> add(double[] values, int number)
throws IOException {
<span class="nc" id="L112"> MtasDataCollector<?, ?> dataCollector = add(false);</span>
<span class="nc" id="L113"> Long[] newValues = new Long[number];</span>
<span class="nc bnc" id="L114" title="All 2 branches missed."> for (int i = 0; i < values.length; i++)</span>
<span class="nc" id="L115"> newValues[i] = (long) values[i];</span>
<span class="nc" id="L116"> setValue(newCurrentPosition, newValues, number, newCurrentExisting);</span>
<span class="nc" id="L117"> return dataCollector;</span>
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.DataCollector.MtasDataCollector#add(java.lang.String[],
* long, long)
*/
@Override
public MtasDataCollector<?, ?> add(String key, long valueSum, long valueN)
throws IOException {
<span class="nc" id="L130"> throw new IOException("not supported");</span>
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.DataCollector.MtasDataCollector#add(java.lang.String[],
* long[], int)
*/
@Override
public MtasDataCollector<?, ?> add(String key, long[] values, int number)
throws IOException {
<span class="nc bnc" id="L143" title="All 2 branches missed."> if (key != null) {</span>
<span class="nc" id="L144"> MtasDataCollector<?, ?> subCollector = add(key, false);</span>
<span class="nc" id="L145"> setValue(newCurrentPosition, ArrayUtils.toObject(values), number,</span>
newCurrentExisting);
<span class="nc" id="L147"> return subCollector;</span>
} else {
<span class="nc" id="L149"> return null;</span>
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.DataCollector.MtasDataCollector#add(java.lang.String[],
* double, long)
*/
@Override
public MtasDataCollector<?, ?> add(String key, double valueSum, long valueN)
throws IOException {
<span class="nc" id="L163"> throw new IOException("not supported");</span>
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.DataCollector.MtasDataCollector#add(java.lang.String[],
* double[], int)
*/
@Override
public MtasDataCollector<?, ?> add(String key, double[] values, int number)
throws IOException {
<span class="nc bnc" id="L176" title="All 2 branches missed."> if (key != null) {</span>
<span class="nc" id="L177"> Long[] newValues = new Long[number];</span>
<span class="nc bnc" id="L178" title="All 2 branches missed."> for (int i = 0; i < values.length; i++)</span>
<span class="nc" id="L179"> newValues[i] = (long) values[i];</span>
<span class="nc" id="L180"> MtasDataCollector<?, ?> subCollector = add(key, false);</span>
<span class="nc" id="L181"> setValue(newCurrentPosition, newValues, number, newCurrentExisting);</span>
<span class="nc" id="L182"> return subCollector;</span>
} else {
<span class="nc" id="L184"> return null;</span>
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.DataCollector.MtasDataCollector#compareForComputingSegment(
* java.lang.Number, java.lang.Number)
*/
@Override
protected boolean compareWithBoundary(Long value, Long boundary)
throws IOException {
<span class="nc bnc" id="L198" title="All 2 branches missed."> if (segmentRegistration.equals(SEGMENT_SORT_ASC)</span>
<span class="nc bnc" id="L199" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_BOUNDARY_ASC)) {</span>
<span class="nc bnc" id="L200" title="All 2 branches missed."> return value <= boundary;</span>
<span class="nc bnc" id="L201" title="All 2 branches missed."> } else if (segmentRegistration.equals(SEGMENT_SORT_DESC)</span>
<span class="nc bnc" id="L202" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_BOUNDARY_DESC)) {</span>
<span class="nc bnc" id="L203" title="All 2 branches missed."> return value >= boundary;</span>
} else {
<span class="nc" id="L205"> throw new IOException(</span>
"can't compare for segmentRegistration " + segmentRegistration);
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.DataCollector.MtasDataCollector#minimumForComputingSegment(
* java.lang.Number, java.lang.Number)
*/
@Override
protected Long lastForComputingSegment(Long value, Long boundary)
throws IOException {
<span class="nc bnc" id="L220" title="All 2 branches missed."> if (segmentRegistration.equals(SEGMENT_SORT_ASC)</span>
<span class="nc bnc" id="L221" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_BOUNDARY_ASC)) {</span>
<span class="nc" id="L222"> return Math.max(value, boundary);</span>
<span class="nc bnc" id="L223" title="All 2 branches missed."> } else if (segmentRegistration.equals(SEGMENT_SORT_DESC)</span>
<span class="nc bnc" id="L224" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_BOUNDARY_DESC)) {</span>
<span class="nc" id="L225"> return Math.min(value, boundary);</span>
} else {
<span class="nc" id="L227"> throw new IOException(</span>
"can't compute last for segmentRegistration " + segmentRegistration);
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.DataCollector.MtasDataCollector#minimumForComputingSegment(
* )
*/
@Override
protected Long lastForComputingSegment() throws IOException {
<span class="nc bnc" id="L241" title="All 2 branches missed."> if (segmentRegistration.equals(SEGMENT_SORT_ASC)</span>
<span class="nc bnc" id="L242" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_BOUNDARY_ASC)) {</span>
<span class="nc" id="L243"> return Collections.max(segmentValueTopList);</span>
<span class="nc bnc" id="L244" title="All 2 branches missed."> } else if (segmentRegistration.equals(SEGMENT_SORT_DESC)</span>
<span class="nc bnc" id="L245" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_BOUNDARY_DESC)) {</span>
<span class="nc" id="L246"> return Collections.min(segmentValueTopList);</span>
} else {
<span class="nc" id="L248"> throw new IOException(</span>
"can't compute last for segmentRegistration " + segmentRegistration);
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.DataCollector.MtasDataCollector#boundaryForComputingSegment
* ()
*/
@Override
protected Long boundaryForSegmentComputing(String segmentName)
throws IOException {
<span class="nc bnc" id="L263" title="All 2 branches missed."> if (segmentRegistration.equals(SEGMENT_SORT_ASC)</span>
<span class="nc bnc" id="L264" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_SORT_DESC)) {</span>
<span class="nc" id="L265"> Long boundary = boundaryForSegment(segmentName);</span>
<span class="nc bnc" id="L266" title="All 2 branches missed."> if (boundary == null) {</span>
<span class="nc" id="L267"> return null;</span>
} else {
<span class="nc bnc" id="L269" title="All 2 branches missed."> if (segmentRegistration.equals(SEGMENT_SORT_DESC)) {</span>
<span class="nc" id="L270"> long correctionBoundary = 0;</span>
<span class="nc bnc" id="L271" title="All 2 branches missed."> for (String otherSegmentName : segmentValueTopListLast.keySet()) {</span>
<span class="nc bnc" id="L272" title="All 2 branches missed."> if (!otherSegmentName.equals(segmentName)) {</span>
<span class="nc" id="L273"> Long otherBoundary = segmentValuesBoundary.get(otherSegmentName);</span>
<span class="nc bnc" id="L274" title="All 2 branches missed."> if (otherBoundary != null) {</span>
<span class="nc" id="L275"> correctionBoundary += Math.max(0, otherBoundary - boundary);</span>
}
}
<span class="nc" id="L278"> }</span>
<span class="nc" id="L279"> return boundary + correctionBoundary;</span>
} else {
<span class="nc" id="L281"> return boundary;</span>
}
}
} else {
<span class="nc" id="L285"> throw new IOException("can't compute boundary for segmentRegistration "</span>
+ segmentRegistration);
}
}
/*
* (non-Javadoc)
*
* @see mtas.codec.util.DataCollector.MtasDataCollector#boundaryForSegment()
*/
@Override
protected Long boundaryForSegment(String segmentName) throws IOException {
<span class="nc bnc" id="L297" title="All 2 branches missed."> if (segmentRegistration.equals(SEGMENT_SORT_ASC)</span>
<span class="nc bnc" id="L298" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_SORT_DESC)) {</span>
<span class="nc" id="L299"> Long thisLast = segmentValueTopListLast.get(segmentName);</span>
<span class="nc bnc" id="L300" title="All 2 branches missed."> if (thisLast == null) {</span>
<span class="nc" id="L301"> return null;</span>
<span class="nc bnc" id="L302" title="All 2 branches missed."> } else if (segmentRegistration.equals(SEGMENT_SORT_ASC)) {</span>
<span class="nc" id="L303"> return thisLast * segmentNumber;</span>
} else {
<span class="nc" id="L305"> return Math.floorDiv(thisLast, segmentNumber);</span>
}
} else {
<span class="nc" id="L308"> throw new IOException("can't compute boundary for segmentRegistration "</span>
+ segmentRegistration);
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.collector.MtasDataCollector#stringToBoundary(java.lang.
* String, java.lang.Integer)
*/
@Override
protected Long stringToBoundary(String boundary, Integer segmentNumber)
throws IOException {
<span class="nc bnc" id="L323" title="All 2 branches missed."> if (segmentRegistration.equals(SEGMENT_BOUNDARY_ASC)</span>
<span class="nc bnc" id="L324" title="All 2 branches missed."> || segmentRegistration.equals(SEGMENT_BOUNDARY_DESC)) {</span>
<span class="nc bnc" id="L325" title="All 2 branches missed."> if (segmentNumber == null) {</span>
<span class="nc" id="L326"> return Long.valueOf(boundary);</span>
} else {
<span class="nc" id="L328"> return Math.floorDiv(Long.parseLong(boundary), segmentNumber);</span>
}
} else {
<span class="nc" id="L331"> throw new IOException(</span>
"not available for segmentRegistration " + segmentRegistration);
}
}
/*
* (non-Javadoc)
*
* @see
* mtas.codec.util.collector.MtasDataCollector#validateSegmentBoundary(java.
* lang.Object)
*/
@Override
public boolean validateSegmentBoundary(Object o) throws IOException {
<span class="nc bnc" id="L345" title="All 2 branches missed."> if (o instanceof Long) {</span>
<span class="nc" id="L346"> return validateWithSegmentBoundary((Long) o);</span>
} else {
<span class="nc" id="L348"> throw new IOException("incorrect type");</span>
}
}
}
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.7.9.201702052155</span></div></body></html>