Skip to content

Commit d0b367e

Browse files
committed
catch exception if createTempDirectory fails
1 parent 91cd9b1 commit d0b367e

File tree

1 file changed

+20
-5
lines changed
  • dataframe-excel/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io

1 file changed

+20
-5
lines changed

dataframe-excel/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/xlsx.kt

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public class Excel : SupportedDataFrameFormat {
5858
internal class DefaultReadExcelMethod(path: String?) : AbstractDefaultReadMethod(path, MethodArguments.EMPTY, readExcel)
5959

6060
private const val readExcel = "readExcel"
61+
private const val readExcelTempFolderPrefix = "dataframe-excel"
6162

6263
/**
6364
* To prevent [Issue #402](https://github.com/Kotlin/dataframe/issues/402):
@@ -66,8 +67,14 @@ private const val readExcel = "readExcel"
6667
* cause permission issues for multiple users.
6768
*/
6869
private fun setWorkbookTempDirectory() {
69-
val tempDir = Files.createTempDirectory("dataframe-excel").toFile()
70-
.also { it.deleteOnExit() }
70+
val tempDir = try {
71+
Files.createTempDirectory(readExcelTempFolderPrefix)
72+
.toFile()
73+
.also { it.deleteOnExit() }
74+
} catch (e: Exception) {
75+
// Ignore, let WorkbookFactory use the default temp directory instead
76+
return
77+
}
7178
TempFile.setTempFileCreationStrategy(
7279
DefaultTempFileCreationStrategy(tempDir)
7380
)
@@ -226,7 +233,8 @@ public fun DataFrame.Companion.readExcel(
226233
}
227234

228235
val name = repairNameIfRequired(nameFromCell, columnNameCounters, nameRepairStrategy)
229-
columnNameCounters[nameFromCell] = columnNameCounters.getOrDefault(nameFromCell, 0) + 1 // increase the counter for specific column name
236+
columnNameCounters[nameFromCell] =
237+
columnNameCounters.getOrDefault(nameFromCell, 0) + 1 // increase the counter for specific column name
230238

231239
val values: List<Any?> = valueRowsRange.map {
232240
val row: Row? = sheet.getRow(it)
@@ -245,10 +253,17 @@ public fun DataFrame.Companion.readExcel(
245253
*
246254
* TODO: https://github.com/Kotlin/dataframe/issues/387
247255
*/
248-
private fun repairNameIfRequired(nameFromCell: String, columnNameCounters: MutableMap<String, Int>, nameRepairStrategy: NameRepairStrategy): String {
256+
private fun repairNameIfRequired(
257+
nameFromCell: String,
258+
columnNameCounters: MutableMap<String, Int>,
259+
nameRepairStrategy: NameRepairStrategy,
260+
): String {
249261
return when (nameRepairStrategy) {
250262
NameRepairStrategy.DO_NOTHING -> nameFromCell
251-
NameRepairStrategy.CHECK_UNIQUE -> if (columnNameCounters.contains(nameFromCell)) throw DuplicateColumnNamesException(columnNameCounters.keys.toList()) else nameFromCell
263+
NameRepairStrategy.CHECK_UNIQUE -> if (columnNameCounters.contains(nameFromCell)) throw DuplicateColumnNamesException(
264+
columnNameCounters.keys.toList()
265+
) else nameFromCell
266+
252267
NameRepairStrategy.MAKE_UNIQUE -> if (nameFromCell.isEmpty()) { // probably it's never empty because of filling empty column names earlier
253268
val emptyName = "Unknown column"
254269
if (columnNameCounters.contains(emptyName)) "${emptyName}${columnNameCounters[emptyName]}"

0 commit comments

Comments
 (0)