http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/BooleanExpression.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/BooleanExpression.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/BooleanExpression.java new file mode 100644 index 0000000..79cd276 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/BooleanExpression.java @@ -0,0 +1,86 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +import org.apache.polygene.library.sql.generator.grammar.common.ValueExpression; + +/** + * A common interface for all boolean expressions in SQL language. + * + * @author Stanislav Muhametsin + */ +public interface BooleanExpression + extends ValueExpression +{ + + /** + * This class represents a boolean expression which always evaluates to true ({@code TRUE}). + * + * @author Stanislav Muhametsin + */ + final class True + implements BooleanExpression + { + private True() + { + + } + + /** + * Returns {@link True}. + */ + public Class<? extends ValueExpression> getImplementedType() + { + return True.class; + } + + /** + * Returns the singleton instance representing {@code TRUE}. + */ + public static final True INSTANCE = new True(); + } + + /** + * This class represents a boolean expression which always evaluates to false ({@code FALSE}. + * + * @author Stanislav Muhametsin + */ + final class False + implements BooleanExpression + { + private False() + { + + } + + /** + * Returns {@link False}. + */ + public Class<? extends ValueExpression> getImplementedType() + { + return False.class; + } + + /** + * Returns the singleton instance representing {@code FALSE}. + */ + public static final False INSTANCE = new False(); + } +}
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/BooleanTest.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/BooleanTest.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/BooleanTest.java new file mode 100644 index 0000000..9d0a05b --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/BooleanTest.java @@ -0,0 +1,94 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing {@code <X> IS [NOT] (TRUE | FALSE | UNKNOWN)} expression (boolean + * test), where {@code <X>} is some boolean expression. + * + * @author Stanislav Muhametsin + */ +public interface BooleanTest + extends ComposedBooleanExpression +{ + /** + * The type of the test. + * + * @author Stanislav Muhametsin + */ + final class TestType + { + + /** + * The test which tests the expression against the truth value. + */ + public static final TestType IS = new TestType(); + + /** + * The test which tests the expression against the negation of the truth value. + */ + public static final TestType IS_NOT = new TestType(); + } + + /** + * The tested truth value. + * + * @author Stanislav Muhametsin + */ + final class TruthValue + { + + /** + * The {@code TRUE} truth value. + */ + public static final TruthValue TRUE = new TruthValue(); + + /** + * The {@code FALSE} truth value. + */ + public static final TruthValue FALSE = new TruthValue(); + + /** + * The {@code UNKNOWN} truth value. + */ + public static final TruthValue UNKNOWN = new TruthValue(); + } + + /** + * Returns the boolean expression to be tested. + * + * @return The boolean expression to be tested. + */ + BooleanExpression getBooleanExpression(); + + /** + * Returns the test type - whether it should, or should not, be something. + * + * @return The test type. + */ + TestType getTestType(); + + /** + * The truth value which must evaluate from the expression. + * + * @return The truth value which must evaluate from the expression. + */ + TruthValue getTruthValue(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/ComposedBooleanExpression.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/ComposedBooleanExpression.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/ComposedBooleanExpression.java new file mode 100644 index 0000000..1dbeb76 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/ComposedBooleanExpression.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * A common interface for all boolean expressions composing of other boolean expressions. + * + * @author Stanislav Muhametsin + */ +public interface ComposedBooleanExpression + extends BooleanExpression, Iterable<BooleanExpression> +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Conjunction.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Conjunction.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Conjunction.java new file mode 100644 index 0000000..33b6e29 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Conjunction.java @@ -0,0 +1,44 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * A conjunction ({@code AND}) of two boolean expressions. + * + * @author Stanislav Muhametsin + */ +public interface Conjunction + extends ComposedBooleanExpression +{ + + /** + * Returns the boolean expression on the left side of {@code AND}. + * + * @return The boolean expression on the left side of {@code AND}. + */ + BooleanExpression getLeft(); + + /** + * Returns the boolean expression on the right side of {@code AND}. + * + * @return The boolean expression on the right side of {@code AND}. + */ + BooleanExpression getRight(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Disjunction.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Disjunction.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Disjunction.java new file mode 100644 index 0000000..b9725ff --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Disjunction.java @@ -0,0 +1,43 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * A disjunction ({@code OR} of two boolean expressions. + * + * @author Stanislav Muhametsin + */ +public interface Disjunction + extends ComposedBooleanExpression +{ + /** + * Returns the boolean expression on the left side of {@code OR}. + * + * @return The boolean expression on the left side of {@code OR}. + */ + BooleanExpression getLeft(); + + /** + * Returns the boolean expression on the right side of {@code OR}. + * + * @return The boolean expression on the right side of {@code OR}. + */ + BooleanExpression getRight(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/EqualsPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/EqualsPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/EqualsPredicate.java new file mode 100644 index 0000000..9aad53b --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/EqualsPredicate.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing equality test (x {@code =} y). + * + * @author Stanislav Muhametsin + */ +public interface EqualsPredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/ExistsPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/ExistsPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/ExistsPredicate.java new file mode 100644 index 0000000..bb203d5 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/ExistsPredicate.java @@ -0,0 +1,36 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +import org.apache.polygene.library.sql.generator.grammar.query.QueryExpression; + +/** + * The interface for syntax element representing existence test ({@code EXISTS}). + * + * @author Stanislav Muhametsin + */ +public interface ExistsPredicate + extends UnaryPredicate +{ + /** + * Returns the query on which {@code EXISTS} operates on. + */ + QueryExpression getValueExpression(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/GreaterOrEqualPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/GreaterOrEqualPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/GreaterOrEqualPredicate.java new file mode 100644 index 0000000..ac5d684 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/GreaterOrEqualPredicate.java @@ -0,0 +1,32 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of left value being greater than, or equal to right value (x + * {@code >=} y). + * + * @author Stanislav Muhametsin + */ +public interface GreaterOrEqualPredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/GreaterThanPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/GreaterThanPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/GreaterThanPredicate.java new file mode 100644 index 0000000..9132336 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/GreaterThanPredicate.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of left value being greater than right value (x {@code >} y). + * + * @author Stanislav Muhametsin + */ +public interface GreaterThanPredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/InPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/InPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/InPredicate.java new file mode 100644 index 0000000..2326f5f --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/InPredicate.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of something being one of the specified set of values (x + * {@code IN (}y, z, {@code ...)}). + * + * @author Stanislav Muhametsin + */ +public interface InPredicate + extends MultiPredicate +{ +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/IsNotNullPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/IsNotNullPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/IsNotNullPredicate.java new file mode 100644 index 0000000..956cfb7 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/IsNotNullPredicate.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing test for something being not {@code NULL} (x {@code IS NOT NULL}). + * + * @author Stanislav Muhametsin + */ +public interface IsNotNullPredicate + extends UnaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/IsNullPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/IsNullPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/IsNullPredicate.java new file mode 100644 index 0000000..7612fbe --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/IsNullPredicate.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing test for something being {@code NULL} (x {@code IS NULL}). + * + * @author Stanislav Muhametsin + */ +public interface IsNullPredicate + extends UnaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LessOrEqualPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LessOrEqualPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LessOrEqualPredicate.java new file mode 100644 index 0000000..61f78dc --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LessOrEqualPredicate.java @@ -0,0 +1,32 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of left value being lesser than, or equal to right value (x + * {@code <=} y). + * + * @author Stanislav Muhametsin + */ +public interface LessOrEqualPredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LessThanPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LessThanPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LessThanPredicate.java new file mode 100644 index 0000000..fc89053 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LessThanPredicate.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of left value being less than right value (x {@code <} y). + * + * @author Stanislav Muhametsin + */ +public interface LessThanPredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LikePredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LikePredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LikePredicate.java new file mode 100644 index 0000000..3c213d4 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/LikePredicate.java @@ -0,0 +1,32 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of left expression matching the supplied pattern using basic + * SQL match (x {@code LIKE} y). + * + * @author Stanislav Muhametsin + */ +public interface LikePredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/MultiPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/MultiPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/MultiPredicate.java new file mode 100644 index 0000000..955c103 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/MultiPredicate.java @@ -0,0 +1,47 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +import java.util.List; +import org.apache.polygene.library.sql.generator.grammar.common.NonBooleanExpression; + +/** + * A common interface for all predicates accepting more than two expressions. + * + * @author Stanislav Muhametsin + */ +public interface MultiPredicate + extends Predicate +{ + + /** + * Returns the expression on the left side (the first expression). + * + * @return The first expression. + */ + NonBooleanExpression getLeft(); + + /** + * Returns the remaining expressions after the first one. + * + * @return The remaining expressions after the first one. + */ + List<NonBooleanExpression> getRights(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Negation.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Negation.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Negation.java new file mode 100644 index 0000000..2a34115 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Negation.java @@ -0,0 +1,37 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * A negation ({@code NOT} x) of a boolean expression. + * + * @author Stanislav Muhametsin + */ +public interface Negation + extends ComposedBooleanExpression +{ + + /** + * Returns the boolean expression being negated. + * + * @return The boolean expression being negated. + */ + BooleanExpression getNegated(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotBetweenPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotBetweenPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotBetweenPredicate.java new file mode 100644 index 0000000..c1f7c1f --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotBetweenPredicate.java @@ -0,0 +1,45 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +import org.apache.polygene.library.sql.generator.grammar.common.NonBooleanExpression; + +/** + * The interface for syntax element representing SQL expression {@code NOT BETWEEN} x {@code AND} y. + * + * @author Stanislav Muhametsin + */ +public interface NotBetweenPredicate + extends MultiPredicate +{ + /** + * Returns the minimum value (the expression on the left side of {@code AND}). + * + * @return The minimum value. + */ + NonBooleanExpression getMinimum(); + + /** + * Returns the maxmimum value (the expression on the right side of {@code AND}). + * + * @return The maximum value. + */ + NonBooleanExpression getMaximum(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotEqualsPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotEqualsPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotEqualsPredicate.java new file mode 100644 index 0000000..c6e69fc --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotEqualsPredicate.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing inequality test (x {@code <>} y). + * + * @author Stanislav Muhametsin + */ +public interface NotEqualsPredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotInPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotInPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotInPredicate.java new file mode 100644 index 0000000..cb9addd --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotInPredicate.java @@ -0,0 +1,32 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of something not being one of the specified set of values (x + * {@code NOT IN (}y, z, {@code ...)}). + * + * @author Stanislav Muhametsin + */ +public interface NotInPredicate + extends MultiPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotLikePredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotLikePredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotLikePredicate.java new file mode 100644 index 0000000..efc3a4d --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotLikePredicate.java @@ -0,0 +1,32 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of left expression not matching the supplied pattern using + * basic SQL match (x {@code NOT LIKE} y). + * + * @author Stanislav Muhametsin + */ +public interface NotLikePredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotRegexpPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotRegexpPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotRegexpPredicate.java new file mode 100644 index 0000000..7f83dcc --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/NotRegexpPredicate.java @@ -0,0 +1,32 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of left expression not matching the supplied pattern using + * advanced regular expression match (operator varies). By default this kind of matching is not supported. + * + * @author Stanislav Muhametsin + */ +public interface NotRegexpPredicate + extends BinaryPredicate +{ + +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Predicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Predicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Predicate.java new file mode 100644 index 0000000..c58cf58 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/Predicate.java @@ -0,0 +1,57 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * A common interfaces for predicates (boolean expressions not containing other boolean expressions). + * + * @author Stanislav Muhametsin + */ +public interface Predicate + extends BooleanExpression +{ + /** + * A class representing empty predicate. The result of empty predicate is empty string. If empty predicate is + * encountered inside {@link Conjunction} or {@link Disjunction}, their operator is omitted. So, <i>empty + * predicate</i> {@code AND} <i>something</i> becomes just <i>something</i>. + * + * @author Stanislav Muhametsin + */ + final class EmptyPredicate + implements Predicate + { + private EmptyPredicate() + { + } + + /** + * Returns {@link EmptyPredicate}. + */ + public Class<? extends BooleanExpression> getImplementedType() + { + return EmptyPredicate.class; + } + + /** + * Singleton instance of {@link EmptyPredicate}. + */ + public static final EmptyPredicate INSTANCE = new EmptyPredicate(); + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/RegexpPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/RegexpPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/RegexpPredicate.java new file mode 100644 index 0000000..f44732b --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/RegexpPredicate.java @@ -0,0 +1,31 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +/** + * The interface for syntax element representing the test of left expression matching the supplied pattern using + * advanced regular expression match (operator varies). By default this kind of matching is not supported. + * + * @author Stanislav Muhametsin + */ +public interface RegexpPredicate + extends BinaryPredicate +{ +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/UnaryPredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/UnaryPredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/UnaryPredicate.java new file mode 100644 index 0000000..37aed37 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/UnaryPredicate.java @@ -0,0 +1,39 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +import org.apache.polygene.library.sql.generator.grammar.common.NonBooleanExpression; + +/** + * A common interface for all boolean expressions requiring exactly one value expression. + * + * @author Stanislav Muhametsin + */ +public interface UnaryPredicate + extends Predicate +{ + + /** + * Returns the value expression for this predicate. + * + * @return The value expression for this predicate. + */ + NonBooleanExpression getValueExpression(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/UniquePredicate.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/UniquePredicate.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/UniquePredicate.java new file mode 100644 index 0000000..f91eeab --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/UniquePredicate.java @@ -0,0 +1,37 @@ +/* + * 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.polygene.library.sql.generator.grammar.booleans; + +import org.apache.polygene.library.sql.generator.grammar.query.QueryExpression; + +/** + * The interface for syntax element representing the test for uniqueness ({@code UNIQUE} sub-query). + * + * @author Stanislav Muhametsin + */ +public interface UniquePredicate + extends UnaryPredicate +{ + + /** + * Gets the query on which {@code UNIQUE} operates on. + */ + QueryExpression getValueExpression(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/package-info.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/package-info.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/package-info.java new file mode 100644 index 0000000..5d5fd7f --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/booleans/package-info.java @@ -0,0 +1,23 @@ +/* + * 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. + * + * + */ +/** + * This package provides interfaces for syntax elements of boolean expressions in SQL language. As all syntax elements, they provide a read-only API to their contents. + */ +package org.apache.polygene.library.sql.generator.grammar.booleans; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/AbstractBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/AbstractBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/AbstractBuilder.java new file mode 100644 index 0000000..a938b1b --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/AbstractBuilder.java @@ -0,0 +1,36 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders; + +/** + * A common interface for all builders. + * + * @param <ExpressionType> The type of the expression being built. + * @author Stanislav Muhametsin + */ +public interface AbstractBuilder<ExpressionType> +{ + /** + * Returns the expression which was being built by this builder. + * + * @return The expression built by this builder. + */ + ExpressionType createExpression(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/BooleanBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/BooleanBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/BooleanBuilder.java new file mode 100644 index 0000000..7788daa --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/BooleanBuilder.java @@ -0,0 +1,65 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders.booleans; + +import org.apache.polygene.library.sql.generator.grammar.booleans.BooleanExpression; +import org.apache.polygene.library.sql.generator.grammar.builders.AbstractBuilder; + +/** + * A builder-pattern interface to build boolean expressions. It holds the current expression, modifying it as per user's + * instructions, and returns it once the {@link #createExpression()} method is called. + * + * @author Stanislav Muhametsin + */ +public interface BooleanBuilder + extends AbstractBuilder<BooleanExpression> +{ + + /** + * Sets current expression as current expression {@code AND next}. + * + * @param next The expression on a right hand of {@code AND}. + * @return This builder. + */ + BooleanBuilder and( BooleanExpression next ); + + /** + * Sets current expression as current expression {@code OR next} + * + * @param next The expression on a right hand of {@code OR} + * @return This builder. + */ + BooleanBuilder or( BooleanExpression next ); + + /** + * Sets current expression as {@code NOT} current expression. + * + * @return This builder. + */ + BooleanBuilder not(); + + /** + * Sets current expression as given parameter. + * + * @param newExpression The new expression. + * @return This builder. + */ + BooleanBuilder reset( BooleanExpression newExpression ); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/InBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/InBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/InBuilder.java new file mode 100644 index 0000000..23295ed --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/InBuilder.java @@ -0,0 +1,37 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders.booleans; + +import org.apache.polygene.library.sql.generator.grammar.booleans.InPredicate; +import org.apache.polygene.library.sql.generator.grammar.builders.AbstractBuilder; +import org.apache.polygene.library.sql.generator.grammar.common.NonBooleanExpression; + +/** + * The builder to build {@code IN} expressions + * + * @author Stanislav Muhametsin + * @see InPredicate + */ +public interface InBuilder + extends AbstractBuilder<InPredicate> +{ + + InBuilder addValues( NonBooleanExpression... expressions ); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/package-info.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/package-info.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/package-info.java new file mode 100644 index 0000000..2f741fb --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/booleans/package-info.java @@ -0,0 +1,23 @@ +/* + * 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. + * + * + */ +/** + * This package contains builders for various boolean expressions. + */ +package org.apache.polygene.library.sql.generator.grammar.builders.booleans; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/ForeignKeyConstraintBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/ForeignKeyConstraintBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/ForeignKeyConstraintBuilder.java new file mode 100644 index 0000000..50cbeeb --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/ForeignKeyConstraintBuilder.java @@ -0,0 +1,133 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders.definition; + +import java.util.List; +import org.apache.polygene.library.sql.generator.grammar.builders.AbstractBuilder; +import org.apache.polygene.library.sql.generator.grammar.common.TableNameDirect; +import org.apache.polygene.library.sql.generator.grammar.definition.table.ForeignKeyConstraint; +import org.apache.polygene.library.sql.generator.grammar.definition.table.MatchType; +import org.apache.polygene.library.sql.generator.grammar.definition.table.ReferentialAction; + +/** + * The builder for table constraint {@code FOREIGN KEY(source columns) REFERENCES table_name(target columns) etc....}). + * + * @author Stanislav Muhametsin + */ +public interface ForeignKeyConstraintBuilder + extends AbstractBuilder<ForeignKeyConstraint> +{ + + /** + * Adds source column names to this foreign key constraint. + * + * @param columnNames The source column names to be added to this foreign key constraint. + * @return This builder. + */ + ForeignKeyConstraintBuilder addSourceColumns( String... columnNames ); + + /** + * Adds target column names to this foreign key constraint. + * + * @param columnNames The target column names to be added to this foreign key constraint. + * @return This builder. + */ + ForeignKeyConstraintBuilder addTargetColumns( String... columnNames ); + + /** + * Sets the target table name for this foreign key constraint. + * + * @param tableName The target table name for this foreign key constraint. + * @return This builder. + */ + ForeignKeyConstraintBuilder setTargetTableName( TableNameDirect tableName ); + + /** + * Sets the match type for this foreign key constraint. + * + * @param matchType The match type for this foreign key constraint. + * @return This builder. + * @see MatchType + */ + ForeignKeyConstraintBuilder setMatchType( MatchType matchType ); + + /** + * Sets the {@code ON UPDATE} action. + * + * @param action The action to perform {@code ON UPDATE}. + * @return This builder. + * @see ReferentialAction + */ + ForeignKeyConstraintBuilder setOnUpdate( ReferentialAction action ); + + /** + * Sets the {@code ON DELETE} action. + * + * @param action The action to perform {@code ON DELETE}. + * @return This builder. + * @see ReferentialAction + */ + ForeignKeyConstraintBuilder setOnDelete( ReferentialAction action ); + + /** + * Returns the source column names for this foreign key constraint. + * + * @return The source column names for this foreign key constraint. + */ + List<String> getSourceColumns(); + + /** + * Returns the target column names for this foreign key constraint. + * + * @return The target column names for this foreign key constraint. + */ + List<String> getTargetColumns(); + + /** + * Returns the target table name for this foreign key constraint. + * + * @return The target table name for this foreign key constraint. + */ + TableNameDirect getTableName(); + + /** + * Returns the match type for this foreign key constraint. + * + * @return The match type for this foreign key constraint. + * @see MatchType + */ + MatchType getMatchType(); + + /** + * Returns the {@code ON UPDATE} action for this foreign key constraint. + * + * @return The {@code ON UPDATE} action for this foreign key constraint. + * @see ReferentialAction + */ + ReferentialAction getOnUpdate(); + + /** + * Returns the {@code ON DELETE} action for this foreign key constraint. + * + * @return The {@code ON DELETE} action for this foreign key constraint. + * @see ReferentialAction + */ + ReferentialAction getOnDelete(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/SchemaDefinitionBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/SchemaDefinitionBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/SchemaDefinitionBuilder.java new file mode 100644 index 0000000..6f1080a --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/SchemaDefinitionBuilder.java @@ -0,0 +1,81 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders.definition; + +import java.util.List; +import org.apache.polygene.library.sql.generator.grammar.builders.AbstractBuilder; +import org.apache.polygene.library.sql.generator.grammar.definition.schema.SchemaDefinition; +import org.apache.polygene.library.sql.generator.grammar.definition.schema.SchemaElement; + +/** + * This is builder interface for creating schema definition statements ({@code CREATE SCHEMA} ...). + * + * @author Stanislav Muhametsin + */ +public interface SchemaDefinitionBuilder + extends AbstractBuilder<SchemaDefinition> +{ + + /** + * Sets the name for the schema to be created. + * + * @param schemaName The name for the schema to be created. + * @return This builder. + */ + SchemaDefinitionBuilder setSchemaName( String schemaName ); + + /** + * Sets the character set for the schema to be created. + * + * @param charset The charset for the schema to be created. + * @return This builder. + */ + SchemaDefinitionBuilder setSchemaCharset( String charset ); + + /** + * Adds schema elements for the schema to be created. + * + * @param elements The schema elements for the schema to be created. + * @return This builder. + * @see SchemaElement + */ + SchemaDefinitionBuilder addSchemaElements( SchemaElement... elements ); + + /** + * Returns the name of the schema to be created. + * + * @return The name of the schema to be created. + */ + String getSchemaName(); + + /** + * Returns the name of the character set for the schema to be created. + * + * @return The name of the character set for the schema to be created. + */ + String getSchemaCharset(); + + /** + * Returns all the schema elements for the schema to be created. + * + * @return All the schema elements for the schema to be created. + */ + List<SchemaElement> getSchemaElements(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/TableDefinitionBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/TableDefinitionBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/TableDefinitionBuilder.java new file mode 100644 index 0000000..ed65f94 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/TableDefinitionBuilder.java @@ -0,0 +1,104 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders.definition; + +import org.apache.polygene.library.sql.generator.grammar.builders.AbstractBuilder; +import org.apache.polygene.library.sql.generator.grammar.common.TableName; +import org.apache.polygene.library.sql.generator.grammar.common.TableNameDirect; +import org.apache.polygene.library.sql.generator.grammar.definition.table.TableCommitAction; +import org.apache.polygene.library.sql.generator.grammar.definition.table.TableContentsSource; +import org.apache.polygene.library.sql.generator.grammar.definition.table.TableDefinition; +import org.apache.polygene.library.sql.generator.grammar.definition.table.TableElementList; +import org.apache.polygene.library.sql.generator.grammar.definition.table.TableScope; + +/** + * This is the builder for table definition statements ({@code CREATE TABLE} ...). + * + * @author Stanislav Muhametsin + */ +public interface TableDefinitionBuilder + extends AbstractBuilder<TableDefinition> +{ + + /** + * Sets the scope for this table. + * + * @param scope The scope for this table. + * @return This builder. + * @see TableScope + */ + TableDefinitionBuilder setTableScope( TableScope scope ); + + /** + * Sets the name for this table. + * + * @param tableName The name for this table. + * @return This builder. + * @see TableName + */ + TableDefinitionBuilder setTableName( TableNameDirect tableName ); + + /** + * Sets the commit action for this table. + * + * @param commitAction The commit action for this table. + * @return This builder. + * @see TableCommitAction + */ + TableDefinitionBuilder setCommitAction( TableCommitAction commitAction ); + + /** + * Sets the contents source for this table. + * + * @param contents The contents source for this table. + * @return This builder. + * @see TableContentsSource + * @see TableElementList + */ + TableDefinitionBuilder setTableContentsSource( TableContentsSource contents ); + + /** + * Returns the scope for this table. + * + * @return The scope for this table. + */ + TableScope getTableScope(); + + /** + * Returns the name for this table. + * + * @return The name for this table. + */ + TableNameDirect getTableName(); + + /** + * Returns the commit action for this table. + * + * @return The commit action for this table. + */ + TableCommitAction getCommitAction(); + + /** + * Returns the table contents source for this table. + * + * @return The table contents source for this table. + */ + TableContentsSource getTableContentsSource(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/TableElementListBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/TableElementListBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/TableElementListBuilder.java new file mode 100644 index 0000000..50defa2 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/TableElementListBuilder.java @@ -0,0 +1,50 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders.definition; + +import java.util.List; +import org.apache.polygene.library.sql.generator.grammar.builders.AbstractBuilder; +import org.apache.polygene.library.sql.generator.grammar.definition.table.TableElement; +import org.apache.polygene.library.sql.generator.grammar.definition.table.TableElementList; + +/** + * This is the builder for table element list used in {@code CREATE TABLE} statements. + * + * @author Stanislav Muhametsin + */ +public interface TableElementListBuilder + extends AbstractBuilder<TableElementList> +{ + + /** + * Adds the table element to this list. + * + * @param element The table element to add to this list. + * @return This builder. + */ + TableElementListBuilder addTableElement( TableElement element ); + + /** + * Returns all the elements that this builder has. + * + * @return All the elements that this builder has. + */ + List<TableElement> getTableElements(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/UniqueConstraintBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/UniqueConstraintBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/UniqueConstraintBuilder.java new file mode 100644 index 0000000..4dfc67c --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/UniqueConstraintBuilder.java @@ -0,0 +1,66 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders.definition; + +import java.util.List; +import org.apache.polygene.library.sql.generator.grammar.builders.AbstractBuilder; +import org.apache.polygene.library.sql.generator.grammar.definition.table.UniqueConstraint; +import org.apache.polygene.library.sql.generator.grammar.definition.table.UniqueSpecification; + +/** + * This is builder for {@code UNIQUE(...)} and {@code PRIMARY KEY(...)} table constraints in table definition. + * + * @author Stanislav Muhametsin + */ +public interface UniqueConstraintBuilder + extends AbstractBuilder<UniqueConstraint> +{ + + /** + * Sets the uniqueness kind for this uniqueness constraint. + * + * @param uniqueness The uniqueness kind for this uniqueness constraint. + * @return This builder. + * @see UniqueSpecification + */ + UniqueConstraintBuilder setUniqueness( UniqueSpecification uniqueness ); + + /** + * Adds the columns that have to be unique. + * + * @param columnNames The column names that have to be unique. + * @return This builder. + */ + UniqueConstraintBuilder addColumns( String... columnNames ); + + /** + * Returns the uniqueness type for this uniqueness constraint. + * + * @return The uniqueness type for this uniqueness constraint. + */ + UniqueSpecification getUniqueness(); + + /** + * Returns the column names that have to be unique. + * + * @return The column names that have to be unique. + */ + List<String> getColumns(); +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a36086b6/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/ViewDefinitionBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/ViewDefinitionBuilder.java b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/ViewDefinitionBuilder.java new file mode 100644 index 0000000..ae61aa2 --- /dev/null +++ b/libraries/sql-generator/src/main/java/org/apache/polygene/library/sql/generator/grammar/builders/definition/ViewDefinitionBuilder.java @@ -0,0 +1,117 @@ +/* + * 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.polygene.library.sql.generator.grammar.builders.definition; + +import org.apache.polygene.library.sql.generator.grammar.builders.AbstractBuilder; +import org.apache.polygene.library.sql.generator.grammar.common.TableNameDirect; +import org.apache.polygene.library.sql.generator.grammar.definition.view.RegularViewSpecification; +import org.apache.polygene.library.sql.generator.grammar.definition.view.ViewCheckOption; +import org.apache.polygene.library.sql.generator.grammar.definition.view.ViewDefinition; +import org.apache.polygene.library.sql.generator.grammar.definition.view.ViewSpecification; +import org.apache.polygene.library.sql.generator.grammar.query.QueryExpression; + +/** + * This is a builder for {@code CREATE VIEW} statements. + * + * @author Stanislav Muhametsin + * @see ViewDefinition + */ +public interface ViewDefinitionBuilder + extends AbstractBuilder<ViewDefinition> +{ + + /** + * Sets whether this view is {@code RECURSIVE}. + * + * @param isRecursive True if view is to be {@code RECURSIVE}; false otherwise. + * @return This builder. + */ + ViewDefinitionBuilder setRecursive( Boolean isRecursive ); + + /** + * Sets the name for this view. + * + * @param viewName The name for this view. + * @return This builder. + */ + ViewDefinitionBuilder setViewName( TableNameDirect viewName ); + + /** + * Sets the query for this view. + * + * @param query The query for this view. + * @return This builder. + */ + ViewDefinitionBuilder setQuery( QueryExpression query ); + + /** + * Sets the view check option for this view. + * + * @param viewCheck The view check option for this view. + * @return This builder. + * @see ViewCheckOption + */ + ViewDefinitionBuilder setViewCheckOption( ViewCheckOption viewCheck ); + + /** + * Sets the view specification for this view. Typically is a list of columns (via {@link RegularViewSpecification}). + * + * @param spec The view specification. + * @return This builder. + * @see ViewSpecification + */ + ViewDefinitionBuilder setViewSpecification( ViewSpecification spec ); + + /** + * Returns whether this view is to be {@code RECURSIVE}. + * + * @return True if this view is to be {@code RECURSIVE}; false otherwise. + */ + Boolean isRecursive(); + + /** + * Returns the name of the view. + * + * @return The name of the view. + */ + TableNameDirect getViewName(); + + /** + * Returns the query for the view. + * + * @return The query for the view. + */ + QueryExpression getQueryExpression(); + + /** + * Returns the view check option. + * + * @return The view check option. + * @see ViewCheckOption + */ + ViewCheckOption getViewCheckOption(); + + /** + * Returns the view specification. Typically is a list of columns (via {@link RegularViewSpecification}). + * + * @return The view specification. + */ + ViewSpecification getViewSpecification(); +}
