private CardMetadata GetNewCardMetadata() { CardMetadata metaData = newCardQueue.FromBack(0); newCardQueue.RemoveAt(newCardQueue.Count - 1); return(metaData); }
private CardMetadata GetCardMetadata(int index) { CardMetadata metaData = reviewingCardQueue[index]; reviewingCardQueue[index] = reviewingCardQueue.FromBack(0); reviewingCardQueue.RemoveAt(reviewingCardQueue.Count - 1); return(metaData); }
public CardMetadata GetNext() { if (reviewingCardQueue.Count > 0) { int mostOverdueIndex = CalculatePercentageOverdues(); if (reviewingCardQueue[mostOverdueIndex].PercentageOverdue < 1.1f && newCardQueue.Count > 0) { currentMetadata = GetNewCardMetadata(); } else { currentMetadata = GetCardMetadata(mostOverdueIndex); } } else { currentMetadata = GetNewCardMetadata(); } return(currentMetadata); }
public override void Add(CardMetadata metadata) { if (SchemaHasNotBeenInserted(metadata.SchemaId)) { cardMetadataPool.Add(new BigList <Stack <CardMetadata> >()); schemaIndices.Add(metadata.SchemaId, cardMetadataPool.Count - 1); contentIdIndices.Add(new Dictionary <long, int>()); } int schemaIndex = schemaIndices[metadata.SchemaId]; if (ContentIdHasNotBeenInserted(metadata, schemaIndex)) { cardMetadataPool[schemaIndex].Add(new Stack <CardMetadata>()); int i = cardMetadataPool[schemaIndex].Count - 1; contentIdIndices[schemaIndex].Add(metadata.ContentId, i); } int contentIdIndex = contentIdIndices[schemaIndex][metadata.ContentId]; cardMetadataPool[schemaIndex][contentIdIndex].Push(metadata); ++metadataCount; }
public abstract void Add(CardMetadata metadata);
private bool ContentIdHasNotBeenInserted(CardMetadata metadata, int schemaIndex) { return(!contentIdIndices[schemaIndex].ContainsKey(metadata.ContentId)); }