Split out static classes
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / OrderedMapModificationStrategy.java
1 package org.opendaylight.yangtools.yang.data.impl.schema.tree;
2
3 import static com.google.common.base.Preconditions.checkArgument;
4 import com.google.common.base.Optional;
5 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
6 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
7 import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
8 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder;
9 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedMapNodeBuilder;
10 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
11
12 final class OrderedMapModificationStrategy extends NormalizedNodeContainerModificationStrategy {
13     private final Optional<ModificationApplyOperation> entryStrategy;
14
15     OrderedMapModificationStrategy(final ListSchemaNode schema) {
16         super(OrderedMapNode.class);
17         entryStrategy = Optional.<ModificationApplyOperation> of(new ListEntryModificationStrategy(schema));
18     }
19
20     @Override
21     boolean isOrdered() {
22         return true;
23     }
24
25     @SuppressWarnings("rawtypes")
26     @Override
27     protected NormalizedNodeContainerBuilder createBuilder(final NormalizedNode<?, ?> original) {
28         checkArgument(original instanceof OrderedMapNode);
29         return ImmutableOrderedMapNodeBuilder.create((OrderedMapNode) original);
30     }
31
32     @Override
33     public Optional<ModificationApplyOperation> getChild(final YangInstanceIdentifier.PathArgument identifier) {
34         if (identifier instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates) {
35             return entryStrategy;
36         }
37         return Optional.absent();
38     }
39
40     @Override
41     public String toString() {
42         return "OrderedMapModificationStrategy [entry=" + entryStrategy + "]";
43     }
44 }