package org.zwobble.mammoth.internal.docx; import org.zwobble.mammoth.internal.documents.NumberingLevel; import java.util.Map; import java.util.Optional; import static org.zwobble.mammoth.internal.util.Maps.lookup; import static org.zwobble.mammoth.internal.util.Maps.map; public class Numbering { public static class Num { private final Optional abstractNumId; public Num(Optional abstractNumId) { this.abstractNumId = abstractNumId; } } public static final Numbering EMPTY = new Numbering(map(), map()); private final Map> abstractNums; private final Map nums; public Numbering( Map> abstractNums, Map nums ) { this.abstractNums = abstractNums; this.nums = nums; } public Optional findLevel(String numId, String level) { return lookup(nums, numId) .flatMap(num -> num.abstractNumId) .flatMap(abstractNumId -> lookup(this.abstractNums, abstractNumId)) .flatMap(levels -> lookup(levels, level)); } }