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

net.java.ao.schema.TransformsTableNameConverter Maven / Gradle / Ivy

Go to download

This is the core library for Active Objects. It is generic and can be embedded in any environment. As such it is generic and won't contain all connection pooling, etc.

There is a newer version: 6.1.1
Show newest version
package net.java.ao.schema;

import java.util.List;
import java.util.Objects;

import static net.java.ao.Common.convertSimpleClassName;

abstract class TransformsTableNameConverter extends CanonicalClassNameTableNameConverter {
    private List transforms;
    private CanonicalClassNameTableNameConverter delegateTableNameConverter;

    TransformsTableNameConverter(List transforms, CanonicalClassNameTableNameConverter delegateTableNameConverter) {
        this.transforms = Objects.requireNonNull(transforms, "transforms can't be null");
        this.delegateTableNameConverter = Objects.requireNonNull(delegateTableNameConverter, "delegateTableNameConverter can't be null");
    }

    @Override
    protected final String getName(String entityClassCanonicalName) {
        return delegateTableNameConverter.getName(transform(entityClassCanonicalName));
    }

    private String transform(String entityClassCanonicalName) {
        for (Transform transform : transforms) {
            if (transform.accept(entityClassCanonicalName)) {
                return transform.apply(entityClassCanonicalName);
            }
        }
        return entityClassCanonicalName;
    }

    static interface Transform {
        boolean accept(String entityClassCanonicalName);

        String apply(String entityClassCanonicalName);
    }

    final static class ClassNameTableNameConverter extends CanonicalClassNameTableNameConverter {
        @Override
        protected String getName(String entityClassCanonicalName) {
            return convertSimpleClassName(entityClassCanonicalName);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy