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

org.zalando.jpa.eclipselink.customizer.NameUtils Maven / Gradle / Ivy

There is a newer version: 0.9.2
Show newest version
/**
 * Copyright (C) 2015 Zalando SE (http://tech.zalando.com)
 *
 * 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 org.zalando.jpa.eclipselink.customizer;

import static com.google.common.base.Strings.isNullOrEmpty;

import com.google.common.base.CaseFormat;
import com.google.common.base.Preconditions;

/**
 * Utilities for DB-Name-Conventions at Zalando.
 *
 * @author  jbellmann
 */
public final class NameUtils {

    private NameUtils() {
        // hide constructor
    }

    /**
     * Builds an fieldname (or column) from provided tablename and attributename.
* For an tablename like 'purchase_order_head' and an attributename 'brandCode' you will get 'poh_brand_code'. * * @param tableName * @param attributeName * * @return */ public static String buildFieldName(final String tableName, final String attributeName) { return iconizeTableName(tableName) + "_" + camelCaseToUnderscore(attributeName); } /** * Builds an fieldname (or column) from provided tablename and attributename for boolean fields.
* For an tablename like 'purchase_order_head' and an attributename 'ordered' you will get 'poh_is_ordered'. * * @param tableName * @param attributeName * * @return */ public static String buildBooleanFieldName(final String tableName, String attributeName) { if (attributeName.toLowerCase().startsWith("is")) { attributeName = attributeName.substring(2); } return iconizeTableName(tableName) + "_is_" + camelCaseToUnderscore(attributeName); } /** * @param name * * @return */ public static String camelCaseToUnderscore(final String name) { return CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, name); } /** * Builds an prefix from tablename for columns. Always in lowercase.
* So for an tablename like 'TA_BLENAME' you would get 'tb'.
* For an tablename like 'thisIs_BlOED' you would get 'tb'. * * @param tableName * * @return */ public static String iconizeTableName(final String tableName) { Preconditions.checkArgument(not(isNullOrEmpty(tableName)), "TableName '%s' to iconize should never be null or empty", tableName); final StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(tableName.charAt(0)); for (int i = 1; i < tableName.length(); ++i) { final char charAt = tableName.charAt(i); if (charAt == '_') { stringBuilder.append(tableName.charAt(i + 1)); } } return stringBuilder.toString().toLowerCase(); } public static boolean not(final boolean toNegate) { return !toNegate; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy