com.jaxio.celerio.configuration.database.JdbcConnectivity Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of celerio-engine Show documentation
Show all versions of celerio-engine Show documentation
Celerio Core Generation Engine
/*
* Copyright 2015 JAXIO http://www.jaxio.com
*
* 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 com.jaxio.celerio.configuration.database;
import com.jaxio.celerio.util.StringUtil;
import lombok.Setter;
import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
import static com.jaxio.celerio.configuration.Util.nonNull;
import static org.springframework.util.StringUtils.hasLength;
public class JdbcConnectivity {
@Setter
private String driver;
@Setter
private String driverGroupId;
@Setter
private String driverArtifactId;
@Setter
private String driverArtifactIdVersion;
@Setter
private String hibernateDialect;
@Setter
private String sqlDelimiter;
@Setter
private String password;
@Setter
private String url;
@Setter
private String user;
@Setter
private String schemaName;
@Setter
private List tableNamePatterns = newArrayList();
@Setter
private boolean oracleRetrieveRemarks;
@Setter
private boolean oracleRetrieveSynonyms;
@Setter
private Boolean reverseIndexes = true;
@Setter
private Boolean reverseOnlyUniqueIndexes = true;
@Setter
private String catalog;
private List tableTypes = newArrayList();
public JdbcConnectivity() {
}
public JdbcConnectivity(TableType tableType) {
add(tableType);
}
/*
* Jdbc driver name
* Example: org.h2.Driver
*/
public String getDriver() {
return driver;
}
/*
* Jdbc driver group id
* Example:
*/
public String getDriverGroupId() {
return driverGroupId;
}
/*
* Jdbc driver artifact id
* Example:
*/
public String getDriverArtifactId() {
return driverArtifactId;
}
/*
* Jdbc driver artifact id version
* Example:
*/
public String getDriverArtifactIdVersion() {
return driverArtifactIdVersion;
}
/*
* Jdbc hibernate dialect
* Example:
*/
public String getHibernateDialect() {
return hibernateDialect;
}
/*
* SQL delimiter
* Example: ; or /
*/
public String getSqlDelimiter() {
return sqlDelimiter;
}
/*
* Jdbc url connection
* Example: Jdbc:h2:~/mydatabase
*/
public String getUrl() {
return url;
}
/*
* Jdbc user
* Example: myuser
*/
public String getUser() {
return user;
}
/*
* Jdbc password
* Example: mypassword
*/
public String getPassword() {
return password;
}
public String getSchemaName() {
return schemaName;
}
/*
* you can restrict table extraction using a pattern
* Example: PROJECT_%
*/
public List getTableNamePatterns() {
return tableNamePatterns;
}
/*
* Table types to retrieve
*/
public List getTableTypes() {
return tableTypes;
}
/*
* Should Celerio retrieve remarks on oracle, beware this is a very time consuming operation
*/
public boolean isOracleRetrieveRemarks() {
return oracleRetrieveRemarks;
}
/*
* Should Celerio retrieve synonyms on oracle
*/
public boolean isOracleRetrieveSynonyms() {
return oracleRetrieveSynonyms;
}
/*
* When false, no indexes is reversed at all.
* @return
*/
public Boolean getReverseIndexes() {
return reverseIndexes;
}
public boolean shouldReverseIndexes() {
// we assume null is by default TRUE.
return reverseIndexes == null || reverseIndexes;
}
/*
* when true, reverse only indexes for unique values; when false, reverse indexes regardless of whether unique or not.
*/
public Boolean getReverseOnlyUniqueIndexes() {
return reverseOnlyUniqueIndexes;
}
public boolean shouldReverseOnlyUniqueIndexes() {
// we assume null is by default TRUE.
return shouldReverseIndexes() && (reverseOnlyUniqueIndexes == null || reverseOnlyUniqueIndexes);
}
/*
* Catalog name; must match the catalog name as it is stored in the database.
* "" retrieves those without a catalog
* empty means that the catalog name should not be used to narrow the search
*/
public String getCatalog() {
return catalog;
}
public void setTableTypes(List tableTypes) {
this.tableTypes = nonNull(tableTypes);
}
public void add(TableType tableType) {
tableTypes.add(tableType);
}
public boolean invalid() {
// password can be empty
return isBlank(driver, url, user);
}
public boolean isValid() {
return !invalid();
}
private boolean isBlank(String... args) {
for (String arg : args) {
if (!hasLength(arg)) {
return true;
}
}
return false;
}
public WellKnownDatabase getWellKownDatabase() {
return WellKnownDatabase.fromJdbcUrl(getUrl());
}
public boolean isWellKownDatabase() {
return getWellKownDatabase() != null;
}
}