summaryrefslogtreecommitdiff
path: root/scripting/examples/java/Newsgroup/OfficeAttachment.java
diff options
context:
space:
mode:
Diffstat (limited to 'scripting/examples/java/Newsgroup/OfficeAttachment.java')
-rw-r--r--scripting/examples/java/Newsgroup/OfficeAttachment.java307
1 files changed, 307 insertions, 0 deletions
diff --git a/scripting/examples/java/Newsgroup/OfficeAttachment.java b/scripting/examples/java/Newsgroup/OfficeAttachment.java
new file mode 100644
index 000000000000..c2816e0e133b
--- /dev/null
+++ b/scripting/examples/java/Newsgroup/OfficeAttachment.java
@@ -0,0 +1,307 @@
+//import com.sun.star.frame.XComponentLoader;
+import java.io.*;
+import com.sun.star.lang.XComponent;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.frame.XStorable;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.frame.XModel;
+import com.sun.star.script.framework.runtime.XScriptContext;
+
+// for debug only
+import javax.swing.JOptionPane;
+
+public class OfficeAttachment
+{
+
+ private StatusWindow status = null;
+ private XStorable storedDoc = null;
+ private File htmlFile = null;
+ private File officeFile = null;
+ private boolean isHtmlDoc = false;
+ private boolean isOfficeDoc = false;
+ private String templocationURL = "";
+ private String templocationSystem = "";
+ private String attachmentName = "";
+ private String statusLine = "";
+
+ public OfficeAttachment( XScriptContext xsc, StatusWindow sw, boolean html, boolean office )
+ {
+ status = sw;
+ isHtmlDoc = html;
+ isOfficeDoc = office;
+
+ templocationSystem = templocationURL = System.getProperty( "user.home" );
+ if( System.getProperty( "os.name" ).indexOf( "Windows" ) != -1 )
+ {
+ while( templocationURL.indexOf( "\\" ) != -1 )
+ {
+ int sepPos = templocationURL.indexOf( "\\" );
+ String firstPart = templocationURL.substring( 0, sepPos );
+ String lastPart = templocationURL.substring( sepPos + 1, templocationURL.length() );
+ templocationURL = firstPart + "/" + lastPart;
+ //JOptionPane.showMessageDialog( null, "Temp Location URL is: " + templocationURL + "\nfirstPart is: " + firstPart + "\nlastPart is: " + lastPart );
+ }
+ }
+
+ try
+ {
+ statusLine = "Querying Office for current document";
+ status.setStatus( 1, statusLine );
+ XScriptContext scriptcontext = xsc;
+ XModel xmodel = scriptcontext.getDocument();
+ storedDoc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xmodel);
+ // find document name from storedDoc
+ attachmentName = storedDoc.getLocation();
+ }
+ catch( Exception e )
+ {
+ //UNO error
+ status.setStatus( 1, "Error: " + statusLine );
+ }
+
+ if( attachmentName.equalsIgnoreCase( "" ) )
+ {
+ attachmentName = "Attachment";
+ }
+ else
+ {
+ //int lastSep = attachmentName.lastIndexOf( System.getProperty( "file.separator" ) );
+ int lastSep = attachmentName.lastIndexOf( "/" );
+ attachmentName = attachmentName.substring( lastSep + 1, attachmentName.length() );
+ int dot = attachmentName.indexOf( "." );
+ attachmentName = attachmentName.substring( 0, dot );
+ }
+ }
+
+
+ public boolean createTempDocs()
+ {
+ String filenameURL = "file:///" + templocationURL + "/" + attachmentName;
+ //String filenameSystem = templocationSystem + System.getProperty( "file.separator" ) + attachmentName;
+ //JOptionPane.showMessageDialog( null, "Filename URL " + filenameURL );
+ try
+ {
+ if( isHtmlDoc )
+ {
+ //JOptionPane.showMessageDialog( null, "Saving doc in HTML format" );
+ statusLine = "Saving doc in HTML format";
+ status.setStatus( 4, statusLine );
+ //System.out.print( "Saving attachment as " + filename + ".html..." );
+ PropertyValue[] propertyvalue_html = new PropertyValue[2];
+ propertyvalue_html[0] = new PropertyValue();
+ propertyvalue_html[0].Name = new String("Overwrite");
+ propertyvalue_html[0].Value = new Boolean(true);
+ propertyvalue_html[1] = new PropertyValue();
+ propertyvalue_html[1].Name = ("FilterName");
+// propertyvalue_html[1].Value = new String("scalc: HTML (StarCalc)");
+ propertyvalue_html[1].Value = new String("swriter: HTML (StarWriter)");
+ storedDoc.storeAsURL( filenameURL + ".html", propertyvalue_html);
+
+ File homedir = new File( templocationSystem );
+ //JOptionPane.showMessageDialog( null, "homedir (Java File): " + homedir.getPath() );
+ File homefiles[] = homedir.listFiles();
+ String file = "";
+ for(int i=0; i < homefiles.length; i++ )
+ {
+ if( homefiles[i].getName().equals( attachmentName + ".html" ) )
+ {
+ //htmlFile = new File( homefiles[i].getAbsolutePath() );
+ //JOptionPane.showMessageDialog( null, "Found HTML" );
+ file = homefiles[i].getAbsolutePath();
+ }
+ }
+ htmlFile = new File( file );
+ //htmlFile = new File( filename + ".html" );
+ //htmlFile = new File( storedDoc.getLocation() );
+ }
+
+ if( isOfficeDoc )
+ {
+ //JOptionPane.showMessageDialog( null, "Saving doc in .sxw format" );
+ statusLine = "Saving doc in .sxw format";
+ status.setStatus( 4, statusLine );
+ //System.out.print( "Saving attachment as " + filename + ".sxw..." );
+ PropertyValue[] propertyvalue_sxw = new PropertyValue[2];
+ propertyvalue_sxw[0] = new PropertyValue();
+ propertyvalue_sxw[0].Name = new String("Overwrite");
+ propertyvalue_sxw[0].Value = new Boolean(true);
+ propertyvalue_sxw[1] = new PropertyValue();
+ propertyvalue_sxw[1].Name = new String("Overwrite");
+ propertyvalue_sxw[1].Value = new Boolean(true);
+ storedDoc.storeAsURL( filenameURL + ".sxw", propertyvalue_sxw);
+
+ File homedir = new File( templocationSystem );
+
+ //JOptionPane.showMessageDialog( null, "homedir (Java File): " + homedir.getPath() );
+
+ File homefiles[] = homedir.listFiles();
+ String file = "";
+ for(int i=0; i < homefiles.length; i++ )
+ {
+ if( homefiles[i].getName().equals( attachmentName + ".sxw" ) )
+ {
+ //officeFile = new File( homefiles[i].getAbsolutePath() );
+ //JOptionPane.showMessageDialog( null, "Found .sxw" );
+ file = homefiles[i].getAbsolutePath();
+ }
+ }
+ officeFile = new File( file );
+ //officeFile = new File( filename + ".sxw" );
+ //officeFile = new File (storedDoc.getLocation() );
+ }
+
+ //status.setStatus( 10, "Attachments successfully created" );
+
+ }
+ catch( SecurityException se )
+ {
+ status.setStatus( 4, "Error: " + statusLine );
+ System.out.println( "Security error while saving temporary Document(s). Check file permissions in home directory." );
+ se.printStackTrace();
+ htmlFile = null;
+ officeFile = null;
+ return false;
+ }
+ catch( Exception e )
+ {
+ status.setStatus( 4, "Error: " + statusLine );
+ System.out.println( "Error saving temporary Document(s)" );
+ e.printStackTrace();
+ htmlFile = null;
+ officeFile = null;
+ return false;
+ }
+ return true;
+ }
+
+
+ public boolean removeTempDocs()
+ {
+ /*
+ if( !htmlFile.exists() && !officeFile.exists() )
+ {
+ System.out.println("Error: Document(s) have not been saved." );
+ }
+ */
+
+ statusLine = "Removing temp docs";
+ status.setStatus( 13, statusLine );
+
+ try
+ {
+ if( isOfficeDoc && isHtmlDoc )
+ {
+ //System.out.println( "Removing: " + htmlFile.getPath() + " " + officeFile.getPath() );
+ //System.out.println( "htmlfile " + htmlFile.exists() + " officeFile " + officeFile.exists() );
+ //JOptionPane.showMessageDialog( null, "Removing: " + htmlFile.getPath() + " " + officeFile.getPath() );
+ //JOptionPane.showMessageDialog( null, "htmlfile " + htmlFile.exists() + " officeFile " + officeFile.exists() );
+ htmlFile.delete();
+ officeFile.delete();
+ //JOptionPane.showMessageDialog( null, "htmlfile " + htmlFile.exists() + " officeFile " + officeFile.exists() );
+ }
+ else
+ {
+ if( isOfficeDoc )
+ {
+ //System.out.println( "Removing: " + officeFile.getPath() );
+ officeFile.delete();
+ }
+ else
+ {
+ //System.out.println( "Removing: " + htmlFile.getPath() );
+ htmlFile.delete();
+ }
+ }
+ }
+ catch( SecurityException se )
+ {
+ status.setStatus( 13, "Error: " + statusLine );
+ System.out.println( "Security Error while deleting temporary Document(s). Check file permissions in home directory." );
+ se.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+
+ public void cleanUpOnError()
+ {
+ try
+ {
+ if( isOfficeDoc && isHtmlDoc )
+ {
+ htmlFile.delete();
+ officeFile.delete();
+ }
+ else
+ {
+ if( isOfficeDoc )
+ {
+ officeFile.delete();
+ }
+ else
+ {
+ htmlFile.delete();
+ }
+ }
+ }
+ catch( SecurityException se )
+ {
+ System.out.println( "Security Error while deleting temporary Document(s). Check file permissions in home directory." );
+ se.printStackTrace();
+ }
+ }
+
+
+ public File[] getAttachments()
+ {
+ /*
+ if( htmlFile == null && officeFile == null )
+ {
+ System.out.println( "Error: Document(s) have not been saved." );
+ return null;
+ }
+ */
+ //(officeDoc) ? (number = 2) : (number = 1);
+
+ statusLine = "Retrieving temp docs";
+ status.setStatus( 8, statusLine );
+
+ File attachments[] = null;
+ if( isOfficeDoc && isHtmlDoc )
+ {
+ attachments = new File[2];
+ attachments[0] = htmlFile;
+ attachments[1] = officeFile;
+ }
+ else
+ {
+ if( isOfficeDoc )
+ {
+ attachments = new File[1];
+ attachments[0] = officeFile;
+ }
+ else
+ {
+ attachments = new File[1];
+ attachments[0] = htmlFile;
+ }
+ }
+
+ return attachments;
+ }
+
+
+ public boolean isHtmlAttachment()
+ {
+ return isHtmlDoc;
+ }
+
+
+ public boolean isOfficeAttachment()
+ {
+ return isOfficeDoc;
+ }
+
+}