/**
*
*/
package com.thinkbiganalytics.metadata.core.sla.feed;
/*-
* #%L
* thinkbig-metadata-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 com.thinkbiganalytics.metadata.api.sla.DatasourceUpdatedSinceFeedExecuted;
import com.thinkbiganalytics.metadata.sla.api.AssessmentResult;
import com.thinkbiganalytics.metadata.sla.api.Metric;
import com.thinkbiganalytics.metadata.sla.spi.MetricAssessmentBuilder;
import java.io.Serializable;
/**
*
*/
public class DatasourceUpdatedSinceFeedExecutedAssessor extends MetadataMetricAssessor<DatasourceUpdatedSinceFeedExecuted> {
@Override
public boolean accepts(Metric metric) {
return metric instanceof DatasourceUpdatedSinceFeedExecuted;
}
@Override
public void assess(DatasourceUpdatedSinceFeedExecuted metric,
MetricAssessmentBuilder<Serializable> builder) {
builder
.metric(metric)
.message("This metric is no longer supported")
.result(AssessmentResult.FAILURE);
// FeedProvider fPvdr = getFeedProvider();
// DatasourceProvider dsPvdr = getDatasetProvider();
// DataOperationsProvider opPvdr = getDataOperationsProvider();
// Collection<Feed> feeds = fPvdr.getFeeds(fPvdr.feedCriteria().name(metric.getFeedName()));
// List<Datasource> datasources = dsPvdr.getDatasources(dsPvdr.datasetCriteria().name(metric.getDatasourceName()).limit(1));
//
// builder.metric(metric);
//
// if (! feeds.isEmpty() && ! datasources.isEmpty()) {
// Feed feed = feeds.iterator().next();
// Datasource datasource = datasources.get(0);
// List<DataOperation> feedOps = opPvdr.getDataOperations(opPvdr.dataOperationCriteria()
// .feed(feed.getId())
// .state(State.SUCCESS));
// List<DataOperation> datasourceOps = opPvdr.getDataOperations(opPvdr.dataOperationCriteria()
// .dataset(datasource.getId())
// .state(State.SUCCESS));
// ArrayList<Dataset<Datasource, ChangeSet>> result = new ArrayList<>();
//
// // If the feed we are checking has never run then it can't have run before the "since" feed.
// if (datasourceOps.isEmpty()) {
// builder
// .result(AssessmentResult.FAILURE)
// .message("The dependent datasource has never been updated: " + datasource.getName());
// } else {
// DateTime datasourceTime = datasourceOps.iterator().next().getStopTime();
//
// if (feedOps.isEmpty()) {
// // If the datasource has been updated at least once and feed has never executed then this condition is true.
// // Collects any datasource changes that have occurred since the feed last ran.
// // Returns the highest found incompleteness factor.
// int incompleteness = collectChangeSetsSince(result, datasourceOps, new DateTime(1));
//
// builder
// .result(incompleteness > 0 ? AssessmentResult.WARNING : AssessmentResult.SUCCESS)
// .message("The datasource has updated yet the feed has never been executed")
// .data(result);
// } else {
// DateTime feedTime = feedOps.iterator().next().getStopTime();
//
// if (datasourceTime.isBefore(feedTime)) {
// builder
// .result(AssessmentResult.FAILURE)
// .message("The datasource has not been updated since " + feedTime);
// } else {
// // Collects any datasource changes that have occurred since the feed last ran.
// // Returns the highest found incompleteness factor.
// int incompleteness = collectChangeSetsSince(result, datasourceOps, feedTime);
//
// builder
// .result(incompleteness > 0 ? AssessmentResult.WARNING : AssessmentResult.SUCCESS)
// .message("There have been " + result.size() + " change sets produced since " + feedTime)
// .data(result);
// }
// }
// }
// }
}
}