/*
* Copyright 2008 Udai Gupta, Ralf Joachim
*
* 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.castor.cpa.query.object;
import org.castor.cpa.query.Schema;
/**
* Final immutable class that implements Schema.
*
* @author <a href="mailto:mailtoud AT gmail DOT com">Udai Gupta</a>
* @author <a href="mailto:ralf DOT joachim AT syscon DOT eu">Ralf Joachim</a>
* @version $Revision: 7121 $ $Date: 2006-04-25 16:09:10 -0600 (Tue, 25 Apr 2006) $
* @since 1.3
*/
public final class SchemaImpl extends AbstractField implements Schema {
//--------------------------------------------------------------------------
/** The abstract schema name. */
private String _abstractName;
/** The name of the type represented by the Schema. */
private String _typeName;
/** The type represented by the Schema. */
private Class _type;
/** The identifier of the schema. */
private final String _identifier;
//--------------------------------------------------------------------------
/**
* Construct schema with given abstract schema name and identifier.
*
* @param name The abstract schema name represented by the Schema.
* @param identifier The identifier of the schema.
*/
public SchemaImpl(final String name, final String identifier) {
if (name == null) { throw new NullPointerException(); }
if (identifier == null) { throw new NullPointerException(); }
_abstractName = name;
_typeName = null;
_type = null;
_identifier = identifier;
}
/**
* Construct schema that represents given type with given identifier.
*
* @param type The type represented by the Schema.
* @param identifier The identifier of the schema.
*/
public SchemaImpl(final Class < ? > type, final String identifier) {
if (identifier == null) { throw new NullPointerException(); }
_abstractName = null;
_typeName = type.getName();
_type = type;
_identifier = identifier;
}
//--------------------------------------------------------------------------
/**
* Gets the abstract schema name.
*
* @return The abstract schema name.
*/
public String getAbstractName() {
return _abstractName;
}
/**
* Gets the name of the type represented by the Schema.
*
* @return The name of the type represented by the Schema.
*/
public String getTypeName() {
return _typeName;
}
/**
* Gets the type represented by the Schema.
*
* @return The type represented by the Schema.
*/
public Class getType() {
return _type;
}
/**
* Gets the identifier of the schema.
*
* @return The identifier of the schema.
*/
public String getIdentifier() {
return _identifier;
}
//--------------------------------------------------------------------------
/**
* {@inheritDoc}
*/
public StringBuilder toString(final StringBuilder sb) {
return sb.append(_identifier);
}
/**
* {@inheritDoc}
*/
public StringBuilder toFullString(final StringBuilder sb) {
if (_abstractName != null) {
sb.append(_abstractName);
} else if (_typeName != null) {
sb.append(_typeName);
}
sb.append(" AS ");
sb.append(_identifier);
return sb;
}
/**
* {@inheritDoc}
*/
public String toFullString() {
return toFullString(new StringBuilder()).toString();
}
//--------------------------------------------------------------------------
}