package com.thinkbiganalytics.jobrepo.query.model;
/*-
* #%L
* thinkbig-job-repository-core
* %%
* Copyright (C) 2017 ThinkBig Analytics
* %%
* 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.
* #L%
*/
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
/**
* Feed Status built from the transform class
*
* @see com.thinkbiganalytics.jobrepo.query.model.transform.FeedModelTransform
*/
public class DefaultFeedStatus implements FeedStatus {
private List<FeedHealth> feeds;
private Integer healthyCount = 0;
private Integer failedCount = 0;
private float percent;
private List<FeedHealth> healthyFeeds;
private List<FeedHealth> failedFeeds;
private List<FeedSummary> feedSummary;
public DefaultFeedStatus(List<FeedHealth> feeds) {
this.feeds = feeds;
this.populate();
}
public DefaultFeedStatus() {
}
@Override
public void populate() {
this.healthyFeeds = new ArrayList<FeedHealth>();
this.failedFeeds = new ArrayList<FeedHealth>();
this.feedSummary = new ArrayList<>();
healthyCount = 0;
failedCount = 0;
percent = 0f;
if (feeds != null && !feeds.isEmpty()) {
for (FeedHealth feedHealth : feeds) {
if (feedHealth.isHealthy()) {
healthyCount++;
healthyFeeds.add(feedHealth);
} else {
failedCount++;
failedFeeds.add(feedHealth);
}
this.feedSummary.add(new DefaultFeedSummary(feedHealth));
}
percent = (float) healthyCount / feeds.size();
}
if (percent > 0f) {
DecimalFormat twoDForm = new DecimalFormat("##.##");
this.percent = Float.valueOf(twoDForm.format(this.percent)) * 100;
}
}
@Override
public List<FeedHealth> getFeeds() {
return feeds;
}
@Override
public void setFeeds(List<FeedHealth> feeds) {
this.feeds = feeds;
}
@Override
public Integer getHealthyCount() {
return healthyCount;
}
@Override
public void setHealthyCount(Integer healthyCount) {
this.healthyCount = healthyCount;
}
@Override
public Integer getFailedCount() {
return failedCount;
}
@Override
public void setFailedCount(Integer failedCount) {
this.failedCount = failedCount;
}
@Override
public Float getPercent() {
return percent;
}
@Override
public void setPercent(Integer percent) {
this.percent = percent;
}
@Override
public List<FeedHealth> getHealthyFeeds() {
return healthyFeeds;
}
@Override
public void setHealthyFeeds(List<FeedHealth> healthyFeeds) {
this.healthyFeeds = healthyFeeds;
}
@Override
public List<FeedHealth> getFailedFeeds() {
return failedFeeds;
}
@Override
public void setFailedFeeds(List<FeedHealth> failedFeeds) {
this.failedFeeds = failedFeeds;
}
@Override
public List<FeedSummary> getFeedSummary() {
return feedSummary;
}
@Override
public void setFeedSummary(List<FeedSummary> feedSummary) {
this.feedSummary = feedSummary;
}
}