Skip to content

Commit 0f5163f

Browse files
authored
Add column type (#22)
Signed-off-by: Ayoub LABIDI <[email protected]>
1 parent 49b5a58 commit 0f5163f

File tree

10 files changed

+89
-18
lines changed

10 files changed

+89
-18
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* Copyright (c) 2024, RTE (http://www.rte-france.com)
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this
5+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6+
*/
7+
package org.gridsuite.studyconfig.server.constants;
8+
9+
/**
10+
* @author Ayoub LABIDI <ayoub.labidi at rte-france.com>
11+
*/
12+
13+
public enum ColumnType {
14+
TEXT,
15+
ENUM,
16+
NUMBER,
17+
BOOLEAN,
18+
}

src/main/java/org/gridsuite/studyconfig/server/dto/CustomColumnInfos.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
*/
77
package org.gridsuite.studyconfig.server.dto;
88

9+
import org.gridsuite.studyconfig.server.constants.ColumnType;
10+
911
import io.swagger.v3.oas.annotations.media.Schema;
1012
import jakarta.validation.constraints.NotNull;
1113

@@ -19,6 +21,12 @@ public record CustomColumnInfos(
1921
@Schema(description = "Column name")
2022
String name,
2123

24+
@Schema(description = "Column type")
25+
ColumnType type,
26+
27+
@Schema(description = "Column precision")
28+
Integer precision,
29+
2230
@Schema(description = "Column formula")
2331
String formula,
2432

src/main/java/org/gridsuite/studyconfig/server/entities/CustomColumnEmbeddable.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
*/
77
package org.gridsuite.studyconfig.server.entities;
88

9+
import org.gridsuite.studyconfig.server.constants.ColumnType;
10+
911
import jakarta.persistence.*;
1012
import lombok.*;
1113

@@ -23,6 +25,13 @@ public class CustomColumnEmbeddable {
2325
@Column(name = "name", nullable = false, columnDefinition = "varchar(255)")
2426
private String name;
2527

28+
@Column(name = "type", nullable = false)
29+
@Enumerated(EnumType.STRING)
30+
private ColumnType type;
31+
32+
@Column(name = "precision", columnDefinition = "integer")
33+
private Integer precision;
34+
2635
@Column(name = "formula", columnDefinition = "CLOB")
2736
private String formula;
2837

src/main/java/org/gridsuite/studyconfig/server/mapper/SpreadsheetConfigMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ public static SpreadsheetConfigEntity toEntity(SpreadsheetConfigInfos dto) {
4949
}
5050

5151
public static CustomColumnInfos toCustomColumnDto(CustomColumnEmbeddable entity) {
52-
return new CustomColumnInfos(entity.getName(), entity.getFormula(), entity.getDependencies(), entity.getId());
52+
return new CustomColumnInfos(entity.getName(), entity.getType(), entity.getPrecision(), entity.getFormula(), entity.getDependencies(), entity.getId());
5353
}
5454

5555
public static CustomColumnEmbeddable toCustomColumnEmbeddable(CustomColumnInfos dto) {
56-
return new CustomColumnEmbeddable(dto.name(), dto.formula(), dto.dependencies(), dto.id());
56+
return new CustomColumnEmbeddable(dto.name(), dto.type(), dto.precision(), dto.formula(), dto.dependencies(), dto.id());
5757
}
5858
}

src/main/java/org/gridsuite/studyconfig/server/service/SpreadsheetConfigService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public UUID duplicateSpreadsheetConfig(UUID id) {
5353
List<CustomColumnEmbeddable> customColumns = entity.getCustomColumns().stream()
5454
.map(column -> CustomColumnEmbeddable.builder()
5555
.name(column.getName())
56+
.type(column.getType())
57+
.precision(column.getPrecision())
5658
.formula(column.getFormula())
5759
.dependencies(column.getDependencies())
5860
.id(column.getId())
@@ -167,6 +169,8 @@ public UUID duplicateSpreadsheetConfigCollection(UUID id) {
167169
configDuplicate.setCustomColumns(config.getCustomColumns().stream()
168170
.map(column -> CustomColumnEmbeddable.builder()
169171
.name(column.getName())
172+
.type(column.getType())
173+
.precision(column.getPrecision())
170174
.formula(column.getFormula())
171175
.dependencies(column.getDependencies())
172176
.id(column.getId())
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
2+
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:pro="http://www.liquibase.org/xml/ns/pro" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
3+
<changeSet author="labidiayo (generated)" id="1738439236362-1">
4+
<sql dbms="postgresql">
5+
TRUNCATE TABLE spreadsheet_config CASCADE;
6+
</sql>
7+
</changeSet>
8+
<changeSet author="labidiayo (generated)" id="1738439236362-2">
9+
<sql dbms="postgresql">
10+
TRUNCATE TABLE spreadsheet_config_collection CASCADE;
11+
</sql>
12+
</changeSet>
13+
<changeSet author="labidiayo (generated)" id="1738439236362-3">
14+
<addColumn tableName="spreadsheet_custom_column">
15+
<column name="precision" type="integer"/>
16+
</addColumn>
17+
</changeSet>
18+
<changeSet author="labidiayo (generated)" id="1738439236362-4">
19+
<addColumn tableName="spreadsheet_custom_column">
20+
<column name="type" type="varchar(255)">
21+
<constraints nullable="false"/>
22+
</column>
23+
</addColumn>
24+
</changeSet>
25+
</databaseChangeLog>

src/main/resources/db/changelog/db.changelog-master.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,6 @@ databaseChangeLog:
1414
- include:
1515
file: changesets/changelog_20250124T151522Z.xml
1616
relativeToChangelogFile: true
17+
- include:
18+
file: changesets/changelog_20250201T194706Z.xml
19+
relativeToChangelogFile: true

src/test/java/org/gridsuite/studyconfig/server/DtoConverterTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package org.gridsuite.studyconfig.server;
88

99
import org.assertj.core.api.WithAssertions;
10+
import org.gridsuite.studyconfig.server.constants.ColumnType;
1011
import org.gridsuite.studyconfig.server.constants.SheetType;
1112
import org.gridsuite.studyconfig.server.dto.CustomColumnInfos;
1213
import org.gridsuite.studyconfig.server.dto.SpreadsheetConfigInfos;
@@ -63,8 +64,8 @@ void testConversionToEntityOfSpreadsheetConfig() {
6364
id,
6465
SheetType.BUS,
6566
Arrays.asList(
66-
new CustomColumnInfos("Column1", "X+Y", "[\"col1\", \"col2\"]", "id1"),
67-
new CustomColumnInfos("Column2", "Z*W", "[\"col1\"]", "id2")
67+
new CustomColumnInfos("Column1", ColumnType.NUMBER, 1, "X+Y", "[\"col1\", \"col2\"]", "id1"),
68+
new CustomColumnInfos("Column2", ColumnType.NUMBER, 2, "Z*W", "[\"col1\"]", "id2")
6869
)
6970
);
7071

@@ -110,7 +111,7 @@ void testConversionToDtoOfCustomColumn() {
110111

111112
@Test
112113
void testConversionToEmbeddableOfCustomColumn() {
113-
CustomColumnInfos dto = new CustomColumnInfos("TestColumn", "X*Y*Z", "[\"col1\", \"col2\"]", "idTest");
114+
CustomColumnInfos dto = new CustomColumnInfos("TestColumn", ColumnType.NUMBER, 3, "X*Y*Z", "[\"col1\", \"col2\"]", "idTest");
114115
CustomColumnEmbeddable customColumnEmbeddable = SpreadsheetConfigMapper.toCustomColumnEmbeddable(dto);
115116

116117
assertThat(customColumnEmbeddable)

src/test/java/org/gridsuite/studyconfig/server/SpreadsheetConfigCollectionIntegrationTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import com.fasterxml.jackson.databind.ObjectMapper;
1010

11+
import org.gridsuite.studyconfig.server.constants.ColumnType;
1112
import org.gridsuite.studyconfig.server.constants.SheetType;
1213
import org.gridsuite.studyconfig.server.dto.CustomColumnInfos;
1314
import org.gridsuite.studyconfig.server.dto.SpreadsheetConfigCollectionInfos;
@@ -136,8 +137,8 @@ void testDuplicateCollection() throws Exception {
136137

137138
private List<SpreadsheetConfigInfos> createSpreadsheetConfigs() {
138139
List<CustomColumnInfos> customColumnInfos = Arrays.asList(
139-
new CustomColumnInfos("cust_a", "cust_b + cust_c", "[\"cust_b\", \"cust_c\"]", "idA"),
140-
new CustomColumnInfos("cust_b", "var_minP + 1", null, "idB")
140+
new CustomColumnInfos("cust_a", ColumnType.NUMBER, 1, "cust_b + cust_c", "[\"cust_b\", \"cust_c\"]", "idA"),
141+
new CustomColumnInfos("cust_b", ColumnType.TEXT, null, "var_minP + 1", null, "idB")
141142
);
142143

143144
return List.of(
@@ -148,10 +149,10 @@ private List<SpreadsheetConfigInfos> createSpreadsheetConfigs() {
148149

149150
private List<SpreadsheetConfigInfos> createUpdatedSpreadsheetConfigs() {
150151
List<CustomColumnInfos> customColumnInfos = Arrays.asList(
151-
new CustomColumnInfos("cust_a", "cust_b + cust_c", "[\"cust_b\", \"cust_c\"]", "idA"),
152-
new CustomColumnInfos("cust_b", "var_minP + 2", null, "idB"),
153-
new CustomColumnInfos("cust_c", "cust_b + 2", "[\"cust_b\"]", "idC"),
154-
new CustomColumnInfos("cust_d", "5 + 1", null, "idD")
152+
new CustomColumnInfos("cust_a", ColumnType.NUMBER, 1, "cust_b + cust_c", "[\"cust_b\", \"cust_c\"]", "idA"),
153+
new CustomColumnInfos("cust_b", ColumnType.TEXT, null, "var_minP + 2", null, "idB"),
154+
new CustomColumnInfos("cust_c", ColumnType.ENUM, null, "cust_b + 2", "[\"cust_b\"]", "idC"),
155+
new CustomColumnInfos("cust_d", ColumnType.NUMBER, 0, "5 + 1", null, "idD")
155156
);
156157

157158
return List.of(

src/test/java/org/gridsuite/studyconfig/server/SpreadsheetConfigIntegrationTest.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
import com.fasterxml.jackson.core.type.TypeReference;
1010
import com.fasterxml.jackson.databind.ObjectMapper;
11+
12+
import org.gridsuite.studyconfig.server.constants.ColumnType;
1113
import org.gridsuite.studyconfig.server.constants.SheetType;
1214
import org.gridsuite.studyconfig.server.dto.CustomColumnInfos;
1315
import org.gridsuite.studyconfig.server.dto.MetadataInfos;
@@ -232,18 +234,18 @@ void testDuplicateNonExistent() throws Exception {
232234

233235
private List<CustomColumnInfos> createCustomColumns() {
234236
return Arrays.asList(
235-
new CustomColumnInfos("cust_a", "cust_b + cust_c", "[\"cust_b\", \"cust_c\"]", "idA"),
236-
new CustomColumnInfos("cust_b", "var_minP + 1", null, "idB"),
237-
new CustomColumnInfos("cust_c", "cust_b + 1", "[\"cust_b\"]", "idC"),
238-
new CustomColumnInfos("cust_d", "5 + 2", null, "idD")
237+
new CustomColumnInfos("cust_a", ColumnType.BOOLEAN, null, "cust_b + cust_c", "[\"cust_b\", \"cust_c\"]", "idA"),
238+
new CustomColumnInfos("cust_b", ColumnType.NUMBER, 0, "var_minP + 1", null, "idB"),
239+
new CustomColumnInfos("cust_c", ColumnType.NUMBER, 2, "cust_b + 1", "[\"cust_b\"]", "idC"),
240+
new CustomColumnInfos("cust_d", ColumnType.TEXT, null, "5 + 2", null, "idD")
239241
);
240242
}
241243

242244
private List<CustomColumnInfos> createUpdatedCustomColumns() {
243245
return Arrays.asList(
244-
new CustomColumnInfos("cust_x", "cust_y * 2", "[\"cust_y\"]", "idX"),
245-
new CustomColumnInfos("cust_y", "var_maxP - 1", null, "idY"),
246-
new CustomColumnInfos("cust_z", "cust_x / 2", "[\"cust_x\"]", "idZ")
246+
new CustomColumnInfos("cust_x", ColumnType.BOOLEAN, null, "cust_y * 2", "[\"cust_y\"]", "idX"),
247+
new CustomColumnInfos("cust_y", ColumnType.NUMBER, 1, "var_maxP - 1", null, "idY"),
248+
new CustomColumnInfos("cust_z", ColumnType.NUMBER, 0, "cust_x / 2", "[\"cust_x\"]", "idZ")
247249
);
248250
}
249251

0 commit comments

Comments
 (0)