View Javadoc
1   /*
2    * The contents of this file are subject to the terms of the Common Development and
3    * Distribution License (the License). You may not use this file except in compliance with the
4    * License.
5    *
6    * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
7    * specific language governing permission and limitations under the License.
8    *
9    * When distributing Covered Software, include this CDDL Header Notice in each file and include
10   * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
11   * Header, with the fields enclosed by brackets [] replaced by your own identifying
12   * information: "Portions copyright [year] [name of copyright owner]".
13   *
14   * Copyright 2015-2016 ForgeRock AS.
15   */
16  package org.forgerock.audit.handlers.jdbc;
17  
18  import java.util.LinkedHashMap;
19  import java.util.Map;
20  
21  import org.forgerock.json.JsonPointer;
22  
23  /**
24   * Stores a pair of {@link TableMapping} and a map of parameters.
25   */
26  class TableMappingParametersPair {
27  
28      private TableMapping tableMapping;
29      private Map<String, Object> parameters;
30  
31      /**
32       * Creates a TableMappingParametersPair given a {@link TableMapping}. A empty parameter map is created.
33       * @param tableMapping The {@link TableMapping} to create the pair with.
34       */
35      public TableMappingParametersPair(final TableMapping tableMapping) {
36          this(tableMapping, new LinkedHashMap<String, Object>());
37      }
38  
39      /**
40       * Creates a TableMappingParametersPair given a {@link TableMapping} and parameter map.
41       * @param tableMapping A {@link TableMapping}.
42       * @param parameters A Map of replacement parameters.
43       */
44      public TableMappingParametersPair(final TableMapping tableMapping, final Map<String, Object> parameters) {
45          this.tableMapping = tableMapping;
46          this.parameters = parameters;
47      }
48  
49      /**
50       * Gets the {@link TableMapping} in the pair.
51       * @return A {@link TableMapping}.
52       */
53      public TableMapping getTableMapping() {
54          return tableMapping;
55      }
56  
57      /**
58       * Gets the replacement parameters in the pair.
59       * @return A map of replacement parameters.
60       */
61      public Map<String, Object> getParameters() {
62          return parameters;
63      }
64  
65      /**
66       * Utility method to get the column name out of a {@link TableMapping}.
67       * @param field The {@link JsonPointer} field to get the column of.
68       * @return The column name mapped to the given field.
69       */
70      public String getColumnName(final JsonPointer field) {
71          final String fieldString = field.toString();
72          if (tableMapping.getFieldToColumn().get(fieldString) != null) {
73              return tableMapping.getFieldToColumn().get(fieldString);
74          } else {
75              //remove forward slash and return the result
76              return tableMapping.getFieldToColumn().get(fieldString.substring(1));
77          }
78      }
79  }