org.ujorm.orm.dialect
Class MSSqlDialect

java.lang.Object
  extended by org.ujorm.orm.SqlDialect
      extended by org.ujorm.orm.dialect.MSSqlDialect

public class MSSqlDialect
extends SqlDialect

Dialect for the MSSQL tested on SQL Server 2008 R2 with Microsoft SQL Server JDBC Driver 3.0 from http://msdn.microsoft.com/data/jdbc
http://www.microsoft.com/sqlserver/
Note: This dialect the is an early release 1.10.beta.

Since:
1.10

Field Summary
 
Fields inherited from class org.ujorm.orm.SqlDialect
COMMON_SEQ_TABLE_KEY, DEFAULT_SCHEMA_SYMBOL, ormHandler
 
Constructor Summary
MSSqlDialect()
           
 
Method Summary
protected  void createInnerSelectPart(Query query, Appendable out)
          Inner select select with under aliases assignment and order columns (have to propagate to outer select)
protected  void createOuterPart(String innerSelect, Query query, Appendable out)
          Outer part of select with sorting
protected  void createRowOrderPart(Query query, Appendable out, boolean asOrderAlias)
          Creating RowNumber column
protected  void createWherePart(Query query, Appendable out)
          Where clause for inner select
protected  String getColumnType(MetaColumn column)
          Returns a database column type
 String getJdbcDriver()
          Returns a JDBC driver class name.
 String getJdbcUrl()
          Returns a default JDBC URL
 boolean isCatalog()
          Does the database support a catalog? The feature supports: MySqlDialect and MSSqlDialect.
 Appendable printAlterTableAddColumn(MetaColumn column, Appendable out)
          Print a SQL sript to add a new column to the table
 Appendable printColumnDeclaration(MetaColumn column, String aName, Appendable out)
          Print a SQL to create column
 Appendable printColumnOrderAlias(MetaColumn column, Appendable out)
          Print a full SQL column alias name by sample: o__ - used for as order alias
 Appendable printColumnUnderAlias(MetaColumn column, Appendable out)
          Print a full SQL column alias name by sample: _
 Appendable printComment(MetaColumn column, Appendable out)
          Important note for MySQL: the change of column modifies all another column attributes so the comment update can revert some hand-made changes different from meta-model.
See the official MySQL documentation for more information.
 Appendable printComment(MetaTable table, Appendable out)
          Print a Comment on the table
 Appendable printCreateSchema(String schema, Appendable out)
          Print SQL 'CREATE SCHEMA'
 Appendable printDefaultConstraint(MetaColumn column, StringBuilder out)
          Print Default Constraint
 Appendable printDefaultValue(MetaColumn column, Appendable out)
          Print a SQL phrase for the DEFAULT VALUE, for example: DEFAULT 777
 Appendable printDelete(CriterionDecoder decoder, Appendable out)
          Print an SQL DELETE statement.
 Appendable printFullTableName(MetaTable table, boolean printSymbolSchema, Appendable out)
          Print a extended SQL table name by sample: SCHEMA.TABLE
 Appendable printInsert(List<? extends OrmUjo> bo, int idxFrom, int idxTo, Appendable out)
          Print an SQL INSERT statement.
protected  void printOrderColumns(Query query, Appendable out, boolean asOrderAlias, boolean addOrderAlias, boolean showDesc)
           
 Appendable printQuotedNameAlways(CharSequence name, Appendable sql)
          Prints quoted name (identifier) to SQL always.
 void printSelectOrder(Query query, Appendable out, boolean orderAlias)
          Print SQL ORDER BY
protected  Appendable printSelectTable(Query query, boolean count, Appendable out)
          Custom implementation of MS-SQL dialect due to different offset and limit usage
 Appendable printSequenceTable(MetaDatabase db, Appendable out)
          Print SQL CREATE SEQUENCE.
protected  Appendable printSequenceTableName(UjoSequencer sequence, Appendable out)
          Prinnt the full sequence table
protected  void printTableAliasDefinition(CriterionDecoder decoder, Appendable out)
          Print table alias definition
protected  void printTableColumnsUnderAliases(Collection<ColumnWrapper> columnWrappers, Appendable out)
          prints columns in _ separated by comma
protected  void printTableColumnsWithUnderAliases(Collection<ColumnWrapper> columnWrappers, Appendable out)
          prints columns in ". AS _" format separated by comma
