Ejemplo n.º 1
0
        /// <summary>
        /// 내부적으로 문화권에 맞는 리소스 정보를 가져옵니다.
        /// </summary>
        private string GetResourceInternal(CultureInfo culture, string resourceKey) {
            var resourceValues = new List<string>();
            var result = string.Empty;

            if(culture.IsNullCulture())
                return result;

            if(IsDebugEnabled)
                log.Debug("문화권에 맞는 리소스 정보를 가져옵니다... culture=[{0}], resourceKey=[{1}]", culture, resourceKey);

            try {
                using(var cmd = GetResourceCommand(culture.Name, resourceKey))
                using(var reader = Ado.ExecuteReader(cmd)) {
                    while(reader.Read())
                        resourceValues.Add(reader.AsString("ResourceValue"));
                }
            }
            catch(Exception ex) {
                if(log.IsWarnEnabled) {
                    log.Warn("Database에서 Resource정보를 얻는데 실패했습니다. 빈 문자열을 반환합니다. culture=[{0}], resourceKey=[{1}]", culture, resourceKey);
                    log.Warn(ex);
                }
            }

            if(resourceValues.Count == 0) {
                result = GetResourceInternal(culture.Parent, resourceKey);
            }
            else if(resourceValues.Count == 1) {
                result = resourceValues[0];
            }
            else {
                throw new InvalidOperationException("Duplicated values in resourceKey=" + resourceKey);
            }

            return result;
        }