-
-
Test SqlServer
+
Test SqlServer
Read SqlDB
-
Test MongoDb
+
Test MongoDb
Read MongoDB
diff --git a/MP-Site/test.aspx.cs b/MP-Site/test.aspx.cs
index 46ae25b2..c1239b48 100644
--- a/MP-Site/test.aspx.cs
+++ b/MP-Site/test.aspx.cs
@@ -1,7 +1,5 @@
using MapoDb;
-using SteamWare;
using System;
-using System.Collections.Generic;
namespace MP_SITE
{
@@ -20,17 +18,21 @@ namespace MP_SITE
private void setupData()
{
txtData.Text = DateTime.Now.AddDays(-90).ToString("yyy-MM-dd");
+ txtNumDays.Text = "7";
}
protected void lbtConvertData_Click(object sender, EventArgs e)
{
// effettuo lettura dati FluxLog
DateTime dataRif = DateTime.Now;
- DateTime.TryParse(txtData.Text, out dataRif);
- FluxArchive.man.trasferData(dataRif);
- // converto
+ int numDays = 7;
+ bool fatto = false;
+ fatto = DateTime.TryParse(txtData.Text, out dataRif);
+ fatto = int.TryParse(txtNumDays.Text, out numDays);
- // salvo su mongoDB!
+ var esito = FluxArchive.man.trasferData(dataRif, numDays);
+ // registro tempo!
+ lblOutConvers.Text = esito.message;
}
}
}
diff --git a/MP-Site/test.aspx.designer.cs b/MP-Site/test.aspx.designer.cs
index 4dd52ad7..1ce09519 100644
--- a/MP-Site/test.aspx.designer.cs
+++ b/MP-Site/test.aspx.designer.cs
@@ -23,6 +23,15 @@ namespace MP_SITE
///
protected global::System.Web.UI.WebControls.TextBox txtData;
+ ///
+ /// Controllo txtNumDays.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtNumDays;
+
///
/// Controllo lbtConvertData.
///
@@ -32,6 +41,15 @@ namespace MP_SITE
///
protected global::System.Web.UI.WebControls.LinkButton lbtConvertData;
+ ///
+ /// Controllo lblOutConvers.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblOutConvers;
+
///
/// Controllo lbtReadDb.
///
diff --git a/MapoDb/FluxArchive.cs b/MapoDb/FluxArchive.cs
index 43126867..e08f2bc5 100644
--- a/MapoDb/FluxArchive.cs
+++ b/MapoDb/FluxArchive.cs
@@ -1,14 +1,42 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using MapoSDK;
-using MongoDB.Bson;
+using MapoSDK;
using MongoDB.Driver;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
namespace MapoDb
{
+ /**************************************************************
+ * Classe gestione FluxLog
+ *
+ * automaticamente gestisce dati su SqlServer / Redis (+recenti)
+ * oppure su MongoDB (+ vecchi)
+ *
+ * rif x mongoDB
+ *
+ * rif x windows setup (abilitazione firewall, remote access, auth...)
+ *
+ * https://docs.mongodb.com/manual/tutorial/configure-windows-netsh-firewall/
+ * https://www.configserverfirewall.com/mongodb/mongodb-allow-remote-connections/
+ * https://www.shellhacks.com/mongodb-allow-remote-access/
+ * https://stackoverflow.com/questions/3891657/setup-mongodb-on-windows-server-2008
+ *
+ * (conf file in C:\Program Files\MongoDB\Server\4.2\bin)
+ *
+ *
+ * test rilettura: https://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb
+ * https://studio3t.com/knowledge-base/articles/mongodb-find-method/
+ * https://github.com/mongodb/mongo-csharp-driver
+ * http://www.binaryheap.com/tech/time-series-data-in-mongodb/
+ * https://www.codeproject.com/Tips/760099/Resampling-and-merging-time-series-data-using-LINQ
+ * https://docs.microsoft.com/it-it/aspnet/core/tutorials/first-mongo-app?view=aspnetcore-3.0&tabs=visual-studio
+ * https://www.codementor.io/pmbanugo/working-with-mongodb-in-net-1-basics-g4frivcvz
+ * https://www.codementor.io/pmbanugo/working-with-mongodb-in-net-2-retrieving-mrlbeanm5
+ * https://www.codementor.io/pmbanugo/working-with-mongodb-in-net-part-3-skip-sort-limit-and-projections-oqfwncyka
+ *************************************************************/
+
+
///
/// Classe che si occupa di gestire i dati di flusso
/// - i dati inizialmente sono in REDIS e DB quando accumulati da IOB
@@ -16,7 +44,8 @@ namespace MapoDb
///
public class FluxArchive
{
- string mdbConnString = "mongodb://localhost:27017";
+ string mdbConnString = "mongodb://W2019-MONGODB:27017";
+ //string mdbConnString = "mongodb://localhost:27017";
MongoClient client;
IMongoDatabase database;
public FluxArchive()
@@ -30,9 +59,13 @@ namespace MapoDb
///
/// Effettua il trasferimento dati da SqlDB a MongoDB
///
- ///
- public void trasferData(DateTime data2transfer)
+ ///
data di aprtenza
+ ///
num giorni da trasferire
+ public exeResult trasferData(DateTime data2transfer, int numDays)
{
+ exeResult answ = new exeResult();
+ StringBuilder sb = new StringBuilder();
+ Stopwatch sw = new Stopwatch();
// Oggetto dove verserò i dati
List
listaRecords = new List();
tsGrouped currRecord = null;
@@ -44,7 +77,11 @@ namespace MapoDb
string currFlux = "";
string currMacc = "";
// leggo da DB i records...
- var tabDati = DataLayer.obj.taFL.getFilt("", data2transfer, data2transfer.AddDays(7), true);
+ sw.Start();
+ sb.AppendLine($"Inizio processing periodo {data2transfer} --> {data2transfer.AddDays(numDays)}");
+ var tabDati = DataLayer.obj.taFL.getFilt("", data2transfer, data2transfer.AddDays(numDays), true);
+ sb.AppendLine($"Effettuata lettura DB: {tabDati.Count} record in {sw.ElapsedMilliseconds / 1000} sec");
+ sw.Restart();
// ora converto...
// faccio ciclo su 24 h...
for (int i = 0; i < 24; i++)
@@ -94,20 +131,18 @@ namespace MapoDb
{
listaRecords.Add(currRecord);
}
+ sb.AppendLine($"Generata collezione di {listaRecords.Count} record in {sw.ElapsedMilliseconds / 1000} sec");
+ sw.Restart();
// oggetto gestione dati ts raggruppati
var collection = database.GetCollection("FluxLog");
// salvo in blocco
collection.InsertMany(listaRecords);
+ sb.AppendLine($"Salvata su MongoDb collezione di {listaRecords.Count} record in {sw.ElapsedMilliseconds / 1000} sec");
- // test rilettura: https://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb
- // https://studio3t.com/knowledge-base/articles/mongodb-find-method/
- // https://github.com/mongodb/mongo-csharp-driver
- // http://www.binaryheap.com/tech/time-series-data-in-mongodb/
- // https://www.codeproject.com/Tips/760099/Resampling-and-merging-time-series-data-using-LINQ
- // https://docs.microsoft.com/it-it/aspnet/core/tutorials/first-mongo-app?view=aspnetcore-3.0&tabs=visual-studio
- // https://www.codementor.io/pmbanugo/working-with-mongodb-in-net-1-basics-g4frivcvz
- // https://www.codementor.io/pmbanugo/working-with-mongodb-in-net-2-retrieving-mrlbeanm5
- // https://www.codementor.io/pmbanugo/working-with-mongodb-in-net-part-3-skip-sort-limit-and-projections-oqfwncyka
+ // restituisco messaggio...
+ answ.esito = esitoExec.ok;
+ answ.message = sb.ToString();
+ return answ;
}
}
}
diff --git a/MapoSDK/Enums.cs b/MapoSDK/Enums.cs
index 97f46058..27b3f01b 100644
--- a/MapoSDK/Enums.cs
+++ b/MapoSDK/Enums.cs
@@ -59,6 +59,15 @@
week,
month
}
+ ///
+ /// Tipo di esito (generico)
+ ///
+ public enum esitoExec
+ {
+ undone,
+ ok,
+ error
+ }
///
/// Elenco task ammessi (x IOB-WIN da eseguire...)
diff --git a/MapoSDK/Objects.cs b/MapoSDK/Objects.cs
index b1010e6f..107606a8 100644
--- a/MapoSDK/Objects.cs
+++ b/MapoSDK/Objects.cs
@@ -316,6 +316,21 @@ namespace MapoSDK
///
public List samples { get; set; }
}
+ ///
+ /// Classe x inviare messaggi di tipo esecuzione di una generica esecuzione
+ ///
+ public class exeResult
+ {
+ ///
+ /// Esito del risultato
+ ///
+ [JsonConverter(typeof(StringEnumConverter))]
+ public esitoExec esito { get; set; } = esitoExec.undone;
+ ///
+ /// Messaggio associato
+ ///
+ public string message { get; set; } = "";
+ }
#endregion