Exemple #1
0
        /// <summary>
        /// This method populates the international strings
        /// </summary>
        /// <param name="mappingStoreDb">
        /// The <see cref="Database"/> instance for Mapping Store database
        /// </param>
        /// <param name="partySysId">
        /// The party system identifier. In the database the column PARTY.PARTY_ID
        /// </param>
        /// <param name="partyNames">
        /// The <see cref="ITextTypeWrapper"/>lists  to be populated in terms of Names
        /// </param>
        private static void PopulatePartyLocalisedStrings(Database mappingStoreDb, long partySysId, ICollection <ITextTypeWrapper> partyNames)
        {
            string paramId = mappingStoreDb.BuildParameterName(ParameterNameConstants.IdParameter);

            var sqlCommand = new StringBuilder();

            sqlCommand.Append("SELECT HLS.HLS_ID, HLS.TYPE, HLS.HEADER_ID, HLS.PARTY_ID, HLS.CONTACT_ID, HLS.LANGUAGE, HLS.TEXT ");
            sqlCommand.Append("FROM HEADER_LOCALISED_STRING HLS ");
            sqlCommand.AppendFormat("WHERE HLS.PARTY_ID = {0} ", paramId);

            using (DbCommand command = mappingStoreDb.GetSqlStringCommand(sqlCommand.ToString()))
            {
                mappingStoreDb.AddInParameter(command, ParameterNameConstants.IdParameter, DbType.Int64, partySysId);

                using (IDataReader dataReader = mappingStoreDb.ExecuteReader(command))
                {
                    while (dataReader.Read())
                    {
                        var text = new TextTypeWrapperMutableCore {
                            Locale = DataReaderHelper.GetString(dataReader, "LANGUAGE"), Value = DataReaderHelper.GetString(dataReader, "TEXT")
                        };
                        string textType = DataReaderHelper.GetString(dataReader, "TYPE");

                        // is it a sender or a receiver?
                        if (textType.Equals(NameText, StringComparison.OrdinalIgnoreCase))
                        {
                            partyNames.Add(new TextTypeWrapperImpl(text, null));
                        }
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// This method populates the Localized Strings (Names, Departments, Roles)
        ///     of a <see cref="IContactMutableObject"/>
        /// </summary>
        /// <param name="mappingStoreDb">
        /// The <see cref="Database"/> instance for Mapping Store database
        /// </param>
        /// <param name="contactSysId">
        /// The contact system identifier. In the database the column CONTACT.CONTACT_ID
        /// </param>
        /// <param name="contact">
        /// The <see cref="IContactMutableObject"/> to be populated in terms of Names, Departments, Roles
        /// </param>
        private static void PopulateContactLocalisedStrings(Database mappingStoreDb, long contactSysId, IContactMutableObject contact)
        {
            string paramId = mappingStoreDb.BuildParameterName(ParameterNameConstants.IdParameter);

            var sqlCommand = new StringBuilder();

            sqlCommand.Append("SELECT HLS.HLS_ID, HLS.TYPE, HLS.HEADER_ID, HLS.PARTY_ID, HLS.CONTACT_ID, HLS.LANGUAGE, HLS.TEXT ");
            sqlCommand.Append("FROM HEADER_LOCALISED_STRING HLS ");
            sqlCommand.AppendFormat("WHERE HLS.CONTACT_ID = {0} ", paramId);

            using (DbCommand command = mappingStoreDb.GetSqlStringCommand(sqlCommand.ToString()))
            {
                mappingStoreDb.AddInParameter(command, ParameterNameConstants.IdParameter, DbType.Int64, contactSysId);

                using (IDataReader dataReader = mappingStoreDb.ExecuteReader(command))
                {
                    while (dataReader.Read())
                    {
                        var text = new TextTypeWrapperMutableCore {
                            Locale = DataReaderHelper.GetString(dataReader, "LANGUAGE"), Value = DataReaderHelper.GetString(dataReader, "TEXT")
                        };
                        if (!string.IsNullOrWhiteSpace(text.Value) && !string.IsNullOrWhiteSpace(text.Locale))
                        {
                            string textType = DataReaderHelper.GetString(dataReader, "TYPE");

                            if (textType.Equals(NameText, StringComparison.OrdinalIgnoreCase))
                            {
                                contact.Names.Add(text);
                            }
                            else if (textType.Equals(DepartmentText, StringComparison.OrdinalIgnoreCase))
                            {
                                contact.Departments.Add(text);
                            }
                            else if (textType.Equals(RoleText, StringComparison.OrdinalIgnoreCase))
                            {
                                contact.Roles.Add(text);
                            }
                        }
                    }
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Read the localized string from <paramref name="dataReader"/>
        /// </summary>
        /// <param name="item">
        ///     The <see cref="INameableMutableObject"/> .
        /// </param>
        /// <param name="typeIdx">
        ///     The <c>LOCALISED_STRING.TYPE</c> ordinal
        /// </param>
        /// <param name="txtIdx">
        ///     The <c>LOCALISED_STRING.TEXT</c> ordinal
        /// </param>
        /// <param name="langIdx">
        ///     The <c>LOCALISED_STRING.LANGUAGE</c> ordinal
        /// </param>
        /// <param name="dataReader">
        ///     The MASTORE DB <see cref="IDataReader"/>
        /// </param>
        /// <param name="detail">The Structure Query Detail</param>
        protected static void ReadLocalisedString(INameableMutableObject item, int typeIdx, int txtIdx, int langIdx, IDataRecord dataReader, ComplexStructureQueryDetailEnumType detail = ComplexStructureQueryDetailEnumType.Full)
        {
            //// TODO support SDMX-ML Query detail CompleteStub versus Stub when Common API supports it.
            //// When it is stub then only name should be returned.
            //// When it is complete stub both name and description.
            //// Now we use StructureQueryDetail which is for REST queries only.
            //// According to the http://sdmx.org/wp-content/uploads/2012/05/SDMX_2_1-SECTION_07_WebServicesGuidelines_May2012.pdf
            //// page 10, footnotes 10-12 REST AllStubs == SDMX-ML Query Stub so in that case we skip description

            var    value    = DataReaderHelper.GetString(dataReader, txtIdx);
            var    locale   = DataReaderHelper.GetString(dataReader, langIdx);
            string type     = DataReaderHelper.GetString(dataReader, typeIdx);
            var    textType = new TextTypeWrapperMutableCore {
                Locale = locale, Value = value
            };

            switch (type)
            {
            case LocalisedStringType.Name:
                item.Names.Add(textType);
                break;

            case LocalisedStringType.Desc:
                if (detail != ComplexStructureQueryDetailEnumType.Stub)
                {
                    item.Descriptions.Add(textType);
                }

                break;

            default:
                _log.WarnFormat(CultureInfo.InvariantCulture, "Unknown type at LOCALISATION.TYPE : '{0}', Locale: '{1}', Text:'{2}'", type, locale, value);
                if (item.Names.Count == 0)
                {
                    item.AddName(null, !string.IsNullOrWhiteSpace(value) ? value : item.Id);
                }

                break;
            }
        }