blob: 7ddd5528af9a3ac86d604bb134d86ab0e5588ba8 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
package org.apache.druid.query.groupby.epinephelinae;
import com.google.common.base.Preconditions;
import org.apache.druid.java.util.common.ISE;
import javax.annotation.Nullable;
import java.util.Objects;
public class AggregateResult
{
private static final AggregateResult OK = new AggregateResult(0, null);
private final int count;
@Nullable
private final String reason;
public static AggregateResult ok()
{
return OK;
}
public static AggregateResult partial(final int count, final String reason)
{
return new AggregateResult(count, Preconditions.checkNotNull(reason, "reason"));
}
private AggregateResult(final int count, @Nullable final String reason)
{
Preconditions.checkArgument(count >= 0, "count >= 0");
this.count = count;
this.reason = reason;
}
/**
* True if all rows have been processed.
*/
public boolean isOk()
{
return reason == null;
}
public int getCount()
{
if (isOk()) {
throw new ISE("Cannot call getCount when isOk = true");
}
return count;
}
@Nullable
public String getReason()
{
if (isOk()) {
throw new ISE("Cannot call getReason when isOk = true");
}
return reason;
}
@Override
public boolean equals(Object o)
{
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
AggregateResult that = (AggregateResult) o;
return count == that.count &&
Objects.equals(reason, that.reason);
}
@Override
public int hashCode()
{
return Objects.hash(count, reason);
}
@Override
public String toString()
{
return "AggregateResult{" +
"count=" + count +
", reason='" + reason + '\'' +
'}';
}
}