blob: 86b54cde909a87a96e63dff0c3f73fa4372f13b2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.syncope.common.keymaster.client.api.model;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
public class JPADomain extends Domain {
private static final long serialVersionUID = 18711766451769410L;
public enum TransactionIsolation {
TRANSACTION_NONE,
TRANSACTION_READ_COMMITTED,
TRANSACTION_READ_UNCOMMITTED,
TRANSACTION_REPEATABLE_READ,
TRANSACTION_SERIALIZABLE
}
public static class Builder extends Domain.Builder<JPADomain, Builder> {
public Builder(final String key) {
super(new JPADomain(), key);
}
public Builder jdbcDriver(final String jdbcDriver) {
this.domain.jdbcDriver = jdbcDriver;
return this;
}
public Builder jdbcURL(final String jdbcURL) {
this.domain.jdbcURL = jdbcURL;
return this;
}
public Builder dbSchema(final String dbSchema) {
if (StringUtils.isNotBlank(dbSchema)) {
this.domain.dbSchema = dbSchema;
}
return this;
}
public Builder dbUsername(final String dbUsername) {
this.domain.dbUsername = dbUsername;
return this;
}
public Builder dbPassword(final String dbPassword) {
this.domain.dbPassword = dbPassword;
return this;
}
public Builder transactionIsolation(final TransactionIsolation transactionIsolation) {
this.domain.transactionIsolation = transactionIsolation;
return this;
}
public Builder poolMaxActive(final int poolMaxActive) {
this.domain.poolMaxActive = poolMaxActive;
return this;
}
public Builder poolMinIdle(final int poolMinIdle) {
this.domain.poolMinIdle = poolMinIdle;
return this;
}
public Builder orm(final String orm) {
this.domain.orm = orm;
return this;
}
public Builder databasePlatform(final String databasePlatform) {
this.domain.databasePlatform = databasePlatform;
return this;
}
}
private String jdbcDriver;
private String jdbcURL;
private String dbSchema;
private String dbUsername;
private String dbPassword;
private TransactionIsolation transactionIsolation = TransactionIsolation.TRANSACTION_READ_COMMITTED;
private int poolMaxActive = 10;
private int poolMinIdle = 2;
private String orm = "META-INF/spring-orm.xml";
private String databasePlatform;
@Override
protected String defaultContentFile() {
return "defaultContent.jpa.xml";
}
public String getJdbcDriver() {
return jdbcDriver;
}
public String getJdbcURL() {
return jdbcURL;
}
public String getDbSchema() {
return dbSchema;
}
public String getDbUsername() {
return dbUsername;
}
public String getDbPassword() {
return dbPassword;
}
public TransactionIsolation getTransactionIsolation() {
return transactionIsolation;
}
public int getPoolMaxActive() {
return poolMaxActive;
}
public void setPoolMaxActive(final int poolMaxActive) {
this.poolMaxActive = poolMaxActive;
}
public int getPoolMinIdle() {
return poolMinIdle;
}
public void setPoolMinIdle(final int poolMinIdle) {
this.poolMinIdle = poolMinIdle;
}
public String getOrm() {
return orm;
}
public String getDatabasePlatform() {
return databasePlatform;
}
@Override
public int hashCode() {
return new HashCodeBuilder().
appendSuper(super.hashCode()).
append(jdbcDriver).
append(jdbcURL).
append(dbSchema).
append(dbUsername).
append(dbPassword).
append(transactionIsolation).
append(poolMaxActive).
append(poolMinIdle).
append(orm).
append(databasePlatform).
build();
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final JPADomain other = (JPADomain) obj;
return new EqualsBuilder().
appendSuper(super.equals(obj)).
append(jdbcDriver, other.jdbcDriver).
append(jdbcURL, other.jdbcURL).
append(dbSchema, other.dbSchema).
append(dbUsername, other.dbUsername).
append(dbPassword, other.dbPassword).
append(transactionIsolation, other.transactionIsolation).
append(poolMaxActive, other.poolMaxActive).
append(poolMinIdle, other.poolMinIdle).
append(orm, other.orm).
append(databasePlatform, other.databasePlatform).
build();
}
@Override
public String toString() {
return new ToStringBuilder(this).
appendSuper(super.toString()).
append(jdbcDriver).
append(jdbcURL).
append(dbSchema).
append(dbUsername).
append(dbPassword).
append(transactionIsolation).
append(poolMaxActive).
append(poolMinIdle).
append(orm).
append(databasePlatform).
build();
}
}