Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity.Design / System / Data / Entity / Design / Common / EDesignUtil.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="EDesignUtil.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 // @owner       Microsoft
6 // @backupOwner Microsoft
7 //------------------------------------------------------------------------------
8
9 namespace System.Data.Entity.Design.Common {
10
11     using System;
12     using System.Data;
13     using System.Data.Metadata.Edm;
14
15     internal static class EDesignUtil {
16
17         ////////////////////////////////////////////////////////////////////////
18         ////////////////////////////////////////////////////////////////////////
19         ////////////////////////////////////////////////////////////////////////
20         //
21         // Helper Functions
22         //
23         internal static string GetMessagesFromEntireExceptionChain(Exception e)
24         {
25             // get the full error message list from the inner exceptions
26             string message = e.Message;
27             int count = 0;
28             for (Exception inner = e.InnerException; inner != null; inner = inner.InnerException)
29             {
30                 count++;
31                 string indent = string.Empty.PadLeft(count, '\t');
32                 message += Environment.NewLine + indent;
33                 message += inner.Message;
34             }
35             return message;
36         }
37
38         static internal T CheckArgumentNull<T>(T value, string parameterName) where T : class
39         {
40             if (null == value)
41             {
42                 throw ArgumentNull(parameterName);
43             }
44             return value;
45         }
46
47         static internal void CheckStringArgument(string value, string parameterName)
48         {
49             // Throw ArgumentNullException when string is null
50             CheckArgumentNull(value, parameterName);
51
52             // Throw ArgumentException when string is empty
53             if (value.Length == 0)
54             {
55                 throw InvalidStringArgument(parameterName);
56             }
57         }
58
59         static internal LanguageOption CheckLanguageOptionArgument(LanguageOption value, string paramName)
60         {
61             if (value == LanguageOption.GenerateCSharpCode ||
62                 value == LanguageOption.GenerateVBCode)
63             {
64                 return value;
65             }
66             throw ArgumentOutOfRange(paramName);
67         }
68
69         static internal ArgumentException SingleStoreEntityContainerExpected(string parameterName)
70         {
71             ArgumentException e = new ArgumentException(Strings.SingleStoreEntityContainerExpected, parameterName);
72             return e;
73         }
74         static internal ArgumentException InvalidStoreEntityContainer(string entityContainerName, string parameterName)
75         {
76             ArgumentException e = new ArgumentException(Strings.InvalidNonStoreEntityContainer(entityContainerName), parameterName);
77             return e;
78         }
79         static internal ArgumentException InvalidStringArgument(string parameterName) {
80             ArgumentException e = new ArgumentException(Strings.InvalidStringArgument(parameterName));
81             return e;
82         }
83
84         static internal ArgumentException EdmReservedNamespace(string namespaceName) {
85             ArgumentException e = new ArgumentException(Strings.ReservedNamespace(namespaceName));
86             return e;
87         }
88
89         static internal ArgumentNullException ArgumentNull(string parameter) {
90             ArgumentNullException e = new ArgumentNullException(parameter);
91             return e;
92         }
93
94         static internal ArgumentException Argument(string parameter)
95         {
96             ArgumentException e = new ArgumentException(parameter);
97             return e;
98         }
99
100         static internal ArgumentException Argument(string message, Exception inner)
101         {
102             ArgumentException e = new ArgumentException(message, inner);
103             return e;
104         }
105
106         static internal InvalidOperationException InvalidOperation(string error)
107         {
108             InvalidOperationException e = new InvalidOperationException(error);
109             return e;
110         }
111
112         // SSDL Generator
113         static internal StrongTypingException StrongTyping(string error, Exception innerException) {
114             StrongTypingException e = new StrongTypingException(error, innerException);
115             return e;
116         }
117
118         static internal StrongTypingException StonglyTypedAccessToNullValue(string columnName, string tableName, Exception innerException) {
119             return StrongTyping(Strings.StonglyTypedAccessToNullValue(columnName, tableName), innerException);
120         }
121         
122         static internal InvalidOperationException EntityStoreGeneratorSchemaNotLoaded() {
123             return InvalidOperation(Strings.EntityStoreGeneratorSchemaNotLoaded);
124         }
125
126         static internal InvalidOperationException EntityModelGeneratorSchemaNotLoaded() {
127             return InvalidOperation(Strings.EntityModelGeneratorSchemaNotLoaded);
128         }
129
130         static internal InvalidOperationException NonSerializableType(BuiltInTypeKind kind)
131         {
132             return InvalidOperation(Strings.Serialization_UnknownGlobalItem(kind));
133         }
134         
135         static internal InvalidOperationException MissingGenerationPatternForType(BuiltInTypeKind kind) 
136         {
137             return InvalidOperation(Strings.ModelGeneration_UnGeneratableType(kind));
138         }
139
140         static internal ArgumentException InvalidNamespaceNameArgument(string namespaceName)
141         {
142             return new ArgumentException(Strings.InvalidNamespaceNameArgument(namespaceName));
143         }
144
145         static internal ArgumentException InvalidEntityContainerNameArgument(string entityContainerName)
146         {
147             return new ArgumentException(Strings.InvalidEntityContainerNameArgument(entityContainerName));
148         }
149
150         static internal ArgumentException DuplicateEntityContainerName(string newModelEntityContainerName, string storeEntityContainer) 
151         {
152             return new ArgumentException(Strings.DuplicateEntityContainerName(newModelEntityContainerName, storeEntityContainer));
153         }
154
155         static internal ProviderIncompatibleException ProviderIncompatible(string message)
156         {
157             return new ProviderIncompatibleException(message);
158         }
159
160         static internal ProviderIncompatibleException ProviderIncompatible(string message, Exception inner)
161         {
162             return new ProviderIncompatibleException(message, inner);
163         }
164
165         static internal ArgumentOutOfRangeException ArgumentOutOfRange(string paramName)
166         {
167             return new ArgumentOutOfRangeException(paramName);
168         }
169
170         internal static void CheckTargetEntityFrameworkVersionArgument(Version targetEntityFrameworkVersion, string parameterName)
171         {
172             EDesignUtil.CheckArgumentNull(targetEntityFrameworkVersion, parameterName);
173             if (!EntityFrameworkVersions.IsValidVersion(targetEntityFrameworkVersion))
174             {
175                 throw EDesignUtil.Argument(parameterName);
176             }
177         }
178     }
179 }