Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*
3 : : * This file is part of the LibreOffice project.
4 : : *
5 : : * This Source Code Form is subject to the terms of the Mozilla Public
6 : : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : : *
9 : : * This file incorporates work covered by the following license notice:
10 : : *
11 : : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : : * contributor license agreements. See the NOTICE file distributed
13 : : * with this work for additional information regarding copyright
14 : : * ownership. The ASF licenses this file to you under the Apache
15 : : * License, Version 2.0 (the "License"); you may not use this file
16 : : * except in compliance with the License. You may obtain a copy of
17 : : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : : */
19 : :
20 : : #include "CNodes.hxx"
21 : :
22 : : #include <cppuhelper/implbase3.hxx>
23 : : #include <com/sun/star/lang/XServiceInfo.hpp>
24 : : #include <com/sun/star/lang/XInitialization.hpp>
25 : : #include <com/sun/star/rdf/XURI.hpp>
26 : : #include <com/sun/star/rdf/URIs.hpp>
27 : :
28 : : #include <com/sun/star/lang/IllegalArgumentException.hpp>
29 : :
30 : :
31 : : /// anonymous implementation namespace
32 : : namespace {
33 : :
34 : : namespace css = ::com::sun::star;
35 : :
36 : : class CURI:
37 : : public ::cppu::WeakImplHelper3<
38 : : css::lang::XServiceInfo,
39 : : css::lang::XInitialization,
40 : : css::rdf::XURI>
41 : : {
42 : : public:
43 : : explicit CURI(css::uno::Reference< css::uno::XComponentContext > const & context);
44 [ - + ]: 5516 : virtual ~CURI() {}
45 : :
46 : : // ::com::sun::star::lang::XServiceInfo:
47 : : virtual ::rtl::OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException);
48 : : virtual ::sal_Bool SAL_CALL supportsService(const ::rtl::OUString & ServiceName) throw (css::uno::RuntimeException);
49 : : virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException);
50 : :
51 : : // ::com::sun::star::lang::XInitialization:
52 : : virtual void SAL_CALL initialize(const css::uno::Sequence< ::com::sun::star::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception);
53 : :
54 : : // ::com::sun::star::rdf::XNode:
55 : : virtual ::rtl::OUString SAL_CALL getStringValue() throw (css::uno::RuntimeException);
56 : :
57 : : // ::com::sun::star::rdf::XURI:
58 : : virtual ::rtl::OUString SAL_CALL getLocalName() throw (css::uno::RuntimeException);
59 : : virtual ::rtl::OUString SAL_CALL getNamespace() throw (css::uno::RuntimeException);
60 : :
61 : : private:
62 : : CURI(const CURI &); // not defined
63 : : CURI& operator=(const CURI &); // not defined
64 : :
65 : : /// handle css.rdf.URIs
66 : : void SAL_CALL initFromConstant(const sal_Int16 i_Constant);
67 : :
68 : : css::uno::Reference< css::uno::XComponentContext > m_xContext;
69 : :
70 : : ::rtl::OUString m_Namespace;
71 : : ::rtl::OUString m_LocalName;
72 : : };
73 : :
74 : 2758 : CURI::CURI(css::uno::Reference< css::uno::XComponentContext > const & context) :
75 : 2758 : m_xContext(context), m_Namespace(), m_LocalName()
76 : 2758 : {}
77 : :
78 : : // com.sun.star.uno.XServiceInfo:
79 : 0 : ::rtl::OUString SAL_CALL CURI::getImplementationName() throw (css::uno::RuntimeException)
80 : : {
81 : 0 : return comp_CURI::_getImplementationName();
82 : : }
83 : :
84 : 0 : ::sal_Bool SAL_CALL CURI::supportsService(::rtl::OUString const & serviceName) throw (css::uno::RuntimeException)
85 : : {
86 [ # # ]: 0 : css::uno::Sequence< ::rtl::OUString > serviceNames = comp_CURI::_getSupportedServiceNames();
87 [ # # ]: 0 : for (::sal_Int32 i = 0; i < serviceNames.getLength(); ++i) {
88 [ # # ][ # # ]: 0 : if (serviceNames[i] == serviceName)
89 : 0 : return sal_True;
90 : : }
91 [ # # ]: 0 : return sal_False;
92 : : }
93 : :
94 : 0 : css::uno::Sequence< ::rtl::OUString > SAL_CALL CURI::getSupportedServiceNames() throw (css::uno::RuntimeException)
95 : : {
96 : 0 : return comp_CURI::_getSupportedServiceNames();
97 : : }
98 : :
99 : : const char s_nsXS [] = "http://www.w3.org/2001/XMLSchema#";
100 : : const char s_nsXSD [] = "http://www.w3.org/2001/XMLSchema-datatypes#";
101 : : const char s_nsRDF [] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
102 : : const char s_nsRDFs [] = "http://www.w3.org/2000/01/rdf-schema#";
103 : : const char s_nsOWL [] = "http://www.w3.org/2002/07/owl#";
104 : : const char s_nsPkg [] =
105 : : "http://docs.oasis-open.org/ns/office/1.2/meta/pkg#";
106 : : const char s_nsODF [] =
107 : : "http://docs.oasis-open.org/ns/office/1.2/meta/odf#";
108 : :
109 : 146 : void SAL_CALL CURI::initFromConstant(const sal_Int16 i_Constant)
110 : : {
111 : 146 : const char *ns(0);
112 : 146 : const char *ln(0);
113 [ - - - - : 146 : switch (i_Constant)
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
+ - - - -
- - - - -
- - - - -
- - + - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - + -
- - - + +
+ + + + +
- ]
114 : : {
115 : : case css::rdf::URIs::XSD_NCNAME:
116 : 0 : ns = s_nsXSD;
117 : 0 : ln = "NCName";
118 : 0 : break;
119 : :
120 : : case css::rdf::URIs::XSD_STRING:
121 : 0 : ns = s_nsXSD;
122 : 0 : ln = "string";
123 : 0 : break;
124 : :
125 : : case css::rdf::URIs::XSD_NORMALIZEDSTRING:
126 : 0 : ns = s_nsXSD;
127 : 0 : ln = "normalizedString";
128 : 0 : break;
129 : :
130 : : case css::rdf::URIs::XSD_BOOLEAN:
131 : 0 : ns = s_nsXSD;
132 : 0 : ln = "boolean";
133 : 0 : break;
134 : :
135 : : case css::rdf::URIs::XSD_DECIMAL:
136 : 0 : ns = s_nsXSD;
137 : 0 : ln = "decimal";
138 : 0 : break;
139 : :
140 : : case css::rdf::URIs::XSD_FLOAT:
141 : 0 : ns = s_nsXSD;
142 : 0 : ln = "float";
143 : 0 : break;
144 : :
145 : : case css::rdf::URIs::XSD_DOUBLE:
146 : 0 : ns = s_nsXSD;
147 : 0 : ln = "double";
148 : 0 : break;
149 : :
150 : : case css::rdf::URIs::XSD_INTEGER:
151 : 0 : ns = s_nsXSD;
152 : 0 : ln = "integer";
153 : 0 : break;
154 : :
155 : : case css::rdf::URIs::XSD_NONNEGATIVEINTEGER:
156 : 0 : ns = s_nsXSD;
157 : 0 : ln = "nonNegativeInteger";
158 : 0 : break;
159 : :
160 : : case css::rdf::URIs::XSD_POSITIVEINTEGER:
161 : 0 : ns = s_nsXSD;
162 : 0 : ln = "positiveInteger";
163 : 0 : break;
164 : :
165 : : case css::rdf::URIs::XSD_NONPOSITIVEINTEGER:
166 : 0 : ns = s_nsXSD;
167 : 0 : ln = "nonPositiveInteger";
168 : 0 : break;
169 : :
170 : : case css::rdf::URIs::XSD_NEGATIVEINTEGER:
171 : 0 : ns = s_nsXSD;
172 : 0 : ln = "negativeInteger";
173 : 0 : break;
174 : :
175 : : case css::rdf::URIs::XSD_LONG:
176 : 0 : ns = s_nsXSD;
177 : 0 : ln = "long";
178 : 0 : break;
179 : :
180 : : case css::rdf::URIs::XSD_INT:
181 : 0 : ns = s_nsXSD;
182 : 0 : ln = "int";
183 : 0 : break;
184 : :
185 : : case css::rdf::URIs::XSD_SHORT:
186 : 0 : ns = s_nsXSD;
187 : 0 : ln = "short";
188 : 0 : break;
189 : :
190 : : case css::rdf::URIs::XSD_BYTE:
191 : 0 : ns = s_nsXSD;
192 : 0 : ln = "byte";
193 : 0 : break;
194 : :
195 : : case css::rdf::URIs::XSD_UNSIGNEDLONG:
196 : 0 : ns = s_nsXSD;
197 : 0 : ln = "unsignedLong";
198 : 0 : break;
199 : :
200 : : case css::rdf::URIs::XSD_UNSIGNEDINT:
201 : 0 : ns = s_nsXSD;
202 : 0 : ln = "unsignedInt";
203 : 0 : break;
204 : :
205 : : case css::rdf::URIs::XSD_UNSIGNEDSHORT:
206 : 0 : ns = s_nsXSD;
207 : 0 : ln = "unsignedShort";
208 : 0 : break;
209 : :
210 : : case css::rdf::URIs::XSD_UNSIGNEDBYTE:
211 : 0 : ns = s_nsXSD;
212 : 0 : ln = "unsignedByte";
213 : 0 : break;
214 : :
215 : : case css::rdf::URIs::XSD_HEXBINARY:
216 : 0 : ns = s_nsXSD;
217 : 0 : ln = "hexBinary";
218 : 0 : break;
219 : :
220 : : case css::rdf::URIs::XSD_BASE64BINARY:
221 : 0 : ns = s_nsXSD;
222 : 0 : ln = "base64Binary";
223 : 0 : break;
224 : :
225 : : case css::rdf::URIs::XSD_DATETIME:
226 : 0 : ns = s_nsXSD;
227 : 0 : ln = "dateTime";
228 : 0 : break;
229 : :
230 : : case css::rdf::URIs::XSD_TIME:
231 : 0 : ns = s_nsXSD;
232 : 0 : ln = "time";
233 : 0 : break;
234 : :
235 : : case css::rdf::URIs::XSD_DATE:
236 : 0 : ns = s_nsXSD;
237 : 0 : ln = "date";
238 : 0 : break;
239 : :
240 : : case css::rdf::URIs::XSD_GYEARMONTH:
241 : 0 : ns = s_nsXSD;
242 : 0 : ln = "gYearMonth";
243 : 0 : break;
244 : :
245 : : case css::rdf::URIs::XSD_GYEAR:
246 : 0 : ns = s_nsXSD;
247 : 0 : ln = "gYear";
248 : 0 : break;
249 : :
250 : : case css::rdf::URIs::XSD_GMONTHDAY:
251 : 0 : ns = s_nsXSD;
252 : 0 : ln = "gMonthDay";
253 : 0 : break;
254 : :
255 : : case css::rdf::URIs::XSD_GDAY:
256 : 0 : ns = s_nsXSD;
257 : 0 : ln = "gDay";
258 : 0 : break;
259 : :
260 : : case css::rdf::URIs::XSD_GMONTH:
261 : 0 : ns = s_nsXSD;
262 : 0 : ln = "gMonth";
263 : 0 : break;
264 : :
265 : : case css::rdf::URIs::XSD_ANYURI:
266 : 0 : ns = s_nsXSD;
267 : 0 : ln = "anyURI";
268 : 0 : break;
269 : :
270 : : case css::rdf::URIs::XSD_TOKEN:
271 : 0 : ns = s_nsXSD;
272 : 0 : ln = "token";
273 : 0 : break;
274 : :
275 : : case css::rdf::URIs::XSD_LANGUAGE:
276 : 0 : ns = s_nsXSD;
277 : 0 : ln = "language";
278 : 0 : break;
279 : :
280 : : case css::rdf::URIs::XSD_NMTOKEN:
281 : 0 : ns = s_nsXSD;
282 : 0 : ln = "NMTOKEN";
283 : 0 : break;
284 : :
285 : : case css::rdf::URIs::XSD_NAME:
286 : 0 : ns = s_nsXSD;
287 : 0 : ln = "Name";
288 : 0 : break;
289 : :
290 : : case css::rdf::URIs::XSD_DURATION:
291 : 0 : ns = s_nsXSD;
292 : 0 : ln = "duration";
293 : 0 : break;
294 : :
295 : : case css::rdf::URIs::XSD_QNAME:
296 : 0 : ns = s_nsXSD;
297 : 0 : ln = "QName";
298 : 0 : break;
299 : :
300 : : case css::rdf::URIs::XSD_NOTATION:
301 : 0 : ns = s_nsXSD;
302 : 0 : ln = "NOTATION";
303 : 0 : break;
304 : :
305 : : case css::rdf::URIs::XSD_NMTOKENS:
306 : 0 : ns = s_nsXSD;
307 : 0 : ln = "NMTOKENS";
308 : 0 : break;
309 : :
310 : : case css::rdf::URIs::XSD_ID:
311 : 0 : ns = s_nsXSD;
312 : 0 : ln = "ID";
313 : 0 : break;
314 : :
315 : : case css::rdf::URIs::XSD_IDREF:
316 : 0 : ns = s_nsXSD;
317 : 0 : ln = "IDREF";
318 : 0 : break;
319 : :
320 : : case css::rdf::URIs::XSD_IDREFS:
321 : 0 : ns = s_nsXSD;
322 : 0 : ln = "IDREFS";
323 : 0 : break;
324 : :
325 : : case css::rdf::URIs::XSD_ENTITY:
326 : 0 : ns = s_nsXSD;
327 : 0 : ln = "ENTITY";
328 : 0 : break;
329 : :
330 : : case css::rdf::URIs::XSD_ENTITIES:
331 : 0 : ns = s_nsXSD;
332 : 0 : ln = "ENTITIES";
333 : 0 : break;
334 : :
335 : : case css::rdf::URIs::RDF_TYPE:
336 : 22 : ns = s_nsRDF;
337 : 22 : ln = "type";
338 : 22 : break;
339 : :
340 : : case css::rdf::URIs::RDF_SUBJECT:
341 : 0 : ns = s_nsRDF;
342 : 0 : ln = "subject";
343 : 0 : break;
344 : :
345 : : case css::rdf::URIs::RDF_PREDICATE:
346 : 0 : ns = s_nsRDF;
347 : 0 : ln = "predicate";
348 : 0 : break;
349 : :
350 : : case css::rdf::URIs::RDF_OBJECT:
351 : 0 : ns = s_nsRDF;
352 : 0 : ln = "object";
353 : 0 : break;
354 : :
355 : : case css::rdf::URIs::RDF_PROPERTY:
356 : 0 : ns = s_nsRDF;
357 : 0 : ln = "Property";
358 : 0 : break;
359 : :
360 : : case css::rdf::URIs::RDF_STATEMENT:
361 : 0 : ns = s_nsRDF;
362 : 0 : ln = "Statement";
363 : 0 : break;
364 : :
365 : : case css::rdf::URIs::RDF_VALUE:
366 : 0 : ns = s_nsRDF;
367 : 0 : ln = "value";
368 : 0 : break;
369 : :
370 : : case css::rdf::URIs::RDF_FIRST:
371 : 0 : ns = s_nsRDF;
372 : 0 : ln = "first";
373 : 0 : break;
374 : :
375 : : case css::rdf::URIs::RDF_REST:
376 : 0 : ns = s_nsRDF;
377 : 0 : ln = "rest";
378 : 0 : break;
379 : :
380 : : case css::rdf::URIs::RDF_NIL:
381 : 0 : ns = s_nsRDF;
382 : 0 : ln = "nil";
383 : 0 : break;
384 : :
385 : : case css::rdf::URIs::RDF_XMLLITERAL:
386 : 0 : ns = s_nsRDF;
387 : 0 : ln = "XMLLiteral";
388 : 0 : break;
389 : :
390 : : case css::rdf::URIs::RDF_ALT:
391 : 0 : ns = s_nsRDF;
392 : 0 : ln = "Alt";
393 : 0 : break;
394 : :
395 : : case css::rdf::URIs::RDF_BAG:
396 : 0 : ns = s_nsRDF;
397 : 0 : ln = "Bag";
398 : 0 : break;
399 : :
400 : : case css::rdf::URIs::RDF_LIST:
401 : 0 : ns = s_nsRDF;
402 : 0 : ln = "List";
403 : 0 : break;
404 : :
405 : : case css::rdf::URIs::RDF_SEQ:
406 : 0 : ns = s_nsRDF;
407 : 0 : ln = "Seq";
408 : 0 : break;
409 : :
410 : : case css::rdf::URIs::RDF_1:
411 : 0 : ns = s_nsRDF;
412 : 0 : ln = "_1";
413 : 0 : break;
414 : :
415 : : case css::rdf::URIs::RDFS_COMMENT:
416 : 0 : ns = s_nsRDFs;
417 : 0 : ln = "comment";
418 : 0 : break;
419 : :
420 : : case css::rdf::URIs::RDFS_LABEL:
421 : 4 : ns = s_nsRDFs;
422 : 4 : ln = "label";
423 : 4 : break;
424 : :
425 : : case css::rdf::URIs::RDFS_DOMAIN:
426 : 0 : ns = s_nsRDFs;
427 : 0 : ln = "domain";
428 : 0 : break;
429 : :
430 : : case css::rdf::URIs::RDFS_RANGE:
431 : 0 : ns = s_nsRDFs;
432 : 0 : ln = "range";
433 : 0 : break;
434 : :
435 : : case css::rdf::URIs::RDFS_SUBCLASSOF:
436 : 0 : ns = s_nsRDFs;
437 : 0 : ln = "subClassOf";
438 : 0 : break;
439 : :
440 : : case css::rdf::URIs::RDFS_LITERAL:
441 : 0 : ns = s_nsRDFs;
442 : 0 : ln = "Literal";
443 : 0 : break;
444 : :
445 : : case css::rdf::URIs::OWL_CLASS:
446 : 0 : ns = s_nsOWL;
447 : 0 : ln = "Class";
448 : 0 : break;
449 : :
450 : : case css::rdf::URIs::OWL_OBJECTPROPERTY:
451 : 0 : ns = s_nsOWL;
452 : 0 : ln = "ObjectProperty";
453 : 0 : break;
454 : :
455 : : case css::rdf::URIs::OWL_DATATYPEPROPERTY:
456 : 0 : ns = s_nsOWL;
457 : 0 : ln = "DatatypeProperty";
458 : 0 : break;
459 : :
460 : : case css::rdf::URIs::OWL_FUNCTIONALPROPERTY:
461 : 0 : ns = s_nsOWL;
462 : 0 : ln = "FunctionalProperty";
463 : 0 : break;
464 : :
465 : : case css::rdf::URIs::OWL_THING:
466 : 0 : ns = s_nsOWL;
467 : 0 : ln = "Thing";
468 : 0 : break;
469 : :
470 : : case css::rdf::URIs::OWL_NOTHING:
471 : 0 : ns = s_nsOWL;
472 : 0 : ln = "Nothing";
473 : 0 : break;
474 : :
475 : : case css::rdf::URIs::OWL_INDIVIDUAL:
476 : 0 : ns = s_nsOWL;
477 : 0 : ln = "Individual";
478 : 0 : break;
479 : :
480 : : case css::rdf::URIs::OWL_EQUIVALENTCLASS:
481 : 0 : ns = s_nsOWL;
482 : 0 : ln = "equivalentClass";
483 : 0 : break;
484 : :
485 : : case css::rdf::URIs::OWL_EQUIVALENTPROPERTY:
486 : 0 : ns = s_nsOWL;
487 : 0 : ln = "equivalentProperty";
488 : 0 : break;
489 : :
490 : : case css::rdf::URIs::OWL_SAMEAS:
491 : 0 : ns = s_nsOWL;
492 : 0 : ln = "sameAs";
493 : 0 : break;
494 : :
495 : : case css::rdf::URIs::OWL_DIFFERENTFROM:
496 : 0 : ns = s_nsOWL;
497 : 0 : ln = "differentFrom";
498 : 0 : break;
499 : :
500 : : case css::rdf::URIs::OWL_ALLDIFFERENT:
501 : 0 : ns = s_nsOWL;
502 : 0 : ln = "AllDifferent";
503 : 0 : break;
504 : :
505 : : case css::rdf::URIs::OWL_DISTINCTMEMBERS:
506 : 0 : ns = s_nsOWL;
507 : 0 : ln = "distinctMembers";
508 : 0 : break;
509 : :
510 : : case css::rdf::URIs::OWL_INVERSEOF:
511 : 0 : ns = s_nsOWL;
512 : 0 : ln = "inverseOf";
513 : 0 : break;
514 : :
515 : : case css::rdf::URIs::OWL_TRANSITIVEPROPERTY:
516 : 0 : ns = s_nsOWL;
517 : 0 : ln = "TransitiveProperty";
518 : 0 : break;
519 : :
520 : : case css::rdf::URIs::OWL_SYMMETRICPROPERTY:
521 : 0 : ns = s_nsOWL;
522 : 0 : ln = "SymmetricProperty";
523 : 0 : break;
524 : :
525 : : case css::rdf::URIs::OWL_INVERSEFUNCTIONALPROPERTY:
526 : 0 : ns = s_nsOWL;
527 : 0 : ln = "InverseFunctionalProperty";
528 : 0 : break;
529 : :
530 : : case css::rdf::URIs::OWL_RESTRICTION:
531 : 0 : ns = s_nsOWL;
532 : 0 : ln = "Restriction";
533 : 0 : break;
534 : :
535 : : case css::rdf::URIs::OWL_ONPROPERTY:
536 : 0 : ns = s_nsOWL;
537 : 0 : ln = "onProperty";
538 : 0 : break;
539 : :
540 : : case css::rdf::URIs::OWL_ALLVALUESFROM:
541 : 0 : ns = s_nsOWL;
542 : 0 : ln = "allValuesFrom";
543 : 0 : break;
544 : :
545 : : case css::rdf::URIs::OWL_SOMEVALUESFROM:
546 : 0 : ns = s_nsOWL;
547 : 0 : ln = "someValuesFrom";
548 : 0 : break;
549 : :
550 : : case css::rdf::URIs::OWL_MINCARDINALITY:
551 : 0 : ns = s_nsOWL;
552 : 0 : ln = "minCardinality";
553 : 0 : break;
554 : :
555 : : case css::rdf::URIs::OWL_MAXCARDINALITY:
556 : 0 : ns = s_nsOWL;
557 : 0 : ln = "maxCardinality";
558 : 0 : break;
559 : :
560 : : case css::rdf::URIs::OWL_CARDINALITY:
561 : 0 : ns = s_nsOWL;
562 : 0 : ln = "cardinality";
563 : 0 : break;
564 : :
565 : : case css::rdf::URIs::OWL_ONTOLOGY:
566 : 0 : ns = s_nsOWL;
567 : 0 : ln = "Ontology";
568 : 0 : break;
569 : :
570 : : case css::rdf::URIs::OWL_IMPORTS:
571 : 0 : ns = s_nsOWL;
572 : 0 : ln = "imports";
573 : 0 : break;
574 : :
575 : : case css::rdf::URIs::OWL_VERSIONINFO:
576 : 0 : ns = s_nsOWL;
577 : 0 : ln = "versionInfo";
578 : 0 : break;
579 : :
580 : : case css::rdf::URIs::OWL_PRIORVERSION:
581 : 0 : ns = s_nsOWL;
582 : 0 : ln = "priorVersion";
583 : 0 : break;
584 : :
585 : : case css::rdf::URIs::OWL_BACKWARDCOMPATIBLEWITH:
586 : 0 : ns = s_nsOWL;
587 : 0 : ln = "backwardCompatibleWith";
588 : 0 : break;
589 : :
590 : : case css::rdf::URIs::OWL_INCOMPATIBLEWITH:
591 : 0 : ns = s_nsOWL;
592 : 0 : ln = "incompatibleWith";
593 : 0 : break;
594 : :
595 : : case css::rdf::URIs::OWL_DEPRECATEDCLASS:
596 : 0 : ns = s_nsOWL;
597 : 0 : ln = "DeprecatedClass";
598 : 0 : break;
599 : :
600 : : case css::rdf::URIs::OWL_DEPRECATEDPROPERTY:
601 : 0 : ns = s_nsOWL;
602 : 0 : ln = "DeprecatedProperty";
603 : 0 : break;
604 : :
605 : : case css::rdf::URIs::OWL_ANNOTATIONPROPERTY:
606 : 0 : ns = s_nsOWL;
607 : 0 : ln = "AnnotationProperty";
608 : 0 : break;
609 : :
610 : : case css::rdf::URIs::OWL_ONTOLOGYPROPERTY:
611 : 0 : ns = s_nsOWL;
612 : 0 : ln = "OntologyProperty";
613 : 0 : break;
614 : :
615 : : case css::rdf::URIs::OWL_ONEOF:
616 : 0 : ns = s_nsOWL;
617 : 0 : ln = "oneOf";
618 : 0 : break;
619 : :
620 : : case css::rdf::URIs::OWL_DATARANGE:
621 : 0 : ns = s_nsOWL;
622 : 0 : ln = "dataRange";
623 : 0 : break;
624 : :
625 : : case css::rdf::URIs::OWL_DISJOINTWITH:
626 : 0 : ns = s_nsOWL;
627 : 0 : ln = "disjointWith";
628 : 0 : break;
629 : :
630 : : case css::rdf::URIs::OWL_UNIONOF:
631 : 0 : ns = s_nsOWL;
632 : 0 : ln = "unionOf";
633 : 0 : break;
634 : :
635 : : case css::rdf::URIs::OWL_COMPLEMENTOF:
636 : 0 : ns = s_nsOWL;
637 : 0 : ln = "complementOf";
638 : 0 : break;
639 : :
640 : : case css::rdf::URIs::OWL_INTERSECTIONOF:
641 : 0 : ns = s_nsOWL;
642 : 0 : ln = "intersectionOf";
643 : 0 : break;
644 : :
645 : : case css::rdf::URIs::OWL_HASVALUE:
646 : 0 : ns = s_nsOWL;
647 : 0 : ln = "hasValue";
648 : 0 : break;
649 : :
650 : :
651 : : case css::rdf::URIs::PKG_HASPART:
652 : 22 : ns = s_nsPkg;
653 : 22 : ln = "hasPart";
654 : 22 : break;
655 : :
656 : : case css::rdf::URIs::PKG_MIMETYPE:
657 : 0 : ns = s_nsPkg;
658 : 0 : ln = "mimeType";
659 : 0 : break;
660 : :
661 : : case css::rdf::URIs::PKG_PACKAGE:
662 : 0 : ns = s_nsPkg;
663 : 0 : ln = "Package";
664 : 0 : break;
665 : :
666 : : case css::rdf::URIs::PKG_ELEMENT:
667 : 0 : ns = s_nsPkg;
668 : 0 : ln = "Element";
669 : 0 : break;
670 : :
671 : : case css::rdf::URIs::PKG_FILE:
672 : 0 : ns = s_nsPkg;
673 : 0 : ln = "File";
674 : 0 : break;
675 : :
676 : : case css::rdf::URIs::PKG_METADATAFILE:
677 : 20 : ns = s_nsPkg;
678 : 20 : ln = "MetadataFile";
679 : 20 : break;
680 : :
681 : : case css::rdf::URIs::PKG_DOCUMENT:
682 : 22 : ns = s_nsPkg;
683 : 22 : ln = "Document";
684 : 22 : break;
685 : :
686 : : case css::rdf::URIs::ODF_PREFIX:
687 : 4 : ns = s_nsODF;
688 : 4 : ln = "prefix";
689 : 4 : break;
690 : :
691 : : case css::rdf::URIs::ODF_SUFFIX:
692 : 4 : ns = s_nsODF;
693 : 4 : ln = "suffix";
694 : 4 : break;
695 : :
696 : : case css::rdf::URIs::ODF_ELEMENT:
697 : 4 : ns = s_nsODF;
698 : 4 : ln = "Element";
699 : 4 : break;
700 : :
701 : : case css::rdf::URIs::ODF_CONTENTFILE:
702 : 22 : ns = s_nsODF;
703 : 22 : ln = "ContentFile";
704 : 22 : break;
705 : :
706 : : case css::rdf::URIs::ODF_STYLESFILE:
707 : 22 : ns = s_nsODF;
708 : 22 : ln = "StylesFile";
709 : 22 : break;
710 : :
711 : : default:
712 : : throw css::lang::IllegalArgumentException(
713 : : ::rtl::OUString("CURI::initialize: "
714 [ # # ][ # # ]: 0 : "invalid URIs constant argument"), *this, 0);
715 : : }
716 [ + - ]: 146 : m_Namespace = ::rtl::OUString::createFromAscii(ns).intern();
717 [ + - ]: 146 : m_LocalName = ::rtl::OUString::createFromAscii(ln).intern();
718 : 146 : return;
719 : : }
720 : :
721 : : // ::com::sun::star::lang::XInitialization:
722 : 2758 : void SAL_CALL CURI::initialize(const css::uno::Sequence< ::com::sun::star::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception)
723 : : {
724 : 2758 : sal_Int32 len = aArguments.getLength();
725 [ - + ][ + - ]: 2758 : if ((len < 1) || (len > 2)) {
726 : : throw css::lang::IllegalArgumentException(
727 : : ::rtl::OUString("CURI::initialize: "
728 [ # # ][ # # ]: 0 : "must give 1 or 2 argument(s)"), *this, 2);
729 : : }
730 : :
731 : 2758 : sal_Int16 arg(0);
732 : 2758 : ::rtl::OUString arg0;
733 : 2758 : ::rtl::OUString arg1;
734 [ + + ]: 2758 : if ((aArguments[0] >>= arg)) {
735 : : // integer argument: constant from rdf::URIs
736 [ - + ]: 146 : if (len != 1) {
737 : : throw css::lang::IllegalArgumentException(
738 : : ::rtl::OUString("CURI::initialize: "
739 [ # # ][ # # ]: 0 : "must give 1 int argument"), *this, 1);
740 : : }
741 [ + - ]: 146 : initFromConstant(arg);
742 : 2758 : return;
743 : : }
744 [ - + ]: 2612 : if (!(aArguments[0] >>= arg0)) {
745 : : throw css::lang::IllegalArgumentException(
746 : : ::rtl::OUString("CURI::initialize: "
747 [ # # ][ # # ]: 0 : "argument must be string or short"), *this, 0);
748 : : }
749 [ + + ]: 2612 : if (len > 1) {
750 [ - + ]: 236 : if (!(aArguments[1] >>= arg1)) {
751 : : throw css::lang::IllegalArgumentException(
752 : : ::rtl::OUString("CURI::initialize: "
753 [ # # ][ # # ]: 0 : "argument must be string"), *this, 1);
754 : : }
755 : : // just append the parameters and then split them again; seems simplest
756 : 236 : arg0 = arg0 + arg1;
757 : 236 : arg1 = ::rtl::OUString();
758 : : }
759 : :
760 : : // split parameter
761 : : sal_Int32 idx;
762 [ + + ][ + + ]: 2612 : if ( ((idx = arg0.indexOf ('#')) >= 0)
[ + - ][ + - ]
763 : : || ((idx = arg0.lastIndexOf('/')) >= 0)
764 : : || ((idx = arg0.lastIndexOf(':')) >= 0))
765 : : {
766 : :
767 [ + + ]: 2612 : if (idx < arg0.getLength() - 1) {
768 : 2378 : arg1 = arg0.copy(idx+1);
769 : 2378 : arg0 = arg0.copy(0, idx+1);
770 : : }
771 : : } else {
772 : : throw css::lang::IllegalArgumentException(
773 : : ::rtl::OUString("CURI::initialize: "
774 [ # # ][ # # ]: 0 : "argument not splittable: no separator [#/:]"), *this, 0);
775 : : }
776 : :
777 : : //FIXME: what is legal?
778 [ + - ]: 2612 : if (!arg0.isEmpty()) {
779 : 2612 : m_Namespace = arg0;
780 : : } else {
781 : : throw css::lang::IllegalArgumentException(
782 : : ::rtl::OUString("CURI::initialize: "
783 [ # # ][ # # ]: 0 : "argument is not valid namespace"), *this, 0);
784 : : }
785 : : //FIXME: what is legal?
786 : : if (true) {
787 : 2612 : m_LocalName = arg1;
788 : : } else {
789 : : throw css::lang::IllegalArgumentException(
790 : : ::rtl::OUString("CURI::initialize: "
791 : : "argument is not valid local name"), *this, 1);
792 [ + + ][ + + ]: 2758 : }
793 : : }
794 : :
795 : : // ::com::sun::star::rdf::XNode:
796 : 8636 : ::rtl::OUString SAL_CALL CURI::getStringValue() throw (css::uno::RuntimeException)
797 : : {
798 : 8636 : return m_Namespace + m_LocalName;
799 : : }
800 : :
801 : : // ::com::sun::star::rdf::XURI:
802 : 50 : ::rtl::OUString SAL_CALL CURI::getNamespace() throw (css::uno::RuntimeException)
803 : : {
804 : 50 : return m_Namespace;
805 : : }
806 : :
807 : 50 : ::rtl::OUString SAL_CALL CURI::getLocalName() throw (css::uno::RuntimeException)
808 : : {
809 : 50 : return m_LocalName;
810 : : }
811 : :
812 : : } // closing anonymous implementation namespace
813 : :
814 : :
815 : :
816 : : // component helper namespace
817 : : namespace comp_CURI {
818 : :
819 : 50 : ::rtl::OUString SAL_CALL _getImplementationName() {
820 : : return ::rtl::OUString(
821 : 50 : "CURI");
822 : : }
823 : :
824 : 20 : css::uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames()
825 : : {
826 : 20 : css::uno::Sequence< ::rtl::OUString > s(1);
827 [ + - ]: 20 : s[0] = ::rtl::OUString( "com.sun.star.rdf.URI");
828 : 20 : return s;
829 : : }
830 : :
831 : 2758 : css::uno::Reference< css::uno::XInterface > SAL_CALL _create(
832 : : const css::uno::Reference< css::uno::XComponentContext > & context)
833 : : SAL_THROW((css::uno::Exception))
834 : : {
835 [ + - ]: 2758 : return static_cast< ::cppu::OWeakObject * >(new CURI(context));
836 : : }
837 : :
838 : : } // closing component helper namespace
839 : :
840 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|