| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.ignite.cache.store.jdbc; |
| |
| import java.io.Serializable; |
| import org.apache.ignite.internal.util.tostring.GridToStringInclude; |
| import org.apache.ignite.internal.util.typedef.internal.S; |
| |
| /** |
| * Description for type that could be stored into database by store. |
| */ |
| public class JdbcType implements Serializable { |
| /** */ |
| private static final long serialVersionUID = 0L; |
| |
| /** Cache name. */ |
| private String cacheName; |
| |
| /** Schema name in database. */ |
| private String dbSchema; |
| |
| /** Table name in database. */ |
| private String dbTbl; |
| |
| /** Key class used to store key in cache. */ |
| private String keyType; |
| |
| /** List of fields descriptors for key object. */ |
| @GridToStringInclude |
| private JdbcTypeField[] keyFields; |
| |
| /** Value class used to store value in cache. */ |
| private String valType; |
| |
| /** List of fields descriptors for value object. */ |
| @GridToStringInclude |
| private JdbcTypeField[] valFlds; |
| |
| /** Custom type hasher. */ |
| private JdbcTypeHasher hasher; |
| |
| /** |
| * Empty constructor (all values are initialized to their defaults). |
| */ |
| public JdbcType() { |
| /* No-op. */ |
| } |
| |
| /** |
| * Copy constructor. |
| * |
| * @param type Type to copy. |
| */ |
| public JdbcType(JdbcType type) { |
| cacheName = type.getCacheName(); |
| |
| dbSchema = type.getDatabaseSchema(); |
| dbTbl = type.getDatabaseTable(); |
| |
| keyType = type.getKeyType(); |
| keyFields = type.getKeyFields(); |
| |
| valType = type.getValueType(); |
| valFlds = type.getValueFields(); |
| } |
| |
| /** |
| * Gets associated cache name. |
| * |
| * @return Cache name. |
| */ |
| public String getCacheName() { |
| return cacheName; |
| } |
| |
| /** |
| * Sets associated cache name. |
| * |
| * @param cacheName Cache name. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setCacheName(String cacheName) { |
| this.cacheName = cacheName; |
| |
| return this; |
| } |
| |
| /** |
| * Gets database schema name. |
| * |
| * @return Schema name. |
| */ |
| public String getDatabaseSchema() { |
| return dbSchema; |
| } |
| |
| /** |
| * Sets database schema name. |
| * |
| * @param dbSchema Schema name. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setDatabaseSchema(String dbSchema) { |
| this.dbSchema = dbSchema; |
| |
| return this; |
| } |
| |
| /** |
| * Gets table name in database. |
| * |
| * @return Table name in database. |
| */ |
| public String getDatabaseTable() { |
| return dbTbl; |
| } |
| |
| /** |
| * Table name in database. |
| * |
| * @param dbTbl Table name in database. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setDatabaseTable(String dbTbl) { |
| this.dbTbl = dbTbl; |
| |
| return this; |
| } |
| |
| /** |
| * Gets key type. |
| * |
| * @return Key type. |
| */ |
| public String getKeyType() { |
| return keyType; |
| } |
| |
| /** |
| * Sets key type. |
| * |
| * @param keyType Key type. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setKeyType(String keyType) { |
| this.keyType = keyType; |
| |
| return this; |
| } |
| |
| /** |
| * Sets key type. |
| * |
| * @param cls Key type class. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setKeyType(Class<?> cls) { |
| setKeyType(cls.getName()); |
| |
| return this; |
| } |
| |
| /** |
| * Gets value type. |
| * |
| * @return Key type. |
| */ |
| public String getValueType() { |
| return valType; |
| } |
| |
| /** |
| * Sets value type. |
| * |
| * @param valType Value type. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setValueType(String valType) { |
| this.valType = valType; |
| |
| return this; |
| } |
| |
| /** |
| * Sets value type. |
| * |
| * @param cls Value type class. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setValueType(Class<?> cls) { |
| setValueType(cls.getName()); |
| |
| return this; |
| } |
| |
| /** |
| * Gets optional persistent key fields (needed only if {@link CacheJdbcPojoStore} is used). |
| * |
| * @return Persistent key fields. |
| */ |
| public JdbcTypeField[] getKeyFields() { |
| return keyFields; |
| } |
| |
| /** |
| * Sets optional persistent key fields (needed only if {@link CacheJdbcPojoStore} is used). |
| * |
| * @param keyFlds Persistent key fields. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setKeyFields(JdbcTypeField... keyFlds) { |
| this.keyFields = keyFlds; |
| |
| return this; |
| } |
| |
| /** |
| * Gets optional persistent value fields (needed only if {@link CacheJdbcPojoStore} is used). |
| * |
| * @return Persistent value fields. |
| */ |
| public JdbcTypeField[] getValueFields() { |
| return valFlds; |
| } |
| |
| /** |
| * Sets optional persistent value fields (needed only if {@link CacheJdbcPojoStore} is used). |
| * |
| * @param valFlds Persistent value fields. |
| * @return {@code this} for chaining. |
| */ |
| public JdbcType setValueFields(JdbcTypeField... valFlds) { |
| this.valFlds = valFlds; |
| |
| return this; |
| } |
| |
| /** {@inheritDoc} */ |
| @Override public String toString() { |
| return S.toString(JdbcType.class, this); |
| } |
| } |