Example #1
0
        private CardMetadata GetNewCardMetadata()
        {
            CardMetadata metaData = newCardQueue.FromBack(0);

            newCardQueue.RemoveAt(newCardQueue.Count - 1);
            return(metaData);
        }
Example #2
0
        private CardMetadata GetCardMetadata(int index)
        {
            CardMetadata metaData = reviewingCardQueue[index];

            reviewingCardQueue[index] = reviewingCardQueue.FromBack(0);
            reviewingCardQueue.RemoveAt(reviewingCardQueue.Count - 1);
            return(metaData);
        }
Example #3
0
        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;
        }
Example #5
0
 public abstract void Add(CardMetadata metadata);
 private bool ContentIdHasNotBeenInserted(CardMetadata metadata, int schemaIndex)
 {
     return(!contentIdIndices[schemaIndex].ContainsKey(metadata.ContentId));
 }