~ubuntu-branches/ubuntu/precise/kde-runtime/precise-security

« back to all changes in this revision

Viewing changes to nepomuk/services/storage/resourcemerger.cpp

  • Committer: Package Import Robot
  • Author(s): Philip Muškovac
  • Date: 2012-03-30 21:36:32 UTC
  • mfrom: (1.1.10)
  • Revision ID: package-import@ubuntu.com-20120330213632-xsvx5vu8qg50aui7
Tags: 4:4.8.2-0ubuntu1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
509
509
    return newUri;
510
510
}
511
511
 
512
 
void Nepomuk::ResourceMerger::resolveBlankNodesInList(QList<Soprano::Statement> *stList)
 
512
void Nepomuk::ResourceMerger::resolveBlankNodesInSet(QSet<Soprano::Statement> *stList)
513
513
{
514
 
    QMutableListIterator<Soprano::Statement> iter( *stList );
 
514
    QSet<Soprano::Statement> newSet;
 
515
 
 
516
    QSetIterator<Soprano::Statement> iter( *stList );
515
517
    while( iter.hasNext() ) {
516
 
        Soprano::Statement &st = iter.next();
 
518
        Soprano::Statement st = iter.next();
517
519
 
518
520
        st.setSubject( resolveUnmappedNode(st.subject()) );
519
521
        st.setObject( resolveUnmappedNode(st.object()) );
 
522
 
 
523
        newSet.insert( st );
520
524
    }
 
525
 
 
526
    *stList = newSet;
521
527
}
522
528
 
523
 
void Nepomuk::ResourceMerger::removeDuplicatesInList(QList<Soprano::Statement> *stList)
 
529
void Nepomuk::ResourceMerger::removeDuplicatesInList(QSet<Soprano::Statement> *stList)
524
530
{
525
 
    QMutableListIterator<Soprano::Statement> it( *stList );
 
531
    QMutableSetIterator<Soprano::Statement> it( *stList );
526
532
    while( it.hasNext() ) {
527
533
        const Soprano::Statement &st = it.next();
528
534
        if( st.subject().isBlank() || st.object().isBlank() )
649
655
    // First separate all the statements predicate rdf:type.
650
656
    // and collect info required to check the types and cardinality
651
657
    //
652
 
    QList<Soprano::Statement> remainingStatements;
653
 
    QList<Soprano::Statement> typeStatements;
654
 
    QList<Soprano::Statement> metadataStatements;
 
658
    QSet<Soprano::Statement> remainingStatements;
 
659
    QSet<Soprano::Statement> typeStatements;
 
660
    QSet<Soprano::Statement> metadataStatements;
655
661
 
656
662
    foreach( const Soprano::Statement & st, statements ) {
657
663
        const QUrl subUri = getBlankOrResourceUri( st.subject() );
676
682
        // Get the cardinality
677
683
        if( tree->maxCardinality( prop ) > 0 ) {
678
684
            QPair<QUrl,QUrl> subPredPair( subUri, st.predicate().uri() );
679
 
            cardinality.insert( subPredPair, st.object() );
 
685
            if( !cardinality.contains( subPredPair, st.object() ) ) {
 
686
                cardinality.insert( subPredPair, st.object() );
 
687
            }
680
688
        }
681
689
    }
682
690
 
892
900
    }
893
901
 
894
902
    // Create all the blank nodes
895
 
    resolveBlankNodesInList( &typeStatements );
896
 
    resolveBlankNodesInList( &remainingStatements );
897
 
    resolveBlankNodesInList( &metadataStatements );
 
903
    resolveBlankNodesInSet( &typeStatements );
 
904
    resolveBlankNodesInSet( &remainingStatements );
 
905
    resolveBlankNodesInSet( &metadataStatements );
898
906
 
899
907
    // Push all these statements and get the list of all the modified resource
900
908
    foreach( Soprano::Statement st, typeStatements ) {