org.caleigo.core.service
Class SQLToolKit

java.lang.Object
  extended byorg.caleigo.core.service.SQLToolKit
All Implemented Interfaces:
java.io.Serializable

public class SQLToolKit
extends java.lang.Object
implements java.io.Serializable

This class containes help methods for building valid SQL language statements based on CEL entities, descriptors and qualifiers. The class can be used by any IDataService implementation that connects to SQL based databases.

Version:
1.00
Author:
Dennis Zikovic, Niklas Norberg
See Also:
Serialized Form

Nested Class Summary
static class SQLToolKit.BooleanCharTypeConverter
           
static class SQLToolKit.BooleanTypeConverter
           
static class SQLToolKit.CompositeQualifierParser
           
static class SQLToolKit.DateTypeConverter
           
static class SQLToolKit.HsqldbDatabaseSchema
           
static interface SQLToolKit.IDatabaseSchema
           
static interface SQLToolKit.IDataTypeConverter
           
static interface SQLToolKit.IQualifierParser
           
static class SQLToolKit.NegateQualifierParser
           
static class SQLToolKit.OracleDatabaseSchema
           
 class SQLToolKit.RelationQualifierParser
           
static class SQLToolKit.StringTypeConverter
           
 
Field Summary
static java.lang.String DATABASE_HSQLDB
           
static java.lang.String DATABASE_ORACLE
           
 
Constructor Summary
SQLToolKit()
           
SQLToolKit(java.lang.String databaseMode)
           
 
Method Summary
 void addDataTypeConverter(DataType dataType, SQLToolKit.IDataTypeConverter converter)
           
 void addQualifierParser(java.lang.Class qualifierClass, SQLToolKit.IQualifierParser parser)
           
 java.lang.String buildCreateRelationCommand(IEntityRelation relation)
           
 java.lang.String buildCreateTableCommand(IEntityDescriptor entityDescriptor)
           
 java.lang.String buildDataString(DataType type, java.lang.Object data)
           
 java.lang.String buildDeleteCommand(IEntityDescriptor entityDescriptor, Qualifier qualifier)
           
 java.lang.String buildInsertCommand(IEntity entity)
           
 java.lang.String buildSelectCommand(DataQuery dataQuery)
          Builds the SQL SELECT-command.
 java.lang.String buildSelectCommandWithOrder(DataQuery query)
           
 java.lang.String buildUpdateCommand(IEntity entity, Qualifier qualifier)
          Builds the SQL UPDATE-command.
 java.lang.String buildWhereExpression(Qualifier qualifier, java.lang.String alias)
          Builds the SQL WHERE-part used in a SQL-command.
 java.lang.String formatIdentifier(java.lang.String indentifier)
           
 SQLToolKit.IDataTypeConverter getDataTypeConverter(DataType dataType)
           
static java.lang.String getDefaultQuotingString()
           
protected  java.util.Set getQualifierDescriptorSet(Qualifier qualifier)
          Returns a Set containing the entity descriptors meaded for the WHERE statement built by the submited qualifier.
 SQLToolKit.IQualifierParser getQualifierParser(java.lang.Class qualifierClass)
           
 java.lang.String getQuotingString()
           
 boolean isQuotingIdentifiers()
           
static boolean isQuotingIdentifiersByDefault()
           
static boolean isUsingUppercaseIdentifiersByDefault()
           
 java.lang.String prepareWildcards(java.lang.String dataString)
           
 void setDatabaseSchema(SQLToolKit.IDatabaseSchema schema)
           
static void setDefaultQuotingString(java.lang.String defaultQuotingString)
           
static void setIsQuotingIdentifiersByDefault(boolean quote)
           
static void setIsUsingUppercaseIdentifiersByDefault(boolean force)
           
 void setQuotingIdentifiers(boolean allwaysQuote)
           
 void setQuotingString(java.lang.String quotingString)
           
 void validateXternalQualifier(DataQuery.ExternalQualifier xternalQualifier, IEntityDescriptor relatedEntityDescriptor)
          Verify that the qualifer in the external qualifier only targets the first entity descriptor in the external qualifier's entity relation path.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DATABASE_HSQLDB

public static final java.lang.String DATABASE_HSQLDB
See Also:
Constant Field Values

DATABASE_ORACLE

public static final java.lang.String DATABASE_ORACLE
See Also:
Constant Field Values
Constructor Detail

SQLToolKit

public SQLToolKit()

SQLToolKit

public SQLToolKit(java.lang.String databaseMode)
Method Detail

setIsQuotingIdentifiersByDefault

public static void setIsQuotingIdentifiersByDefault(boolean quote)

isQuotingIdentifiersByDefault

public static boolean isQuotingIdentifiersByDefault()

setIsUsingUppercaseIdentifiersByDefault

