Relation.java
package org.codefilarete.stalactite.engine.configurer.model;
import org.codefilarete.reflection.ReadWritePropertyAccessPoint;
import org.codefilarete.stalactite.dsl.property.CascadeOptions.RelationMode;
import org.codefilarete.stalactite.sql.ddl.structure.Table;
import org.codefilarete.stalactite.sql.result.BeanRelationFixer;
public abstract class Relation<SRC, TRGT, LEFTTABLE extends Table<LEFTTABLE>, RIGHTTABLE extends Table<RIGHTTABLE>, JOINTYPE>
extends MappingJoin<LEFTTABLE, RIGHTTABLE, JOINTYPE> {
private final ReadWritePropertyAccessPoint<SRC, TRGT> accessor;
private final boolean fetchSeparately;
private final RelationMode relationMode;
protected Relation(ReadWritePropertyAccessPoint<SRC, TRGT> accessor,
RelationMode relationMode,
boolean fetchSeparately,
RelationJoin join) {
super(join);
this.accessor = accessor;
this.fetchSeparately = fetchSeparately;
this.relationMode = relationMode;
}
public ReadWritePropertyAccessPoint<SRC, TRGT> getAccessor() {
return accessor;
}
public boolean isFetchSeparately() {
return fetchSeparately;
}
public RelationMode getRelationMode() {
return relationMode;
}
/**
* The function to be called with the current entity and the target one as arguments to fulfill the relation.
* Made of current relation readWriteAccessPoint and mapped-by one.
* Should also take into account Collection cases for *-to-many relation, or Map ones. As a consequence, the input
* of it can't be of TRGT type, but must be quite a
*
*/
public abstract BeanRelationFixer<SRC, ?> getRelationFixer();
}