assert elements != null;
LOG.debug("シャッフルへの各セグメントを分析しています");
List<ShuffleModel.Segment> segments = Lists.create();
for (int elementId = 0, n = elements.size(); elementId < n; elementId++) {
FlowElement element = elements.get(elementId);
FlowElementDescription description = element.getDescription();
RendezvousProcessor proc = environment.getProcessors()
.findRendezvousProcessor(description);
if (proc == null) {
error("{0}に対する{1}が見つかりませんでした",
description,
FlowElementProcessor.class.getName());
continue;
}
List<ShuffleModel.Segment> segmentsInElement = Lists.create();
LOG.debug("{}は{}を使ってシャッフルの情報を分析します", element, proc);
for (FlowElementInput input : element.getInputPorts()) {
ShuffleDescription desc = extractDescription(proc, input);
ShuffleModel.Segment segment = resolveDescription(
elementId,
segments.size() + segmentsInElement.size() + 1,
input,