public static void setIsUsingUppercaseIdentifiersByDefault(boolean force)

isUsingUppercaseIdentifiersByDefault

public static boolean isUsingUppercaseIdentifiersByDefault()

setDefaultQuotingString

public static void setDefaultQuotingString(java.lang.String defaultQuotingString)

getDefaultQuotingString

public static java.lang.String getDefaultQuotingString()

addDataTypeConverter

public void addDataTypeConverter(DataType dataType,
                                 SQLToolKit.IDataTypeConverter converter)

getDataTypeConverter

public SQLToolKit.IDataTypeConverter getDataTypeConverter(DataType dataType)

addQualifierParser

public void addQualifierParser(java.lang.Class qualifierClass,
                               SQLToolKit.IQualifierParser parser)

getQualifierParser

public SQLToolKit.IQualifierParser getQualifierParser(java.lang.Class qualifierClass)

setQuotingIdentifiers

public void setQuotingIdentifiers(boolean allwaysQuote)

setQuotingString

public void setQuotingString(java.lang.String quotingString)

getQuotingString

public java.lang.String getQuotingString()

isQuotingIdentifiers

public boolean isQuotingIdentifiers()

buildSelectCommandWithOrder

public java.lang.String buildSelectCommandWithOrder(DataQuery query)

buildSelectCommand

public java.lang.String buildSelectCommand(DataQuery dataQuery)
Builds the SQL SELECT-command.

Parameters:
dataQuery - contains data to build a complete and minimal SQL-select query. The data query's entity descriptor determines the SELECT- and FROM-expressions. The WHERE-expression are determined by the data query's qualifier and external qualifier's. In the case the data query's entity descriptor is an instance of ICompositeEntityDescriptor this descriptor contains a field group tree that builds JOIN-clauses in the FROM-expression, it optionally contains a default qualifier that determines a part of the WHERE-expression.
Returns:
a String a'la:
"SELECT EntityDescriptor-CodeName.FieldDescriptor-SourceName FROM EntityDescriptor-SourceName EntityDescriptor-CodeName WHERE EntityDescriptor-CodeName.FieldDescriptor-SourceName = 5"
i.e.
"SELECT E.ID FROM Employees E WHERE E.ID = 5".

buildUpdateCommand

public java.lang.String buildUpdateCommand(IEntity entity,
                                           Qualifier qualifier)
Builds the SQL UPDATE-command.

Parameters:
qualifier - should uniqally qualify the entities to be updated.
Returns:
a String a'la:
"UPDATE Employees SET firstname=Niklas WHERE Employees.ID = 17"

buildCreateTableCommand

public java.lang.String buildCreateTableCommand(IEntityDescriptor entityDescriptor)

buildCreateRelationCommand

public java.lang.String buildCreateRelationCommand(IEntityRelation relation)

buildInsertCommand

public java.lang.String buildInsertCommand(IEntity entity)

buildDeleteCommand

public java.lang.String buildDeleteCommand(IEntityDescriptor entityDescriptor,
                                           Qualifier qualifier)

buildWhereExpression

public java.lang.String buildWhereExpression(Qualifier qualifier,
                                             java.lang.String alias)
Builds the SQL WHERE-part used in a SQL-command. The type of the qualifer's field descriptors determines if alias (for composites) are to be used in the WHERE-part.

Parameters:
qualifier - should uniqally qualify entities (one or several)
alias - if this parameter isn't null this alias will be used in the where clause.
Returns:
a String a'la:
"WHERE Employee.ID = 17"

buildDataString

public java.lang.String buildDataString(DataType type,
                                        java.lang.Object data)

prepareWildcards

public java.lang.String prepareWildcards(java.lang.String dataString)

getQualifierDescriptorSet

protected java.util.Set getQualifierDescriptorSet(Qualifier qualifier)
Returns a Set containing the entity descriptors meaded for the WHERE statement built by the submited qualifier. Can be used to build the FROM statement of the SQL command. May return null


formatIdentifier

public java.lang.String formatIdentifier(java.lang.String indentifier)

setDatabaseSchema

public void setDatabaseSchema(SQLToolKit.IDatabaseSchema schema)

validateXternalQualifier

public void validateXternalQualifier(DataQuery.ExternalQualifier xternalQualifier,
                                     IEntityDescriptor relatedEntityDescriptor)
Verify that the qualifer in the external qualifier only targets the first entity descriptor in the external qualifier's entity relation path. If the qualifer targets ICompositeFieldDescriptors they are only allowed to belong to the root field group in the wrapping ICompositeEntityDescriptor.

Parameters:
xternalQualifier - to be verified.
Throws:
an - InvalidQualifierException if the qualifer target's several entity descriptor's or another one than the first one.


Copyright © 2005 Caleigo. All Rights Reserved.