Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
Platform |
|
| 1.0;1 |
1 | package org.apache.torque.engine.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.sql.Connection; | |
23 | import java.sql.DatabaseMetaData; | |
24 | import java.sql.SQLException; | |
25 | import java.util.List; | |
26 | ||
27 | import org.apache.torque.engine.database.model.Domain; | |
28 | import org.apache.torque.engine.database.model.SchemaType; | |
29 | ||
30 | /** | |
31 | * Interface for RDBMS platform specific behaviour. | |
32 | * | |
33 | * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a> | |
34 | * @version $Id: Platform.java,v 1.1.6.2 2008-04-18 17:04:37 jkeller Exp $ | |
35 | */ | |
36 | public interface Platform { | |
37 | /** constant for native id method */ | |
38 | String IDENTITY = "identity"; | |
39 | /** constant for native id method */ | |
40 | String SEQUENCE = "sequence"; | |
41 | ||
42 | /** | |
43 | * Given a JDBC url return a url that can connect directly to the database server itself. ie no database specified | |
44 | */ | |
45 | String getServerUrl(String url); | |
46 | ||
47 | /** | |
48 | * Given an artifact id, return a string a schema name based on the artifact id that is allowed by the db vendor | |
49 | */ | |
50 | String getSchemaName(String artifactId); | |
51 | ||
52 | /** | |
53 | * Returns the native IdMethod (sequence|identity) | |
54 | * | |
55 | * @return the native IdMethod | |
56 | */ | |
57 | String getNativeIdMethod(); | |
58 | ||
59 | /** | |
60 | * Returns the max column length supported by the db. | |
61 | * | |
62 | * @return the max column length | |
63 | */ | |
64 | int getMaxColumnNameLength(); | |
65 | ||
66 | /** | |
67 | * Returns the db specific domain for a jdbcType. | |
68 | * | |
69 | * @param jdbcType | |
70 | * the jdbcType name | |
71 | * @return the db specific domain | |
72 | */ | |
73 | Domain getDomainForSchemaType(SchemaType jdbcType); | |
74 | ||
75 | /** | |
76 | * @return The RDBMS-specific SQL fragment for <code>NULL</code> or <code>NOT NULL</code>. | |
77 | */ | |
78 | String getNullString(boolean notNull); | |
79 | ||
80 | /** | |
81 | * @return The RDBMS-specific SQL fragment for autoincrement. | |
82 | */ | |
83 | String getAutoIncrement(); | |
84 | ||
85 | /** | |
86 | * Returns if the RDBMS-specific SQL type has a size attribute. | |
87 | * | |
88 | * @param sqlType | |
89 | * the SQL type | |
90 | * @return true if the type has a size attribute | |
91 | */ | |
92 | boolean hasSize(String sqlType); | |
93 | ||
94 | /** | |
95 | * Returns if the RDBMS-specific SQL type has a scale attribute. | |
96 | * | |
97 | * @param sqlType | |
98 | * the SQL type | |
99 | * @return true if the type has a scale attribute | |
100 | */ | |
101 | boolean hasScale(String sqlType); | |
102 | ||
103 | /** | |
104 | * Returns whether the "not null part" of the definition of a column should be generated before the | |
105 | * "autoincrement part" in a "create table" statement. | |
106 | * | |
107 | * @return true if the "not null part" should be first, false if the "autoincrement part" should be first in a | |
108 | * "create table" statement. | |
109 | */ | |
110 | boolean createNotNullBeforeAutoincrement(); | |
111 | ||
112 | String filterInvalidDefaultValues(String defaultValue); | |
113 | ||
114 | public boolean isSpecialDefault(String defaultValue); | |
115 | ||
116 | String getViewDefinition(Connection con, String schema, String viewName); | |
117 | ||
118 | Long getSequenceNextVal(Connection con, String schema, String sequenceName); | |
119 | ||
120 | public List<String> getPrimaryKeys(DatabaseMetaData dbMeta, String dbSchema, String tableName) throws SQLException; | |
121 | ||
122 | public List<String> getTableNames(DatabaseMetaData dbMeta, String databaseSchema) throws SQLException; | |
123 | } |