Skip to content

Commit a99abd1

Browse files
author
Flurb
committed
Implemented correct query
Signed-off-by: Flurb <[email protected]>
1 parent 217d8f3 commit a99abd1

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

app/src/test/java/org/lfenergy/compas/scl/data/rest/mock/CompasSclDataRepositoryMock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public String findByUUID(SclFileType type, UUID id, Version version) {
4343
}
4444

4545
@Override
46-
public boolean hasDuplicateSclName(SclFileType type, UUID id) {
46+
public boolean hasDuplicateSclName(SclFileType type, String name) {
4747
throw new IllegalStateException("Mock method using Mockito. Only needed to startup.");
4848
}
4949

repository-postgresql/src/main/java/org/lfenergy/compas/scl/data/repository/postgresql/CompasSclDataPostgreSQLRepository.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import org.lfenergy.compas.scl.data.model.Version;
1212
import org.lfenergy.compas.scl.data.repository.CompasSclDataRepository;
1313
import org.lfenergy.compas.scl.extensions.model.SclFileType;
14+
import org.slf4j.Logger;
15+
import org.slf4j.LoggerFactory;
1416

1517
import javax.sql.DataSource;
1618
import java.sql.ResultSet;
@@ -22,6 +24,8 @@
2224
import static org.lfenergy.compas.scl.data.exception.CompasSclDataServiceErrorCode.*;
2325

2426
public class CompasSclDataPostgreSQLRepository implements CompasSclDataRepository {
27+
28+
private static final Logger LOGGER = LoggerFactory.getLogger(CompasSclDataPostgreSQLRepository.class);
2529
private static final String SELECT_METADATA_CLAUSE = "select id, name, major_version, minor_version, patch_version ";
2630
private static final String SELECT_DATA_CLAUSE = "select scl_data ";
2731
private static final String FROM_CLAUSE = " from scl_file ";
@@ -157,7 +161,25 @@ public String findByUUID(SclFileType type, UUID id, Version version) {
157161

158162
@Override
159163
public boolean hasDuplicateSclName(SclFileType type, String name) {
160-
return false;
164+
var sql = "SELECT DISTINCT ON (id) m.* "
165+
+ "FROM scl_file m "
166+
+ "WHERE m.type=? "
167+
+ "ORDER BY m.id, m.major_version desc, m.minor_version desc, m.patch_version desc";
168+
169+
try (var connection = dataSource.getConnection();
170+
var stmt = connection.prepareStatement(sql)) {
171+
stmt.setString(1, type.name());
172+
173+
try (var resultSet = stmt.executeQuery()) {
174+
while (resultSet.next()) {
175+
var usedName = resultSet.getString(NAME_FIELD);
176+
if (usedName.equals(name)) return true;
177+
}
178+
}
179+
return false;
180+
} catch (SQLException exp) {
181+
throw new CompasSclDataServiceException(POSTGRES_SELECT_ERROR_CODE, "Error select meta info from database!", exp);
182+
}
161183
}
162184

163185
@Override

service/src/main/java/org/lfenergy/compas/scl/data/service/impl/CompasSclDataServiceImpl.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@
3737
* These methods contain standard behaviour that is executed for every type of repository.
3838
*/
3939
public class CompasSclDataServiceImpl implements CompasSclDataService {
40-
41-
private static final Logger LOGGER = LoggerFactory.getLogger(CompasSclDataServiceImpl.class);
42-
4340
private final CompasSclDataRepository repository;
4441
private final ElementConverter converter;
4542
private final SclElementProcessor sclElementProcessor;

0 commit comments

Comments
 (0)