554 lines
26 KiB
C#
554 lines
26 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Xml;
|
|
using System.Reflection;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace XMLExtractor
|
|
{
|
|
public class Table
|
|
{
|
|
public int idCapitolo { get; set; }
|
|
public int idSezione { get; set; }
|
|
public int idOrdinamento { get; set; }
|
|
public int idPagina { get; set; }
|
|
public string posizione { get; set; }
|
|
}
|
|
|
|
public class TableEvoluzione: Table
|
|
{
|
|
public List<string> columns { get; set; }
|
|
public List<Rows> rows { get; set; }
|
|
public List<Nota> note { get; set; }
|
|
|
|
// NEW
|
|
public string descrizione { get; set; }
|
|
public List<Legenda> legenda { get; set; }
|
|
|
|
public int writeColumns(SqlConnection conn)
|
|
{
|
|
string sqlCommand = "(idREP_IMM_MON_Column, column1, column2, column3, column4, column5) "
|
|
+ "VALUES (@idREP_IMM_MON_Column, @column1, @column2, @column3, @column4, @column5) ";
|
|
|
|
int primarykey = Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_Columns", conn)).ExecuteScalar()) + 1;
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_Columns " + sqlCommand, conn);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Column", primarykey);
|
|
for (int i = 1; i <= 5; i++ )
|
|
if (i <= this.columns.Count)
|
|
insertTo.Parameters.AddWithValue("@column" + i,this.columns[i - 1]);
|
|
else
|
|
insertTo.Parameters.AddWithValue("@column" + i, DBNull.Value);
|
|
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
|
|
|
|
if (rowsUpdatedInserted != 0)
|
|
return primarykey;
|
|
return 0;
|
|
}
|
|
|
|
public void writeDB(SqlConnection conn)
|
|
{
|
|
string sqlCommand = "(idREP_IMM_MON_TableEvoluzione, idREP_IMM_MON_Pagina, idREP_IMM_MON_Column, descrizione, posizione, nota1, nota2, nota3, idREP_IMM_MON_Legenda) "
|
|
+ "VALUES (@idREP_IMM_MON_TableEvoluzione, @idREP_IMM_MON_Pagina, @idREP_IMM_MON_Column, @descrizione, @posizione, @nota1, @nota2, @nota3, @idREP_IMM_MON_Legenda) ";
|
|
|
|
int primaryKey = Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_TableEvoluzione", conn)).ExecuteScalar()) + 1;
|
|
int idColumn = writeColumns(conn);
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_TableEvoluzione " + sqlCommand, conn);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_TableEvoluzione", primaryKey);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Pagina", this.idPagina);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Column", idColumn);
|
|
insertTo.Parameters.AddWithValue("@descrizione", this.descrizione);
|
|
insertTo.Parameters.AddWithValue("@posizione", this.posizione);
|
|
if(Legenda.writeDB(conn, this.legenda) != 0 )
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Legenda", Legenda.writeDB(conn, this.legenda));
|
|
else
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Legenda", DBNull.Value);
|
|
|
|
for (int i = 1; i <= 3; i++)
|
|
{
|
|
if (this.note != null && i <= this.note.Count)
|
|
insertTo.Parameters.AddWithValue("@nota" + i, note[i-1].valore);
|
|
else
|
|
insertTo.Parameters.AddWithValue("@nota" + i, DBNull.Value);
|
|
}
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
if (rowsUpdatedInserted != 0)
|
|
foreach(var row in this.rows)
|
|
row.writeDB(conn, idColumn);
|
|
}
|
|
|
|
public List<string> getProperties()
|
|
{
|
|
List<string> properties = new List<string>();
|
|
TableEvoluzione objectChart = new TableEvoluzione();
|
|
foreach (var prop in objectChart.GetType().GetProperties())
|
|
{
|
|
properties.Add(prop.Name.ToLower());
|
|
}
|
|
|
|
properties.Remove("idcapitolo");
|
|
properties.Remove("idsezione");
|
|
properties.Remove("idordinamento");
|
|
return properties;
|
|
}
|
|
|
|
public static void writeTableEvoluzione(XmlNode attribute, List<string> tagList, string nextTag, Data data)
|
|
{
|
|
List<string> stringValueList = new List<string>();
|
|
List<TableEvoluzione.Rows> rowsList = new List<TableEvoluzione.Rows>();
|
|
List<Nota> noteList = new List<Nota>();
|
|
TableEvoluzione tableEvoluzione = new TableEvoluzione();
|
|
foreach (XmlNode attr in attribute.ChildNodes)
|
|
if (!tagList.Contains(attr.Name.ToString()))
|
|
{
|
|
PropertyInfo propertyInfo = tableEvoluzione.GetType().GetProperty(attr.Name);
|
|
if (propertyInfo.PropertyType.Name.Equals("String"))
|
|
propertyInfo.SetValue(tableEvoluzione, Convert.ChangeType(attr.InnerText, propertyInfo.PropertyType), null);
|
|
else if(attr.Name.Equals("legenda"))
|
|
propertyInfo.SetValue(tableEvoluzione, Convert.ChangeType(Legenda.getLegenda(attr), propertyInfo.PropertyType), null);
|
|
else
|
|
{
|
|
foreach (XmlNode innerAttr in attr.ChildNodes)
|
|
{
|
|
switch (innerAttr.Name)
|
|
{
|
|
case "column":
|
|
stringValueList.Add(innerAttr.InnerXml.ToString());
|
|
break;
|
|
case "row":
|
|
foreach (XmlNode column in innerAttr.ChildNodes)
|
|
{
|
|
TableEvoluzione.Rows rows = new TableEvoluzione.Rows();
|
|
stringValueList = new List<string>();
|
|
foreach (XmlNode _row in column)
|
|
stringValueList.Add(_row.InnerText);
|
|
rows.row = stringValueList;
|
|
rowsList.Add(rows);
|
|
}
|
|
break;
|
|
case "nota":
|
|
Nota nota = new Nota();
|
|
foreach (XmlNode row in innerAttr.ChildNodes)
|
|
{
|
|
PropertyInfo propertyInfoNota = nota.GetType().GetProperty(row.Name);
|
|
propertyInfoNota.SetValue(nota, Convert.ChangeType(row.InnerXml.ToString(), propertyInfoNota.PropertyType), null);
|
|
}
|
|
noteList.Add(nota);
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch (attr.Name)
|
|
{
|
|
case "columns":
|
|
propertyInfo.SetValue(tableEvoluzione, Convert.ChangeType(stringValueList, propertyInfo.PropertyType), null);
|
|
break;
|
|
case "rows":
|
|
propertyInfo.SetValue(tableEvoluzione, Convert.ChangeType(rowsList, propertyInfo.PropertyType), null);
|
|
break;
|
|
case "note":
|
|
propertyInfo.SetValue(tableEvoluzione, Convert.ChangeType(noteList, propertyInfo.PropertyType), null);
|
|
break;
|
|
}
|
|
|
|
|
|
stringValueList = new List<string>();
|
|
}
|
|
|
|
}
|
|
tableEvoluzione.idCapitolo = ReadXML.idCapitolo;
|
|
tableEvoluzione.idSezione = ReadXML.idSezione;
|
|
tableEvoluzione.idOrdinamento = ReadXML.idOrdinamento;
|
|
tableEvoluzione.idPagina = ReadXML.idPagina;
|
|
ReadXML.idOrdinamento++;
|
|
data.tableEvoluzioneList.Add(tableEvoluzione);
|
|
}
|
|
|
|
public class Rows {
|
|
public List<string> row { get; set; }
|
|
|
|
public void writeDB(SqlConnection conn)
|
|
{
|
|
string sqlCommand = "(idREP_IMM_MON_Row, row1, row2, row3, row4, row5) VALUES "
|
|
+ "(@idREP_IMM_MON_Row, @row1, @row2, @row3, @row4, @row5)";
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_Rows " + sqlCommand, conn);
|
|
int primaryKey = Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_Rows", conn)).ExecuteScalar()) + 1;
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Row", primaryKey);
|
|
for (int i = 1; i <= 5; i++)
|
|
{
|
|
if (this.row != null && (i-1) < this.row.Count)
|
|
insertTo.Parameters.AddWithValue("@row" + i, row[i-1]);
|
|
else
|
|
insertTo.Parameters.AddWithValue("@row" + i, DBNull.Value);
|
|
}
|
|
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
}
|
|
|
|
public void writeDB(SqlConnection conn, int idColumn)
|
|
{
|
|
string sqlCommand = "(idREP_IMM_MON_Row, idREP_IMM_MON_Column, row1, row2, row3, row4, row5) VALUES "
|
|
+ "(@idREP_IMM_MON_Row, @idColumn, @row1, @row2, @row3, @row4, @row5)";
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_Rows " + sqlCommand, conn);
|
|
int primaryKey = Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_Rows", conn)).ExecuteScalar()) + 1;
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Row", primaryKey);
|
|
insertTo.Parameters.AddWithValue("@idColumn", idColumn);
|
|
for (int i = 1; i <= 5; i++)
|
|
{
|
|
if (this.row != null && (i - 1) < this.row.Count)
|
|
insertTo.Parameters.AddWithValue("@row" + i, row[i - 1]);
|
|
else
|
|
insertTo.Parameters.AddWithValue("@row" + i, DBNull.Value);
|
|
}
|
|
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public class TableImposta : Table
|
|
{
|
|
public List<Rows> row { get; set; }
|
|
|
|
public int writeColumns(SqlConnection conn, List<string> columns)
|
|
{
|
|
string sqlCommand = "(idREP_IMM_MON_Column, column1, column2, column3, column4, column5) "
|
|
+ "VALUES (@idREP_IMM_MON_Column, @column1, @column2, @column3, @column4, @column5) ";
|
|
|
|
int primarykey = Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_Columns", conn)).ExecuteScalar()) + 1;
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_Columns " + sqlCommand, conn);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Column", primarykey);
|
|
for (int i = 1; i <= 5; i++)
|
|
if (i <= columns.Count)
|
|
insertTo.Parameters.AddWithValue("@column" + i, columns[i - 1]);
|
|
else
|
|
insertTo.Parameters.AddWithValue("@column" + i, DBNull.Value);
|
|
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
|
|
|
|
if (rowsUpdatedInserted != 0)
|
|
return primarykey;
|
|
return 0;
|
|
}
|
|
|
|
public void writeDB(SqlConnection conn)
|
|
{
|
|
List<string> columns = new List<string>();
|
|
columns.Add("Imposta");
|
|
columns.Add("Acconto (o versamento intera imposta)");
|
|
columns.Add("Saldo");
|
|
|
|
string sqlCommand = "(idREP_IMM_MON_TableImposta, idREP_IMM_MON_Pagina, idREP_IMM_MON_Column) "
|
|
+ "VALUES (@idREP_IMM_MON_TableImposta, @idREP_IMM_MON_Pagina, @idREP_IMM_MON_Column) ";
|
|
|
|
int primarykey = Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_TableImposta", conn)).ExecuteScalar()) + 1;
|
|
int idColumn = writeColumns(conn, columns);
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_TableImposta " + sqlCommand, conn);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_TableImposta", primarykey);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Pagina", this.idPagina);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Column", idColumn);
|
|
|
|
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
|
|
if (rowsUpdatedInserted != 0)
|
|
foreach (var item in this.row)
|
|
item.writeDB(conn, idColumn);
|
|
|
|
}
|
|
|
|
public List<string> getProperties()
|
|
{
|
|
List<string> properties = new List<string>();
|
|
TableImposta objectChart = new TableImposta();
|
|
foreach (var prop in objectChart.GetType().GetProperties())
|
|
{
|
|
properties.Add(prop.Name.ToLower());
|
|
}
|
|
|
|
properties.Remove("idcapitolo");
|
|
properties.Remove("idsezione");
|
|
properties.Remove("idordinamento");
|
|
properties.Remove("idpagina");
|
|
return properties;
|
|
}
|
|
|
|
public class Rows
|
|
{
|
|
public List<string> row { get; set; }
|
|
|
|
public void writeDB(SqlConnection conn, int idColumn)
|
|
{
|
|
string sqlCommand = "(idREP_IMM_MON_Row, idREP_IMM_MON_Column, row1, row2, row3, row4, row5) VALUES "
|
|
+ "(@idREP_IMM_MON_Row, @idColumn, @row1, @row2, @row3, @row4, @row5)";
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_Rows " + sqlCommand, conn);
|
|
int primaryKey = Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_Rows", conn)).ExecuteScalar()) + 1;
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Row", primaryKey);
|
|
insertTo.Parameters.AddWithValue("@idColumn", idColumn);
|
|
for (int i = 1; i <= 5; i++)
|
|
{
|
|
if (this.row != null && (i - 1) < this.row.Count)
|
|
insertTo.Parameters.AddWithValue("@row" + i, row[i - 1]);
|
|
else
|
|
insertTo.Parameters.AddWithValue("@row" + i, DBNull.Value);
|
|
}
|
|
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
|
|
public static void writeTableImposta(XmlNode attribute, List<string> tagList, string nextTag, Data data)
|
|
{
|
|
List<string> stringValueList = new List<string>();
|
|
List<string> propertiesList = new List<string>();
|
|
List<TableImposta.Rows> rowsList = new List<TableImposta.Rows>();
|
|
TableImposta tableImposta = new TableImposta();
|
|
propertiesList = tableImposta.getProperties();
|
|
foreach (XmlNode attr in attribute.ChildNodes)
|
|
if (!tagList.Contains(attr.Name.ToString()))
|
|
{
|
|
PropertyInfo propertyInfo = tableImposta.GetType().GetProperty(attr.Name);
|
|
if (propertyInfo.PropertyType.Name.Equals("String"))
|
|
propertyInfo.SetValue(tableImposta, Convert.ChangeType(attr.InnerText, propertyInfo.PropertyType), null);
|
|
else
|
|
{
|
|
TableImposta.Rows rows = new TableImposta.Rows();
|
|
stringValueList = new List<string>();
|
|
foreach (XmlNode innerAttr in attr.ChildNodes)
|
|
stringValueList.Add(innerAttr.InnerText);
|
|
rows.row = stringValueList;
|
|
rowsList.Add(rows);
|
|
}
|
|
if (attr.NextSibling == null)
|
|
propertyInfo.SetValue(tableImposta, Convert.ChangeType(rowsList, propertyInfo.PropertyType), null);
|
|
}
|
|
|
|
tableImposta.idCapitolo = ReadXML.idCapitolo;
|
|
tableImposta.idSezione = ReadXML.idSezione;
|
|
tableImposta.idOrdinamento = ReadXML.idOrdinamento;
|
|
tableImposta.idPagina = ReadXML.idPagina;
|
|
ReadXML.idOrdinamento++;
|
|
data.tableImpostaList.Add(tableImposta);
|
|
}
|
|
|
|
}
|
|
|
|
public class TableCittaPrincipali : Table
|
|
{
|
|
public List<RowCittaPrincipali> row { get; set; }
|
|
|
|
|
|
// NEW
|
|
public string descrizione { get; set; }
|
|
public List<Legenda> legenda { get; set; }
|
|
|
|
public void writeCittaPrincipali(SqlConnection conn, int primarykey)
|
|
{
|
|
string sqlCommand = "(idREP_IMM_MON_CittaPrincipale, idREP_IMM_MON_TableCittaPrincipale, citta, trend, centroMedioAcquisto, "
|
|
+ "periferiaMedioAcquisto, centroMedioAffitto, periferiaMedioAffitto, centroRedditoMedio, periferiaRedditoMedio) "
|
|
+ "VALUES (@idREP_IMM_MON_CittaPrincipale, @idREP_IMM_MON_TableCittaPrincipale, @citta, @trend, @centroMedioAcquisto, "
|
|
+ "@periferiaMedioAcquisto, @centroMedioAffitto, @periferiaMedioAffitto, @centroRedditoMedio, @periferiaRedditoMedio)";
|
|
|
|
foreach (var item in this.row)
|
|
{
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_CittaPrincipali " + sqlCommand, conn);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_TableCittaPrincipale", primarykey);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_CittaPrincipale", Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_CittaPrincipali", conn)).ExecuteScalar()) + 1);
|
|
insertTo.Parameters.AddWithValue("@citta", item.citta);
|
|
insertTo.Parameters.AddWithValue("@trend", item.trendVivacita);
|
|
insertTo.Parameters.AddWithValue("@centroMedioAcquisto", item.prezzoMedioAcquisto.centro);
|
|
insertTo.Parameters.AddWithValue("@periferiaMedioAcquisto", item.prezzoMedioAcquisto.periferia);
|
|
insertTo.Parameters.AddWithValue("@centroMedioAffitto", item.prezzoMedioAffitto.centro);
|
|
insertTo.Parameters.AddWithValue("@periferiaMedioAffitto", item.prezzoMedioAffitto.periferia);
|
|
insertTo.Parameters.AddWithValue("@centroRedditoMedio", item.redditivitaMedia.centro);
|
|
insertTo.Parameters.AddWithValue("@periferiaRedditoMedio", item.redditivitaMedia.periferia);
|
|
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
public void writeDB(SqlConnection conn)
|
|
{
|
|
string sqlCommand = "(idREP_IMM_MON_TableCittaPrincipale, idREP_IMM_MON_Pagina, descrizione, posizione, idREP_IMM_MON_Legenda) "
|
|
+ "VALUES (@idREP_IMM_MON_TableCittaPrincipale, @idREP_IMM_MON_Pagina, @descrizione, @posizione, @idREP_IMM_MON_Legenda) ";
|
|
|
|
int primaryKey = Convert.ToInt32((new SqlCommand("SELECT count(*) from REP_IMM_MON_TableCittaPrincipali", conn)).ExecuteScalar()) + 1;
|
|
SqlCommand insertTo = new SqlCommand("INSERT INTO REP_IMM_MON_TableCittaPrincipali " + sqlCommand, conn);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Pagina", this.idPagina);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_TableCittaPrincipale", primaryKey);
|
|
insertTo.Parameters.AddWithValue("@descrizione", this.descrizione);
|
|
insertTo.Parameters.AddWithValue("@posizione", this.posizione);
|
|
insertTo.Parameters.AddWithValue("@idREP_IMM_MON_Legenda", Legenda.writeDB(conn, this.legenda));
|
|
|
|
int rowsUpdatedInserted = insertTo.ExecuteNonQuery();
|
|
if (rowsUpdatedInserted != 0)
|
|
writeCittaPrincipali(conn, primaryKey);
|
|
}
|
|
|
|
public List<string> getProperties()
|
|
{
|
|
List<string> properties = new List<string>();
|
|
TableCittaPrincipali objectChart = new TableCittaPrincipali();
|
|
foreach (var prop in objectChart.GetType().GetProperties())
|
|
{
|
|
properties.Add(prop.Name.ToLower());
|
|
}
|
|
|
|
properties.Remove("idcapitolo");
|
|
properties.Remove("idsezione");
|
|
properties.Remove("idordinamento");
|
|
properties.Remove("idpagina");
|
|
return properties;
|
|
}
|
|
|
|
|
|
public static void writeCittaPrincipali(XmlNode attribute, List<string> tagList, string nextTag, Data data)
|
|
{
|
|
List<Legenda> legendaList = new List<Legenda>();
|
|
TableCittaPrincipali tableCittaPrincipali = new TableCittaPrincipali();
|
|
List<String> tableCittaPrincipaliAttributes = tableCittaPrincipali.getProperties();
|
|
List<RowCittaPrincipali> rowList = new List<RowCittaPrincipali>();
|
|
|
|
foreach (XmlNode attr in attribute.ChildNodes)
|
|
if (!tagList.Contains(attr.Name.ToString()))
|
|
{
|
|
PropertyInfo propertyInfo = tableCittaPrincipali.GetType().GetProperty(attr.Name);
|
|
|
|
if (!attr.Name.Equals("row") && !attr.Name.ToLower().Equals("legenda"))
|
|
{
|
|
tableCittaPrincipaliAttributes.Remove(Utility.RemoveDiacritics(attr.Name.ToLower()));
|
|
propertyInfo.SetValue(tableCittaPrincipali, Convert.ChangeType(attr.InnerText, propertyInfo.PropertyType), null);
|
|
}
|
|
else if (attr.Name.ToLower().Equals("legenda"))
|
|
{
|
|
legendaList = Legenda.getLegenda(attr);
|
|
propertyInfo = tableCittaPrincipali.GetType().GetProperty(attr.Name);
|
|
propertyInfo.SetValue(tableCittaPrincipali, Convert.ChangeType(legendaList, propertyInfo.PropertyType), null);
|
|
|
|
}
|
|
|
|
else
|
|
rowList.Add(RowCittaPrincipali.getRowCittaPrincipali(attr));
|
|
|
|
tableCittaPrincipaliAttributes.Remove(Utility.RemoveDiacritics(attr.Name.ToLower()));
|
|
|
|
if (tableCittaPrincipaliAttributes.Count > 0 && attr.NextSibling.Name.Equals("legenda"))
|
|
{
|
|
propertyInfo.SetValue(tableCittaPrincipali, Convert.ChangeType(rowList, propertyInfo.PropertyType), null);
|
|
tableCittaPrincipaliAttributes.Remove(Utility.RemoveDiacritics(attr.Name.ToLower()));
|
|
}
|
|
|
|
if (!(tableCittaPrincipaliAttributes.Count > 0))
|
|
{
|
|
tableCittaPrincipali.idCapitolo = ReadXML.idCapitolo;
|
|
tableCittaPrincipali.idSezione = ReadXML.idSezione;
|
|
tableCittaPrincipali.idOrdinamento = ReadXML.idOrdinamento;
|
|
tableCittaPrincipali.idPagina = ReadXML.idPagina;
|
|
ReadXML.idOrdinamento++;
|
|
data.cityList.Add(tableCittaPrincipali);
|
|
tableCittaPrincipali = new TableCittaPrincipali();
|
|
tableCittaPrincipaliAttributes = tableCittaPrincipali.getProperties();
|
|
}
|
|
}
|
|
else ReadXML.extractTag(attr, attr.Name.ToString());
|
|
}
|
|
|
|
}
|
|
|
|
public class RowCittaPrincipali {
|
|
public string citta { get; set; }
|
|
public string trendVivacita { get; set; }
|
|
public PrezzoMedio prezzoMedioAcquisto { get; set; }
|
|
public PrezzoMedio prezzoMedioAffitto { get; set; }
|
|
public PrezzoMedio redditivitaMedia { get; set; }
|
|
|
|
public List<string> getProperties()
|
|
{
|
|
List<string> properties = new List<string>();
|
|
RowCittaPrincipali objectChart = new RowCittaPrincipali();
|
|
foreach (var prop in objectChart.GetType().GetProperties())
|
|
{
|
|
properties.Add(prop.Name.ToLower());
|
|
}
|
|
|
|
properties.Remove("idcapitolo");
|
|
properties.Remove("idsezione");
|
|
properties.Remove("idordinamento");
|
|
properties.Remove("idpagina");
|
|
return properties;
|
|
}
|
|
|
|
public static RowCittaPrincipali getRowCittaPrincipali(XmlNode attribute)
|
|
{
|
|
RowCittaPrincipali row = new RowCittaPrincipali();
|
|
foreach (XmlNode attr in attribute.ChildNodes)
|
|
{
|
|
PropertyInfo propertyInfo = row.GetType().GetProperty(Utility.RemoveDiacritics(attr.Name));
|
|
if (propertyInfo.PropertyType.Name.Equals("String"))
|
|
propertyInfo.SetValue(row, Convert.ChangeType(translateStringInSymbol(attr.InnerText), propertyInfo.PropertyType), null);
|
|
else
|
|
propertyInfo.SetValue(row, Convert.ChangeType(PrezzoMedio.getPrezzoMedio(attr), propertyInfo.PropertyType), null);
|
|
}
|
|
return row;
|
|
}
|
|
|
|
public static string translateStringInSymbol(string trend) {
|
|
string result = "";
|
|
switch (trend) {
|
|
case "=":
|
|
result = "horizontalArrow.png";
|
|
break;
|
|
case "-":
|
|
result = "downArrow.png";
|
|
break;
|
|
case "+":
|
|
result = "upArrow.png";
|
|
break;
|
|
default:
|
|
result = trend;
|
|
break;
|
|
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public class PrezzoMedio {
|
|
public string centro { get; set; }
|
|
public string periferia { get; set; }
|
|
|
|
public List<string> getProperties()
|
|
{
|
|
List<string> properties = new List<string>();
|
|
PrezzoMedio objectChart = new PrezzoMedio();
|
|
foreach (var prop in objectChart.GetType().GetProperties())
|
|
{
|
|
properties.Add(prop.Name.ToLower());
|
|
}
|
|
|
|
properties.Remove("idcapitolo");
|
|
properties.Remove("idsezione");
|
|
properties.Remove("idordinamento");
|
|
properties.Remove("idpagina");
|
|
return properties;
|
|
}
|
|
|
|
public static PrezzoMedio getPrezzoMedio(XmlNode attribute)
|
|
{
|
|
PrezzoMedio prezzoMedio = new PrezzoMedio();
|
|
foreach (XmlNode attr in attribute.ChildNodes)
|
|
{
|
|
PropertyInfo propertyInfo = prezzoMedio.GetType().GetProperty(Utility.RemoveDiacritics(attr.Name.ToLower()));
|
|
propertyInfo.SetValue(prezzoMedio, Convert.ChangeType(attr.InnerText, propertyInfo.PropertyType), null);
|
|
}
|
|
return prezzoMedio;
|
|
}
|
|
}
|
|
}
|