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

org.compass.annotations.config.binding.AnnotationsBindingUtils Maven / Gradle / Ivy

There is a newer version: 2.2.0
Show newest version
/*
 * Copyright 2004-2008 the original author or authors.
 *
 * 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.compass.annotations.config.binding;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Collection;

import org.compass.annotations.Cascade;
import org.compass.annotations.Index;
import org.compass.annotations.ManagedId;
import org.compass.annotations.ManagedIdIndex;
import org.compass.annotations.OmitNorms;
import org.compass.annotations.OmitTf;
import org.compass.annotations.Reverse;
import org.compass.annotations.Store;
import org.compass.annotations.TermVector;
import org.compass.core.Property;
import org.compass.core.mapping.ExcludeFromAll;
import org.compass.core.mapping.ReverseType;

/**
 * @author kimchy
 */
public abstract class AnnotationsBindingUtils {

    public static String getCollectionParameterClassName(Class clazz, Type type) {
        Class retVal = getCollectionParameterClass(clazz, type);
        if (retVal == null) {
            return null;
        }
        return retVal.getName();
    }

    public static Class getCollectionParameterClass(Class clazz, Type type) {
        if (Collection.class.isAssignableFrom(clazz)) {
            if (type instanceof ParameterizedType) {
                ParameterizedType paramType = (ParameterizedType) type;
                Type[] actualTypeArguments = paramType.getActualTypeArguments();
                if (actualTypeArguments != null && actualTypeArguments.length == 1) {
                    return (Class) actualTypeArguments[0];
                }
            }
        }
        return null;
    }

    public static org.compass.core.mapping.osem.ManagedId convert(ManagedId managedId) throws IllegalArgumentException {
        if (managedId == ManagedId.NA) {
            return null;
        } else if (managedId == ManagedId.AUTO) {
            return org.compass.core.mapping.osem.ManagedId.AUTO;
        } else if (managedId == ManagedId.TRUE) {
            return org.compass.core.mapping.osem.ManagedId.TRUE;
        } else if (managedId == ManagedId.FALSE) {
            return org.compass.core.mapping.osem.ManagedId.FALSE;
        } else if (managedId == ManagedId.NO) {
            return org.compass.core.mapping.osem.ManagedId.NO;
        } else if (managedId == ManagedId.NO_STORE) {
            return org.compass.core.mapping.osem.ManagedId.NO_STORE;
        }
        throw new IllegalArgumentException("Failed to convert managedId [" + managedId + "]");
    }

    public static Property.TermVector convert(TermVector termVector) throws IllegalArgumentException {
        if (termVector == TermVector.NA) {
            return null;
        } else if (termVector == TermVector.NO) {
            return Property.TermVector.NO;
        } else if (termVector == TermVector.YES) {
            return Property.TermVector.YES;
        } else if (termVector == TermVector.WITH_POSITIONS) {
            return Property.TermVector.WITH_POSITIONS;
        } else if (termVector == TermVector.WITH_OFFSETS) {
            return Property.TermVector.WITH_OFFSETS;
        } else if (termVector == TermVector.WITH_POSITIONS_OFFSETS) {
            return Property.TermVector.WITH_POSITIONS_OFFSETS;
        }
        throw new IllegalArgumentException("Failed to convert termVectory [" + termVector + "]");
    }

    public static ReverseType convert(Reverse reverse) throws IllegalArgumentException {
        if (reverse == Reverse.NO) {
            return ReverseType.NO;
        } else if (reverse == Reverse.READER) {
            return ReverseType.READER;
        } else if (reverse == Reverse.STRING) {
            return ReverseType.STRING;
        }
        throw new IllegalArgumentException("Failed to convert reverse [" + reverse + "]");
    }

    public static ExcludeFromAll convert(org.compass.annotations.ExcludeFromAll excludeFromAll) throws IllegalArgumentException {
        if (excludeFromAll == org.compass.annotations.ExcludeFromAll.NO) {
            return ExcludeFromAll.NO;
        } else if (excludeFromAll == org.compass.annotations.ExcludeFromAll.NO_ANALYZED) {
            return ExcludeFromAll.NO_ANALYZED;
        } else if (excludeFromAll == org.compass.annotations.ExcludeFromAll.YES) {
            return ExcludeFromAll.YES;
        }
        throw new IllegalArgumentException("Failed to convert exclude from all [" + excludeFromAll + "]");
    }

    public static Boolean convert(OmitNorms omitNorms) {
        if (omitNorms == OmitNorms.NA) {
            return null;
        } else if (omitNorms == OmitNorms.YES) {
            return true;
        } else if (omitNorms == OmitNorms.NO) {
            return false;
        }
        throw new IllegalArgumentException("Failed to convert omitNorms [" + omitNorms + "]");
    }

    public static Boolean convert(OmitTf omitTf) {
        if (omitTf == OmitTf.NA) {
            return null;
        } else if (omitTf == OmitTf.YES) {
            return true;
        } else if (omitTf == OmitTf.NO) {
            return false;
        }
        throw new IllegalArgumentException("Failed to convert omitTf [" + omitTf + "]");
    }

    public static Property.Store convert(Store store) throws IllegalArgumentException {
        if (store == Store.NA) {
            return null;
        } else if (store == Store.NO) {
            return Property.Store.NO;
        } else if (store == Store.YES) {
            return Property.Store.YES;
        } else if (store == Store.COMPRESS) {
            return Property.Store.COMPRESS;
        }
        throw new IllegalArgumentException("Failed to convert store [" + store + "]");
    }

    public static Property.Index convert(Index index) throws IllegalArgumentException {
        if (index == Index.NA) {
            return null;
        } else if (index == Index.NO) {
            return Property.Index.NO;
        } else if (index == Index.ANALYZED) {
            return Property.Index.ANALYZED;
        } else if (index == Index.NOT_ANALYZED) {
            return Property.Index.NOT_ANALYZED;
        } else if (index == Index.TOKENIZED) {
            return Property.Index.TOKENIZED;
        } else if (index == Index.UN_TOKENIZED) {
            return Property.Index.UN_TOKENIZED;
        }
        throw new IllegalArgumentException("Failed to convert index [" + index + "]");
    }

    public static Property.Index convert(ManagedIdIndex index) throws IllegalArgumentException {
        if (index == ManagedIdIndex.NA) {
            return null;
        } else if (index == ManagedIdIndex.NO) {
            return Property.Index.NO;
        } else if (index == ManagedIdIndex.NOT_ANALYZED) {
            return Property.Index.NOT_ANALYZED;
        } else if (index == ManagedIdIndex.UN_TOKENIZED) {
            return Property.Index.UN_TOKENIZED;
        }
        throw new IllegalArgumentException("Failed to convert index [" + index + "]");
    }

    public static org.compass.core.mapping.Cascade convert(Cascade cascade) throws IllegalArgumentException {
        if (cascade == Cascade.ALL) {
            return org.compass.core.mapping.Cascade.ALL;
        } else if (cascade == Cascade.CREATE) {
            return org.compass.core.mapping.Cascade.CREATE;
        } else if (cascade == Cascade.DELETE) {
            return org.compass.core.mapping.Cascade.DELETE;
        } else if (cascade == Cascade.SAVE) {
            return org.compass.core.mapping.Cascade.SAVE;
        }
        throw new IllegalArgumentException("Failed to convert cascade [" + cascade + "]");
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy