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 + "'"; } }