void normalizeKey(RefManager manager) { HashMap nbUse = newHashMap(hashString, comparString); initIteratorRefManager(manager); while(hasNextRefManager(manager)) { Reference ref = nextRefManager(manager); char id [SIZE_BUFFER_ID]; char* author = ref->champs[ref_author]; if (strlen(author) > 0) { strcpy(id, getInitialesAuthor(author)); } sprintf(id + strlen(id), ":%s", ref->champs[ref_year]); printf("\n\n\n\n\n\n%s\n\n\n\n\n\n", id); if (containsHashMap(nbUse, id)) { char* nbTmp = getHashMap(nbUse, id); int occurence = getNb(nbTmp); size_t tailleCle = strlen(id); if (occurence == 1) { Reference oldRef = getRefManager(manager, id); char buffer[SIZE_BUFFER_ID]; strcpy(buffer, id); snprintf(buffer + tailleCle, SIZE_BUFFER_ID - tailleCle, ":1"); free(oldRef->id); oldRef->id = buffer; removeRefManager(manager, id); setRefManager(manager, oldRef); } snprintf(id + tailleCle, SIZE_BUFFER_ID - tailleCle, ":%d", occurence + 1); ref->id = id; setHashMap(nbUse, id, setNb(occurence + 1)); setRefManager(manager, ref); } else { removeRefManager(manager, ref->id); ref->id = id; setRefManager(manager, ref); setHashMap(nbUse, id, setNb(1)); } } }
bool TrainScheduleEngine::updateSourceEvent(const QString& name) { QStringList list = name.split("-"); QString newStation = list[1]; int newNb = list[2].toInt(); int newStart = list[3].toInt(); setNb(newNb); setStart(newStart); setStation(newStation); request(); return true; }
void BPTree::delete_entry(_F_FileAddr L, pKey_Attr pPrimKey, _F_FileAddr pRec) { BPTreeNode NodeL; NodeL.readNodeFromFile(L); // delete the (V,P) entry if( 1 == NodeL.IsLeaf ) NodeL.deleteKeyInLeaf(pPrimKey); else NodeL.deleteKeyNotLeaf(pPrimKey); // L is root and has only one son and not a leaf if( isRoot(L) && ( 0 == NodeL.ItemOnNode ) && (0 == NodeL.IsLeaf) ) { grantRoot(NodeL.p[0]); // grant root to the son deleteNodeInFile(L); // delete node } else if( !isRoot(L) && NodeL.isNotEnoughPoints() ) {// isn't root and not enough points //set L_ neighbour of L bool IsLLeftOfL_; _F_FileAddr L_; pKey_Attr pPrimKey_; setNb(L, &L_, &pPrimKey_, &IsLLeftOfL_); BPTreeNode NodeL_; NodeL_.readNodeFromFile(L_); if( canCoalesce(&NodeL, &NodeL_)) { if(IsLLeftOfL_) swapVariables(L,L_); coalesce(&NodeL, &NodeL_, pPrimKey_, IsLLeftOfL_); if( NodeL.IsLeaf && IsLLeftOfL_ ) // differe from book swapVariables(L,L_); delete_entry(getParent(L), pPrimKey_, L); if( NodeL.IsLeaf && IsLLeftOfL_ ) // L is a leaf and L < L_. Different from the book deleteNodeInFile(L_); // delete the node pointed by L_ else deleteNodeInFile(L); // delete the node pointed by L } else reDistribute(&NodeL, &NodeL_, pPrimKey_, IsLLeftOfL_, L); NodeL_.writeNodeToFile(L_); } NodeL.writeNodeToFile(L); // if though the node is delete }