File indexing completed on 2023-09-24 04:15:35
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