ResolvedElementCollectionRelation.java
package org.codefilarete.stalactite.engine.configurer.model;
import java.util.Collection;
import java.util.Map;
import java.util.function.Supplier;
import javax.annotation.Nullable;
import org.codefilarete.reflection.ReadWritePropertyAccessPoint;
import org.codefilarete.stalactite.dsl.property.CascadeOptions.RelationMode;
import org.codefilarete.stalactite.engine.configurer.elementcollection.ElementRecord;
import org.codefilarete.stalactite.sql.ddl.structure.Column;
import org.codefilarete.stalactite.sql.ddl.structure.Table;
import org.codefilarete.stalactite.sql.result.BeanRelationFixer;
public class ResolvedElementCollectionRelation<SRC, TRGT, S extends Collection<TRGT>, SRCID, SRCTABLE extends Table<SRCTABLE>, COLLECTIONTABLE extends Table<COLLECTIONTABLE>, ER extends ElementRecord<TRGT, SRCID>>
extends ComponentRelation<SRC, ER, S, SRCTABLE, COLLECTIONTABLE, SRCID> {
private final Map<ReadWritePropertyAccessPoint<ER, ?>, Column<COLLECTIONTABLE, ?>> columnMapping;
private final Map<Column<SRCTABLE, ?>, Column<COLLECTIONTABLE, ?>> primaryKeyForeignKeyColumnMapping;
private final Class<S> collectionType;
@Nullable
private final Column<COLLECTIONTABLE, Integer> indexColumn;
public ResolvedElementCollectionRelation(ReadWritePropertyAccessPoint<SRC, S> accessor,
RelationMode relationMode,
boolean fetchSeparately,
DirectRelationJoin<SRCTABLE, COLLECTIONTABLE, SRCID> join,
BeanRelationFixer<SRC, ER> relationFixer,
Supplier<S> componentFactory,
Map<ReadWritePropertyAccessPoint<ER, ?>, Column<COLLECTIONTABLE, ?>> columnMapping,
Map<Column<SRCTABLE, ?>, Column<COLLECTIONTABLE, ?>> primaryKeyForeignKeyColumnMapping,
Class<S> collectionType,
@Nullable Column<COLLECTIONTABLE, Integer> indexColumn) {
super(accessor, relationMode, fetchSeparately, join, relationFixer, componentFactory);
this.columnMapping = columnMapping;
this.primaryKeyForeignKeyColumnMapping = primaryKeyForeignKeyColumnMapping;
this.collectionType = collectionType;
this.indexColumn = indexColumn;
}
@Override
public DirectRelationJoin<SRCTABLE, COLLECTIONTABLE, SRCID> getJoin() {
return (DirectRelationJoin<SRCTABLE, COLLECTIONTABLE, SRCID>) super.getJoin();
}
public Map<ReadWritePropertyAccessPoint<ER, ?>, Column<COLLECTIONTABLE, ?>> getColumnMapping() {
return columnMapping;
}
public Map<Column<SRCTABLE, ?>, Column<COLLECTIONTABLE, ?>> getPrimaryKeyForeignKeyColumnMapping() {
return primaryKeyForeignKeyColumnMapping;
}
public Class<S> getCollectionType() {
return collectionType;
}
public boolean isOrdered() {
return indexColumn != null;
}
@Nullable
public Column<COLLECTIONTABLE, Integer> getIndexColumn() {
return indexColumn;
}
}