void FileObjectEditDialog::saveAndMergeUrlChange()
{
    QString newUrl = ui->editUrl->fullText();
    QString existingUrl = m_fileObject.property(NIE::url()).toString();
    if(newUrl == existingUrl) {
        return;
    }

    if(!newUrl.isEmpty()) {
        QString query = "Select DISTINCT ?r where {"
                        "?r nie:url ?url . FILTER ( regex(?url, \"^" + newUrl + "$\"))"
                        "}";

        QList<Nepomuk2::Query::Result> queryResult = Nepomuk2::Query::QueryServiceClient::syncSparqlQuery(query);

        if(!queryResult.isEmpty() && queryResult.first().resource().uri() != m_fileObject.uri()) {
            kDebug() << "found a duplicate with url" << newUrl << "merge it";
            KJob *job = Nepomuk2::mergeResources(queryResult.first().resource().uri(), m_fileObject.uri());
            job->exec();

            if(job->error() != 0) {
                kDebug() << job->errorString() << job->errorText();
            }

            setResource(queryResult.first().resource());
        }
        else {
            kDebug() << "set url to " << newUrl;
            QList<QUrl> fileObjectUri; fileObjectUri << m_fileObject.uri();
            QVariantList fileObjectValue; fileObjectValue << newUrl;
            Nepomuk2::setProperty(fileObjectUri, NIE::url(), fileObjectValue);
        }
    }
}
Exemple #2
0
bool Nepomuk2::Indexer::clearIndexingData(const QUrl& url)
{
    kDebug() << "Starting to clear";
    KJob* job = Nepomuk2::clearIndexedData( url );
    kDebug() << "Done";

    job->exec();
    if( job->error() ) {
        m_lastError = job->errorString();
        kError() << m_lastError;

        return false;
    }

    return true;
}
Exemple #3
0
QUrl SharePlugin::destinationDir() const
{
    const QString defaultDownloadPath = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
    QUrl dir = QUrl::fromLocalFile(config()->get<QString>("incoming_path", defaultDownloadPath));

    if (dir.path().contains("%1")) {
        dir.setPath(dir.path().arg(device()->name()));
    }

    KJob* job = KIO::mkpath(dir);
    bool ret = job->exec();
    if (!ret) {
        qWarning() << "couldn't create" << dir;
    }

    return dir;
}
Exemple #4
0
QString GitRunner::execSynchronously(const QStringList& command)
{
    KJob *job = initJob(command);

    QString result;

    if (!job->exec()) {
        handleError(job);
        return QString();
    } else {
        DvcsJob *j = qobject_cast<DvcsJob*>(job);
        if (!j) {
            return QString();
        }
        result = j->output();
    }
    return result;
}
void FileObjectEditDialog::typeChanged(int newType)
{
    bool switchToWebsite = true;
    bool switchToFile = true;

    QList<QUrl> currentTypes = m_fileObject.types();

    if(newType == 0) { // local file
        switchToWebsite = false;
        if(currentTypes.contains( NFO::FileDataObject() )) {
            switchToFile = false;
        }
        if(currentTypes.contains( NFO::Website() )) {
            switchToFile = true;
        }

        currentTypes.removeAll(NFO::Website());
        currentTypes.removeAll(NFO::WebDataObject());
        currentTypes.removeAll(NFO::RemoteDataObject());

        if(!currentTypes.contains( NFO::FileDataObject() )) {
            currentTypes.append( NFO::FileDataObject() );
        }
    }
    else if(newType == 1) { // remote file
        switchToWebsite = false;
        if(currentTypes.contains( NFO::FileDataObject() )) {
            switchToFile = false;
        }
        if(currentTypes.contains( NFO::Website() )) {
            switchToFile = true;
        }

        currentTypes.removeAll(NFO::Website());
        currentTypes.removeAll(NFO::WebDataObject());

        if(!currentTypes.contains( NFO::FileDataObject() )) {
            currentTypes.append( NFO::FileDataObject() );
        }

        if(!currentTypes.contains( NFO::RemoteDataObject() )) {
            currentTypes.append(NFO::RemoteDataObject());
        }
    }
    else if(newType == 2) { // nfo:website
        switchToFile = false;
        if(currentTypes.contains( NFO::FileDataObject() )) {
            switchToWebsite = true;
        }
        if(currentTypes.contains( NFO::Website() )) {
            switchToWebsite = false;
        }

        currentTypes.removeAll(NFO::FileDataObject());
        currentTypes.removeAll(NFO::RemoteDataObject());

        if(!currentTypes.contains( NFO::WebDataObject() )) {
            currentTypes.append( NFO::WebDataObject() );
        }
        if(!currentTypes.contains( NFO::Website() )) {
            currentTypes.append( NFO::Website() );
        }
    }

    QList<QUrl> publicationUri; publicationUri << m_publication.uri();
    QVariantList publicationValue; publicationValue << m_publication.uri();
    QList<QUrl> fileObjectUri; fileObjectUri << m_fileObject.uri();
    QVariantList fileObjectValue; fileObjectValue << m_fileObject.uri();
    QVariantList typeValue;

    foreach(const QUrl &url, currentTypes) {
        typeValue << url;
    }

    //m_fileObject.setTypes(currentTypes);

    // this appraoch is not working
    QList<QUrl> removeAllTypes; removeAllTypes << RDF::type();
    KJob *job = Nepomuk2::removeProperties(fileObjectUri, removeAllTypes);
    if(!job->exec() ) {
        kDebug() << job->errorString();
    }
    KJob *job2 = Nepomuk2::setProperty(fileObjectUri, RDF::type(), typeValue);
    if(!job->exec() ) {
        kDebug() << job2->errorString();
    }

    // change crosslink from nbib:publicationOf / nbib:isPublishedAs to nie:links
    if( switchToFile ) {
        Nepomuk2::removeProperty(publicationUri, NIE::links(), fileObjectValue);
        Nepomuk2::addProperty(publicationUri, NBIB::isPublicationOf(), fileObjectValue);
        Nepomuk2::addProperty(fileObjectUri, NBIB::publishedAs(), publicationValue);
    }
    else if( switchToWebsite ) {
        Nepomuk2::removeProperty(publicationUri, NBIB::isPublicationOf(), fileObjectValue);
        Nepomuk2::removeProperty(fileObjectUri, NBIB::publishedAs(), publicationValue);
        Nepomuk2::addProperty(publicationUri, NIE::links(), fileObjectValue);
    }
}