0cfee20faa9e757fcbd5ea77b4259114d42ae065
[ovsdb.git] / library / impl / src / main / java / org / opendaylight / ovsdb / lib / schema / typed / TypedDatabaseSchemaImpl.java
1 /*
2  * Copyright © 2019 PANTHEON.tech, s.r.o. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.ovsdb.lib.schema.typed;
9
10 import static java.util.Objects.requireNonNull;
11
12 import java.util.Map;
13 import org.opendaylight.ovsdb.lib.message.TableUpdates;
14 import org.opendaylight.ovsdb.lib.notation.Row;
15 import org.opendaylight.ovsdb.lib.notation.UUID;
16 import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
17 import org.opendaylight.ovsdb.lib.schema.ForwardingDatabaseSchema;
18 import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
19
20 final class TypedDatabaseSchemaImpl extends ForwardingDatabaseSchema implements TypedDatabaseSchema {
21     private final DatabaseSchema delegate;
22
23     TypedDatabaseSchemaImpl(final DatabaseSchema delegate) {
24         this.delegate = requireNonNull(delegate);
25     }
26
27     @Override
28     protected DatabaseSchema delegate() {
29         return delegate;
30     }
31
32     @Override
33     public TypedDatabaseSchema withInternallyGeneratedColumns() {
34         final DatabaseSchema newDelegate = delegate.withInternallyGeneratedColumns();
35         return newDelegate == delegate ? this : new TypedDatabaseSchemaImpl(newDelegate);
36     }
37
38     @Override
39     public GenericTableSchema getTableSchema(final Class<?> klazz) {
40         return TyperUtils.getTableSchema(this, klazz);
41     }
42
43     @Override
44     public <T> T getTypedRowWrapper(final Class<T> klazz) {
45         return TyperUtils.getTypedRowWrapper(this, klazz);
46     }
47
48     @Override
49     public <T> T getTypedRowWrapper(final Class<T> klazz, final Row<GenericTableSchema> row) {
50         return TyperUtils.getTypedRowWrapper(this, klazz, row);
51     }
52
53     @Override
54     public <T> Map<UUID, T> extractRowsOld(final Class<T> klazz, final TableUpdates updates) {
55         return TyperUtils.extractRowsOld(klazz, updates, this);
56     }
57
58     @Override
59     public <T> Map<UUID, T> extractRowsUpdated(final Class<T> klazz, final TableUpdates updates) {
60         return TyperUtils.extractRowsUpdated(klazz, updates, this);
61     }
62
63     @Override
64     public <T> Map<UUID, T> extractRowsRemoved(final Class<T> klazz, final TableUpdates updates) {
65         return TyperUtils.extractRowsRemoved(klazz, updates, this);
66     }
67 }