Ejemplo n.º 1
0
void PlainDictionary::convertMapping(unsigned int mapping) {
    switch(mapping) {
    case MAPPING1:
        this->mapping = mapping;
        updateIDs();
        break;
    case MAPPING2:
        this->mapping = mapping;
        updateIDs();
        break;
    default:
        break;
    }
}
ExpandRequest::ExpandRequest( const RequestData& parentOrID,
                              const ExpandRequestData& data )
   
      : SearchResultRequest( parentOrID )
{
   enqueuePacket( updateIDs( new ExpandRequestPacket( data,
                                                      getUser() ) ),
                  MODULE_TYPE_MAP );
   
   m_status = StringTable::TIMEOUT_ERROR;
   m_replyData = new SearchReplyData();
   m_params = new SearchRequestParameters();
}
Ejemplo n.º 3
0
void PlainDictionary::load(std::istream & input, ControlInformation &ci, ProgressListener *listener)
{
    std::string line;
    unsigned char region = 1;

    startProcessing();

    std::string format = ci.getFormat();
    if(format!=getType()) {
        throw "Trying to read a PlainDictionary but the data is not PlainDictionary";
    }

    this->mapping = ci.getUint("mapping");
    this->sizeStrings = ci.getUint("sizeStrings");
    unsigned int numElements = ci.getUint("numEntries");
    unsigned int numLine = 0;

    IntermediateListener iListener(listener);
    iListener.setRange(0,25);
    while(region<5 && getline(input, line,'\1')) {
        //std::cout << line << std::endl;
        if(line!="") {
            if (region == 1) { //shared SO
                NOTIFYCOND(&iListener, "Dictionary loading shared area.", numLine, numElements);
                insert(line, SHARED_SUBJECT);
            } else if (region == 2) { //not shared Subjects
                NOTIFYCOND(&iListener, "Dictionary loading subjects.", numLine, numElements);
                insert(line, NOT_SHARED_SUBJECT);
                NOTIFYCOND(&iListener, "Dictionary loading objects.", numLine, numElements);
            } else if (region == 3) { //not shared Objects
                insert(line, NOT_SHARED_OBJECT);
                NOTIFYCOND(&iListener, "Dictionary loading predicates.", numLine, numElements);
            } else if (region == 4) { //predicates
                insert(line, NOT_SHARED_PREDICATE);
            }
        } else {
            region++;
        }

        numLine++;
    }

    // No stopProcessing() Needed. Dictionary already split and sorted in file.
    updateIDs();
}
Ejemplo n.º 4
0
void PlainDictionary::idSort() {

#ifdef _OPENMP
    #pragma omp parallel sections
    {
        { sort(shared.begin(), shared.end(), DictionaryEntry::cmpID); }
        { sort(subjects.begin(), subjects.end(), DictionaryEntry::cmpID); }
        { sort(objects.begin(), objects.end(), DictionaryEntry::cmpID); }
        { sort(predicates.begin(), predicates.end(), DictionaryEntry::cmpID); }
    }
#else
    sort(shared.begin(), shared.end(), DictionaryEntry::cmpID);
    sort(subjects.begin(), subjects.end(), DictionaryEntry::cmpID);
    sort(objects.begin(), objects.end(), DictionaryEntry::cmpID);
    sort(predicates.begin(), predicates.end(), DictionaryEntry::cmpID);
#endif

    updateIDs();
}
Ejemplo n.º 5
0
/** Lexicographic Sort
 * @param mapping Description of the param.
 * @return void
 */
void PlainDictionary::lexicographicSort(ProgressListener *listener) {

#ifdef _OPENMP
    NOTIFY(listener, "Sorting dictionary", 0, 100);
    #pragma omp parallel sections if(objects.size()>100000)
    {
        {
            sort(predicates.begin(), predicates.end(), DictionaryEntry::cmpLexicographic);
        }
        {
            sort(shared.begin(), shared.end(), DictionaryEntry::cmpLexicographic);
        }
        {
            sort(subjects.begin(), subjects.end(), DictionaryEntry::cmpLexicographic);
        }
        {
            sort(objects.begin(), objects.end(), DictionaryEntry::cmpLexicographic);
        }
    }
#else
    NOTIFY(listener, "Sorting shared", 0, 100);
    sort(shared.begin(), shared.end(), DictionaryEntry::cmpLexicographic);

    NOTIFY(listener, "Sorting subjects", 20, 100);
    sort(subjects.begin(), subjects.end(), DictionaryEntry::cmpLexicographic);

    NOTIFY(listener, "Sorting objects", 50, 100);
    sort(objects.begin(), objects.end(), DictionaryEntry::cmpLexicographic);

    NOTIFY(listener, "Sorting predicates", 90, 100);
    sort(predicates.begin(), predicates.end(), DictionaryEntry::cmpLexicographic);

#endif
    NOTIFY(listener, "Update Dictionary IDs", 99, 100);
    updateIDs();
}