\r
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.model.common.ITreeNode;\r
\r
/**\r
* @author a.mueller\r
\r
// String charType = "CHAR"; //TODO may depend on database type\r
\r
- //clean up //this should not happen with correct "delete" implementation\r
+ //clean up nodes without classification //this should not happen with correct "delete" implementation\r
String sql = String.format(" DELETE FROM %s WHERE %s IS NULL ", tableName, treeIdColumnName);\r
datasource.executeUpdate(sql);\r
\r
+ //... set all index entries to NULL\r
sql = String.format(" UPDATE %s SET %s = NULL", tableName, indexColumnName);\r
datasource.executeUpdate(sql);\r
\r
//start\r
+ String separator = ITreeNode.separator;\r
+ String treePrefix = ITreeNode.treePrefix;\r
sql = String.format(" UPDATE %s tn " +\r
- " SET tn.%s = CONCAT('#c', tn.%s, '#') " +\r
+ " SET tn.%s = CONCAT('%s%s', tn.%s, '%s', tn.id, '%s') " +\r
" WHERE tn.%s IS NULL AND tn.%s IS NOT NULL ", \r
- tableName, indexColumnName, treeIdColumnName, parentIdColumnName, treeIdColumnName);\r
+ tableName, \r
+ indexColumnName, separator, treePrefix, treeIdColumnName, separator, separator, \r
+ parentIdColumnName, treeIdColumnName);\r
datasource.executeUpdate(sql);\r
\r
//width search index creation\r
do {\r
\r
sql = String.format(" UPDATE %s child INNER JOIN %s parent ON child.%s = parent.id " +\r
- " SET child.%s = CONCAT( parent.%s, child.id, '#') " +\r
+ " SET child.%s = CONCAT( parent.%s, child.id, '%s') " +\r
" WHERE parent.%s IS NOT NULL AND child.%s IS NULL ", \r
- tableName, tableName, parentIdColumnName, indexColumnName, indexColumnName,\r
+ tableName, tableName, parentIdColumnName, \r
+ indexColumnName, indexColumnName, separator,\r
indexColumnName, indexColumnName);\r
datasource.executeUpdate(sql);\r
\r