void SimpleActiveFiltersModel::Impl::saveSavedFilterPreferences() { auto preferences = get<IUIFramework>()->getPreferences(); if (preferences == nullptr) { // evgenys: generic_app crashes on plugins unload here, UIFramework is already uninitialized // TODO - investigate why this object instance is not destroyed yet return; } // TODO: fixing this by directly saving collection type data GenericObjectPtr& preference = preferences->getPreference(id_.c_str()); size_t count = savedFilters_.size(); preference->set("savedFilterCount", count); if (count == 0) { return; } for (size_t i = 0; i < count; ++i) { auto savedFilter = savedFilters_[i]; preference->set(savedFilter->getFilterId().c_str(), savedFilter->getTerms()); } }
bool SimpleActiveFiltersModel::loadFilter(std::string filterId) { // Clear the current filter terms, so we start with a clean slate clearCurrentFilter(); // Fetch the saved filter property by the provided identifier std::string terms; auto savedFilter = impl_->getSavedFilterById(filterId.c_str()); if (savedFilter == nullptr) { return false; } terms = savedFilter->getTerms(); // Tokenize the terms and add them to the current active filter std::istringstream stream(terms); std::string token; while (std::getline(stream, token, ',')) { if (token.length() > 0) { auto displayValue = StringUtils::split(token, ';'); impl_->addFilter(displayValue[0].c_str(), displayValue.size() > 1 ? displayValue[1].c_str() : "", true); } } impl_->loadedFilterId_ = filterId; return true; }
void QueryTermExtractor::getTermsFromBooleanQuery(const BooleanQuery * query, WeightedTermList * terms, bool prohibited, const TCHAR* fieldName) { uint32_t numClauses = query->getClauseCount(); BooleanClause** queryClauses = _CL_NEWARRAY(BooleanClause*,numClauses); query->getClauses(queryClauses); for (uint32_t i = 0; i < numClauses; i++) { if (prohibited || !queryClauses[i]->prohibited){ Query* qry = queryClauses[i]->getQuery(); getTerms(qry, terms, prohibited, fieldName); } } _CLDELETE_ARRAY(queryClauses); }