public List<CardCriterion> GetAll() { var Ds = new DataSet(); //dummy var to not blow the method DataRowCollection rows = Ds.Tables[0].Rows; //Map all Database Rows To DataModels. Add each Model to Dict. List<CardCriterion> cardCriteria = new List<CardCriterion>(rows.Count); #region Linq //cardCriteria.AddRange(from DataRow row in Ds.Tables[0].Rows // select row.ItemArray // into values // let textExtractor = new TextExtractor() // select // new CardCriterion() // { // CardId = Convert.ToInt16(values[0]), // Territory = Convert.ToString(values[1]), // CardKind = Convert.ToString(values[2]), // CardAdoptionKindSubject = Convert.ToString(values[3]), // CardAdoptionSubject = Convert.ToString(values[4]), // CardName = Convert.ToString(values[5]), // CardEdition = textExtractor.Extract((byte[]) values[6]).Text, // ContentMetadataDict = textExtractor.Extract((byte[]) values[6]).Metadata, // ContentType = textExtractor.Extract((byte[]) values[6]).ContentType // }); #endregion foreach (DataRow row in rows) { var criterion = new CardCriterion(); object[] values = row.ItemArray; var textExtractionResult = new TextExtractor().Extract((byte[]) values[7]); criterion.EditionId = Convert.ToUInt32(values[0]); criterion.Territory = Convert.ToString(values[1]); criterion.CardKind = Convert.ToString(values[2]); criterion.CardAdoptionKindSubject = Convert.ToString(values[3]); criterion.CardAdoptionSubject = Convert.ToString(values[4]); criterion.CardName = Convert.ToString(values[5]); criterion.CardAdoptionDate = Convert.ToDateTime(values[6]); criterion.CardEdition = textExtractionResult.Text; criterion.ContentMetadataDict = textExtractionResult.Metadata; criterion.CardAdoptionNumber = Convert.ToString(values[8]); cardCriteria.Add(criterion); Function(1, rows.Count); //http://stackoverflow.com/questions/6471378/implementing-a-progress-bar-to-show-work-being-done } return cardCriteria; //http://codereview.stackexchange.com/questions/30714/faster-way-to-convert-datatable-to-list-of-class }
public List <CardCriterion> GetAll() { var Ds = new DataSet(); //dummy var to not blow the method DataRowCollection rows = Ds.Tables[0].Rows; //Map all Database Rows To DataModels. Add each Model to Dict. List <CardCriterion> cardCriteria = new List <CardCriterion>(rows.Count); #region Linq //cardCriteria.AddRange(from DataRow row in Ds.Tables[0].Rows // select row.ItemArray // into values // let textExtractor = new TextExtractor() // select // new CardCriterion() // { // CardId = Convert.ToInt16(values[0]), // Territory = Convert.ToString(values[1]), // CardKind = Convert.ToString(values[2]), // CardAdoptionKindSubject = Convert.ToString(values[3]), // CardAdoptionSubject = Convert.ToString(values[4]), // CardName = Convert.ToString(values[5]), // CardEdition = textExtractor.Extract((byte[]) values[6]).Text, // ContentMetadataDict = textExtractor.Extract((byte[]) values[6]).Metadata, // ContentType = textExtractor.Extract((byte[]) values[6]).ContentType // }); #endregion foreach (DataRow row in rows) { var criterion = new CardCriterion(); object[] values = row.ItemArray; var textExtractionResult = new TextExtractor().Extract((byte[])values[7]); criterion.EditionId = Convert.ToUInt32(values[0]); criterion.Territory = Convert.ToString(values[1]); criterion.CardKind = Convert.ToString(values[2]); criterion.CardAdoptionKindSubject = Convert.ToString(values[3]); criterion.CardAdoptionSubject = Convert.ToString(values[4]); criterion.CardName = Convert.ToString(values[5]); criterion.CardAdoptionDate = Convert.ToDateTime(values[6]); criterion.CardEdition = textExtractionResult.Text; criterion.ContentMetadataDict = textExtractionResult.Metadata; criterion.CardAdoptionNumber = Convert.ToString(values[8]); cardCriteria.Add(criterion); Function(1, rows.Count); //http://stackoverflow.com/questions/6471378/implementing-a-progress-bar-to-show-work-being-done } return(cardCriteria); //http://codereview.stackexchange.com/questions/30714/faster-way-to-convert-datatable-to-list-of-class }
private static void _addToLuceneIndex(CardCriterion cardCriterion, IndexWriter writer) { //Add Tikafields from CardCriteriaRepository maybe here later to avoid RAM-haevy traffic? // remove older index entry TermQuery searchQuery = new TermQuery(new Term("EditionId", Convert.ToString(cardCriterion.EditionId))); writer.DeleteDocuments(searchQuery); // add new index entry Document doc = new Document(); // add lucene fields mapped to db fields doc.Add(new Field("EditionId", Convert.ToString(cardCriterion.EditionId), Field.Store.YES, Field.Index.NOT_ANALYZED)); doc.Add(new Field("CardId", Convert.ToString(cardCriterion.CardId), Field.Store.YES, Field.Index.NOT_ANALYZED)); //doc.Add(new NumericField("CardId").SetIntValue(cardCriterion.CardId)); doc.Add(new Field("CardName", cardCriterion.CardName, Field.Store.YES, Field.Index.ANALYZED)); //doc.Add(new Field("CardName", cardCriterion.CardName, Field.Store.NO, // Field.Index.ANALYZED)); doc.Add(new Field("CardKind", cardCriterion.CardKind, Field.Store.YES, Field.Index.NOT_ANALYZED)); //Changed from analyzed doc.Add(new Field("FileExt", cardCriterion.FileExt, Field.Store.YES, Field.Index.NOT_ANALYZED)); doc.Add(new Field("CardEdition", cardCriterion.CardEdition, Field.Store.YES, Field.Index.ANALYZED)); doc.Add(new Field("CardAdoptionKindSubject", cardCriterion.CardAdoptionKindSubject, Field.Store.YES, Field.Index.NOT_ANALYZED)); //Changed from analyzed doc.Add(new Field("CardAdoptionSubject", cardCriterion.CardAdoptionSubject, Field.Store.YES, Field.Index.NOT_ANALYZED)); //Changed from analyzed doc.Add(new Field("Territory", cardCriterion.Territory, Field.Store.YES, Field.Index.NOT_ANALYZED)); //doc.Add(new Field("CardEdition", cardCriterion.CardEdition, Field.Store.NO, // Field.Index.ANALYZED)); doc.Add(new Field("CardAdoptionNumber", cardCriterion.CardAdoptionNumber, Field.Store.YES, Field.Index.NOT_ANALYZED)); doc.Add(new Field("CardAdoptionDate", DateTools.DateToString(cardCriterion.CardAdoptionDate, DateTools.Resolution.DAY), Field.Store.YES, Field.Index.NOT_ANALYZED)); #region Index Metadata //doc.Add(new Field("ContentType", cardCriterion.ContentType, Field.Store.YES, // Field.Index.ANALYZED)); No need to index contentype so far //foreach (var kvp in cardCriterion.ContentMetadataDict) //{ // doc.Add(new Field(kvp.Key, kvp.Value, Field.Store.YES, Field.Index.NOT_ANALYZED)); //} //Add later if metadata indexing is needed #endregion // add entry to index writer.AddDocument(doc); }
private static CardCriterion _extractRowToCriterion(IDataRecord record) { CardCriterion criterion = new CardCriterion(); var textExtractionResult = new TextExtractor().Extract((byte[]) record[5]); criterion.EditionId = Convert.ToUInt32(record[0]); criterion.CardId = Convert.ToUInt32(record[1]); criterion.Territory = Convert.ToString(record[2]); criterion.CardKind = Convert.ToString(record[3]); criterion.CardName = Convert.ToString(record[4]); criterion.CardEdition = textExtractionResult.Text; criterion.ContentMetadataDict = textExtractionResult.Metadata; criterion.FileExt = Convert.ToString(record[6]); criterion.CardAdoptionKindSubject = Convert.ToString(record[7]); criterion.CardAdoptionSubject = Convert.ToString(record[8]); criterion.CardAdoptionDate = Convert.ToDateTime(record[9]); criterion.CardAdoptionNumber = Convert.ToString(record[10]); return criterion; }
// add/update/clear search index data public static void AddUpdateLuceneIndex(CardCriterion cardCriterion) { AddUpdateLuceneIndex(new List<CardCriterion> {cardCriterion}); }