package org.ovirt.engine.core.bll.host.provider.foreman;
import java.net.MalformedURLException;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.ovirt.engine.core.common.queries.ErrataFilter;
import org.ovirt.engine.core.uutils.net.URLBuilder;
class FilteredErrataRelativeUrlBuilder {
private static final String DUMMY_ADDRESS_PREFIX = "http://DUMMY_ADDRESS_PREFIX";
private URLBuilder url;
private final ErrataFilter errataFilter;
public FilteredErrataRelativeUrlBuilder(String contentHostId,
ErrataFilter errataFilter,
String contentHostEndpoint) {
this.errataFilter = errataFilter;
url = new URLBuilder(DUMMY_ADDRESS_PREFIX, String.format(contentHostEndpoint, contentHostId));
}
public String build() {
if (errataFilter != null) {
if (CollectionUtils.isNotEmpty(errataFilter.getErrataTypes())) {
List<String> collectedTypes = errataFilter.getErrataTypes()
.stream()
.map(t -> "type = " + t.getDescription())
.collect(Collectors.toList());
url.addParameter("search", StringUtils.join(collectedTypes, " or "));
}
if (errataFilter.getPageNumber() != null) {
url.addParameter("page", errataFilter.getPageNumber().toString());
}
if (errataFilter.getPageSize() != null) {
url.addParameter("per_page", errataFilter.getPageSize().toString());
}
}
try {
return url.build().replaceFirst(DUMMY_ADDRESS_PREFIX, "");
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
public static FilteredErrataRelativeUrlBuilder create(String contentHostId,
ErrataFilter errataFilter,
String contentHostEndpoint) {
return new FilteredErrataRelativeUrlBuilder(contentHostId, errataFilter, contentHostEndpoint);
}
}