summaryrefslogtreecommitdiff
path: root/scripting/examples/java/Newsgroup/MimeConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'scripting/examples/java/Newsgroup/MimeConfiguration.java')
-rw-r--r--scripting/examples/java/Newsgroup/MimeConfiguration.java219
1 files changed, 219 insertions, 0 deletions
diff --git a/scripting/examples/java/Newsgroup/MimeConfiguration.java b/scripting/examples/java/Newsgroup/MimeConfiguration.java
new file mode 100644
index 000000000000..8604c0afbd1b
--- /dev/null
+++ b/scripting/examples/java/Newsgroup/MimeConfiguration.java
@@ -0,0 +1,219 @@
+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() )
+ {
+ //System.out.println( "URLDecoder: " + java.net.URLDecoder.decode( mailcapPath ) );
+ 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
+ {
+ //System.out.println( "URLDecoder: " + java.net.URLDecoder.decode( mailcapPath ) );
+ }
+
+
+
+ // 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() )
+ {
+ //System.out.println( "URLDecoder: " + java.net.URLDecoder.decode( mimetypesPath ) );
+ 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
+ {
+ //System.out.println( "URLDecoder: " + java.net.URLDecoder.decode( mimetypesPath ) );
+ }
+
+ 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;
+ }
+
+}