xref: /trunk/main/package/qa/ofopxmlstorages/Test02.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 import com.sun.star.io.XStream;
11 import com.sun.star.io.XInputStream;
12 
13 import com.sun.star.embed.*;
14 import com.sun.star.beans.StringPair;
15 
16 import share.LogWriter;
17 import complex.ofopxmlstorages.TestHelper;
18 import complex.ofopxmlstorages.StorageTest;
19 
20 public class Test02 implements StorageTest {
21 
22     XMultiServiceFactory m_xMSF;
23     XSingleServiceFactory m_xStorageFactory;
24     TestHelper m_aTestHelper;
25 
26     public Test02( XMultiServiceFactory xMSF, XSingleServiceFactory xStorageFactory, LogWriter aLogWriter )
27     {
28         m_xMSF = xMSF;
29         m_xStorageFactory = xStorageFactory;
30         m_aTestHelper = new TestHelper( aLogWriter, "Test02: " );
31     }
32 
33     public boolean test()
34     {
35         try
36         {
37             StringPair[][] aRelations =
38                 { { new StringPair( "Id", "Num1" ) },
39                   { new StringPair( "Target", "TargetURLValue" ), new StringPair( "Id", "Num6" ) },
40                   { new StringPair( "Target", "" ), new StringPair( "Id", "Num7" ) },
41                   { new StringPair( "Id", "Num2" ), new StringPair( "TargetMode", "Internal" ), new StringPair( "Type", "unknown" ), new StringPair( "Target", "URL value" ) },
42                   { new StringPair( "Id", "Num3" ), new StringPair( "TargetMode", "Internal" ), new StringPair( "Type", "unknown" ), new StringPair( "Target", "URL value" ) },
43                   { new StringPair( "Id", "Num4" ), new StringPair( "TargetMode", "Internal" ), new StringPair( "Type", "unknown" ), new StringPair( "Target", "URL value" ) },
44                   { new StringPair( "Id", "Num5" ), new StringPair( "TargetMode", "" ), new StringPair( "Type", "unknown" ), new StringPair( "Target", "URL value" ) }
45                 };
46 
47 
48             XStream xTempFileStream = m_aTestHelper.CreateTempFileStream( m_xMSF );
49             if ( xTempFileStream == null )
50                 return false;
51 
52             // create storage based on the temporary stream
53             XStorage xTempStorage = m_aTestHelper.createStorageFromStream( m_xStorageFactory,
54                                                                             xTempFileStream,
55                                                                             ElementModes.WRITE );
56             if ( xTempStorage == null )
57             {
58                 m_aTestHelper.Error( "Can't create temporary storage representation!" );
59                 return false;
60             }
61 
62             // open a new substorage
63             XStorage xTempSubStorage = m_aTestHelper.openSubStorage( xTempStorage,
64                                                                     "SubStorage1",
65                                                                     ElementModes.WRITE );
66             if ( xTempSubStorage == null )
67             {
68                 m_aTestHelper.Error( "Can't create substorage!" );
69                 return false;
70             }
71 
72             byte pBytes1[] = { 1, 1, 1, 1, 1 };
73 
74             // open a new substream, set "MediaType" and "Compressed" properties to it and write some bytes
75             if ( !m_aTestHelper.WriteBytesToSubstream( xTempSubStorage,
76                                                         "SubStream1",
77                                                         "MediaType1",
78                                                         true,
79                                                         pBytes1,
80                                                         aRelations ) )
81                 return false;
82 
83             // set Relations for storages and check that "IsRoot" and "OpenMode" properties are set correctly
84             if ( !m_aTestHelper.setStorageTypeAndCheckProps( xTempStorage,
85                                                             true,
86                                                             ElementModes.WRITE,
87                                                             aRelations ) )
88                 return false;
89 
90             // set Relations for storages and check that "IsRoot" and "OpenMode" properties are set correctly
91             if ( !m_aTestHelper.setStorageTypeAndCheckProps( xTempSubStorage,
92                                                             false,
93                                                             ElementModes.WRITE,
94                                                             aRelations ) )
95                 return false;
96 
97             // commit substorage first
98             if ( !m_aTestHelper.commitStorage( xTempSubStorage ) )
99                 return false;
100 
101             // commit the root storage so the contents must be stored now
102             if ( !m_aTestHelper.commitStorage( xTempStorage ) )
103                 return false;
104 
105             // dispose used storage to free resources
106             if ( !m_aTestHelper.disposeStorage( xTempStorage ) )
107                 return false;
108 
109 
110             // ================================================
111             // now check all the written information
112             // ================================================
113 
114             // close the output part of the temporary stream
115             // the output part must present since we already wrote to the stream
116             if ( !m_aTestHelper.closeOutput( xTempFileStream ) )
117                 return false;
118 
119             XInputStream xTempInStream = m_aTestHelper.getInputStream( xTempFileStream );
120             if ( xTempInStream == null )
121                 return false;
122 
123 
124             // open input stream
125             XStorage xResultStorage = m_aTestHelper.createStorageFromInputStream( m_xStorageFactory, xTempInStream );
126             if ( xResultStorage == null )
127             {
128                 m_aTestHelper.Error( "Can't open storage based on input stream!" );
129                 return false;
130             }
131 
132             if ( !m_aTestHelper.checkStorageProperties( xResultStorage, true, ElementModes.READ, aRelations ) )
133                 return false;
134 
135             // open existing substorage
136             XStorage xResultSubStorage = m_aTestHelper.openSubStorage( xResultStorage,
137                                                                         "SubStorage1",
138                                                                         ElementModes.READ );
139             if ( xResultSubStorage == null )
140             {
141                 m_aTestHelper.Error( "Can't open existing substorage!" );
142                 return false;
143             }
144 
145             if ( !m_aTestHelper.checkStorageProperties( xResultSubStorage,
146                                                         false,
147                                                         ElementModes.READ,
148                                                         aRelations ) )
149                 return false;
150 
151             if ( !m_aTestHelper.checkStream( xResultSubStorage, "SubStream1", "MediaType1", pBytes1, aRelations ) )
152                 return false;
153 
154             return true;
155         }
156         catch( Exception e )
157         {
158             m_aTestHelper.Error( "Exception: " + e );
159             return false;
160         }
161     }
162 
163 }
164 
165