private Replacer.ReplaceInfo[] GetPropertyInfos(IBusinessObjectClass businessObjectClass, IBusinessObjectProperty[] properties)
        {
            Replacer.ReplaceInfo[] propertyInfos = new Replacer.ReplaceInfo[properties.Length];

            for (int index = 0; index < properties.Length; index++)
            {
                IBusinessObjectProperty property = properties[index];
                bool found = false;

                foreach (Configuration.ControlInfo controlMapping in _configuration.ControlMappings)
                {
                    if (HasInterface(property.GetType(), controlMapping.propertyType) && property.IsList == controlMapping.isList)
                    {
                        ApplicationConfiguration.ReplaceInfo[] additionalReplaceInfos = new ApplicationConfiguration.ReplaceInfo[] {
                            new ApplicationConfiguration.ReplaceInfo(Placeholder.ToString(DefinedPlaceholder.DOMAIN_PROPERTYNAME), property.Identifier)
                        };

                        string additionalAttributes = Replacer.Replace(additionalReplaceInfos, controlMapping.additionalAttributes);
                        string additionalElements   = Replacer.Replace(additionalReplaceInfos, controlMapping.additionalElements);

                        propertyInfos[index].replaceInfos = new string[] {
                            Placeholder.ToString(DefinedPlaceholder.DOMAIN_PROPERTYNAME), property.Identifier,
                            Placeholder.ToString(DefinedPlaceholder.CONTROLTYPE), controlMapping.controlName,
                            Placeholder.ToString(DefinedPlaceholder.ADDITIONALATTRIBUTES), additionalAttributes,
                            Placeholder.ToString(DefinedPlaceholder.ADDITIONALELEMENTS), additionalElements
                        };

                        found = true;
                        break;
                    }
                }

                if (!found)
                {
                    propertyInfos[index].replaceInfos = null;

                    _warnings.AddWarning(WarningCode.MissingControlMapping, businessObjectClass.Identifier + "." + property.Identifier +
                                         " (" + property.GetType().ToString() + ")");
                }
            }

            return(propertyInfos);
        }
        private ReplaceInfo[] GetReplaceInfos(XmlNodeList nodes)
        {
            ArrayList tempReplaceInfos = new ArrayList();

            for (int index = 0; index < nodes.Count; index++)
            {
                string from = GetValue(nodes[index], "from");
                string to   = GetValue(nodes[index], "to");

                int currentWarningCount = _warnings.Warnings.Count;

                if (!from.StartsWith(PlaceholderPrefix))
                {
                    _warnings.AddWarning(WarningCode.ReplaceInvalidFormat, string.Format("Invalid prefix for {0}", from));
                }

                if (!from.EndsWith(PlaceholderPostfix))
                {
                    _warnings.AddWarning(WarningCode.ReplaceInvalidFormat, string.Format("Invalid postfix for {0}", from));
                }

                if (from == string.Empty)
                {
                    _warnings.AddWarning(WarningCode.ReplaceFromInfoIsEmpty, to);
                }

                if (to == string.Empty)                 // maybe legal
                {
                    _warnings.AddWarning(WarningCode.ReplaceToInfoIsEmpty, from);
                }

                if (from == to)
                {
                    _warnings.AddWarning(WarningCode.ReplaceInfoFromEqualsTo, from);
                }

                if (currentWarningCount == _warnings.Warnings.Count)
                {
                    ReplaceInfo replaceInfo = new ReplaceInfo();

                    replaceInfo.from = from;
                    replaceInfo.to   = to;

                    tempReplaceInfos.Add(replaceInfo);
                }
            }

            ReplaceInfo[] replaceInfos     = new ReplaceInfo[tempReplaceInfos.Count];
            int           replaceInfoIndex = 0;

            foreach (ReplaceInfo replaceInfo in tempReplaceInfos)
            {
                if (replaceInfo.from == null || replaceInfo.to == null)
                {
                    continue;
                }

                replaceInfos[replaceInfoIndex++] = replaceInfo;
            }

            return(replaceInfos);
        }