/* * 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.openjpa.persistence.criteria; /** * Defines a comparison style to be applied for query-by-example attribute comparison. * * @author Pinaki Poddar * * @since 2.0.0 * */ public interface ComparisonStyle { public static enum StringComparisonMode { EXACT, // compares exactly preserving case CASE_INSENSITIVE, // compares ignoring case LIKE // compares with LIKE() operator } /** * Affirms if the attribute comparisons are OR'ed. * Defaults to false. */ boolean isDisjunction(); /** * Sets whether the comparison to OR the attribute comparisons. */ ComparisonStyle setDisjunction(boolean flag); /** * Affirms if the null-valued attribute be excluded from comparison. * Defaults to true. */ boolean excludeNull(); /** * Sets whether the comparison excludes null-valued attributes. */ ComparisonStyle setExcludeNull(boolean flag); /** * Affirms if the identity attribute be excluded from comparison. * Defaults to true. */ boolean excludeIdentity(); /** * Sets whether the comparison excludes identity attribute. */ ComparisonStyle setExcludeIdentity(boolean flag); /** * Affirms if the version attribute be excluded from comparison. * Defaults to true. */ boolean excludeVersion(); /** * Sets whether the comparison excludes version attribute. */ ComparisonStyle setExcludeVersion(boolean flag); /** * Affirms if the default-valued attribute be excluded from comparison. * Defaults to true. */ boolean excludeDefault(); /** * Sets whether the comparison excludes default-valued attributes. */ ComparisonStyle setExcludeDefault(boolean flag); /** * Gets how string-valued attributes be compared. */ StringComparisonMode getStringComparsionMode(); /** * Sets the comparison mode for String-valued attributes. */ ComparisonStyle setStringComparisonMode(StringComparisonMode mode); /** * Default implementation. * */ static class Default implements ComparisonStyle { private boolean excludeDefault = true; private boolean excludeNull = true; private boolean excludeIdentity = true; private boolean excludeVersion = true; private boolean disjunction = false; private StringComparisonMode stringMode = StringComparisonMode.EXACT; public boolean excludeDefault() { return excludeDefault; } public boolean excludeNull() { return excludeNull; } public StringComparisonMode getStringComparsionMode() { return stringMode; } public boolean isDisjunction() { return disjunction; } public ComparisonStyle setExcludeDefault(boolean flag) { excludeDefault = flag; return this; } public ComparisonStyle setExcludeNull(boolean flag) { excludeNull = flag; return this; } public ComparisonStyle setStringComparisonMode(StringComparisonMode mode) { stringMode = mode; return this; } public ComparisonStyle setDisjunction(boolean flag) { disjunction = flag; return this; } public boolean excludeIdentity() { return excludeIdentity; } public ComparisonStyle setExcludeIdentity(boolean flag) { excludeIdentity = flag; return this; } public boolean excludeVersion() { return excludeVersion; } public ComparisonStyle setExcludeVersion(boolean flag) { excludeVersion = flag; return this; } } }