Skip to content

Commit 7936013

Browse files
authored
Clean checksums on unpublish (#5837)
* definition name and business key added in tables of tasks * clean up of checksums on unpublish
1 parent d0835c7 commit 7936013

5 files changed

Lines changed: 36 additions & 6 deletions

File tree

components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionRepository.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,14 @@ public interface DefinitionRepository extends JpaRepository<Definition, Long> {
3333
@Query("update Definition d set d.checksum = :checksum where d.type in :types")
3434
void updateChecksums(String checksum, Set<String> types);
3535

36+
/**
37+
* Initialize checksums.
38+
*
39+
* @param location the location
40+
*/
41+
@Modifying
42+
@Transactional
43+
@Query("update Definition d set d.checksum = '' where d.location like :location")
44+
void initializeChecksums(String location);
45+
3646
}

components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/definition/DefinitionService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,13 @@ public void updateChecksums(String checksum, Set<String> types) {
131131
definitionRepository.updateChecksums(checksum, types);
132132
}
133133

134+
/**
135+
* Initialize checksums.
136+
*
137+
* @param location the location
138+
*/
139+
public void initializeChecksums(String location) {
140+
definitionRepository.initializeChecksums(location + "%");
141+
}
142+
134143
}

components/core/core-initializers/src/main/java/org/eclipse/dirigible/components/initializers/synchronizer/SynchronizationWatcherPublisherHandler.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
import org.eclipse.dirigible.components.base.publisher.PublisherHandler;
1313
import org.eclipse.dirigible.components.base.synchronizer.SynchronizationWatcher;
14+
import org.eclipse.dirigible.components.initializers.definition.DefinitionService;
15+
import org.eclipse.dirigible.repository.api.IRepositoryStructure;
1416
import org.springframework.beans.factory.annotation.Autowired;
1517
import org.springframework.core.annotation.Order;
1618
import org.springframework.stereotype.Component;
@@ -27,6 +29,9 @@ public class SynchronizationWatcherPublisherHandler implements PublisherHandler
2729
@Autowired
2830
private SynchronizationWatcher synchronizationWatcher;
2931

32+
@Autowired
33+
private DefinitionService definitionService;
34+
3035
/**
3136
* Before publish.
3237
*
@@ -66,6 +71,11 @@ public void beforeUnpublish(String location) {
6671
*/
6772
@Override
6873
public void afterUnpublish(String location) {
74+
String path = location;
75+
if (location.startsWith(IRepositoryStructure.PATH_REGISTRY_PUBLIC)) {
76+
path = path.substring(IRepositoryStructure.PATH_REGISTRY_PUBLIC.length());
77+
}
78+
definitionService.initializeChecksums(path);
6979
synchronizationWatcher.force();
7080
}
7181

components/data/data-structures/src/main/java/org/eclipse/dirigible/components/data/structures/synchronizer/table/TableAlterProcessor.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ public static void execute(Connection connection, Table tableModel) throws SQLEx
7676

7777
// ADD iteration
7878
for (TableColumn columnModel : tableModel.getColumns()) {
79-
String name = "\"" + columnModel.getName() + "\"";
80-
String nameOriginal = name;
79+
String name = columnModel.getName();
8180

8281
DataType type = DataType.valueOfByName(columnModel.getType());
8382
String length = columnModel.getLength();
@@ -112,15 +111,15 @@ public static void execute(Connection connection, Table tableModel) throws SQLEx
112111

113112
modelColumnNames.add(name.toUpperCase());
114113

115-
String nameOriginalCanonical = nameOriginal.toUpperCase();
114+
String nameOriginalCanonical = name.toUpperCase();
116115
if (!columnDefinitions.containsKey(nameOriginalCanonical)) {
117116

118117
AlterTableBuilder alterTableBuilder = SqlFactory.getNative(connection)
119118
.alter()
120119
.table(tableName);
121120

122121
alterTableBuilder.add()
123-
.column(name, type, isPrimaryKey, isNullable, isUnique, args);
122+
.column("\"" + name + "\"", type, isPrimaryKey, isNullable, isUnique, args);
124123

125124
if (!isNullable) {
126125
throw new SQLException(String.format(INCOMPATIBLE_CHANGE_OF_TABLE, tableName, name, "NOT NULL"));
@@ -144,13 +143,12 @@ public static void execute(Connection connection, Table tableModel) throws SQLEx
144143

145144
// DROP iteration
146145
for (String columnName : columnDefinitions.keySet()) {
147-
columnName = "\"" + columnName + "\"";
148146
if (!modelColumnNames.contains(columnName.toUpperCase())) {
149147
AlterTableBuilder alterTableBuilder = SqlFactory.getNative(connection)
150148
.alter()
151149
.table(tableName);
152150
alterTableBuilder.drop()
153-
.column(columnName, DataType.BOOLEAN);
151+
.column("\"" + columnName + "\"", DataType.BOOLEAN);
154152
executeAlterBuilder(connection, alterTableBuilder);
155153
}
156154
}

modules/database/database-sql/src/main/java/org/eclipse/dirigible/database/sql/DataTypeUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ public class DataTypeUtils {
100100
private static final String TIMESTAMP = "TIMESTAMP";
101101
/** The Constant DATE. */
102102
private static final String DATE = "DATE";
103+
/** The Constant DATE. */
104+
private static final String DATETIME = "DATETIME";
103105
/** The Constant TEXT. */
104106
private static final String TEXT = "TEXT";
105107
/** The Constant CHARACTER. */
@@ -275,6 +277,7 @@ public class DataTypeUtils {
275277
UNIFIED_STRING_FROM_DATABASE_TYPE.put(BINARY_VARYING, BLOB);
276278
UNIFIED_STRING_FROM_DATABASE_TYPE.put(BINARY_LARGE_OBJECT, BLOB);
277279
UNIFIED_STRING_FROM_DATABASE_TYPE.put(BYTEA, BLOB);
280+
UNIFIED_STRING_FROM_DATABASE_TYPE.put(DATETIME, TIMESTAMP);
278281

279282
}
280283

0 commit comments

Comments
 (0)