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

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

/*
 * Copyright 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