in odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationEnd.java [161:220]
public boolean compare(final AssociationEnd end1, final AssociationEnd end2) {
FullQualifiedName end1Type = end1.getType();
FullQualifiedName currentAssociationEnd1Type = currentAssociationEnd1.getType();
FullQualifiedName end2Type = end2.getType();
FullQualifiedName currentAssociationEnd2Type = currentAssociationEnd2.getType();
if(end1.getMultiplicity() == null || currentAssociationEnd1.getMultiplicity() == null) {
return false;
}
if(end2.getMultiplicity() == null || currentAssociationEnd2.getMultiplicity() == null) {
return false;
}
boolean end1eqCurEnd1 = end1.getMultiplicity().equals(currentAssociationEnd1.getMultiplicity());
boolean end2eqCurEnd2 = end2.getMultiplicity().equals(currentAssociationEnd2.getMultiplicity());
if(end1Type.equals(currentAssociationEnd1Type) && end2Type.equals(currentAssociationEnd2Type)
&& end1eqCurEnd1 && end2eqCurEnd2) {
return true;
}
boolean end1EqCurEnd2 = end1.getMultiplicity().equals(currentAssociationEnd2.getMultiplicity());
boolean end2EqCurEnd1 = end2.getMultiplicity().equals(currentAssociationEnd1.getMultiplicity());
if(end1Type.equals(currentAssociationEnd2Type) && end2Type.equals(currentAssociationEnd1Type)
&& end1EqCurEnd2 && end2EqCurEnd1) {
return true;
}
boolean end1IsZeroToOne = end1.getMultiplicity() == EdmMultiplicity.ZERO_TO_ONE;
boolean end1IsOne = end1.getMultiplicity() == EdmMultiplicity.ONE;
boolean end2IsZeroToOne = end2.getMultiplicity() == EdmMultiplicity.ZERO_TO_ONE;
boolean end2IsOne = end2.getMultiplicity() == EdmMultiplicity.ONE;
if (end1Type.equals(currentAssociationEnd1Type) && end2Type.equals(currentAssociationEnd2Type)) {
if ((end1IsZeroToOne && currentAssociationEnd1.getMultiplicity() == EdmMultiplicity.ONE
|| end1IsOne && currentAssociationEnd1.getMultiplicity() == EdmMultiplicity.ZERO_TO_ONE)
&& end2eqCurEnd2) {
return true;
}
if ((end2IsZeroToOne && currentAssociationEnd2.getMultiplicity() == EdmMultiplicity.ONE
|| end2IsOne && currentAssociationEnd2.getMultiplicity() == EdmMultiplicity.ZERO_TO_ONE)
&& end1eqCurEnd1) {
return true;
}
}
if (end2Type.equals(currentAssociationEnd1Type) && end1Type.equals(currentAssociationEnd2Type)) {
if ((end1IsZeroToOne && currentAssociationEnd2.getMultiplicity() == EdmMultiplicity.ONE
|| end1IsOne && currentAssociationEnd2.getMultiplicity() == EdmMultiplicity.ZERO_TO_ONE)
&& end2EqCurEnd1) {
return true;
}
if ((end2IsZeroToOne && currentAssociationEnd1.getMultiplicity() == EdmMultiplicity.ONE
|| end2IsOne && currentAssociationEnd1.getMultiplicity() == EdmMultiplicity.ZERO_TO_ONE)
&& end1EqCurEnd2) {
return true;
}
}
return false;
}