summaryrefslogtreecommitdiffstats
path: root/scripting/examples/java/Newsgroup/MimeConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--scripting/examples/java/Newsgroup/MimeConfiguration.java211
1 files changed, 211 insertions, 0 deletions
diff --git a/scripting/examples/java/Newsgroup/MimeConfiguration.java b/scripting/examples/java/Newsgroup/MimeConfiguration.java
new file mode 100644
index 000000000..03b964834
--- /dev/null
+++ b/scripting/examples/java/Newsgroup/MimeConfiguration.java
@@ -0,0 +1,211 @@
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+package org.libreoffice.example.java_scripts;
+
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.script.framework.runtime.XScriptContext;
+import com.sun.star.util.XStringSubstitution;
+
+import javax.mail.*;
+import javax.activation.*;
+
+import java.io.*;
+
+
+public class MimeConfiguration {
+
+ // Office Installation path
+ private static String instPath = "";
+
+
+ public static boolean createFiles(XScriptContext xsc) {
+ try {
+ XComponentContext xcc = xsc.getComponentContext();
+ XMultiComponentFactory xmf = xcc.getServiceManager();
+
+ Object pathSub =
+ xmf.createInstanceWithContext("com.sun.star.comp.framework.PathSubstitution",
+ xcc);
+ XStringSubstitution stringSub = (XStringSubstitution) UnoRuntime.queryInterface(
+ XStringSubstitution.class, pathSub);
+ instPath = stringSub.getSubstituteVariableValue("$(inst)");
+
+ } catch (com.sun.star.beans.UnknownPropertyException upe) {
+ System.out.println("com.sun.star.beans.UnknownPropertyException");
+ upe.printStackTrace();
+ } catch (com.sun.star.uno.Exception e) {
+ System.out.println("com.sun.star.uno.Exception");
+ e.printStackTrace();
+ }
+
+ writeMailCap();
+ writeMimeTypes();
+
+ // ToDo: include status feedback to StatusWindow
+ return true;
+ }
+
+
+
+
+ private static void writeMailCap() {
+ String mailcapPath = getConfigDir() + System.getProperty("file.separator") +
+ "mailcap";
+
+ try {
+ if (! new File(java.net.URLDecoder.decode(mailcapPath)).exists()) {
+ File mailcapFile = new File(mailcapPath);
+ FileWriter out = new FileWriter(mailcapFile);
+ String[] lines = getMailcapText();
+
+ for (int i = 0; i < lines.length; i++) {
+ out.write(lines[i], 0, lines[i].length());
+ }
+
+ out.close();
+ } else {
+ }
+
+
+
+ // use prog dir, if not there then java.io to create/write new file
+ MailcapCommandMap map = new MailcapCommandMap(mailcapPath);
+ CommandMap.setDefaultCommandMap(map);
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ private static String[] getMailcapText() {
+ String[] mailcapText = {
+ "#\n",
+ "# Default mailcap file for the JavaMail System.\n",
+ "#\n",
+ "# JavaMail content-handlers:\n",
+ "#\n",
+ "text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain\n",
+ "text/html;; x-java-content-handler=com.sun.mail.handlers.text_html\n",
+ "text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml\n",
+ "image/gif;; x-java-content-handler=com.sun.mail.handlers.image_gif\n",
+ "image/jpeg;; x-java-content-handler=com.sun.mail.handlers.image_jpeg\n",
+ "multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed\n",
+ "message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822\n"
+ };
+
+ return mailcapText;
+ }
+
+
+
+ private static void writeMimeTypes() {
+ String mimetypesPath = getConfigDir() + System.getProperty("file.separator") +
+ "mimetypes.default";
+
+ try {
+ if (! new File(java.net.URLDecoder.decode(mimetypesPath)).exists()) {
+ File mimetypesFile = new File(mimetypesPath);
+ FileWriter out = new FileWriter(mimetypesFile);
+ String[] lines = getMimeTypesText();
+
+ for (int i = 0; i < lines.length; i++) {
+ out.write(lines[i], 0, lines[i].length());
+ }
+
+ out.close();
+ } else {
+ }
+
+ MimetypesFileTypeMap mimeTypes = new MimetypesFileTypeMap(mimetypesPath);
+ FileTypeMap.setDefaultFileTypeMap(mimeTypes);
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ private static String[] getMimeTypesText() {
+ String[] mimesText = {
+ "#\n",
+ "# A simple, old format, mime.types file\n",
+ "#\n",
+ "text/html html htm HTML HTM\n",
+ "text/plain txt text TXT TEXT\n",
+ "image/gif gif GIF\n",
+ "image/ief ief\n",
+ "image/jpeg jpeg jpg jpe JPG\n",
+ "image/tiff tiff tif\n",
+ "image/x-xwindowdump xwd\n",
+ "application/postscript ai eps ps\n",
+ "application/rtf rtf\n",
+ "application/x-tex tex\n",
+ "application/x-texinfo texinfo texi\n",
+ "application/x-troff t tr roff\n",
+ "audio/basic au\n",
+ "audio/midi midi mid\n",
+ "audio/x-aifc aifc\n",
+ "audio/x-aiff aif aiff\n",
+ "audio/x-mpeg mpeg mpg\n",
+ "audio/x-wav wav\n",
+ "video/mpeg mpeg mpg mpe\n",
+ "video/quicktime qt mov\n",
+ "video/x-msvideo avi\n"
+ };
+
+ return mimesText;
+ }
+
+
+ private static String getConfigDir() {
+ // mailcap file must be written to the Office user/config directory
+
+ // instPath is a URL, needs to be converted to a system pathname
+ String config = instPath + "/user/config";
+ String configNonURL = "";
+
+ if (System.getProperty("os.name").indexOf("Windows") != -1) {
+ // Windows
+ // removes "file:///"
+ int start = 8;
+ configNonURL = config.substring(start, config.length());
+
+ // Convert forward to back-slashes
+ while (configNonURL.indexOf("/") != -1) {
+ int fSlash = configNonURL.indexOf("/");
+ String firstPart = configNonURL.substring(0, fSlash);
+ String secondPart = configNonURL.substring(fSlash + 1, configNonURL.length());
+ configNonURL = firstPart + "\\" + secondPart;
+ }
+ } else {
+ // Unix/Linux
+ // removes "file://"
+ int start = 7;
+ configNonURL = config.substring(start, config.length());
+ }
+
+ return configNonURL;
+ }
+
+}