mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-14 09:12:22 +07:00
[DBE-22433] Migrate to Kotlin UUID parsing in pasting to cell
Merge-request: IJ-MR-164801 Merged-by: Anvar Ramazanov <anvar.ramazanov@jetbrains.com> GitOrigin-RevId: c020e55188186d57797cd91f181236d4e5fb2728
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3d41059a17
commit
41fceba2c7
@@ -35,6 +35,8 @@ action.Console.TableResult.PasteFormat.detect=Detect
|
||||
action.Console.TableResult.PasteFormat.single.value=Single Value
|
||||
group.Console.TableResult.PasteFormat.text=Paste Format
|
||||
group.Console.TableResult.PasteFormat.change.paste.format=Change Paste Format
|
||||
group.Console.TableResult.PasteError.title=Error While Pasting
|
||||
group.Console.TableResult.PasteError.multiple.text={0} errors occurred while pasting data
|
||||
group.Console.TableResult.AutoRefresh.text=Auto-Refresh
|
||||
action.Console.TableResult.ChangeCellEditorFileEncoding.text=Change Encoding\u2026
|
||||
action.Console.TableResult.DeleteRows.text=Delete Selected Rows
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.intellij.database.run.ui.grid.editors.FormatsCache;
|
||||
import com.intellij.database.run.ui.grid.editors.Formatter;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.Function;
|
||||
import kotlin.uuid.Uuid;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -555,12 +556,7 @@ public abstract class DataConverter<V, T> {
|
||||
|
||||
@Override
|
||||
protected @Nullable String reverseNotNull(@NotNull String value) {
|
||||
try {
|
||||
return UUID.fromString(value).toString();
|
||||
}
|
||||
catch (Exception ignore) {
|
||||
}
|
||||
return UUID.randomUUID().toString();
|
||||
return Uuid.Companion.parse(value).toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -577,13 +573,8 @@ public abstract class DataConverter<V, T> {
|
||||
|
||||
@Override
|
||||
protected @Nullable UUID reverseNotNull(@NotNull String value) {
|
||||
try {
|
||||
return UUID.fromString(value);
|
||||
}
|
||||
catch (Exception ignore) {
|
||||
}
|
||||
return UUID.randomUUID();
|
||||
}
|
||||
return UuidConverters.toJavaUuid(Uuid.Companion.parse(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String notNull(@NotNull UUID value) {
|
||||
|
||||
11
grid/core-impl/src/data/types/UuidConvertor.kt
Normal file
11
grid/core-impl/src/data/types/UuidConvertor.kt
Normal file
@@ -0,0 +1,11 @@
|
||||
package com.intellij.database.data.types
|
||||
|
||||
import kotlin.uuid.ExperimentalUuidApi
|
||||
import kotlin.uuid.Uuid
|
||||
import kotlin.uuid.toJavaUuid
|
||||
|
||||
object UuidConverters {
|
||||
@JvmStatic
|
||||
@OptIn(ExperimentalUuidApi::class)
|
||||
fun toJavaUuid(uuid: Uuid): java.util.UUID = uuid.toJavaUuid()
|
||||
}
|
||||
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.intellij.database.csv.ui.CsvRecordFormatForm.DELIMITERS;
|
||||
import static com.intellij.database.datagrid.GridUtil.addRows;
|
||||
@@ -78,21 +79,48 @@ public class GridPasteProvider implements PasteProvider {
|
||||
int colOffset = minCol - data.getFirstColumnIdx();
|
||||
int count = myGrid.getDataModel(DATA_WITH_MUTATIONS).getRowCount();
|
||||
addRows(myGrid, Math.max(0, maxRow - count + 1));
|
||||
|
||||
List<Exception> conversionExceptions = new ArrayList<>();
|
||||
|
||||
List<CellMutation.Builder> conversions = JBIterable.from(data.getConversions())
|
||||
.map(conversion -> conversion
|
||||
.copy()
|
||||
.secondGrid(myGrid)
|
||||
.offset(rowOffset, colOffset)
|
||||
.build())
|
||||
.filter(Objects::nonNull)
|
||||
.filter(DataTypeConversion::isValid)
|
||||
.map(c -> GridHelper.get(myGrid).isMixedTypeColumns(myGrid) ? c.build() : c.convert(BaseConversionGraph.get(myGrid)))
|
||||
.map(c -> {
|
||||
try {
|
||||
return GridHelper.get(myGrid).isMixedTypeColumns(myGrid)
|
||||
? c.build()
|
||||
: c.convert(BaseConversionGraph.get(myGrid));
|
||||
} catch (Exception e) {
|
||||
conversionExceptions.add(e);
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.filter(Objects::nonNull)
|
||||
.toList();
|
||||
|
||||
myGrid.getDataSupport().finishBuildingAndApply(conversions);
|
||||
if (pasteType != null) {
|
||||
Notification notification = createNotification(pasteType, csvFormat);
|
||||
if (notification != null) {
|
||||
notification.addAction(new ChoosePasteFormatAction(DataGridBundle.message("group.Console.TableResult.PasteFormat.change.paste.format")))
|
||||
.notify(myGrid.getProject());
|
||||
if (!conversionExceptions.isEmpty()) {
|
||||
String error = conversionExceptions.size() == 1
|
||||
? conversionExceptions.get(0).getMessage()
|
||||
: DataGridBundle.message("group.Console.TableResult.PasteError.multiple.text", conversionExceptions.size());
|
||||
Notification errorNotification = DataGridNotifications.PASTE_GROUP
|
||||
.createNotification(DataGridBundle.message("group.Console.TableResult.PasteError.title"),
|
||||
error,
|
||||
NotificationType.ERROR);
|
||||
errorNotification.notify(myGrid.getProject());
|
||||
} else {
|
||||
if (pasteType != null) {
|
||||
Notification notification = createNotification(pasteType, csvFormat);
|
||||
if (notification != null) {
|
||||
notification.addAction(
|
||||
new ChoosePasteFormatAction(DataGridBundle.message("group.Console.TableResult.PasteFormat.change.paste.format")))
|
||||
.notify(myGrid.getProject());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user