class AbstractConditionShardLocator {

    public Set<String> locateShards(CTX context) {
        switch (context.getOperator()) {
        case EQUAL:
            return locateForEqual(context);
        case NOT_EQUAL:
            return locateForNotEqual(context);
        case GREATER_THAN:
            return locateForGreaterThan(context);
        case GREATER_THAN_OR_EQUAL:
            return locateForGreaterThanOrEqual(context);
        case LESS_THAN:
            return locateForLessThan(context);
        case LESS_THAN_OR_EQUAL:
            return locateForLessThanOrEqual(context);
        case BEWTEEN:
            return locateForBetween(context);
        case NOT_BETWEEN:
            return locateForNotBetween(context);
        case IN:
            return locateForIn(context);
        case NOT_IN:
            return locateForNotIn(context);
        case LIKE:
            return locateForLike(context);
        case NOT_LIKE:
            return locateForNotLike(context);
        case IS_NULL:
            return locateForIsNull(context);
        case IS_NOT_NULL:
            return locateForIsNotNull(context);
        default:
            throw new IllegalArgumentException("Invalid operator detected: " + context.getOperator());
        }
    }

}