protected  void printTablesWithAlias(Collection<MetaTable> tables, Appendable out)
           
 Appendable printUpdate(List<MetaColumn> changedColumns, CriterionDecoder decoder, Appendable out)
          Print an SQL UPDATE statement.
 void releaseSavepoint(Connection conn, Savepoint savepoint, boolean afterRollback)
          Perform the method: {@link Connection#releaseSavepoint(java.sql.Savepoint) ?
 
Methods inherited from class org.ujorm.orm.SqlDialect
createConnection, createJndiInitialContext, createSubQuery, escape, getAliasColumnName, getCriterionTemplate, getExtentedDialect, getKeywordSet, getNameProvider, getQuotedName, getSeqTableModel, isColumnLengthAllowed, isFilled, isMultiRowInsertSupported, printAlterTableColumn, printCall, printColumnAlias, printCommit, printCriterion, printCriterionValue, printDefaultSchema, printFKColumnsDeclaration, printForeignKey, printForeignKey, printFullTableName, printIndex, printInsert, printInsertBySelect, println, printLockForSelect, printNextSequence, printOffset, printQuotedName, printSelect, printSelectOrder, printSelectTableBase, printSelectView, printSequenceCurrentValue, printSequenceDeleteById, printSequenceInit, printSequenceInitWithValues, printSequenceNextValue, printSetMaxSequence, printTable, printTableAliasDefinition, printTableColumns, setHandler
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MSSqlDialect

public MSSqlDialect()
Method Detail

getJdbcUrl

public String getJdbcUrl()
Description copied from class: SqlDialect
Returns a default JDBC URL

Specified by:
getJdbcUrl in class SqlDialect

getJdbcDriver

public String getJdbcDriver()
Description copied from class: SqlDialect
Returns a JDBC driver class name.

Specified by:
getJdbcDriver in class SqlDialect

isCatalog

public boolean isCatalog()
Does the database support a catalog? The feature supports: MySqlDialect and MSSqlDialect.

Overrides:
isCatalog in class SqlDialect
Returns:
The value is true.

printUpdate

public Appendable printUpdate(List<MetaColumn> changedColumns,
                              CriterionDecoder decoder,
                              Appendable out)
                       throws IOException
Print an SQL UPDATE statement.

Overrides:
printUpdate in class SqlDialect
Throws:
IOException

printDelete

public Appendable printDelete(CriterionDecoder decoder,
                              Appendable out)
                       throws IOException
Print an SQL DELETE statement.

Overrides:
printDelete in class SqlDialect
Throws:
IOException

printColumnUnderAlias

public Appendable printColumnUnderAlias(MetaColumn column,
                                        Appendable out)
                                 throws IOException
Print a full SQL column alias name by sample: _

Throws:
IOException

printColumnOrderAlias

public Appendable printColumnOrderAlias(MetaColumn column,
                                        Appendable out)
                                 throws IOException
Print a full SQL column alias name by sample: o_
_ - used for as order alias

Throws:
IOException

printTableColumnsWithUnderAliases

protected void printTableColumnsWithUnderAliases(Collection<ColumnWrapper> columnWrappers,
                                                 Appendable out)
                                          throws IOException
prints columns in "
. AS
_" format separated by comma

Throws:
IOException

printTableColumnsUnderAliases

protected void printTableColumnsUnderAliases(Collection<ColumnWrapper> columnWrappers,
                                             Appendable out)
                                      throws IOException
prints columns in
_ separated by comma

Throws:
IOException

createInnerSelectPart

protected void createInnerSelectPart(Query query,
                                     Appendable out)
                              throws IOException
Inner select select with under aliases assignment and order columns (have to propagate to outer select)

Throws:
IOException

createRowOrderPart

protected void createRowOrderPart(Query query,
                                  Appendable out,
                                  boolean asOrderAlias)
                           throws IOException
Creating RowNumber column

Throws:
IOException

printOrderColumns

protected void printOrderColumns(Query query,
                                 Appendable out,
                                 boolean asOrderAlias,
                                 boolean addOrderAlias,
                                 boolean showDesc)
                          throws IOException
Throws:
IOException

printSelectOrder

public void printSelectOrder(Query query,
                             Appendable out,
                             boolean orderAlias)
                      throws IOException
Print SQL ORDER BY

Throws:
IOException

createWherePart

protected void createWherePart(Query query,
                               Appendable out)
                        throws IOException
Where clause for inner select

Throws:
IOException

printTablesWithAlias

protected void printTablesWithAlias(Collection<MetaTable> tables,
                                    Appendable out)
                             throws IOException
Throws:
IOException

createOuterPart

protected void createOuterPart(String innerSelect,
                               Query query,
                               Appendable out)
                        throws IOException
Outer part of select with sorting

Throws:
IOException

printSelectTable

protected Appendable printSelectTable(Query query,
                                      boolean count,
                                      Appendable out)
                               throws IOException
Custom implementation of MS-SQL dialect due to different offset and limit usage

Overrides:
printSelectTable in class SqlDialect
Parameters:
query - The UJO query
count - only count of items is required;
Throws:
IOException

getColumnType

protected String getColumnType(MetaColumn column)
Description copied from class: SqlDialect
Returns a database column type

Overrides:
getColumnType in class SqlDialect

printComment

public Appendable printComment(MetaTable table,
                               Appendable out)
                        throws IOException
Print a Comment on the table

Overrides:
printComment in class SqlDialect
Throws:
IOException

printComment

public Appendable printComment(MetaColumn column,
                               Appendable out)
                        throws IOException
Important note for MySQL: the change of column modifies all another column attributes so the comment update can revert some hand-made changes different from meta-model.
See the official MySQL documentation for more information. The column comments can be suppresed by the overwritting the method with an empty body.

Overrides:
printComment in class SqlDialect
Throws:
IOException

printCreateSchema

public Appendable printCreateSchema(String schema,
                                    Appendable out)
                             throws IOException
Description copied from class: SqlDialect
Print SQL 'CREATE SCHEMA'

Overrides:
printCreateSchema in class SqlDialect
Throws:
IOException

printFullTableName

public Appendable printFullTableName(MetaTable table,
                                     boolean printSymbolSchema,
                                     Appendable out)
                              throws IOException
Print a extended SQL table name by sample: SCHEMA.TABLE

Overrides:
printFullTableName in class SqlDialect
Parameters:
printSymbolSchema - True parameter replaces a default schema name for the symbol "~" by the example: ~.TABLE
Throws:
IOException

printSequenceTable

public Appendable printSequenceTable(MetaDatabase db,
                                     Appendable out)
                              throws IOException
Print SQL CREATE SEQUENCE. No JDBC parameters.

Overrides:
printSequenceTable in class SqlDialect
Throws:
IOException

printSequenceTableName

protected Appendable printSequenceTableName(UjoSequencer sequence,
                                            Appendable out)
                                     throws IOException
Description copied from class: SqlDialect
Prinnt the full sequence table

Overrides:
printSequenceTableName in class SqlDialect
Throws:
IOException

printAlterTableAddColumn

public Appendable printAlterTableAddColumn(MetaColumn column,
                                           Appendable out)
                                    throws IOException
Print a SQL sript to add a new column to the table

Overrides:
printAlterTableAddColumn in class SqlDialect
Throws:
IOException

printDefaultConstraint

public Appendable printDefaultConstraint(MetaColumn column,
                                         StringBuilder out)
                                  throws IOException
Description copied from class: SqlDialect
Print Default Constraint

Overrides:
printDefaultConstraint in class SqlDialect
Throws:
IOException

printDefaultValue

public Appendable printDefaultValue(MetaColumn column,
                                    Appendable out)
                             throws IOException
Print a SQL phrase for the DEFAULT VALUE, for example: DEFAULT 777

Overrides:
printDefaultValue in class SqlDialect
Throws:
IOException

printInsert

public Appendable printInsert(List<? extends OrmUjo> bo,
                              int idxFrom,
                              int idxTo,
                              Appendable out)
                       throws IOException
Description copied from class: SqlDialect
Print an SQL INSERT statement.

Overrides:
printInsert in class SqlDialect
Parameters:
bo - Business object list
idxFrom - Start index from list
idxTo - Finished index from list (excluded)
Throws:
IOException
See Also:
SqlDialect.isMultiRowInsertSupported()

printColumnDeclaration

public Appendable printColumnDeclaration(MetaColumn column,
                                         String aName,
                                         Appendable out)
                                  throws IOException
Description copied from class: SqlDialect
Print a SQL to create column

Overrides:
printColumnDeclaration in class SqlDialect
Parameters:
column - Database Column
aName - The name parameter is not mandatory, the not null value means a foreign key.
Throws:
IOException

releaseSavepoint

public void releaseSavepoint(Connection conn,
                             Savepoint savepoint,
                             boolean afterRollback)
                      throws SQLException
Perform the method: {@link Connection#releaseSavepoint(java.sql.Savepoint) ?

Overrides:
releaseSavepoint in class SqlDialect
Parameters:
conn - Database Connection
savepoint - Required Savepoint
afterRollback - release is called after a rollback ?
Throws:
SQLException
See Also:
http://technet.microsoft.com/en-us/library/ms378791%28v=sql.110%29.aspx, Connection.releaseSavepoint(java.sql.Savepoint)

printQuotedNameAlways

public Appendable printQuotedNameAlways(CharSequence name,
                                        Appendable sql)
                                 throws IOException
Prints quoted name (identifier) to SQL always. The default quated character is '"', however different SQL dialects must have got a different character-pairs.

Overrides:
printQuotedNameAlways in class SqlDialect
Parameters:
name - Name (identifier) for quoting
sql - Target SQL for printing new quoted name
Returns:
SQL with printed quoted name
Throws:
IOException

printTableAliasDefinition

protected void printTableAliasDefinition(CriterionDecoder decoder,
                                         Appendable out)
                                  throws IOException
Print table alias definition

Throws:
IOException


Copyright 2013, Pavel Ponec