Beispiel #1
0
        private void buttonCreateDictionary_Click(object sender, EventArgs e)
        {
            string namePrefix = textBoxNamePrefix.Text.ToUpper();

            if (!CSPro.Names.IsValid(namePrefix))
            {
                string suggestedNamePrefix = CSPro.Names.CreateFromLabel(namePrefix);

                if (MessageBox.Show(String.Format(Messages.InvalidNameSuggestOther, namePrefix, suggestedNamePrefix), this.Text, MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }

                namePrefix = suggestedNamePrefix;
            }

            HashSet <string> usedNames = new HashSet <string>();

            string dictionaryName = CSPro.Names.CreateFromLabel(namePrefix + "_DICT");
            string levelName      = CSPro.Names.CreateFromLabel(namePrefix + "_LEVEL");
            string recordName     = CSPro.Names.CreateFromLabel(namePrefix + "_REC");

            usedNames.Add(dictionaryName);
            usedNames.Add(levelName);
            usedNames.Add(recordName);

            List <CreateDictionaryItemControl.ItemSelections> ids   = new List <CreateDictionaryItemControl.ItemSelections>();
            List <CreateDictionaryItemControl.ItemSelections> items = new List <CreateDictionaryItemControl.ItemSelections>();

            CreateDictionaryItemControl cdicForMessages = null;

            try
            {
                foreach (CreateDictionaryItemControl cdic in _itemSettings)
                {
                    cdicForMessages = cdic;

                    CreateDictionaryItemControl.ItemSelections selections = cdic.Selections;

                    if (!selections.IncludeItem)
                    {
                        continue;
                    }

                    if (!CSPro.Names.IsValid(selections.Name))
                    {
                        throw new Exception(String.Format(Messages.InvalidName, selections.Name));
                    }

                    if (usedNames.Contains(selections.Name))
                    {
                        throw new Exception(String.Format(Messages.AlreadyUsedName, selections.Name));
                    }

                    usedNames.Add(selections.Name);

                    int length = 0;

                    if (selections.IsNumeric)
                    {
                        length = selections.BeforeDecLength;

                        if (selections.AfterDecLength > 0)
                        {
                            if (selections.IsId)
                            {
                                throw new Exception(Messages.InvalidIdNumericDecimal);
                            }

                            if (selections.AfterDecLength > CSPro.Defines.MaxLengthDecimal)
                            {
                                throw new Exception(String.Format(Messages.InvalidLengthNumericDecimal, CSPro.Defines.MaxLengthDecimal));
                            }

                            length += selections.AfterDecLength + (checkBoxDecChar.Checked ? 1 : 0);
                        }

                        if (length > CSPro.Defines.MaxLengthNumeric)
                        {
                            throw new Exception(String.Format(Messages.InvalidLengthNumeric, CSPro.Defines.MaxLengthNumeric));
                        }
                    }

                    else
                    {
                        length = selections.AlphaLength;

                        if (length > CSPro.Defines.MaxLengthAlpha)
                        {
                            throw new Exception(String.Format(Messages.InvalidLengthAlpha, CSPro.Defines.MaxLengthAlpha));
                        }
                    }

                    if (length == 0)
                    {
                        throw new Exception(Messages.InvalidLengthZero);
                    }

                    if (selections.IsId)
                    {
                        ids.Add(selections);
                    }

                    else
                    {
                        items.Add(selections);
                    }
                }

                cdicForMessages = null;

                if (ids.Count == 0)
                {
                    throw new Exception(Messages.InvalidNumberIds);
                }

                // save the dictionary
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Title  = Messages.CSProSaveTitle;
                sfd.Filter = Messages.CSProFileFilter;

                if (_lastSaveFilename != null)
                {
                    sfd.InitialDirectory = Path.GetDirectoryName(_lastSaveFilename);
                    sfd.FileName         = Path.GetFileName(_lastSaveFilename);
                }

                if (sfd.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                CSPro.DataDictionary dictionary = new CSPro.DataDictionary();
                dictionary.DecimalCharDefault = checkBoxDecChar.Checked;
                dictionary.ZeroFillDefault    = checkBoxZeroFill.Checked;

                dictionary.Name  = dictionaryName;
                dictionary.Label = textBoxNamePrefix.Text + " Dictionary";

                CSPro.Level level = new CSPro.Level(dictionary, 0);
                dictionary.AddLevel(level);
                level.Name  = levelName;
                level.Label = textBoxNamePrefix.Text + " Level";

                CSPro.Record record = new CSPro.Record(level);
                level.AddRecord(record);
                record.Name  = recordName;
                record.Label = textBoxNamePrefix.Text + " Record";

                int startingPos = 1;

                foreach (CreateDictionaryItemControl.ItemSelections selections in ids)
                {
                    AddItem(level.IDs, selections, ref startingPos);
                }

                foreach (CreateDictionaryItemControl.ItemSelections selections in items)
                {
                    AddItem(record, selections, ref startingPos);
                }

                record.Length = startingPos;

                CSPro.DataDictionaryWriter.Save(dictionary, sfd.FileName);
                _lastSaveFilename = sfd.FileName;
            }

            catch (Exception exception)
            {
                if (cdicForMessages != null)
                {
                    MessageBox.Show(String.Format("{0}: {1}", cdicForMessages.ColumnText, exception.Message));
                }

                else
                {
                    MessageBox.Show(exception.Message);
                }

                return;
            }
        }
        private void buttonCreateDictionary_Click(object sender,EventArgs e)
        {
            string namePrefix = textBoxNamePrefix.Text.ToUpper();

            if( !CSPro.Names.IsValid(namePrefix) )
            {
                string suggestedNamePrefix = CSPro.Names.CreateFromLabel(namePrefix);

                if( MessageBox.Show(String.Format(Messages.InvalidNameSuggestOther,namePrefix,suggestedNamePrefix),this.Text,MessageBoxButtons.YesNo) == DialogResult.No )
                    return;

                namePrefix = suggestedNamePrefix;
            }

            HashSet<string> usedNames = new HashSet<string>();

            string dictionaryName = CSPro.Names.CreateFromLabel(namePrefix + "_DICT");
            string levelName = CSPro.Names.CreateFromLabel(namePrefix + "_LEVEL");
            string recordName = CSPro.Names.CreateFromLabel(namePrefix + "_REC");

            usedNames.Add(dictionaryName);
            usedNames.Add(levelName);
            usedNames.Add(recordName);

            List<CreateDictionaryItemControl.ItemSelections> ids = new List<CreateDictionaryItemControl.ItemSelections>();
            List<CreateDictionaryItemControl.ItemSelections> items = new List<CreateDictionaryItemControl.ItemSelections>();

            CreateDictionaryItemControl cdicForMessages = null;

            try
            {
                foreach( CreateDictionaryItemControl cdic in _itemSettings )
                {
                    cdicForMessages = cdic;

                    CreateDictionaryItemControl.ItemSelections selections = cdic.Selections;

                    if( !selections.IncludeItem )
                        continue;

                    if( !CSPro.Names.IsValid(selections.Name) )
                        throw new Exception(String.Format(Messages.InvalidName,selections.Name));

                    if( usedNames.Contains(selections.Name) )
                        throw new Exception(String.Format(Messages.AlreadyUsedName,selections.Name));

                    usedNames.Add(selections.Name);

                    int length = 0;

                    if( selections.IsNumeric )
                    {
                        length = selections.BeforeDecLength;

                        if( selections.AfterDecLength > 0 )
                        {
                            if( selections.IsId )
                                throw new Exception(Messages.InvalidIdNumericDecimal);

                            if( selections.AfterDecLength > CSPro.Defines.MaxLengthDecimal )
                                throw new Exception(String.Format(Messages.InvalidLengthNumericDecimal,CSPro.Defines.MaxLengthDecimal));

                            length += selections.AfterDecLength + ( checkBoxDecChar.Checked ? 1 : 0 );
                        }

                        if( length > CSPro.Defines.MaxLengthNumeric )
                            throw new Exception(String.Format(Messages.InvalidLengthNumeric,CSPro.Defines.MaxLengthNumeric));
                    }

                    else
                    {
                        length = selections.AlphaLength;

                        if( length > CSPro.Defines.MaxLengthAlpha )
                            throw new Exception(String.Format(Messages.InvalidLengthAlpha,CSPro.Defines.MaxLengthAlpha));
                    }

                    if( length == 0 )
                        throw new Exception(Messages.InvalidLengthZero);

                    if( selections.IsId )
                        ids.Add(selections);

                    else
                        items.Add(selections);
                }

                cdicForMessages = null;

                if( ids.Count == 0 )
                    throw new Exception(Messages.InvalidNumberIds);

                // save the dictionary
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Title = Messages.CSProSaveTitle;
                sfd.Filter = Messages.CSProFileFilter;

                if( _lastSaveFilename != null )
                {
                    sfd.InitialDirectory = Path.GetDirectoryName(_lastSaveFilename);
                    sfd.FileName = Path.GetFileName(_lastSaveFilename);
                }

                if( sfd.ShowDialog() != DialogResult.OK )
                    return;

                CSPro.DataDictionary dictionary = new CSPro.DataDictionary();
                dictionary.DecimalCharDefault = checkBoxDecChar.Checked;
                dictionary.ZeroFillDefault = checkBoxZeroFill.Checked;

                dictionary.Name = dictionaryName;
                dictionary.Label = textBoxNamePrefix.Text + " Dictionary";

                CSPro.Level level = new CSPro.Level(dictionary,0);
                dictionary.AddLevel(level);
                level.Name = levelName;
                level.Label = textBoxNamePrefix.Text + " Level";

                CSPro.Record record = new CSPro.Record(level);
                level.AddRecord(record);
                record.Name = recordName;
                record.Label = textBoxNamePrefix.Text + " Record";

                int startingPos = 1;

                foreach( CreateDictionaryItemControl.ItemSelections selections in ids )
                    AddItem(level.IDs,selections,ref startingPos);

                foreach( CreateDictionaryItemControl.ItemSelections selections in items )
                    AddItem(record,selections,ref startingPos);

                record.Length = startingPos;

                CSPro.DataDictionaryWriter.Save(dictionary,sfd.FileName);
                _lastSaveFilename = sfd.FileName;
            }

            catch( Exception exception )
            {
                if( cdicForMessages != null )
                    MessageBox.Show(String.Format("{0}: {1}",cdicForMessages.ColumnText,exception.Message));

                else
                    MessageBox.Show(exception.Message);

                return;
            }
        }