blob: 04f6ec6a5808d705e9f40872de27659e2ccc0ee0 [file] [log] [blame]
/*
* Copyright 2001-2007 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.jetbrains.generate.tostring.element;
/**
* This is an Element.
* <p/>
* Element are all the fields and methods from a given class.
* <p/>
* The common information for the fields and the methods are what this element represent.
*/
public interface Element {
/**
* Get's the elements accessor.
* <p/>
* <br/>If the element is a field the accessor is just the name of the field - example: <code>myField</code>
* <br/>If the element is a method the accessor is the methodname with () - example: <code>getMyField()</code>
*
* @return the accessor, null if none exists (only for a method with parameters).
*/
String getAccessor();
/**
* Get's the elements name.
*
* @return name of this field.
*/
String getName();
/**
* Is this element an array type?
*
* @return true if this element is an array type.
*/
boolean isArray();
/**
* Is this element a {@link java.util.Collection} type (isAssignableFrom java.util.Collection)
*
* @return true if this element is a {@link java.util.Collection} type.
*/
boolean isCollection();
/**
* Is this element a {@link java.util.Map} type (isAssignableFrom java.util.Map)
*
* @return true if this element is a {@link java.util.Map} type.
*/
boolean isMap();
/**
* Is this element a primitive type
*
* @return true if this element is a primitive type.
*/
boolean isPrimitive();
/**
* Is the element a {@link String} type?
*
* @return true if this element is a String type.
*/
boolean isString();
/**
* Is the element a primitive array type? (int[], long[], float[] etc.).
*
* @return true if this element is a primitive array type.
*/
boolean isPrimitiveArray();
/**
* Is the element an Object array type? (String[], Object[] etc.).
*
* @return true if this element is an Object array type.
*/
boolean isObjectArray();
/**
* Is the element a numeric type?
*
* @return true if the element is a numeric type.
*/
boolean isNumeric();
/**
* Is the element an Object type?
*
* @return true if the element is an Object type.
*/
boolean isObject();
/**
* Is the element a java.util.Date type?
*
* @return true if the element is a Date type.
*/
boolean isDate();
/**
* Is this element a {@link java.util.Set} type (isAssignableFrom java.util.Set)
*
* @return true if this element is a {@link java.util.Set} type.
*/
boolean isSet();
/**
* Is this element a {@link java.util.List} type (isAssignableFrom java.util.List)
*
* @return true if this element is a {@link java.util.List} type.
*/
boolean isList();
/**
* Is the element a String array type (etc. String[])?
*
* @return true if the element is a String array type.
*/
boolean isStringArray();
/**
* Is the element a java.util.Calendar type (also sublcass such as GregorianCalendar).
*
* @return true if the element is a java.util.Calendar type.
*/
boolean isCalendar();
/**
* Is the element a java.lang.Boolean type or a boolean primitive?
*
* @return true if the element is either a java.lang.Boolean or a boolean primitive
*/
boolean isBoolean();
/**
* Get's the elements type classname (etc. Object, String, List)
*
* @return the elements type classname.
*/
String getTypeName();
/**
* Get's the elements type qualified classname (etc. java.lang.Object, java.lang.String, java.util.List)
*
* @return the elements type qualified classname.
*/
String getTypeQualifiedName();
}