All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.datastax.driver.mapping.DefaultNamingStrategy Maven / Gradle / Ivy

There is a newer version: 3.11.5
Show newest version
/*
 *      Copyright (C) 2012-2015 DataStax Inc.
 *
 *   Licensed 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 com.datastax.driver.mapping;

import java.util.List;

/**
 * A naming strategy that builds upon two naming conventions for the Java and Cassandra side.
 * 

* To infer a Cassandra name, the strategy will {@link NamingConvention#split(String) split} * the Java name according to the Java convention, and then * {@link NamingConvention#join(List) join} the resulting tokens according to the Cassandra * convention. For example, a possible implementation might: *

    *
  • trim a prefix and tokenize on camel case: split("mUserName") = "user, name"
  • *
  • join with a separator: join("user", "name") => "user_name"
  • *
*/ public class DefaultNamingStrategy implements NamingStrategy { private NamingConvention javaConvention; private NamingConvention cassandraConvention; /** * Builds a new instance with the default conventions, namely * {@link NamingConventions#LOWER_CAMEL_CASE lower camel case} * for the Java convention, and * {@link NamingConventions#LOWER_CASE lower case} * for the Cassandra convention. *

* For example, a "userName" Java property will be mapped to a "username" column. */ public DefaultNamingStrategy() { this(NamingConventions.LOWER_CAMEL_CASE, NamingConventions.LOWER_CASE); } /** * Builds a new instance. * * @param javaConvention the naming convention that will be used to tokenize the Java * property names. * @param cassandraConvention the naming convention that will be used to build the Cassandra * names from the Java tokens. */ public DefaultNamingStrategy(NamingConvention javaConvention, NamingConvention cassandraConvention) { if (javaConvention == null || cassandraConvention == null) { throw new IllegalArgumentException("input/output NamingConvention cannot be null"); } this.javaConvention = javaConvention; this.cassandraConvention = cassandraConvention; } @Override public String toCassandraName(String javaPropertyName) { return cassandraConvention.join(javaConvention.split(javaPropertyName)); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy