|
27 | 27 | import java.time.format.DateTimeFormatter;
|
28 | 28 | import java.util.List;
|
29 | 29 |
|
30 |
| -import javax.activation.MimeType; |
31 |
| -import javax.activation.MimeTypeParseException; |
32 |
| - |
| 30 | +import org.apache.commons.io.FilenameUtils; |
33 | 31 | import org.apache.commons.io.IOUtils;
|
34 | 32 | import org.apache.commons.lang3.StringUtils;
|
35 | 33 | import org.eclipse.jface.preference.IPreferenceStore;
|
|
43 | 41 | import ch.elexis.core.ui.preferences.SettingsPreferenceStore;
|
44 | 42 | import ch.elexis.core.ui.util.SWTHelper;
|
45 | 43 | import ch.elexis.omnivore.model.IDocumentHandle;
|
46 |
| -import ch.rgw.io.FileTool; |
47 | 44 | import ch.rgw.tools.ExHandler;
|
48 | 45 | import ch.rgw.tools.MimeTool;
|
49 | 46 |
|
@@ -337,31 +334,7 @@ public static String createNiceFileName(IDocumentHandle dh) {
|
337 | 334 | */
|
338 | 335 | public static File createTemporaryFile(IDocumentHandle documentHandle, String title) {
|
339 | 336 |
|
340 |
| - String fileExtension = null; |
341 |
| - String mimeType = documentHandle.getMimeType(); |
342 |
| - // somewhen we might event feature correct mimetypes in the db ... |
343 |
| - if ("pdf".equalsIgnoreCase(mimeType)) { //$NON-NLS-1$ |
344 |
| - mimeType = "application/pdf"; //$NON-NLS-1$ |
345 |
| - } |
346 |
| - try { |
347 |
| - MimeType docMimeType = new MimeType(mimeType); |
348 |
| - fileExtension = MimeTool.getExtension(docMimeType.toString()); |
349 |
| - } catch (MimeTypeParseException mpe) { |
350 |
| - fileExtension = FileTool.getExtension(mimeType); |
351 |
| - |
352 |
| - if (fileExtension == null) { |
353 |
| - fileExtension = FileTool.getExtension(documentHandle.getTitle()); |
354 |
| - } |
355 |
| - |
356 |
| - if (fileExtension == null && mimeType != null && !mimeType.contains(".") && !mimeType.contains(".") //$NON-NLS-1$ //$NON-NLS-2$ |
357 |
| - && !mimeType.contains("/")) { //$NON-NLS-1$ |
358 |
| - fileExtension = mimeType; |
359 |
| - } |
360 |
| - } |
361 |
| - |
362 |
| - if (fileExtension == null) { |
363 |
| - fileExtension = StringUtils.EMPTY; |
364 |
| - } |
| 337 | + String fileExtension = getFileEnding(documentHandle.getMimeType()); |
365 | 338 |
|
366 | 339 | String config_temp_filename = Utils.createNiceFileName(documentHandle);
|
367 | 340 | File temp = null;
|
@@ -407,6 +380,28 @@ public static File createTemporaryFile(IDocumentHandle documentHandle, String ti
|
407 | 380 | return temp;
|
408 | 381 | }
|
409 | 382 |
|
| 383 | + private static String getFileEnding(String mime) { |
| 384 | + if (mime != null) { |
| 385 | + if (mime.length() < 5) { |
| 386 | + return mime; |
| 387 | + } else { |
| 388 | + String ret = MimeTool.getExtension(mime); |
| 389 | + if (ret.length() > 5) { |
| 390 | + return getDefaultFileEnding(); |
| 391 | + } else if (ret.isEmpty()) { |
| 392 | + return FilenameUtils.getExtension(mime); |
| 393 | + } else { |
| 394 | + return ret; |
| 395 | + } |
| 396 | + } |
| 397 | + } |
| 398 | + return getDefaultFileEnding(); |
| 399 | + } |
| 400 | + |
| 401 | + private static String getDefaultFileEnding() { |
| 402 | + return ".tmp"; |
| 403 | + } |
| 404 | + |
410 | 405 | public static boolean storeExternal(IDocumentHandle docHandle, String filename) {
|
411 | 406 | try {
|
412 | 407 | byte[] b = IOUtils.toByteArray(docHandle.getContent());
|
|
0 commit comments