diff --git a/Raven.Client.Lightweight/Connection/Async/AsyncServerClient.cs b/Raven.Client.Lightweight/Connection/Async/AsyncServerClient.cs
index bb51812b5b61..b215d5ade0dd 100644
--- a/Raven.Client.Lightweight/Connection/Async/AsyncServerClient.cs
+++ b/Raven.Client.Lightweight/Connection/Async/AsyncServerClient.cs
@@ -233,7 +233,7 @@ private void AddOperationHeaders(HttpWebRequest webRequest)
public IAsyncDatabaseCommands ForDatabase(string database)
{
var databaseUrl = url;
- var indexOfDatabases = databaseUrl.IndexOf("/databases/");
+ var indexOfDatabases = databaseUrl.IndexOf("/databases/", StringComparison.Ordinal);
if (indexOfDatabases != -1)
databaseUrl = databaseUrl.Substring(0, indexOfDatabases);
if (databaseUrl.EndsWith("/") == false)
@@ -248,7 +248,7 @@ public IAsyncDatabaseCommands ForDatabase(string database)
///
public IAsyncDatabaseCommands GetRootDatabase()
{
- var indexOfDatabases = url.IndexOf("/databases/");
+ var indexOfDatabases = url.IndexOf("/databases/", StringComparison.Ordinal);
if (indexOfDatabases == -1)
return this;
diff --git a/Raven.Client.Lightweight/Connection/ServerClient.cs b/Raven.Client.Lightweight/Connection/ServerClient.cs
index ba6274aeeb4c..59621a81458d 100644
--- a/Raven.Client.Lightweight/Connection/ServerClient.cs
+++ b/Raven.Client.Lightweight/Connection/ServerClient.cs
@@ -960,7 +960,7 @@ public IDatabaseCommands With(ICredentials credentialsForSession)
public IDatabaseCommands ForDatabase(string database)
{
var databaseUrl = url;
- var indexOfDatabases = databaseUrl.IndexOf("/databases/");
+ var indexOfDatabases = databaseUrl.IndexOf("/databases/", StringComparison.Ordinal);
if (indexOfDatabases != -1)
databaseUrl = databaseUrl.Substring(0, indexOfDatabases);
if (databaseUrl.EndsWith("/") == false)
@@ -975,7 +975,7 @@ public IDatabaseCommands ForDatabase(string database)
///
public IDatabaseCommands GetRootDatabase()
{
- var indexOfDatabases = url.IndexOf("/databases/");
+ var indexOfDatabases = url.IndexOf("/databases/", StringComparison.Ordinal);
if (indexOfDatabases == -1)
return this;
diff --git a/Raven.Client.Lightweight/Document/DocumentConvention.cs b/Raven.Client.Lightweight/Document/DocumentConvention.cs
index 8227076186f4..faeab851c79a 100644
--- a/Raven.Client.Lightweight/Document/DocumentConvention.cs
+++ b/Raven.Client.Lightweight/Document/DocumentConvention.cs
@@ -162,9 +162,9 @@ public static string DefaultTypeTagName(Type t)
if(t.IsGenericType)
{
var name = t.GetGenericTypeDefinition().Name;
- if(name.Contains("`"))
+ if(name.Contains('`'))
{
- name = name.Substring(0, name.IndexOf("`"));
+ name = name.Substring(0, name.IndexOf('`'));
}
var sb = new StringBuilder(Inflector.Pluralize(name));
foreach (var argument in t.GetGenericArguments())
diff --git a/Raven.Client.Silverlight/Connection/Async/AsyncServerClient.cs b/Raven.Client.Silverlight/Connection/Async/AsyncServerClient.cs
index 99f2e1417c81..93422440f47d 100644
--- a/Raven.Client.Silverlight/Connection/Async/AsyncServerClient.cs
+++ b/Raven.Client.Silverlight/Connection/Async/AsyncServerClient.cs
@@ -85,7 +85,7 @@ public HttpJsonRequest CreateRequest(string relativeUrl, string method)
public IAsyncDatabaseCommands ForDatabase(string database)
{
var databaseUrl = url;
- var indexOfDatabases = databaseUrl.IndexOf("/databases/");
+ var indexOfDatabases = databaseUrl.IndexOf("/databases/", StringComparison.Ordinal);
if (indexOfDatabases != -1)
databaseUrl = databaseUrl.Substring(0, indexOfDatabases);
if (databaseUrl.EndsWith("/") == false)
@@ -112,7 +112,7 @@ public IAsyncDatabaseCommands With(ICredentials credentialsForSession)
///
public IAsyncDatabaseCommands GetRootDatabase()
{
- var indexOfDatabases = url.IndexOf("/databases/");
+ var indexOfDatabases = url.IndexOf("/databases/", StringComparison.Ordinal);
if (indexOfDatabases == -1)
return this;
diff --git a/Raven.Database/Linq/AbstractViewGenerator.cs b/Raven.Database/Linq/AbstractViewGenerator.cs
index 068ec0194416..a9b22479bc77 100644
--- a/Raven.Database/Linq/AbstractViewGenerator.cs
+++ b/Raven.Database/Linq/AbstractViewGenerator.cs
@@ -73,7 +73,7 @@ public bool HasWhereClause
{
if(hasWhereClause == null)
{
- hasWhereClause = ViewText.IndexOf("where", StringComparison.InvariantCultureIgnoreCase) > -1;
+ hasWhereClause = ViewText.IndexOf("where", StringComparison.OrdinalIgnoreCase) > -1;
}
return hasWhereClause.Value;
}
diff --git a/Raven.Database/Server/HttpServer.cs b/Raven.Database/Server/HttpServer.cs
index c329b00da2d8..ae8e587dbef5 100644
--- a/Raven.Database/Server/HttpServer.cs
+++ b/Raven.Database/Server/HttpServer.cs
@@ -605,12 +605,12 @@ private static void AddHttpCompressionIfClientCanAcceptIt(IHttpContext ctx)
// gzip must be first, because chrome has an issue accepting deflate data
// when sending it json text
- if ((acceptEncoding.IndexOf("gzip", StringComparison.InvariantCultureIgnoreCase) != -1))
+ if ((acceptEncoding.IndexOf("gzip", StringComparison.OrdinalIgnoreCase) != -1))
{
ctx.SetResponseFilter(s => new GZipStream(s, CompressionMode.Compress, true));
ctx.Response.AddHeader("Content-Encoding", "gzip");
}
- else if (acceptEncoding.IndexOf("deflate", StringComparison.InvariantCultureIgnoreCase) != -1)
+ else if (acceptEncoding.IndexOf("deflate", StringComparison.OrdinalIgnoreCase) != -1)
{
ctx.SetResponseFilter(s => new DeflateStream(s, CompressionMode.Compress, true));
ctx.Response.AddHeader("Content-Encoding", "deflate");
diff --git a/Raven.Database/Storage/IndexDefinitionStorage.cs b/Raven.Database/Storage/IndexDefinitionStorage.cs
index d04d06733268..4b6a67fb5210 100644
--- a/Raven.Database/Storage/IndexDefinitionStorage.cs
+++ b/Raven.Database/Storage/IndexDefinitionStorage.cs
@@ -239,7 +239,7 @@ public static void ResolveAnalyzers(IndexDefinition indexDefinition)
{
// Stick Lucene.Net's namespace to all analyzer aliases that are missing a namespace
var analyzerNames = (from analyzer in indexDefinition.Analyzers
- where analyzer.Value.IndexOf(".") == -1
+ where analyzer.Value.IndexOf('.') == -1
select analyzer).ToArray();
// Only do this for analyzer that actually exist; we do this here to be able to throw a correct error later on
diff --git a/Raven.Studio/Features/Query/ExecuteQueryCommand.cs b/Raven.Studio/Features/Query/ExecuteQueryCommand.cs
index e2d58bbdf4c8..d41de3b06d7d 100644
--- a/Raven.Studio/Features/Query/ExecuteQueryCommand.cs
+++ b/Raven.Studio/Features/Query/ExecuteQueryCommand.cs
@@ -30,7 +30,7 @@ public ExecuteQueryCommand(QueryModel model, IAsyncDatabaseCommands databaseComm
this.databaseCommands = databaseCommands;
}
- public override void Execute(object parameter)
+ public override void Execute(object _)
{
query = model.Query.Value;
ClearRecentQuery();
@@ -101,7 +101,8 @@ private void SuggestResults()
foreach (var fieldAndTerm in QueryEditor.GetCurrentFieldsAndTerms(model.Query.Value))
{
databaseCommands.SuggestAsync(model.IndexName, new SuggestionQuery {Field = fieldAndTerm.Field, Term = fieldAndTerm.Term, MaxSuggestions = 10})
- .ContinueOnSuccessInTheUIThread(result => model.Suggestions.AddRange(result.Suggestions.Select(term => new FieldAndTerm(fieldAndTerm.Field, term))));
+ .ContinueOnSuccessInTheUIThread(result => model.Suggestions.AddRange(
+ result.Suggestions.Select(term => new FieldAndTerm(fieldAndTerm.Field, fieldAndTerm.Term){SuggestedTerm = term})));
}
}
}
diff --git a/Raven.Studio/Features/Query/FieldAndTerm.cs b/Raven.Studio/Features/Query/FieldAndTerm.cs
index b09f387a7dbd..600a24aa9950 100644
--- a/Raven.Studio/Features/Query/FieldAndTerm.cs
+++ b/Raven.Studio/Features/Query/FieldAndTerm.cs
@@ -10,5 +10,6 @@ public FieldAndTerm(string field, string term)
public string Field { get; set; }
public string Term { get; set; }
+ public string SuggestedTerm { get; set; }
}
}
\ No newline at end of file
diff --git a/Raven.Studio/Features/Query/QueryView.xaml b/Raven.Studio/Features/Query/QueryView.xaml
index 170cae6c0763..f0ba123b4837 100644
--- a/Raven.Studio/Features/Query/QueryView.xaml
+++ b/Raven.Studio/Features/Query/QueryView.xaml
@@ -194,16 +194,14 @@
-
-
+
+
-
+
diff --git a/Raven.Studio/Models/HomeModel.cs b/Raven.Studio/Models/HomeModel.cs
index d130c48dcfb5..06acf30c1a17 100644
--- a/Raven.Studio/Models/HomeModel.cs
+++ b/Raven.Studio/Models/HomeModel.cs
@@ -84,7 +84,21 @@ public CreateSampleDataCommand(HomeModel model, IAsyncDatabaseCommands databaseC
public override void Execute(object parameter)
{
-
+ var enumerator = CreateSampleData().GetEnumerator();
+ if (enumerator.MoveNext() == false)
+ return;
+ ProcessTasks(enumerator);
+ }
+
+ private static Task ProcessTasks(IEnumerator enumerator)
+ {
+ return enumerator.Current.ContinueWith(task =>
+ {
+ task.Wait();//would throw on error
+ if (enumerator.MoveNext() == false)
+ return task;
+ return ProcessTasks(enumerator);
+ }).Unwrap();
}
private IEnumerable CreateSampleData()
@@ -105,26 +119,26 @@ private IEnumerable CreateSampleData()
var ravenJObject = index.Value("definition");
var putDoc = databaseCommands
.PutIndexAsync(indexName,
- ravenJObject.JsonDeserialization(),
- true);
+ ravenJObject.JsonDeserialization(),
+ true);
yield return putDoc;
}
var batch = databaseCommands.BatchAsync(
musicStoreData.Value("Docs").OfType().Select(
doc =>
- {
- var metadata = doc.Value("@metadata");
- doc.Remove("@metadata");
- return new PutCommandData
- {
- Document = doc,
- Metadata = metadata,
- Key = metadata.Value("@id"),
- };
- }).ToArray()
+ {
+ var metadata = doc.Value("@metadata");
+ doc.Remove("@metadata");
+ return new PutCommandData
+ {
+ Document = doc,
+ Metadata = metadata,
+ Key = metadata.Value("@id"),
+ };
+ }).ToArray()
);
-
+
yield return batch;
model.IsGeneratingSampleData = false;
@@ -132,7 +146,7 @@ private IEnumerable CreateSampleData()
}
}
-#endregion
+ #endregion
}
}
\ No newline at end of file
diff --git a/Raven.Studio/Models/QueryModel.cs b/Raven.Studio/Models/QueryModel.cs
index 7c4c26642680..cf0a2bfe225e 100644
--- a/Raven.Studio/Models/QueryModel.cs
+++ b/Raven.Studio/Models/QueryModel.cs
@@ -273,5 +273,32 @@ public string ViewTitle
}
public BindableCollection Suggestions { get; private set; }
+ public ICommand RepairTermInQuery
+ {
+ get { return new RepairTermInQueryCommand(this); }
+ }
+
+ private class RepairTermInQueryCommand : Command
+ {
+ private readonly QueryModel model;
+ private FieldAndTerm fieldAndTerm;
+
+ public RepairTermInQueryCommand(QueryModel model)
+ {
+ this.model = model;
+ }
+
+ public override bool CanExecute(object parameter)
+ {
+ fieldAndTerm = parameter as FieldAndTerm;
+ return fieldAndTerm != null;
+ }
+
+ public override void Execute(object parameter)
+ {
+ model.Query.Value = model.Query.Value.Replace(fieldAndTerm.Term, fieldAndTerm.SuggestedTerm);
+ model.Execute.Execute(null);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Raven.Tests/IndexQueryUrl.cs b/Raven.Tests/IndexQueryUrl.cs
index 4359b65f0da1..61fbd7cb2d97 100644
--- a/Raven.Tests/IndexQueryUrl.cs
+++ b/Raven.Tests/IndexQueryUrl.cs
@@ -150,7 +150,7 @@ private static IndexQuery EncodeAndDecodeIndexQuery(IndexQuery query)
// indexQueryUrl is in the form "/path?querystring#anchor"
- string indexQueryQuerystring = indexQueryUrl.Substring(indexQueryUrl.IndexOf("?")+1);
+ string indexQueryQuerystring = indexQueryUrl.Substring(indexQueryUrl.IndexOf('?') + 1);
int indexOfPoint = indexQueryQuerystring.IndexOf('#');
if (indexOfPoint != -1)