[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [conquirere] src/nbibio: fix some smaller bugs
From: Jörg_Ehrichs <Joerg.Ehrichs () gmx ! de>
Date: 2013-01-31 21:04:16
Message-ID: 20130131210416.4B399A6091 () git ! kde ! org
[Download RAW message or body]
Git commit 0bf2df2f2978c6f74e24791206c7a79ca1253ce8 by Jörg Ehrichs.
Committed on 31/01/2013 at 21:09.
Pushed by jehrichs into branch 'master'.
fix some smaller bugs
M +16 -5 src/nbibio/nepomuksyncclient.cpp
M +3 -0 src/nbibio/nepomuksyncclient.h
M +2 -2 src/nbibio/pipe/nepomuktovariantpipe.cpp
M +0 -2 src/nbibio/provider/zotero/zoterosync.cpp
M +62 -35 src/nbibio/ui/itemmergedialog.cpp
M +5 -4 src/nbibio/ui/itemmergedialog.h
http://commits.kde.org/conquirere/0bf2df2f2978c6f74e24791206c7a79ca1253ce8
diff --git a/src/nbibio/nepomuksyncclient.cpp \
b/src/nbibio/nepomuksyncclient.cpp index 91fa6de..4cec710 100644
--- a/src/nbibio/nepomuksyncclient.cpp
+++ b/src/nbibio/nepomuksyncclient.cpp
@@ -50,6 +50,9 @@ NepomukSyncClient::NepomukSyncClient(QObject *parent)
{
connect(this, SIGNAL(pushNextItem()), this, SLOT(pushNewItemCache()) \
);
connect(this, SIGNAL(deleteNextItem()), this, SLOT(deleteItemsCache()) \
); +
+ qRegisterMetaType<SyncMergeDetails>("SyncMergeDetails");
+ qRegisterMetaType<QList<SyncMergeDetails> \
>("QList<SyncMergeDetails>"); }
void NepomukSyncClient::setProviderSettings(const ProviderSyncDetails \
&psd) @@ -391,6 +394,7 @@ void \
NepomukSyncClient::readDownloadSyncAfterDelete()
void NepomukSyncClient::findDuplicates(QList<Nepomuk2::Resource> \
&existingItems) {
+ kDebug() << "check duplicates for" << m_cacheDownloaded.size();
// for each downloaded item from zotero we try to find the item in the \
local storage // we can identify this via the unique zotero Key
@@ -420,11 +424,12 @@ void \
NepomukSyncClient::findDuplicates(QList<Nepomuk2::Resource> &existingItems) \
QList<Nepomuk2::Resource> queryResult; while( it.next() ) {
Soprano::BindingSet p = it.current();
- queryResult << \
Nepomuk2::Resource(p.value(QLatin1String("?r")).toString()); + \
queryResult << Nepomuk2::Resource(p.value(QLatin1String("r")).toString()); \
}
// nothing found, means we have a new entry
if(queryResult.isEmpty()) {
+ kDebug() << "new entry found";
m_newEntries.append(entry);
}
// we found something, means we need to check if it changed on the \
server @@ -435,9 +440,11 @@ void \
NepomukSyncClient::findDuplicates(QList<Nepomuk2::Resource> &existingItems) \
Nepomuk2::Resource syncResource = queryResult.first();
- QString localEtag = syncResource.property( \
SYNC::etag()).toString(); + QString localEtag = \
syncResource.property( SYNC::etag() ).toString();
QString serverEtag = entry.value( QLatin1String("sync-etag") \
).toString();
+ kDebug() << "existing entry found. Local etag" << localEtag << \
"| server etag" << serverEtag; +
// Here we change some values depending if the syncdata \
represents a BibResource, Note or Attachment.
// Because when we check the isRelated part we need to check \
different resources in this case
// also while for note/attachment the resource itself must be \
valid @@ -451,7 +458,7 @@ void \
NepomukSyncClient::findDuplicates(QList<Nepomuk2::Resource> &existingItems) \
if(resourceType == SYNC::BibResource()) {
Nepomuk2::Resource publication = syncResource.property( \
SYNC::publication()).toResource();
Nepomuk2::Resource reference = syncResource.property( \
SYNC::reference()).toResource();
- if(reference.isValid() && publication.isValid()) {
+ if(reference.isValid()) {
addToExisting.append(publication);
addToExisting.append(reference);
validExistingData = true;
@@ -532,9 +539,10 @@ void NepomukSyncClient::fixMergingItems()
// foreach(const SyncMergeDetails &sd, m_tmpUserMergeRequest) {
// mergePipe.merge(sd.syncResource, sd.externalResource, \
m_psd.mergeMode); // }
- }
- m_tmpUserMergeRequest.clear();
+ m_mergeFinished = true;
+ m_tmpUserMergeRequest.clear();
+ }
}
else {
m_mergeFinished = true;
@@ -612,6 +620,9 @@ void NepomukSyncClient::endSyncStep()
void NepomukSyncClient::exportData()
{
+ kDebug() << "##################### export disabled #############";
+ emit finished();
+ return;
kDebug() << "##### START Upload ###### m_currentStep" << \
m_currentStep; clearInternalData();
diff --git a/src/nbibio/nepomuksyncclient.h \
b/src/nbibio/nepomuksyncclient.h index 1bb1141..2611769 100644
--- a/src/nbibio/nepomuksyncclient.h
+++ b/src/nbibio/nepomuksyncclient.h
@@ -31,6 +31,9 @@ struct SyncMergeDetails {
QVariantMap externalResource;
};
+Q_DECLARE_METATYPE(SyncMergeDetails)
+Q_DECLARE_METATYPE(QList<SyncMergeDetails>)
+
class NepomukSyncClient : public QObject
{
Q_OBJECT
diff --git a/src/nbibio/pipe/nepomuktovariantpipe.cpp \
b/src/nbibio/pipe/nepomuktovariantpipe.cpp index 47f7a9f..4b19bbe 100644
--- a/src/nbibio/pipe/nepomuktovariantpipe.cpp
+++ b/src/nbibio/pipe/nepomuktovariantpipe.cpp
@@ -335,8 +335,8 @@ void \
NepomukToVariantPipe::collectContent(Nepomuk2::Resource \
reference, Nepomuk2
setValue(publication, NBIB::legalStatus(), \
QLatin1String("legalstatus"));
setValue(publication, NBIB::filingDate(), \
QLatin1String("filingdate")); setValue(publication, NBIB::archive(), \
QLatin1String("archive"));
- setValue(publication, NBIB::archiveLocation(), \
QLatin1String("archiveLocation"));
- setValue(publication, NBIB::libraryCatalog(), \
QLatin1String("libraryCatalog")); + setValue(publication, \
NBIB::archiveLocation(), QLatin1String("archivelocation")); + \
setValue(publication, NBIB::libraryCatalog(), \
QLatin1String("librarycatalog"));
setValue(publication, NBIB::shortTitle(), \
QLatin1String("shorttitle"));
setValue(publication, NBIB::numberOfPages(), \
QLatin1String("numpages"));
setValue(publication, NBIB::numberOfVolumes(), \
QLatin1String("numberofvolumes"));
diff --git a/src/nbibio/provider/zotero/zoterosync.cpp \
b/src/nbibio/provider/zotero/zoterosync.cpp index 6d9051e..cd65fb9 100644
--- a/src/nbibio/provider/zotero/zoterosync.cpp
+++ b/src/nbibio/provider/zotero/zoterosync.cpp
@@ -692,8 +692,6 @@ QByteArray ZoteroSync::writeJsonContent(const \
QVariantList &items, bool updateIt json = serializer.serialize(jsonMap);
}
- kDebug() << json;
-
return json;
}
diff --git a/src/nbibio/ui/itemmergedialog.cpp \
b/src/nbibio/ui/itemmergedialog.cpp index 5c02dae..926263e 100644
--- a/src/nbibio/ui/itemmergedialog.cpp
+++ b/src/nbibio/ui/itemmergedialog.cpp
@@ -19,13 +19,10 @@
#include "ui_itemmergedialog.h"
#include "globals.h"
-//#include "nbibio/pipe/bibtextonepomukpipe.h"
+
#include "core/library.h"
#include "core/projectsettings.h"
-
-#include <kbibtex/element.h>
-#include <kbibtex/entry.h>
-#include <kbibtex/value.h>
+#include "nbibio/pipe/nepomuktovariantpipe.h"
#include "sync.h"
#include "nbib.h"
@@ -37,6 +34,7 @@
#include <KDE/KComboBox>
#include <KDE/KDebug>
+#include <QtCore/QList>
#include <QtGui/QScrollArea>
#include <QtGui/QFormLayout>
@@ -146,30 +144,59 @@ ItemMergeDialog::~ItemMergeDialog()
void ItemMergeDialog::setItemsToMerge(const QList<SyncMergeDetails> \
&items) {
+ NepomukToVariantPipe ntvp;
foreach(const SyncMergeDetails &sd, items) {
- Nepomuk2::Resource publication;
+ Nepomuk2::Resource resource;
QUrl syncType = \
sd.syncResource.property(SYNC::syncDataType()).toUrl();
if( syncType == SYNC::Note()) {
- publication = \
sd.syncResource.property(SYNC::note()).toResource(); + resource \
= sd.syncResource.property(SYNC::note()).toResource(); }
else if ( syncType == SYNC::Attachment()) {
- publication = \
sd.syncResource.property(SYNC::attachment()).toResource(); + \
resource = sd.syncResource.property(SYNC::attachment()).toResource(); }
else {
- publication = \
sd.syncResource.property(SYNC::reference()).toResource(); + \
resource = sd.syncResource.property(SYNC::reference()).toResource(); }
-/*
- //FIXME: fix merge ite mdialog
+
+ ntvp.pipeExport(QList<Nepomuk2::Resource>() << resource);
+ QVariantList localExportedList = ntvp.variantList();
MergedResults mr;
mr.localSyncResource = sd.syncResource;
- mr.originalServerEntry = sd.externalResource;
- mr.serverChanges = BibTexToNepomukPipe::getDiff(publication, \
sd.externalResource, false, mr.localEntry);
- mr.mergedChanges = mr.serverChanges;
+ mr.localEntry = localExportedList.first().toMap();
+ mr.serverEntry = sd.externalResource;
+
+ // get each key that has a different content
+ //TODO: put this into NepomukToVariantPipe ?
+ QMapIterator<QString, QVariant> i(mr.serverEntry);
+ while (i.hasNext()) {
+ i.next();
+
+ QString keyToCheck = i.key().toLower();
+
+ // the server item has no content, and the key does not exist \
in the local storage + if( i.value().toString().isEmpty() && \
!mr.localEntry.contains(keyToCheck) ) { + continue;
+ }
+
+ if( i.value() != mr.localEntry.value(keyToCheck) ) {
+ QVariant localValue = mr.localEntry.value(keyToCheck);
+ // exception for date handling
+ if(keyToCheck == QLatin1String("accessdate")) {
+ // ignore if server is 2012-01-12 and local is \
2012-01-13T00:00:00Z + \
if(localValue.toString().startsWith(i.value().toString())) + \
continue; + }
+
+ //TODO: for names/tags check also different order of the \
entry + // otherwise add the entry differeces
+ mr.differendKeys << keyToCheck;
+ }
+ }
+
m_mergeResults.append(mr);
- */
}
ui->previousButton->setEnabled(false);
@@ -234,6 +261,7 @@ void ItemMergeDialog::showPrevious()
void ItemMergeDialog::finish()
{
+ kDebug() << "finish ... merge all differences";
/*
BibTexToNepomukPipe btnp;
btnp.setSyncDetails(m_psd.url, m_psd.userName);
@@ -246,8 +274,9 @@ void ItemMergeDialog::finish()
btnp.mergeManual(mr.localSyncResource, mr.mergedChanges);
}
- accept();
*/
+
+ accept();
}
void ItemMergeDialog::replaceSelection()
@@ -260,12 +289,13 @@ void ItemMergeDialog::replaceSelection()
QString key = cb->itemData(index).toString();
if(index == 0) { // stick to local
- mr.mergedChanges->remove( key );
+ mr.mergedChanges.remove( key );
}
else { // select server changes
- mr.mergedChanges->insert( key , \
mr.originalServerEntry->value(key)); // i need to take the entry from \
originalServerEntry because the entry from serverChanges
- \
// got altered somehow and only has 1 of the several entries (so only 1 \
instead of 4 authors) + mr.mergedChanges.insert( key , \
mr.serverEntry.value(key)); }
+
+ m_mergeResults.replace(m_currentItem, mr);
}
void ItemMergeDialog::showItem(int index)
@@ -279,8 +309,9 @@ void ItemMergeDialog::showItem(int index)
QUrl syncType = \
mr.localSyncResource.property(SYNC::syncDataType()).toUrl();
- kDebug() << "sync type" << syncType << "entry item type" << \
mr.mergedChanges->type(); + kDebug() << "sync type" << syncType << \
"entry item type" << mr.localEntry.value(QLatin1String("bibtexentrytype")); \
+ //TODO: put icon stuff in MergeResource creation
if( syncType == SYNC::Note()) {
publication = \
mr.localSyncResource.property(SYNC::note()).toResource(); \
ui->itemIcon->setPixmap(KIcon("knotes").pixmap(22,22)); @@ -307,33 +338,29 \
@@ void ItemMergeDialog::showItem(int index) QFormLayout *localLayout = \
new QFormLayout(); localData->setLayout(localLayout);
- // now we fill the groupboxes with the different values
- QMapIterator<QString, Value> i(*mr.serverChanges);
- while (i.hasNext()) {
- i.next();
-
- if( i.key().startsWith(QLatin1String("zotero")))
+ foreach(const QString &key, mr.differendKeys) {
+ if(key.startsWith( QLatin1String("sync-") ))
continue;
- Value serverValue = i.value();
+ QString localValue = mr.localEntry.value(key).toString();
+ QString serverValue = mr.serverEntry.value(key).toString();
// add server row
- QLabel *valueLabel = new QLabel( PlainTextValue::text(serverValue) \
);
- serverLayout->addRow(QLatin1String("<b>") + \
m_keyTranslate.value(i.key().toLower()) + QLatin1String(":</b>"), \
valueLabel); + serverLayout->addRow(QLatin1String("<b>") + \
m_keyTranslate.value(key, key) + QLatin1String(":</b>"), new \
QLabel(serverValue)); +
//add local row
KComboBox *cb = new KComboBox;
- Value localValue = mr.localEntry->value(i.key());
- cb->addItem( PlainTextValue::text( localValue ), i.key() );
- cb->addItem( PlainTextValue::text( serverValue ), i.key() );
- localLayout->addRow(QLatin1String("<b>") + \
m_keyTranslate.value(i.key().toLower()) + QLatin1String(":</b>"), cb); + \
cb->addItem( localValue, key ); + cb->addItem( serverValue, key );
+ localLayout->addRow(QLatin1String("<b>") + \
m_keyTranslate.value(key, key) + QLatin1String(":</b>"), cb);
connect(cb, SIGNAL(currentIndexChanged(int)), this, \
SLOT(replaceSelection()));
// automatically select localvalue as default
- mr.mergedChanges->insert( i.key() , localValue);
+ mr.mergedChanges.insert( key , localValue);
- kDebug() << "insert key" << i.key() << "with" << \
PlainTextValue::text(i.value()); + kDebug() << "insert key" << key \
<< "with" << localValue; }
// complete server groupbox
diff --git a/src/nbibio/ui/itemmergedialog.h \
b/src/nbibio/ui/itemmergedialog.h index 36a8060..4a4240f 100644
--- a/src/nbibio/ui/itemmergedialog.h
+++ b/src/nbibio/ui/itemmergedialog.h
@@ -54,10 +54,11 @@ private slots:
private:
struct MergedResults {
Nepomuk2::Resource localSyncResource;
- QSharedPointer<Entry> localEntry;
- Entry * originalServerEntry;
- Entry * serverChanges;
- Entry * mergedChanges;
+ QVariantMap localEntry;
+ QVariantMap serverEntry;
+ QStringList differendKeys;
+
+ QVariantMap mergedChanges;
};
void showItem(int index);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic