/// <summary>
/// Creates literature sequence in database.
/// </summary>
/// <param name="commonSequence">
/// The common sequence.
/// </param>
/// <param name="sequenceStream">
/// The sequence stream.
/// </param>
/// <param name="language">
/// The language id.
/// </param>
/// <param name="original">
/// The original.
/// </param>
/// <param name="translator">
/// The translator id.
/// </param>
/// <param name="dropPunctuation">
/// Flag indicating if punctuation should be removed from text.
/// </param>
public void Create(CommonSequence commonSequence, Stream sequenceStream, Language language, bool original, Translator translator, bool dropPunctuation = false)
{
string stringSequence = FileHelper.ReadSequenceFromStream(sequenceStream);
BaseChain chain;
if (commonSequence.Notation == Notation.Letters)
{
stringSequence = stringSequence.ToUpper();
if (dropPunctuation)
{
stringSequence = new string(stringSequence.Where(c => !char.IsPunctuation(c)).ToArray());
}
chain = new BaseChain(stringSequence);
}
else
{
// file always contains empty string at the end
// TODO: rewrite this, add empty string check at the end or write a normal trim
string[] text = stringSequence.Split(new[] { '\n', '\r', ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
chain = new BaseChain(text.Select(e => (ValueString)e).Cast <IBaseObject>().ToList());
}
MatterRepository.CreateOrExtractExistingMatterForSequence(commonSequence);
long[] alphabet = ElementRepository.ToDbElements(chain.Alphabet, commonSequence.Notation, true);
Create(commonSequence, original, language, translator, alphabet, chain.Building);
}