xref: /trunk/main/package/qa/ofopxmlstorages/Test01.java (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 package complex.ofopxmlstorages;
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 import com.sun.star.beans.StringPair;
13 
14 import share.LogWriter;
15 import complex.ofopxmlstorages.TestHelper;
16 import complex.ofopxmlstorages.StorageTest;
17 
18 public class Test01 implements StorageTest {
19 
20     XMultiServiceFactory m_xMSF;
21     XSingleServiceFactory m_xStorageFactory;
22     TestHelper m_aTestHelper;
23 
24     public Test01( XMultiServiceFactory xMSF, XSingleServiceFactory xStorageFactory, LogWriter aLogWriter )
25     {
26         m_xMSF = xMSF;
27         m_xStorageFactory = xStorageFactory;
28         m_aTestHelper = new TestHelper( aLogWriter, "Test01: " );
29     }
30 
31     public boolean test()
32     {
33         StringPair[][] aRelations1 =
34             { { new StringPair( "Id", "Num1" ) },
35               { new StringPair( "Target", "TargetURLValue1" ), new StringPair( "Id", "Num6" ) },
36               { new StringPair( "Target", "" ), new StringPair( "Id", "Num7" ) },
37               { new StringPair( "Id", "Num2" ), new StringPair( "TargetMode", "Internal1" ), new StringPair( "Type", "unknown1" ), new StringPair( "Target", "URL value 1" ) },
38               { new StringPair( "Id", "Num3" ), new StringPair( "TargetMode", "Internal1" ), new StringPair( "Type", "unknown1" ), new StringPair( "Target", "URL value 1" ) },
39               { new StringPair( "Id", "Num4" ), new StringPair( "TargetMode", "Internal1" ), new StringPair( "Type", "unknown1" ), new StringPair( "Target", "URL value 1" ) },
40               { new StringPair( "Id", "Num5" ), new StringPair( "TargetMode", "" ), new StringPair( "Type", "unknown1" ), new StringPair( "Target", "URL value1" ) }
41             };
42 
43         StringPair[][] aRelations2 =
44             { { new StringPair( "Id", "Num1" ) },
45               { new StringPair( "Target", "TargetURLValue2" ), new StringPair( "Id", "Num6" ) },
46               { new StringPair( "Target", "" ), new StringPair( "Id", "Num7" ) },
47               { new StringPair( "Id", "Num2" ), new StringPair( "TargetMode", "Internal2" ), new StringPair( "Type", "unknown2" ), new StringPair( "Target", "URL value 2" ) },
48               { new StringPair( "Id", "Num3" ), new StringPair( "TargetMode", "Internal2" ), new StringPair( "Type", "unknown2" ), new StringPair( "Target", "URL value 2" ) },
49               { new StringPair( "Id", "Num4" ), new StringPair( "TargetMode", "Internal2" ), new StringPair( "Type", "unknown" ), new StringPair( "Target", "URL value" ) },
50               { new StringPair( "Id", "Num5" ), new StringPair( "TargetMode", "" ), new StringPair( "Type", "unknown" ), new StringPair( "Target", "URL value" ) }
51             };
52 
53         try
54         {
55             String sTempFileURL = m_aTestHelper.CreateTempFile( m_xMSF );
56             if ( sTempFileURL == null || sTempFileURL == "" )
57             {
58                 m_aTestHelper.Error( "No valid temporary file was created!" );
59                 return false;
60             }
61 
62             // create temporary storage based on arbitrary medium
63             // after such a storage is closed it is lost
64             XStorage xTempStorage = m_aTestHelper.createTempStorage( m_xMSF, m_xStorageFactory );
65             if ( xTempStorage == null )
66             {
67                 m_aTestHelper.Error( "Can't create temporary storage representation!" );
68                 return false;
69             }
70 
71             // open a new substorage
72             XStorage xTempSubStorage = m_aTestHelper.openSubStorage( xTempStorage,
73                                                                         "SubStorage1",
74                                                                         ElementModes.WRITE );
75             if ( xTempSubStorage == null )
76             {
77                 m_aTestHelper.Error( "Can't create substorage!" );
78                 return false;
79             }
80 
81             byte pBytes1[] = { 1, 1, 1, 1, 1 };
82 
83             // open a new substream, set "MediaType" and "Compressed" properties to it and write some bytes
84             if ( !m_aTestHelper.WriteBytesToSubstream( xTempSubStorage,
85                                                         "SubStream1",
86                                                         "MediaType1",
87                                                         true,
88                                                         pBytes1,
89                                                         aRelations1 ) )
90                 return false;
91 
92             byte pBytes2[] = { 2, 2, 2, 2, 2 };
93 
94             // open a new substream, set "MediaType" and "Compressed" properties to it and write some bytes
95             if ( !m_aTestHelper.WriteBytesToSubstream( xTempSubStorage,
96                                                         "SubStream2",
97                                                         "MediaType2",
98                                                         false,
99                                                         pBytes2,
100                                                         aRelations2 ) )
101                 return false;
102 
103             // set Relations for storages and check that "IsRoot" and "OpenMode" properties are set correctly
104             if ( !m_aTestHelper.setStorageTypeAndCheckProps( xTempStorage,
105                                                             true,
106                                                             ElementModes.WRITE,
107                                                             aRelations1 ) )
108                 return false;
109 
110             // set Relations for storages and check that "IsRoot" and "OpenMode" properties are set correctly
111             if ( !m_aTestHelper.setStorageTypeAndCheckProps( xTempSubStorage,
112                                                             false,
113                                                             ElementModes.WRITE,
114                                                             aRelations1 ) )
115                 return false;
116 
117             // create temporary storage based on a previously created temporary file
118             XStorage xTempFileStorage = m_aTestHelper.createStorageFromURL( m_xStorageFactory,
119                                                                             sTempFileURL,
120                                                                             ElementModes.WRITE );
121             if ( xTempFileStorage == null )
122             {
123                 m_aTestHelper.Error( "Can't create storage based on temporary file!" );
124                 return false;
125             }
126 
127             // copy xTempStorage to xTempFileStorage
128             // xTempFileStorage will be automatically commited
129             if ( !m_aTestHelper.copyStorage( xTempStorage, xTempFileStorage ) )
130                 return false;
131 
132             // dispose used storages to free resources
133             if ( !m_aTestHelper.disposeStorage( xTempStorage ) || !m_aTestHelper.disposeStorage( xTempFileStorage ) )
134                 return false;
135 
136             // ================================================
137             // now check all the written and copied information
138             // ================================================
139 
140             // the temporary file must not be locked any more after storage disposing
141             XStorage xResultStorage = m_aTestHelper.createStorageFromURL( m_xStorageFactory,
142                                                                             sTempFileURL,
143                                                                             ElementModes.WRITE );
144             if ( xResultStorage == null )
145             {
146                 m_aTestHelper.Error( "Can't reopen storage based on temporary file!" );
147                 return false;
148             }
149 
150             if ( !m_aTestHelper.checkStorageProperties( xResultStorage,
151                                                         true,
152                                                         ElementModes.WRITE,
153                                                         aRelations1 ) )
154                 return false;
155 
156             // open existing substorage
157             XStorage xResultSubStorage = m_aTestHelper.openSubStorage( xResultStorage,
158                                                                         "SubStorage1",
159                                                                         ElementModes.READ );
160             if ( xResultSubStorage == null )
161             {
162                 m_aTestHelper.Error( "Can't open existing substorage!" );
163                 return false;
164             }
165 
166             if ( !m_aTestHelper.checkStorageProperties( xResultSubStorage,
167                                                         false,
168                                                         ElementModes.READ,
169                                                         aRelations1 ) )
170                 return false;
171 
172             if ( !m_aTestHelper.checkStream( xResultSubStorage,
173                                             "SubStream1",
174                                             "MediaType1",
175                                             pBytes1,
176                                             aRelations1 ) )
177                 return false;
178 
179             if ( !m_aTestHelper.checkStream( xResultSubStorage,
180                                             "SubStream2",
181                                             "MediaType2",
182                                             pBytes2,
183                                             aRelations2 ) )
184                 return false;
185 
186             // dispose used storages to free resources
187             if ( !m_aTestHelper.disposeStorage( xResultStorage ) )
188                 return false;
189 
190             return true;
191         }
192         catch( Exception e )
193         {
194             m_aTestHelper.Error( "Exception: " + e );
195             return false;
196         }
197     }
198 
199 }
200 
201