/**
*
* Copyright (c) 2006-2017, Speedment, Inc. All Rights Reserved.
*
* Licensed 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 com.speedment.runtime.core.internal.component.sql.override;
import com.speedment.runtime.core.component.sql.override.SqlStreamTerminatorComponent;
import com.speedment.runtime.core.component.sql.override.doubles.DoubleCountTerminator;
import com.speedment.runtime.core.component.sql.override.ints.IntCountTerminator;
import com.speedment.runtime.core.component.sql.override.longs.LongCountTerminator;
import com.speedment.runtime.core.component.sql.override.reference.AllMatchTerminator;
import com.speedment.runtime.core.component.sql.override.reference.AnyMatchTerminator;
import com.speedment.runtime.core.component.sql.override.reference.CollectSupplierAccumulatorCombinerTerminator;
import com.speedment.runtime.core.component.sql.override.reference.CollectTerminator;
import com.speedment.runtime.core.component.sql.override.reference.CountTerminator;
import com.speedment.runtime.core.component.sql.override.reference.FindAnyTerminator;
import com.speedment.runtime.core.component.sql.override.reference.FindFirstTerminator;
import com.speedment.runtime.core.component.sql.override.reference.ForEachOrderedTerminator;
import com.speedment.runtime.core.component.sql.override.reference.ForEachTerminator;
import com.speedment.runtime.core.component.sql.override.reference.IteratorTerminator;
import com.speedment.runtime.core.component.sql.override.reference.MaxTerminator;
import com.speedment.runtime.core.component.sql.override.reference.MinTerminator;
import com.speedment.runtime.core.component.sql.override.reference.NoneMatchTerminator;
import com.speedment.runtime.core.component.sql.override.reference.ReduceIdentityCombinerTerminator;
import com.speedment.runtime.core.component.sql.override.reference.ReduceIdentityTerminator;
import com.speedment.runtime.core.component.sql.override.reference.ReduceTerminator;
import com.speedment.runtime.core.component.sql.override.reference.SpliteratorTerminator;
import com.speedment.runtime.core.component.sql.override.reference.ToArrayGeneratorTerminator;
import com.speedment.runtime.core.component.sql.override.reference.ToArrayTerminator;
import com.speedment.runtime.core.internal.component.sql.override.optimized.doubles.OptimizedDoubleCountTerminator;
import com.speedment.runtime.core.internal.component.sql.override.optimized.ints.OptimizedIntCountTerminator;
import com.speedment.runtime.core.internal.component.sql.override.optimized.longs.OptimizedLongCountTerminator;
import com.speedment.runtime.core.internal.component.sql.override.optimized.reference.OptimizedCountTerminator;
import static java.util.Objects.requireNonNull;
/**
*
* @author Per Minborg
*/
public class SqlStreamTerminatorComponentImpl implements SqlStreamTerminatorComponent {
// Reference
private ForEachTerminator<?> forEachTerminator = ForEachTerminator.defaultTerminator();
private ForEachOrderedTerminator<?> forEachOrderedTerminator = ForEachOrderedTerminator.defaultTerminator();
private ToArrayTerminator<?> toArrayTerminator = ToArrayTerminator.defaultTerminator();
private ToArrayGeneratorTerminator<?> toArrayGeneratorTerminator = ToArrayGeneratorTerminator.defaultTerminator();
private ReduceTerminator<?> reduceTerminator = ReduceTerminator.defaultTerminator();
private ReduceIdentityTerminator<?> reduceIdentityTerminator = ReduceIdentityTerminator.defaultTerminator();
private ReduceIdentityCombinerTerminator<?> reduceIdentityCombinerTerminator = ReduceIdentityCombinerTerminator.defaultTerminator();
private CollectTerminator<?> collectTerminator = CollectTerminator.defaultTerminator();
private CollectSupplierAccumulatorCombinerTerminator<?> collectSupplierAccumulatorCombinerTerminator = CollectSupplierAccumulatorCombinerTerminator.defaultTerminator();
private MinTerminator<?> minTerminator = MinTerminator.defaultTerminator();
private MaxTerminator<?> maxTerminator = MaxTerminator.defaultTerminator();
private AnyMatchTerminator<?> anyMatchTerminator = AnyMatchTerminator.defaultTerminator();
private AllMatchTerminator<?> allMatchTerminator = AllMatchTerminator.defaultTerminator();
private NoneMatchTerminator<?> noneMatchTerminator = NoneMatchTerminator.defaultTerminator();
private FindFirstTerminator<?> findFirstTerminator = FindFirstTerminator.defaultTerminator();
private FindAnyTerminator<?> findAnyTerminator = FindAnyTerminator.defaultTerminator();
private CountTerminator<?> countTerminator = OptimizedCountTerminator.create();
private SpliteratorTerminator<?> spliteratorTerminator = SpliteratorTerminator.defaultTerminator();
private IteratorTerminator<?> iteratorTerminator = IteratorTerminator.defaultTerminator();
// double
private DoubleCountTerminator<?> doubleCountTerminator = OptimizedDoubleCountTerminator.create();
// int
private IntCountTerminator<?> intCountTerminator = OptimizedIntCountTerminator.create();
// long
private LongCountTerminator<?> longCountTerminator = OptimizedLongCountTerminator.create();
/// Reference
@Override
@SuppressWarnings("unchecked")
public <ENTITY> ForEachTerminator<ENTITY> getForEachTerminator() {
return (ForEachTerminator<ENTITY>) forEachTerminator;
}
@Override
public <ENTITY> void setForEachTerminator(ForEachTerminator<ENTITY> forEach) {
this.forEachTerminator = requireNonNull(forEach);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> ForEachOrderedTerminator<ENTITY> getForEachOrderedTerminator() {
return (ForEachOrderedTerminator<ENTITY>) forEachOrderedTerminator;
}
@Override
public <ENTITY> void setForEachOrderedTerminator(ForEachOrderedTerminator<ENTITY> forEachOrdered) {
this.forEachOrderedTerminator = requireNonNull(forEachOrdered);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> ToArrayTerminator<ENTITY> getToArrayTerminator() {
return (ToArrayTerminator<ENTITY>) toArrayTerminator;
}
@Override
public <ENTITY> void setToArrayTerminator(ToArrayTerminator<ENTITY> toArray) {
this.toArrayTerminator = requireNonNull(toArray);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> ToArrayGeneratorTerminator<ENTITY> getToArrayGeneratorTerminator() {
return (ToArrayGeneratorTerminator<ENTITY>) toArrayGeneratorTerminator;
}
@Override
public <ENTITY> void setToArrayGeneratorTerminator(ToArrayGeneratorTerminator<ENTITY> toArray) {
this.toArrayGeneratorTerminator = requireNonNull(toArray);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> ReduceTerminator<ENTITY> getReduceTerminator() {
return (ReduceTerminator<ENTITY>) reduceTerminator;
}
@Override
public <ENTITY> void setReduceTerminator(ReduceTerminator<ENTITY> reduce) {
this.reduceTerminator = requireNonNull(reduce);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> ReduceIdentityTerminator<ENTITY> getReduceIdentityTerminator() {
return (ReduceIdentityTerminator<ENTITY>) reduceIdentityTerminator;
}
@Override
public <ENTITY> void setReduceIdentityTerminator(ReduceIdentityTerminator<ENTITY> reduce) {
this.reduceIdentityTerminator = requireNonNull(reduce);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> ReduceIdentityCombinerTerminator<ENTITY> getReduceIdentityCombinerTerminator() {
return (ReduceIdentityCombinerTerminator<ENTITY>) reduceIdentityCombinerTerminator;
}
@Override
public <ENTITY> void setReduceIdentityCombinerTerminator(ReduceIdentityCombinerTerminator<ENTITY> reduce) {
this.reduceIdentityCombinerTerminator = requireNonNull(reduce);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> CollectTerminator<ENTITY> getCollectTerminator() {
return (CollectTerminator<ENTITY>) collectTerminator;
}
@Override
public <ENTITY> void setCollectTerminator(CollectTerminator<ENTITY> collect) {
this.collectTerminator = requireNonNull(collect);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> CollectSupplierAccumulatorCombinerTerminator<ENTITY> getCollectSupplierAccumulatorCombinerTerminator() {
return (CollectSupplierAccumulatorCombinerTerminator<ENTITY>) collectSupplierAccumulatorCombinerTerminator;
}
@Override
public <ENTITY> void setCollectSupplierAccumulatorCombinerTerminator(CollectSupplierAccumulatorCombinerTerminator<ENTITY> collect) {
this.collectSupplierAccumulatorCombinerTerminator = requireNonNull(collect);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> MinTerminator<ENTITY> getMinTerminator() {
return (MinTerminator<ENTITY>) minTerminator;
}
@Override
public <ENTITY> void setMinTerminator(MinTerminator<ENTITY> collect) {
this.minTerminator = requireNonNull(collect);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> MaxTerminator<ENTITY> getMaxTerminator() {
return (MaxTerminator<ENTITY>) maxTerminator;
}
@Override
public <ENTITY> void setMaxTerminator(MaxTerminator<ENTITY> collect) {
this.maxTerminator = requireNonNull(collect);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> AnyMatchTerminator<ENTITY> getAnyMatchTerminator() {
return (AnyMatchTerminator<ENTITY>) anyMatchTerminator;
}
@Override
public <ENTITY> void setAnyMatchTerminator(AnyMatchTerminator<ENTITY> anyMatch) {
this.anyMatchTerminator = requireNonNull(anyMatch);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> AllMatchTerminator<ENTITY> getAllMatchTerminator() {
return (AllMatchTerminator<ENTITY>) allMatchTerminator;
}
@Override
public <ENTITY> void setAllMatchTerminator(AllMatchTerminator<ENTITY> allMatch) {
this.allMatchTerminator = requireNonNull(allMatch);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> NoneMatchTerminator<ENTITY> getNoneMatchTerminator() {
return (NoneMatchTerminator<ENTITY>) noneMatchTerminator;
}
@Override
public <ENTITY> void setNoneMatchTerminator(NoneMatchTerminator<ENTITY> noneMatch) {
this.noneMatchTerminator = requireNonNull(noneMatch);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> FindFirstTerminator<ENTITY> getFindFirstTerminator() {
return (FindFirstTerminator<ENTITY>) findFirstTerminator;
}
@Override
public <ENTITY> void setFindFirstTerminator(FindFirstTerminator<ENTITY> noneMatch) {
this.findFirstTerminator = requireNonNull(noneMatch);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> FindAnyTerminator<ENTITY> getFindAnyTerminator() {
return (FindAnyTerminator<ENTITY>) findAnyTerminator;
}
@Override
public <ENTITY> void setFindAnyTerminator(FindAnyTerminator<ENTITY> noneMatch) {
this.findAnyTerminator = requireNonNull(noneMatch);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> CountTerminator<ENTITY> getCountTerminator() {
return (CountTerminator<ENTITY>) countTerminator;
}
@Override
public <ENTITY> void setCountTerminator(CountTerminator<ENTITY> count) {
this.countTerminator = requireNonNull(count);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> SpliteratorTerminator<ENTITY> getSpliteratorTerminator() {
return (SpliteratorTerminator<ENTITY>) spliteratorTerminator;
}
@Override
public <ENTITY> void setSpliteratorTerminator(SpliteratorTerminator<ENTITY> count) {
this.spliteratorTerminator = requireNonNull(count);
}
@Override
@SuppressWarnings("unchecked")
public <ENTITY> IteratorTerminator<ENTITY> getIteratorTerminator() {
return (IteratorTerminator<ENTITY>) iteratorTerminator;
}
@Override
public <ENTITY> void setIteratorTerminator(IteratorTerminator<ENTITY> count) {
this.iteratorTerminator = requireNonNull(count);
}
// double
@Override
@SuppressWarnings("unchecked")
public <ENTITY> DoubleCountTerminator<ENTITY> getDoubleCountTerminator() {
return (DoubleCountTerminator<ENTITY>) doubleCountTerminator;
}
@Override
public <ENTITY> void setDoubleCountTerminator(DoubleCountTerminator<ENTITY> count) {
this.doubleCountTerminator = requireNonNull(count);
}
// int
@Override
@SuppressWarnings("unchecked")
public <ENTITY> IntCountTerminator<ENTITY> getIntCountTerminator() {
return (IntCountTerminator<ENTITY>) intCountTerminator;
}
@Override
public <ENTITY> void setIntCountTerminator(IntCountTerminator<ENTITY> count) {
this.intCountTerminator = requireNonNull(count);
}
// long
@Override
@SuppressWarnings("unchecked")
public <ENTITY> LongCountTerminator<ENTITY> getLongCountTerminator() {
return (LongCountTerminator<ENTITY>) longCountTerminator;
}
@Override
public <ENTITY> void setLongCountTerminator(LongCountTerminator<ENTITY> count) {
this.longCountTerminator = requireNonNull(count);
}
}