/*******************************************************************************
* Copyright (c) 2011 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.hibernate.jpt.core.internal.context.java;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.JpaContextModel;
import org.jboss.tools.hibernate.jpt.core.internal.context.ParametrizedElement;
import org.jboss.tools.hibernate.jpt.core.internal.resource.java.TypeDefAnnotation;
/**
* @author Dmitry Geraskov
*
*/
public interface JavaTypeDef extends JpaContextModel, ParametrizedElement {
String USER_TYPE_INTERFACE = "org.hibernate.usertype.UserType";
String TYPE_INTERFACE = "org.hibernate.type.Type";
String COMPOSITE_USER_TYPE_INTERFACE = "org.hibernate.usertype.CompositeUserType";
String USER_COLLECTION_USER_TYPE_INTERFACE = "org.hibernate.usertype.UserCollectionType";
String[] POSSIBLE_INTERFACES = new String[]{
TYPE_INTERFACE,
USER_TYPE_INTERFACE,
COMPOSITE_USER_TYPE_INTERFACE,
USER_COLLECTION_USER_TYPE_INTERFACE
};
String getName();
void setName(String name);
String NAME_PROPERTY = "name"; //$NON-NLS-1$
// **************** defaultForType class **************************************
String getDefaultForTypeClass();
void setDefaultForTypeClass(String value);
String DEF_FOR_TYPE_PROPERTY = "defaultForTypeClass"; //$NON-NLS-1$
// **************** type class **************************************
String getTypeClass();
void setTypeClass(String value);
String TYPE_CLASS_PROPERTY = "specifiedTypeClass"; //$NON-NLS-1$
char getTypeClassEnclosingTypeSeparator();
// **************** validation *********************************************
TextRange getNameTextRange();
TypeDefAnnotation getTypeDefAnnotation();
}