package com.megatim.fdxcommons.tools.database.tables;
|
|
import com.megatim.fdxcommons.tools.database.contrat.TableName;
|
import java.sql.Connection;
|
import java.sql.PreparedStatement;
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.Objects;
|
|
/**
|
*
|
* @author Gabuntu
|
*/
|
public class FdxTableName implements TableName {
|
|
private final String referentielVersion;
|
private final String codeTypeFichier;
|
private String refVersionToUse = null;
|
|
public FdxTableName(String referentielVersion, String codeTypeFichier) {
|
this.referentielVersion = referentielVersion;
|
this.codeTypeFichier = codeTypeFichier;
|
}
|
|
@Override
|
public String name(Connection connection) throws SQLException {
|
if (refVersionToUse == null) {
|
refVersionToUse(connection);
|
}
|
return refVersionToUse != null && !refVersionToUse.isEmpty()
|
? "ref" + refVersionToUse.toLowerCase() + "_" + codeTypeFichier.toLowerCase()
|
: "ref" + referentielVersion.toLowerCase() + "_" + codeTypeFichier.toLowerCase();
|
}
|
|
private void refVersionToUse(Connection connection) throws SQLException {
|
|
try ( PreparedStatement statement = connection.prepareStatement(query())) {
|
ResultSet resultSet = statement.executeQuery();
|
|
while (resultSet.next()) {
|
refVersionToUse = resultSet.getString(1);
|
}
|
} catch (Exception ex) {
|
ex.printStackTrace();
|
}
|
}
|
|
@Override
|
public boolean equals(Object obj) {
|
if (this == obj) {
|
return true;
|
}
|
if (obj == null) {
|
return false;
|
}
|
if (getClass() != obj.getClass()) {
|
return false;
|
}
|
final FdxTableName other = (FdxTableName) obj;
|
|
if (refVersionToUse != null && other.getRefVersionToUse() != null) {
|
return refVersionToUse.equals(other.getRefVersionToUse());
|
} else {
|
return false;
|
}
|
}
|
|
@Override
|
public int hashCode() {
|
int hash = 3;
|
hash = 79 * hash + Objects.hashCode(this.referentielVersion);
|
hash = 79 * hash + Objects.hashCode(this.codeTypeFichier);
|
return hash;
|
}
|
|
public String getRefVersionToUse() {
|
return refVersionToUse;
|
}
|
|
private String query() {
|
return "SELECT DISTINCT r.referentielVersion"
|
+ " FROM referentielIntegrationHistorique r"
|
+ " JOIN ref_int_historique_depending_refs rd"
|
+ " ON r.codetypefichier = rd.codetypefichier"
|
+ " AND r.referentielVersion = rd.referentielVersion"
|
+ " WHERE rd.dependingreferentiels = '" + referentielVersion + "'"
|
+ " AND r.codetypefichier = '" + codeTypeFichier + "'";
|
}
|
}
|