blob: 6114d15a765acd77a7ce1e82491237165e19ebff [file] [log] [blame]
/*
* 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);
}
}