IndexedAssociationRecord.java
package org.codefilarete.stalactite.engine.runtime;
import java.util.Objects;
import org.codefilarete.reflection.ReversibleAccessor;
import static org.codefilarete.reflection.Accessors.accessorByMethodReference;
/**
* Same as {@link AssociationRecord} but with an index field to store indexed collections such as {@link java.util.List}
* or {@link java.util.LinkedHashSet}
*
* @author Guillaume Mary
*/
public class IndexedAssociationRecord extends AssociationRecord {
public static final ReversibleAccessor<IndexedAssociationRecord, Object> LEFT_ACCESSOR = accessorByMethodReference(IndexedAssociationRecord::getLeft, IndexedAssociationRecord::setLeft);
public static final ReversibleAccessor<IndexedAssociationRecord, Object> RIGHT_ACCESSOR = accessorByMethodReference(IndexedAssociationRecord::getRight, IndexedAssociationRecord::setRight);
public static final ReversibleAccessor<IndexedAssociationRecord, Integer> INDEX_ACCESSOR = accessorByMethodReference(IndexedAssociationRecord::getIndex, IndexedAssociationRecord::setIndex);
private int index;
public IndexedAssociationRecord() {
}
public IndexedAssociationRecord(Object leftValue, Object rightValue, int index) {
super(leftValue, rightValue);
this.index = index;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof IndexedAssociationRecord)) return false;
IndexedAssociationRecord that = (IndexedAssociationRecord) o;
return Objects.equals(left, that.left) &&
Objects.equals(right, that.right) &&
index == that.index;
}
@Override
public int hashCode() {
return Objects.hash(left, right, index);
}
}