private void falseCountCalculate() { boolean failureCountNeedAdd = false; // 本次结果正确,观察与上次的时间差是否满足设置间隔,不满足则认为失败 if (this.currentResult) { // 如果上次状态成功,且上次间隔时间与这次间隔时间一致,但两次时间差大于设置间隔则代表有问题。此处等待将来linux端改为其他方式后,可以进行调整 if (previousInf != null && previousInf.getStatus() && previousInf.getInterval().equals(interval)) { Interval timeInterval = new Interval(new DateTime(previousInf.getRecordDate()), DateTime.now()); if (timeInterval.toDuration().getStandardMinutes() > interval) { failureCountNeedAdd = true; } } } else { // 如果上次状态成功,则失败总数要计为+1 if (previousInf != null && previousInf.getStatus()) { failureCountNeedAdd = true; } // 第一条数据即为空 else if (previousInf == null || oldFalseCount == 0) failureCountNeedAdd = true; } if (failureCountNeedAdd) this.falseCount = oldFalseCount + 1; else this.falseCount = oldFalseCount; }
public void update() { Instant now = new Instant(); TimeFrame timeFrameForInstant = findCurrentTimeFrame(now); if (timeFrameForInstant != null) { if (currentTimeFrame == null || !timeFrameForInstant.equals(currentTimeFrame)) { // timeframe changed currentTimeFrame = timeFrameForInstant; if (currentTimeFrame.getInterval().getStart().isBefore(now)) { // timeframe started in past; remaining time is less than MinRunningTime remainingMinRunningTime = Double.valueOf( new Interval(now, currentTimeFrame.getInterval().getEnd()).toDurationMillis() / 1000) .longValue(); } else { // timeframe starts in future remainingMinRunningTime = timeFrameForInstant.getMinRunningTime(); } } Interval interval = null; if (running) { if (intervalBeginn == null) { // running was set to true after interval begin interval = new Interval(statusChangedAt, now); } else { // no status change in interval interval = new Interval(intervalBeginn, now); } intervalBeginn = now; } else if (intervalBeginn != null && statusChangedAt != null) { // running was set to false after interval begin interval = new Interval(intervalBeginn, statusChangedAt); intervalBeginn = null; statusChangedAt = null; } if (interval != null) { remainingMinRunningTime = remainingMinRunningTime - Double.valueOf(interval.toDuration().getMillis() / 1000).longValue(); } } }