View Javadoc

1   package org.apache.torque.templates.platform;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.util.Date;
23  
24  import org.apache.torque.templates.typemapping.SchemaType;
25  import org.apache.torque.templates.typemapping.SqlType;
26  
27  /**
28   * Interface for RDBMS platform specific behaviour.
29   *
30   * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
31   * @version $Id: Platform.java 1363653 2012-07-20 04:31:30Z tfischer $
32   */
33  public interface Platform
34  {
35      /**
36       * Returns the db specific SQL type for a Torque type.
37       *
38       * @param schemaType the Torque type, not null.
39       *
40       * @return the db specific SQL type, or null if no SQL type is defined
41       *         for the given Torque type.
42       */
43      SqlType getSqlTypeForSchemaType(SchemaType schemaType);
44  
45      /**
46       * @return The RDBMS-specific SQL fragment for <code>NULL</code>
47       * or <code>NOT NULL</code>.
48       */
49      String getNullString(boolean notNull);
50  
51      /**
52       * @return The RDBMS-specific SQL fragment for autoincrement.
53       */
54      String getAutoIncrement();
55  
56      /**
57       * Returns if the RDBMS-specific SQL type has a size attribute.
58       *
59       * @param sqlType the SQL type
60       * @return true if the type has a size attribute
61       */
62      boolean hasSize(String sqlType);
63  
64      /**
65       * Returns if the RDBMS-specific SQL type has a scale attribute.
66       *
67       * @param sqlType the SQL type
68       * @return true if the type has a scale attribute
69       */
70      boolean hasScale(String sqlType);
71  
72      /**
73       * Returns a possible SQL suffix for column definitions of certain
74       *  SQL Types, e.g. for Oracle VARCHAR2 columns, it typically
75       *  makes sense to use 'XXX CHAR' instead of 'XXX' as size.
76       *
77       * @param sqlType the SQL type to determine the suffix for.
78       *
79       * @return the size suffix, not null, may be empty.
80       */
81      String getSizeSuffix(String sqlType);
82  
83      /**
84       * Returns whether the "not null part" of the definition of a column
85       * should be generated before the "autoincrement part" in a "create table"
86       * statement.
87       *
88       * @return true if the "not null part" should be first,
89       *         false if the "autoincrement part" should be first in a
90       *         "create table" statement.
91       */
92      boolean createNotNullBeforeAutoincrement();
93  
94      /**
95       * Quotes and escapes a string such that it can be used
96       * as literal String value in SQL.
97       *
98       * @param value The string to escape, or null.
99       *
100      * @return the escaped String, not null.
101      */
102     String quoteAndEscape(String value);
103 
104     /**
105      * Formats the given date as date string which is parseable by the database.
106      *
107      * @param date the date to format.
108      *
109      * @return the date string, inclusive string escaping.
110      */
111     String getDateString(Date date);
112 
113     /**
114      * Formats the given date as time string which is parseable by the database.
115      *
116      * @param date the date to format.
117      *
118      * @return the time string, inclusive string escaping.
119      */
120     String getTimeString(Date date);
121 
122     /**
123      * Formats the given date as timestamp string which is parseable
124      * by the database.
125      *
126      * @param date the date to format.
127      *
128      * @return the timestamp string, inclusive string escaping.
129      */
130     String getTimestampString(Date date);
131 }