File indexing completed on 2024-04-21 04:01:01

0001 /*
0002     This file is part of the syndication library
0003     SPDX-FileCopyrightText: 2006 Frank Osterfeld <osterfeld@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "dublincore.h"
0009 #include "dublincorevocab.h"
0010 #include "property.h"
0011 #include "statement.h"
0012 
0013 #include <tools.h>
0014 
0015 #include <QList>
0016 #include <QString>
0017 
0018 namespace Syndication
0019 {
0020 namespace RDF
0021 {
0022 DublinCore::DublinCore(ResourcePtr resource)
0023     : ResourceWrapper(resource)
0024 {
0025 }
0026 
0027 DublinCore::~DublinCore()
0028 {
0029 }
0030 
0031 QString DublinCore::contributor() const
0032 {
0033     return resource()->property(DublinCoreVocab::self()->contributor())->asString();
0034 }
0035 
0036 QStringList DublinCore::contributors() const
0037 {
0038     QStringList res;
0039     QList<StatementPtr> list = resource()->properties(DublinCoreVocab::self()->contributor());
0040     QList<StatementPtr>::ConstIterator it = list.constBegin();
0041     QList<StatementPtr>::ConstIterator end = list.constEnd();
0042     for (; it != end; ++it) {
0043         const QString str = (*it)->asString();
0044         if (!str.isNull()) {
0045             res.append(str);
0046         }
0047     }
0048     return res;
0049 }
0050 
0051 QString DublinCore::coverage() const
0052 {
0053     return resource()->property(DublinCoreVocab::self()->coverage())->asString();
0054 }
0055 
0056 QString DublinCore::creator() const
0057 {
0058     return resource()->property(DublinCoreVocab::self()->creator())->asString();
0059 }
0060 
0061 QStringList DublinCore::creators() const
0062 {
0063     QStringList res;
0064     QList<StatementPtr> list = resource()->properties(DublinCoreVocab::self()->creator());
0065     QList<StatementPtr>::ConstIterator it = list.constBegin();
0066     QList<StatementPtr>::ConstIterator end = list.constEnd();
0067     for (; it != end; ++it) {
0068         const QString str = (*it)->asString();
0069         if (!str.isNull()) {
0070             res.append(str);
0071         }
0072     }
0073     return res;
0074 }
0075 
0076 time_t DublinCore::date() const
0077 {
0078     QString str = resource()->property(DublinCoreVocab::self()->date())->asString();
0079     return parseDate(str, ISODate);
0080 }
0081 
0082 QString DublinCore::description() const
0083 {
0084     return resource()->property(DublinCoreVocab::self()->description())->asString();
0085 }
0086 
0087 QString DublinCore::format() const
0088 {
0089     return resource()->property(DublinCoreVocab::self()->format())->asString();
0090 }
0091 
0092 QString DublinCore::identifier() const
0093 {
0094     return resource()->property(DublinCoreVocab::self()->identifier())->asString();
0095 }
0096 
0097 QString DublinCore::language() const
0098 {
0099     return resource()->property(DublinCoreVocab::self()->language())->asString();
0100 }
0101 
0102 QString DublinCore::publisher() const
0103 {
0104     return resource()->property(DublinCoreVocab::self()->publisher())->asString();
0105 }
0106 
0107 QString DublinCore::relation() const
0108 {
0109     return resource()->property(DublinCoreVocab::self()->relation())->asString();
0110 }
0111 
0112 QString DublinCore::rights() const
0113 {
0114     return resource()->property(DublinCoreVocab::self()->rights())->asString();
0115 }
0116 
0117 QString DublinCore::source() const
0118 {
0119     return resource()->property(DublinCoreVocab::self()->source())->asString();
0120 }
0121 
0122 QString DublinCore::subject() const
0123 {
0124     return resource()->property(DublinCoreVocab::self()->subject())->asString();
0125 }
0126 
0127 QStringList DublinCore::subjects() const
0128 {
0129     QStringList res;
0130     QList<StatementPtr> list = resource()->properties(DublinCoreVocab::self()->subject());
0131     QList<StatementPtr>::ConstIterator it = list.constBegin();
0132     QList<StatementPtr>::ConstIterator end = list.constEnd();
0133     for (; it != end; ++it) {
0134         QString str = (*it)->asString();
0135         if (!str.isNull()) {
0136             res.append(str);
0137         }
0138     }
0139     return res;
0140 }
0141 
0142 QString DublinCore::title() const
0143 {
0144     return resource()->property(DublinCoreVocab::self()->title())->asString();
0145 }
0146 
0147 QString DublinCore::type() const
0148 {
0149     return resource()->property(DublinCoreVocab::self()->type())->asString();
0150 }
0151 
0152 QString DublinCore::debugInfo() const
0153 {
0154     QString info;
0155     if (!contributor().isNull()) {
0156         info += QStringLiteral("dc:contributor: #%1#\n").arg(contributor());
0157     }
0158     if (!coverage().isNull()) {
0159         info += QStringLiteral("dc:coverage: #%1#\n").arg(coverage());
0160     }
0161     if (!creator().isNull()) {
0162         info += QStringLiteral("dc:creator: #%1#\n").arg(creator());
0163     }
0164 
0165     const QString ddate = dateTimeToString(date());
0166     if (!ddate.isNull()) {
0167         info += QStringLiteral("dc:date: #%1#\n").arg(ddate);
0168     }
0169 
0170     if (!description().isNull()) {
0171         info += QStringLiteral("dc:description: #%1#\n").arg(description());
0172     }
0173     if (!format().isNull()) {
0174         info += QStringLiteral("dc:format: #%1#\n").arg(format());
0175     }
0176     if (!identifier().isNull()) {
0177         info += QStringLiteral("dc:identifier: #%1#\n").arg(identifier());
0178     }
0179     if (!language().isNull()) {
0180         info += QStringLiteral("dc:language: #%1#\n").arg(language());
0181     }
0182     if (!publisher().isNull()) {
0183         info += QStringLiteral("dc:publisher: #%1#\n").arg(publisher());
0184     }
0185     if (!relation().isNull()) {
0186         info += QStringLiteral("dc:relation: #%1#\n").arg(relation());
0187     }
0188     if (!rights().isNull()) {
0189         info += QStringLiteral("dc:rights: #%1#\n").arg(rights());
0190     }
0191     if (!source().isNull()) {
0192         info += QStringLiteral("dc:source: #%1#\n").arg(source());
0193     }
0194     if (!subject().isNull()) {
0195         info += QStringLiteral("dc:subject: #%1#\n").arg(subject());
0196     }
0197     if (!title().isNull()) {
0198         info += QStringLiteral("dc:title: #%1#\n").arg(title());
0199     }
0200     if (!type().isNull()) {
0201         info += QStringLiteral("dc:type: #%1#\n").arg(type());
0202     }
0203     return info;
0204 }
0205 
0206 } // namespace RDF
0207 } // namespace Syndication