Coverage Report

Created: 2025-07-07 10:01

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