/*
* Copyright 2015-2017 Hewlett-Packard Enterprise Development Company, L.P.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
*/
package com.hp.autonomy.frontend.find.core.configuration;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import com.hp.autonomy.frontend.configuration.ConfigException;
import com.hp.autonomy.frontend.configuration.validation.OptionalConfigurationComponent;
import lombok.Data;
import lombok.Setter;
import lombok.experimental.Accessors;
@JsonDeserialize(builder = SavedSearchConfig.Builder.class)
@Data
public class SavedSearchConfig implements OptionalConfigurationComponent<SavedSearchConfig> {
private final Boolean pollForUpdates;
private final Integer pollingInterval;
private SavedSearchConfig(final Builder builder) {
pollForUpdates = builder.pollForUpdates;
pollingInterval = builder.pollingInterval;
}
@Override
public SavedSearchConfig merge(final SavedSearchConfig savedSearchConfig) {
return savedSearchConfig != null ?
new SavedSearchConfig.Builder()
.setPollForUpdates(pollForUpdates == null ? savedSearchConfig.pollForUpdates : pollForUpdates)
.setPollingInterval(pollingInterval == null ? savedSearchConfig.pollingInterval : pollingInterval)
.build()
: this;
}
@Override
public void basicValidate(final String section) throws ConfigException {
if(pollForUpdates != null && pollForUpdates && (pollingInterval == null || pollingInterval <= 0)) {
throw new ConfigException("Saved Searches", "Polling interval must be positive");
}
}
@Override
@JsonIgnore
public Boolean getEnabled() {
return true;
}
@Setter
@Accessors(chain = true)
@JsonPOJOBuilder(withPrefix = "set")
public static class Builder {
private Boolean pollForUpdates;
private Integer pollingInterval;
public SavedSearchConfig build() {
return new SavedSearchConfig(this);
}
}
}