File indexing completed on 2024-04-14 03:46:37
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Andreas Xavier <andxav at zoho dot com> 0003 * SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "readermanager.h" 0007 0008 #include "readerwriters/dummyreader.h" 0009 #include "readerwriters/failedreader.h" 0010 #include "readerwriters/readerbase.h" 0011 0012 #include "readerwriters/keduvoccsvreader.h" 0013 #include "readerwriters/keduvockvtml2reader.h" 0014 #include "readerwriters/keduvocpaukerreader.h" 0015 #include "readerwriters/keduvocvokabelnreader.h" 0016 #include "readerwriters/keduvocwqlreader.h" 0017 #include "readerwriters/keduvocxdxfreader.h" 0018 0019 #include <QDebug> 0020 0021 ReaderManager::ReaderPtr ReaderManager::reader(QIODevice &dev) 0022 { 0023 if (!dev.isReadable()) { 0024 //@todo add a useful error message 0025 return ReaderPtr(new FailedReader(KEduVocDocument::FileCannotRead)); 0026 } 0027 0028 if (dev.isSequential()) { 0029 //@todo add a useful error message 0030 return ReaderPtr(new FailedReader(KEduVocDocument::FileCannotRead)); 0031 } 0032 0033 ReaderPtr reader; 0034 0035 reader = ReaderPtr(new DummyReader(dev)); 0036 if (reader->isParsable()) { 0037 return reader; 0038 } 0039 dev.seek(0); 0040 0041 reader = ReaderPtr(new KEduVocVokabelnReader(dev)); 0042 if (reader->isParsable()) { 0043 return reader; 0044 } 0045 dev.seek(0); 0046 0047 reader = ReaderPtr(new KEduVocPaukerReader(dev)); 0048 if (reader->isParsable()) { 0049 return reader; 0050 } 0051 dev.seek(0); 0052 0053 reader = ReaderPtr(new KEduVocXdxfReader(dev)); 0054 if (reader->isParsable()) { 0055 return reader; 0056 } 0057 dev.seek(0); 0058 0059 reader = ReaderPtr(new KEduVocKvtml2Reader(dev)); 0060 if (reader->isParsable()) { 0061 return reader; 0062 } 0063 dev.seek(0); 0064 0065 reader = ReaderPtr(new KEduVocWqlReader(dev)); 0066 if (reader->isParsable()) { 0067 return reader; 0068 } 0069 dev.seek(0); 0070 0071 reader = ReaderPtr(new KEduVocCsvReader(dev)); 0072 if (reader->isParsable()) { 0073 return reader; 0074 } 0075 dev.seek(0); 0076 0077 return ReaderPtr(new FailedReader(KEduVocDocument::FileTypeUnknown)); 0078 }