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

net.java.ao.schema.info.ImmutableFieldInfo 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.info;

import net.java.ao.ValueGenerator;
import net.java.ao.types.TypeInfo;

import java.lang.reflect.Method;

class ImmutableFieldInfo implements FieldInfo {

    private final String fieldName;
    private final String polymorphicName;

    private final Method accessor;
    private final Method mutator;

    private final boolean primary;
    private final boolean nullable;
    private final boolean isTransient;

    private final boolean autoIncrement;
    private final boolean defaultValue;

    private final Class fieldType;
    private final TypeInfo typeInfo;
    private final Class> generatorType;

    ImmutableFieldInfo(String fieldName, String polymorphicName, Method accessor, Method mutator,
                       Class fieldType, TypeInfo typeInfo, boolean primary, boolean nullable,
                       boolean isTransient, boolean autoIncrement, boolean defaultValue,
                       Class> generatorType) {
        this.fieldName = fieldName;
        this.polymorphicName = polymorphicName;
        this.accessor = accessor;
        this.mutator = mutator;
        this.primary = primary;
        this.nullable = nullable;
        this.isTransient = isTransient;
        this.autoIncrement = autoIncrement;
        this.defaultValue = defaultValue;
        this.fieldType = fieldType;
        this.typeInfo = typeInfo;
        this.generatorType = generatorType;
    }

    @Override
    public String getName() {
        return fieldName;
    }

    @Override
    public String getPolymorphicName() {
        return polymorphicName;
    }

    @Override
    public boolean isPrimary() {
        return primary;
    }

    @Override
    public boolean isNullable() {
        return nullable;
    }

    @Override
    public boolean isStorable() {
        return !isTransient() && getTypeInfo().getLogicalType().shouldStore(getJavaType());
    }

    @Override
    public boolean isCacheable() {
        return isStorable();
    }

    @Override
    public boolean isTransient() {
        return isTransient;
    }

    @Override
    public boolean hasAutoIncrement() {
        return autoIncrement;
    }

    @Override
    public boolean hasDefaultValue() {
        return defaultValue;
    }

    @Override
    public TypeInfo getTypeInfo() {
        return typeInfo;
    }

    @Override
    public Class getJavaType() {
        return fieldType;
    }

    @Override
    public boolean hasAccessor() {
        return accessor != null;
    }

    @Override
    public Method getAccessor() {
        return accessor;
    }

    @Override
    public boolean hasMutator() {
        return mutator != null;
    }

    @Override
    public Method getMutator() {
        return mutator;
    }

    @Override
    public Class> getGeneratorType() {
        return generatorType;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof ImmutableFieldInfo)) return false;

        ImmutableFieldInfo that = (ImmutableFieldInfo) o;

        if (accessor != null ? !accessor.equals(that.accessor) : that.accessor != null) return false;
        if (!fieldName.equals(that.fieldName)) return false;
        if (mutator != null ? !mutator.equals(that.mutator) : that.mutator != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = fieldName.hashCode();
        result = 31 * result + (accessor != null ? accessor.hashCode() : 0);
        result = 31 * result + (mutator != null ? mutator.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "ImmutableFieldInfo{" +
                "fieldName='" + fieldName + '\'' +
                ", polymorphicName='" + polymorphicName + '\'' +
                ", accessor=" + accessor +
                ", mutator=" + mutator +
                ", primary=" + primary +
                ", nullable=" + nullable +
                ", autoIncrement=" + autoIncrement +
                ", defaultValue=" + defaultValue +
                ", fieldType=" + fieldType +
                ", typeInfo=" + typeInfo +
                ", generatorType=" + generatorType +
                '}';
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy