xref: /trunk/main/odk/examples/java/Storage/Test06.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 package storagetesting;
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.lang.IllegalArgumentException;
12 import com.sun.star.container.NoSuchElementException;
13 import com.sun.star.container.ElementExistException;
14 
15 import com.sun.star.embed.*;
16 
17 import storagetesting.TestHelper;
18 import storagetesting.StorageTest;
19 
20 public class Test06 implements StorageTest {
21 
22     XMultiServiceFactory m_xMSF;
23     XSingleServiceFactory m_xStorageFactory;
24     TestHelper m_aTestHelper;
25 
26     public Test06( XMultiServiceFactory xMSF, XSingleServiceFactory xStorageFactory )
27     {
28         m_xMSF = xMSF;
29         m_xStorageFactory = xStorageFactory;
30         m_aTestHelper = new TestHelper( "Test06: " );
31     }
32 
33     public boolean test()
34     {
35         try
36         {
37             // create temporary storage based on arbitrary medium
38             // after such a storage is closed it is lost
39             Object oTempStorage = m_xStorageFactory.createInstance();
40             XStorage xTempStorage = (XStorage) UnoRuntime.queryInterface( XStorage.class, oTempStorage );
41             if ( xTempStorage == null )
42             {
43                 m_aTestHelper.Error( "Can't create temporary storage representation!" );
44                 return false;
45             }
46 
47             try
48             {
49                 xTempStorage.copyToStorage( null );
50                 m_aTestHelper.Error( "The method must throw an exception because of illegal parameter!" );
51                 return false;
52             }
53             catch( com.sun.star.lang.IllegalArgumentException iae )
54             {}
55             catch( com.sun.star.uno.Exception ue )
56             {}
57             catch( Exception e )
58             {
59                 m_aTestHelper.Error( "Unexpected excepion because of illegal parameter : " + e );
60                 return false;
61             }
62 
63             // open new substorages
64             XStorage xTempSubStorage1 = m_aTestHelper.openSubStorage( xTempStorage,
65                                                                     "SubStorage1",
66                                                                     ElementModes.ELEMENT_WRITE );
67             XStorage xTempSubStorage2 = m_aTestHelper.openSubStorage( xTempStorage,
68                                                                     "SubStorage2",
69                                                                     ElementModes.ELEMENT_WRITE );
70             if ( xTempSubStorage1 == null || xTempSubStorage2 == null )
71             {
72                 m_aTestHelper.Error( "Can't create substorage!" );
73                 return false;
74             }
75 
76             // in case stream is open for reading it must exist
77             try
78             {
79                 xTempSubStorage1.openStreamElement( "NonExistingStream", ElementModes.ELEMENT_READ );
80                 m_aTestHelper.Error( "The method must throw an exception in case of try to open nonexistent stream for reading!" );
81                 return false;
82             }
83             catch( com.sun.star.uno.Exception ue )
84             {}
85             catch( Exception e )
86             {
87                 m_aTestHelper.Error( "Unexpected excepion in case of try to open nonexistent stream for reading : " + e );
88                 return false;
89             }
90 
91             // in case a storage is open for reading it must exist
92             try
93             {
94                 xTempSubStorage1.openStreamElement( "NonExistingStorage", ElementModes.ELEMENT_READ );
95                 m_aTestHelper.Error( "The method must throw an exception in case of try to open nonexistent storage for reading!" );
96                 return false;
97             }
98             catch( com.sun.star.uno.Exception ue )
99             {}
100             catch( Exception e )
101             {
102                 m_aTestHelper.Error( "Unexpected excepion in case of try to open nonexistent storage for reading : " + e );
103                 return false;
104             }
105 
106             // in case of removing nonexistent element an exception must be thrown
107             try
108             {
109                 xTempSubStorage1.removeElement( "NonExistingElement" );
110                 m_aTestHelper.Error( "An exception must be thrown in case of removing nonexistent element!" );
111                 return false;
112             }
113             catch( com.sun.star.container.NoSuchElementException ne )
114             {}
115             catch( Exception e )
116             {
117                 m_aTestHelper.Error( "Unexpected excepion in case of try to remove nonexistent element : " + e );
118                 return false;
119             }
120 
121             // in case of renaming of nonexistent element an exception must be thrown
122             try
123             {
124                 xTempSubStorage1.renameElement( "NonExistingElement", "NewName" );
125                 m_aTestHelper.Error( "An exception must be thrown in case of renaming nonexistent element!" );
126                 return false;
127             }
128             catch( com.sun.star.container.NoSuchElementException ne )
129             {}
130             catch( Exception e )
131             {
132                 m_aTestHelper.Error( "Unexpected excepion in case of try to rename nonexistent element : " + e );
133                 return false;
134             }
135 
136             // in case of renaming to a name of existent element an exception must be thrown
137             try
138             {
139                 xTempStorage.renameElement( "SubStorage1", "SubStorage2" );
140                 m_aTestHelper.Error( "An exception must be thrown in case of renaming to the name of existent element!" );
141                 return false;
142             }
143             catch( com.sun.star.container.ElementExistException ee )
144             {}
145             catch( Exception e )
146             {
147                 m_aTestHelper.Error( "Unexpected excepion in case of try to rename to the name of existent element : " + e );
148                 return false;
149             }
150 
151             // in case of copying target storage must be provided
152             try
153             {
154                 xTempStorage.copyElementTo( "SubStorage1", null, "SubStorage1" );
155                 m_aTestHelper.Error( "An exception must be thrown in case empty reference is provided as target for copying!" );
156                 return false;
157             }
158             catch( com.sun.star.lang.IllegalArgumentException iae )
159             {}
160             catch( com.sun.star.uno.Exception ue )
161             {}
162             catch( Exception e )
163             {
164                 m_aTestHelper.Error( "Unexpected excepion in case empty reference is provieded as target for copying : " + e );
165                 return false;
166             }
167 
168             // in case of moving target storage must be provided
169             try
170             {
171                 xTempStorage.moveElementTo( "SubStorage1", null, "SubStorage1" );
172                 m_aTestHelper.Error( "An exception must be thrown in case empty reference is provided as target for moving!" );
173                 return false;
174             }
175             catch( com.sun.star.lang.IllegalArgumentException iae )
176             {}
177             catch( com.sun.star.uno.Exception ue )
178             {}
179             catch( Exception e )
180             {
181                 m_aTestHelper.Error( "Unexpected excepion in case empty reference is provieded as target for moving : " + e );
182                 return false;
183             }
184 
185 
186             // prepare target for further testings
187 
188             // create new temporary storage based on arbitrary medium
189             Object oTargetStorage = m_xStorageFactory.createInstance();
190             XStorage xTargetStorage = (XStorage) UnoRuntime.queryInterface( XStorage.class, oTargetStorage );
191             if ( xTargetStorage == null )
192             {
193                 m_aTestHelper.Error( "Can't create temporary storage representation!" );
194                 return false;
195             }
196 
197             // open a new substorage
198             XStorage xTargetSubStorage = m_aTestHelper.openSubStorage( xTargetStorage,
199                                                                     "SubStorage1",
200                                                                     ElementModes.ELEMENT_WRITE );
201             if ( xTargetSubStorage == null )
202             {
203                 m_aTestHelper.Error( "Can't create substorage!" );
204                 return false;
205             }
206 
207             // in case of copying of nonexistent element an exception must be thrown
208             try
209             {
210                 xTempStorage.copyElementTo( "Nonexistent element", xTargetStorage, "Target" );
211                 m_aTestHelper.Error( "An exception must be thrown in case of copying of nonexisting element!" );
212                 return false;
213             }
214             catch( com.sun.star.container.NoSuchElementException ne )
215             {}
216             catch( Exception e )
217             {
218                 m_aTestHelper.Error( "Unexpected excepion in case of copying of nonexistent element: " + e );
219                 return false;
220             }
221 
222             // in case of moving of nonexistent element an exception must be thrown
223             try
224             {
225                 xTempStorage.moveElementTo( "Nonexistent element", xTargetStorage, "Target" );
226                 m_aTestHelper.Error( "An exception must be thrown in case of moving of nonexisting element!" );
227                 return false;
228             }
229             catch( com.sun.star.container.NoSuchElementException ne )
230             {}
231             catch( Exception e )
232             {
233                 m_aTestHelper.Error( "Unexpected excepion in case of moving of nonexistent element: " + e );
234                 return false;
235             }
236 
237             // in case target for copying already exists an exception must be thrown
238             try
239             {
240                 xTempStorage.copyElementTo( "SubStorage1", xTargetStorage, "SubStorage1" );
241                 m_aTestHelper.Error( "An exception must be thrown in case target for copying already exists!" );
242                 return false;
243             }
244             catch( com.sun.star.container.ElementExistException ee )
245             {}
246             catch( Exception e )
247             {
248                 m_aTestHelper.Error( "Unexpected excepion in case target for copying already exists: " + e );
249                 return false;
250             }
251 
252             // in case target for moving already exists an exception must be thrown
253             try
254             {
255                 xTempStorage.moveElementTo( "SubStorage1", xTargetStorage, "SubStorage1" );
256                 m_aTestHelper.Error( "An exception must be thrown in case target for moving already exists!" );
257                 return false;
258             }
259             catch( com.sun.star.container.ElementExistException ee )
260             {}
261             catch( Exception e )
262             {
263                 m_aTestHelper.Error( "Unexpected excepion in case target for moving already exists: " + e );
264                 return false;
265             }
266 
267 
268             return true;
269         }
270         catch( Exception e )
271         {
272             m_aTestHelper.Error( "Exception: " + e );
273             return false;
274         }
275     }
276 
277 }
278 
279