
org.sfm.map.impl.JoinEnumarable Maven / Gradle / Ivy
package org.sfm.map.impl;
import org.sfm.map.Mapper;
import org.sfm.map.MappingContext;
import org.sfm.utils.Enumarable;
import org.sfm.utils.ErrorHelper;
public class JoinEnumarable implements Enumarable {
private final Mapper mapper;
private final MappingContext mappingContext;
private final Enumarable sourceEnumarable;
private T currentValue;
private T nextValue;
public JoinEnumarable(Mapper mapper,
MappingContext mappingContext,
Enumarable sourceEnumarable) {
this.mapper = mapper;
this.mappingContext = mappingContext;
this.sourceEnumarable = sourceEnumarable;
}
@Override
public boolean next() {
try {
currentValue = nextValue;
nextValue = null;
while (sourceEnumarable.next()) {
S source = sourceEnumarable.currentValue();
mappingContext.handle(source);
if (mappingContext.rootBroke()) {
if (currentValue == null) {
currentValue = mapper.map(source, mappingContext);
} else {
nextValue = mapper.map(source, mappingContext);
return true;
}
} else {
mapper.mapTo(source, currentValue, mappingContext);
}
}
return currentValue != null;
} catch (Exception e) {
ErrorHelper.rethrow(e);
return false;
}
}
@Override
public T currentValue() {
return currentValue;
}
@Override
public String toString() {
return "JoinJdbcMapper{" +
"jdbcMapper=" + mapper +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy