1 package complex.storages; 2 3 import com.sun.star.uno.XInterface; 4 import com.sun.star.lang.XMultiServiceFactory; 5 import com.sun.star.lang.XSingleServiceFactory; 6 7 import com.sun.star.bridge.XUnoUrlResolver; 8 import com.sun.star.uno.UnoRuntime; 9 import com.sun.star.uno.XInterface; 10 11 import com.sun.star.embed.*; 12 13 import share.LogWriter; 14 import complex.storages.TestHelper; 15 import complex.storages.StorageTest; 16 17 public class Test18 implements StorageTest { 18 19 XMultiServiceFactory m_xMSF; 20 XSingleServiceFactory m_xStorageFactory; 21 TestHelper m_aTestHelper; 22 23 public Test18( XMultiServiceFactory xMSF, XSingleServiceFactory xStorageFactory, LogWriter aLogWriter ) 24 { 25 m_xMSF = xMSF; 26 m_xStorageFactory = xStorageFactory; 27 m_aTestHelper = new TestHelper( aLogWriter, "Test18: " ); 28 } 29 30 public boolean test() 31 { 32 try 33 { 34 // test the default value of Compressed property 35 String sTempFileURL = m_aTestHelper.CreateTempFile( m_xMSF ); 36 if ( sTempFileURL == null || sTempFileURL == "" ) 37 { 38 m_aTestHelper.Error( "No valid temporary file was created!" ); 39 return false; 40 } 41 42 // create temporary storage based on arbitrary medium 43 // after such a storage is closed it is lost 44 Object oTempStorage = m_xStorageFactory.createInstance(); 45 XStorage xTempStorage = (XStorage) UnoRuntime.queryInterface( XStorage.class, oTempStorage ); 46 if ( xTempStorage == null ) 47 { 48 m_aTestHelper.Error( "Can't create temporary storage representation!" ); 49 return false; 50 } 51 52 // open a new substorage 53 XStorage xTempSubStorage = m_aTestHelper.openSubStorage( xTempStorage, 54 "SubStorage1", 55 ElementModes.WRITE ); 56 if ( xTempSubStorage == null ) 57 { 58 m_aTestHelper.Error( "Can't create substorage!" ); 59 return false; 60 } 61 62 byte pBytes1[] = { 1, 1, 1, 1, 1 }; 63 64 // open a new substream, set "MediaType" and "Compressed" properties to it and write some bytes 65 if ( !m_aTestHelper.WriteBytesToSubstreamDefaultCompressed( xTempSubStorage, "SubStream1", "image/jpeg", pBytes1 ) ) 66 return false; 67 68 // open a new substream, set "MediaType" and "Compressed" properties to it and write some bytes 69 if ( !m_aTestHelper.WriteBytesToSubstreamDefaultCompressed( xTempSubStorage, "SubStream2", "image/png", pBytes1 ) ) 70 return false; 71 72 // open a new substream, set "MediaType" and "Compressed" properties to it and write some bytes 73 if ( !m_aTestHelper.WriteBytesToSubstreamDefaultCompressed( xTempSubStorage, "SubStream3", "image/gif", pBytes1 ) ) 74 return false; 75 76 // open a new substream, set "MediaType" and "Compressed" properties to it and write some bytes 77 if ( !m_aTestHelper.WriteBytesToSubstreamDefaultCompressed( xTempSubStorage, "SubStream4", "MediaType1", pBytes1 ) ) 78 return false; 79 80 // set "MediaType" property for storages and check that "IsRoot" and "OpenMode" properties are set correctly 81 if ( !m_aTestHelper.setStorageTypeAndCheckProps( xTempStorage, 82 "MediaType3", 83 true, 84 ElementModes.WRITE ) ) 85 return false; 86 87 // set "MediaType" property for storages and check that "IsRoot" and "OpenMode" properties are set correctly 88 if ( !m_aTestHelper.setStorageTypeAndCheckProps( xTempSubStorage, 89 "MediaType4", 90 false, 91 ElementModes.WRITE ) ) 92 return false; 93 94 // create temporary storage based on a previously created temporary file 95 Object pArgs[] = new Object[2]; 96 pArgs[0] = (Object) sTempFileURL; 97 pArgs[1] = new Integer( ElementModes.WRITE ); 98 99 Object oTempFileStorage = m_xStorageFactory.createInstanceWithArguments( pArgs ); 100 XStorage xTempFileStorage = (XStorage)UnoRuntime.queryInterface( XStorage.class, oTempFileStorage ); 101 if ( xTempFileStorage == null ) 102 { 103 m_aTestHelper.Error( "Can't create storage based on temporary file!" ); 104 return false; 105 } 106 107 // copy xTempStorage to xTempFileStorage 108 // xTempFileStorage will be automatically commited 109 if ( !m_aTestHelper.copyStorage( xTempStorage, xTempFileStorage ) ) 110 return false; 111 112 // dispose used storages to free resources 113 if ( !m_aTestHelper.disposeStorage( xTempStorage ) || !m_aTestHelper.disposeStorage( xTempFileStorage ) ) 114 return false; 115 116 // ================================================ 117 // now check all the written and copied information 118 // ================================================ 119 120 // the temporary file must not be locked any more after storage disposing 121 pArgs[1] = new Integer( ElementModes.WRITE ); 122 Object oResultStorage = m_xStorageFactory.createInstanceWithArguments( pArgs ); 123 XStorage xResultStorage = (XStorage) UnoRuntime.queryInterface( XStorage.class, oResultStorage ); 124 if ( xResultStorage == null ) 125 { 126 m_aTestHelper.Error( "Can't reopen storage based on temporary file!" ); 127 return false; 128 } 129 130 if ( !m_aTestHelper.checkStorageProperties( xResultStorage, "MediaType3", true, ElementModes.WRITE ) ) 131 return false; 132 133 // open existing substorage 134 XStorage xResultSubStorage = m_aTestHelper.openSubStorage( xResultStorage, 135 "SubStorage1", 136 ElementModes.READ ); 137 if ( xResultSubStorage == null ) 138 { 139 m_aTestHelper.Error( "Can't open existing substorage!" ); 140 return false; 141 } 142 143 if ( !m_aTestHelper.checkStorageProperties( xResultSubStorage, "MediaType4", false, ElementModes.READ ) ) 144 return false; 145 146 if ( !m_aTestHelper.checkStream( xResultSubStorage, "SubStream1", "image/jpeg", false, pBytes1 ) ) 147 return false; 148 149 if ( !m_aTestHelper.checkStream( xResultSubStorage, "SubStream2", "image/png", false, pBytes1 ) ) 150 return false; 151 152 if ( !m_aTestHelper.checkStream( xResultSubStorage, "SubStream3", "image/gif", false, pBytes1 ) ) 153 return false; 154 155 if ( !m_aTestHelper.checkStream( xResultSubStorage, "SubStream4", "MediaType1", true, pBytes1 ) ) 156 return false; 157 158 // dispose used storages to free resources 159 if ( !m_aTestHelper.disposeStorage( xResultStorage ) ) 160 return false; 161 162 return true; 163 } 164 catch( Exception e ) 165 { 166 m_aTestHelper.Error( "Exception: " + e ); 167 return false; 168 } 169 } 170 171 } 172 173