All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.blackbirdai.client.model.GroupParam Maven / Gradle / Ivy

The newest version!
package com.blackbirdai.client.model;

import com.blackbirdai.client.InvalidRequestException;
import com.blackbirdai.client.util.Patterns;
import com.google.common.base.Optional;

import java.util.Collections;
import java.util.List;

public class GroupParam extends Param {

    private final String field;
    private final Optional num;
    private final List sortParams;

    public GroupParam(String field) {
        this.field = field;
        this.num = Optional.absent();
        this.sortParams = Collections.EMPTY_LIST;
    }

    public GroupParam(String field, int num) {
        this.field = field;
        this.num = Optional.of(num);
        this.sortParams = Collections.EMPTY_LIST;
    }

    public GroupParam(String field, List sortParams) {
        this.field = field;
        this.num = Optional.absent();
        this.sortParams = sortParams;
    }

    public GroupParam(String field, int num, List sortParams) {
        this.field = field;
        this.num = Optional.of(num);
        this.sortParams = sortParams;
    }

    @Override
    StringBuilder appendQueryStr(StringBuilder builder) throws InvalidRequestException {
        if (!Patterns.FIELD_P.matcher(field).matches()) {
            throw new InvalidRequestException("Invalid field-name found: " + field);
        }
        builder.append("&group=field=");
        builder.append(field);
        if (num.isPresent()) {
            builder.append("/num=");
            builder.append(num.get());
        }
        if (sortParams.size() > 0) {
            builder.append("/sort=");
            boolean comma = false;
            for (SortParam sortParam : sortParams) {
                if (comma) builder.append(',');
                sortParam.appendQueryStr(builder);
                comma = true;
            }
        }
        return builder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy