Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,14 @@ public interface DefinitionRepository extends JpaRepository<Definition, Long> {
@Query("update Definition d set d.checksum = :checksum where d.type in :types")
void updateChecksums(String checksum, Set<String> types);

/**
* Initialize checksums.
*
* @param location the location
*/
@Modifying
@Transactional
@Query("update Definition d set d.checksum = '' where d.location like :location")
void initializeChecksums(String location);

}
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,13 @@ public void updateChecksums(String checksum, Set<String> types) {
definitionRepository.updateChecksums(checksum, types);
}

/**
* Initialize checksums.
*
* @param location the location
*/
public void initializeChecksums(String location) {
definitionRepository.initializeChecksums(location + "%");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

import org.eclipse.dirigible.components.base.publisher.PublisherHandler;
import org.eclipse.dirigible.components.base.synchronizer.SynchronizationWatcher;
import org.eclipse.dirigible.components.initializers.definition.DefinitionService;
import org.eclipse.dirigible.repository.api.IRepositoryStructure;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
Expand All @@ -27,6 +29,9 @@ public class SynchronizationWatcherPublisherHandler implements PublisherHandler
@Autowired
private SynchronizationWatcher synchronizationWatcher;

@Autowired
private DefinitionService definitionService;

/**
* Before publish.
*
Expand Down Expand Up @@ -66,6 +71,11 @@ public void beforeUnpublish(String location) {
*/
@Override
public void afterUnpublish(String location) {
String path = location;
if (location.startsWith(IRepositoryStructure.PATH_REGISTRY_PUBLIC)) {
path = path.substring(IRepositoryStructure.PATH_REGISTRY_PUBLIC.length());
}
definitionService.initializeChecksums(path);
synchronizationWatcher.force();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,7 @@ public static void execute(Connection connection, Table tableModel) throws SQLEx

// ADD iteration
for (TableColumn columnModel : tableModel.getColumns()) {
String name = "\"" + columnModel.getName() + "\"";
String nameOriginal = name;
String name = columnModel.getName();

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

modelColumnNames.add(name.toUpperCase());

String nameOriginalCanonical = nameOriginal.toUpperCase();
String nameOriginalCanonical = name.toUpperCase();
if (!columnDefinitions.containsKey(nameOriginalCanonical)) {

AlterTableBuilder alterTableBuilder = SqlFactory.getNative(connection)
.alter()
.table(tableName);

alterTableBuilder.add()
.column(name, type, isPrimaryKey, isNullable, isUnique, args);
.column("\"" + name + "\"", type, isPrimaryKey, isNullable, isUnique, args);

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

// DROP iteration
for (String columnName : columnDefinitions.keySet()) {
columnName = "\"" + columnName + "\"";
if (!modelColumnNames.contains(columnName.toUpperCase())) {
AlterTableBuilder alterTableBuilder = SqlFactory.getNative(connection)
.alter()
.table(tableName);
alterTableBuilder.drop()
.column(columnName, DataType.BOOLEAN);
.column("\"" + columnName + "\"", DataType.BOOLEAN);
executeAlterBuilder(connection, alterTableBuilder);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ public class DataTypeUtils {
private static final String TIMESTAMP = "TIMESTAMP";
/** The Constant DATE. */
private static final String DATE = "DATE";
/** The Constant DATE. */
private static final String DATETIME = "DATETIME";
/** The Constant TEXT. */
private static final String TEXT = "TEXT";
/** The Constant CHARACTER. */
Expand Down Expand Up @@ -275,6 +277,7 @@ public class DataTypeUtils {
UNIFIED_STRING_FROM_DATABASE_TYPE.put(BINARY_VARYING, BLOB);
UNIFIED_STRING_FROM_DATABASE_TYPE.put(BINARY_LARGE_OBJECT, BLOB);
UNIFIED_STRING_FROM_DATABASE_TYPE.put(BYTEA, BLOB);
UNIFIED_STRING_FROM_DATABASE_TYPE.put(DATETIME, TIMESTAMP);

}

Expand Down
Loading