Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Runtime: Change API for backward streaming
- Loading branch information
Emil Forslund
committed
Sep 27, 2016
1 parent
1490fc7
commit 1710b0f
Showing
18 changed files
with
351 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
40 changes: 0 additions & 40 deletions
40
runtime/src/main/java/com/speedment/runtime/field/finder/FindFrom.java
This file was deleted.
Oops, something went wrong.
65 changes: 65 additions & 0 deletions
65
runtime/src/main/java/com/speedment/runtime/field/method/BackwardFinder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,65 @@ | |||
/* | |||
* Copyright (c) Emil Forslund, 2016. | |||
* All Rights Reserved. | |||
* | |||
* NOTICE: All information contained herein is, and remains | |||
* the property of Emil Forslund and his suppliers, if any. | |||
* The intellectual and technical concepts contained herein | |||
* are proprietary to Emil Forslund and his suppliers and may | |||
* be covered by U.S. and Foreign Patents, patents in process, | |||
* and are protected by trade secret or copyright law. | |||
* Dissemination of this information or reproduction of this | |||
* material is strictly forbidden unless prior written | |||
* permission is obtained from Emil Forslund himself. | |||
*/ | |||
package com.speedment.runtime.field.method; | |||
|
|||
import com.speedment.runtime.field.trait.HasFinder; | |||
import com.speedment.runtime.manager.Manager; | |||
import java.util.function.Function; | |||
import java.util.stream.Stream; | |||
|
|||
/** | |||
* An operation that can produce a {@code Stream} of foreign entities given a | |||
* single entity. This is useful since it can be passed to an outer stream as | |||
* the argument for a {@code flatMap()}-operation. | |||
* <p> | |||
* Each streamer contains metadata of which fields it compares to determine the | |||
* mapping as well as a reference to the foreign manager. | |||
* <p> | |||
* Streamers have the following signature: | |||
* {@code | |||
* Stream<FK_ENTITY> apply(ENTITY entity); | |||
* } | |||
* | |||
* @param <ENTITY> the source entity | |||
* @param <FK_ENTITY> the target entity | |||
* @param <V> the wrapper type | |||
* | |||
* @author Emil Forslund | |||
* @since 3.0.1 | |||
*/ | |||
public interface BackwardFinder<ENTITY, FK_ENTITY, V> | |||
extends Function<ENTITY, Stream<FK_ENTITY>> { | |||
|
|||
/** | |||
* Returns the field that the stream references. | |||
* <p> | |||
* In the following example, {@code bar} is the target: | |||
* {@code | |||
* foos.stream() | |||
* .flatMap(foo.findBars()) // findBars returns Streamer<Foo, Bar> | |||
* .forEach(...); | |||
* } | |||
* | |||
* @return the target field | |||
*/ | |||
HasFinder<FK_ENTITY, ENTITY, V> getField(); | |||
|
|||
/** | |||
* Returns the manager used for the referenced (foreign) table. | |||
* | |||
* @return target (foreign) manager | |||
*/ | |||
Manager<FK_ENTITY> getTargetManager(); | |||
} |
77 changes: 77 additions & 0 deletions
77
runtime/src/main/java/com/speedment/runtime/field/method/FindFrom.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,77 @@ | |||
/** | |||
* | |||
* Copyright (c) 2006-2016, 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.field.method; | |||
|
|||
import com.speedment.runtime.field.Field; | |||
import com.speedment.runtime.manager.Manager; | |||
import java.util.function.Function; | |||
|
|||
/** | |||
* A handle for a find-operation that can be replaced runtime to optimize a | |||
* {@code Stream}. Formally, a {@code FindFrom} has the following signature: | |||
* {@code | |||
* FK_ENTITY apply(ENTITY entity); | |||
* } | |||
* <p> | |||
* Each {@code FindFrom} contains metadata of which fields it compares to | |||
* determine the mapping as well as a reference to the foreign manager. | |||
* | |||
* @param <ENTITY> the source entity | |||
* @param <FK_ENTITY> the target entity | |||
* @param <V> the wrapper type | |||
* | |||
* @author Emil Forslund | |||
* @since 3.0.0 | |||
*/ | |||
public interface FindFrom<ENTITY, FK_ENTITY, V> extends Function<ENTITY, FK_ENTITY> { | |||
|
|||
/** | |||
* Returns the field that the stream originates from. | |||
* <p> | |||
* In the following example, {@code foo} is the source: | |||
* {@code | |||
* foos.stream() | |||
* .flatMap(foo.findBars()) // findBars returns Streamer<Foo, Bar> | |||
* .forEach(...); | |||
* } | |||
* | |||
* @return the source field | |||
*/ | |||
Field<ENTITY, V> getSourceField(); | |||
|
|||
/** | |||
* Returns the field that the stream references. | |||
* <p> | |||
* In the following example, {@code bar} is the target: | |||
* {@code | |||
* foos.stream() | |||
* .flatMap(foo.findBars()) // findBars returns Streamer<Foo, Bar> | |||
* .forEach(...); | |||
* } | |||
* | |||
* @return the target field | |||
*/ | |||
Field<FK_ENTITY, V> getTargetField(); | |||
|
|||
/** | |||
* Returns the manager used for the referenced (foreign) table. | |||
* | |||
* @return target (foreign) manager | |||
*/ | |||
Manager<FK_ENTITY> getTargetManager(); | |||
|
|||
} |
44 changes: 0 additions & 44 deletions
44
runtime/src/main/java/com/speedment/runtime/field/method/Streamer.java
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.