-
Notifications
You must be signed in to change notification settings - Fork 0
/
HtmlDataBase.cs
151 lines (115 loc) · 4.75 KB
/
HtmlDataBase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Moteur_de_Recherche;
namespace robot
{
public class HtmlDataBase
{
private TableLink m_tableLink;
private TableEmail m_tableEmail;
private TableH1 m_tableH1;
private TableH2 m_tableH2;
private TableUnvisited m_tableUnvisited;
private TableMeta m_tableMeta;
private TableError m_tableError;
private WebStatDataContext m_dataBase;
public HtmlDataBase()
{
m_dataBase = new WebStatDataContext();
}
public void DropHtmlObjectInDataBase(ref List<Html> htmlObjects)
{
int total = htmlObjects.Count;
for (int c = 0; c < total; c++)
{
//----TableLink----
m_tableLink = new TableLink { Link = htmlObjects[0].Link, Title = htmlObjects[0].Title, VisiteDate = htmlObjects[0].VisiteDate };
m_dataBase.TableLink.InsertOnSubmit(m_tableLink);
m_dataBase.SubmitChanges();
// breakpoint
string link = htmlObjects[0].Link;
var req = m_dataBase.TableLink.Where(l => l.Link == link).Take(1);
int linkId = req.First().Id;
//----TableH1----
for (int i = 0; i < htmlObjects[0].ListH1.Count; i++)
{
m_tableH1 = new TableH1 { IdLink = linkId, InnerText = htmlObjects[0].ListH1[i] };
m_dataBase.TableH1.InsertOnSubmit(m_tableH1);
}
//----TableH2----
for (int i = 0; i < htmlObjects[0].ListH2.Count; i++)
{
m_tableH2 = new TableH2 { IdLink = linkId, InnerText = htmlObjects[0].ListH2[i] };
m_dataBase.TableH2.InsertOnSubmit(m_tableH2);
}
//----TableMeta----
for (int i = 0; i < htmlObjects[0].ListMeta.Count; i++)
{
m_tableMeta = new TableMeta { IdLink = linkId, InnerText = htmlObjects[0].ListMeta[i].Content, Name = htmlObjects[0].ListMeta[i].Name };
m_dataBase.TableMeta.InsertOnSubmit(m_tableMeta);
}
//----TableEmail----
for (int i = 0; i < htmlObjects[0].Email.Count; i++)
{
m_tableEmail = new TableEmail { IdLink = linkId, Address = htmlObjects[0].Email[i] };
m_dataBase.TableEmail.InsertOnSubmit(m_tableEmail);
}
htmlObjects.RemoveAt(0);
}
WebLink.LinkVisited.Clear();
htmlObjects.Clear();
m_dataBase.SubmitChanges();
}
public void DropErrorInDataBase()
{
int total = WebLink.LinkCauseError.Count;
for (int i = 0; i < total; i++)
{
//----TableError----
m_tableError = new TableError { Link = WebLink.LinkCauseError[0].Link, Date = WebLink.LinkCauseError[0].VisitedDate, MessageError = WebLink.LinkCauseError[0].ErrorMessage };
m_dataBase.TableError.InsertOnSubmit(m_tableError);
m_dataBase.SubmitChanges();
WebLink.LinkCauseError.RemoveAt(0);
}
WebLink.LinkCauseError.Clear();
}
/// <summary>
/// Vide la liste de site a visiter et la rempli avec 300 autres sites
/// </summary>\
public void DropUnvisitedSiteInDataBase()
{
//----TableUnvisited----
int total = WebLink.LinkToVisit.Count;
for (int i = 0; i < total; i++)
{
m_tableUnvisited = new TableUnvisited { Link = WebLink.LinkToVisit[0] };
m_dataBase.TableUnvisited.InsertOnSubmit(m_tableUnvisited);
WebLink.LinkToVisit.RemoveAt(0);
}
WebLink.LinkToVisit.Clear();
m_dataBase.SubmitChanges();
for (int i = 0; i < 15; i++)
{
if (m_dataBase.TableUnvisited.Count() == 0)
break;
WebLink.LinkToVisit.Add(m_dataBase.TableUnvisited.First().Link);
m_dataBase.TableUnvisited.DeleteOnSubmit(m_dataBase.TableUnvisited.First());
m_dataBase.SubmitChanges();
}
}
public bool IsLinkAlreadyVisited(string lien)
{
var req = m_dataBase.TableLink.Where(l => l.Link == lien);
if (req.Count() > 0)
return true;
return false;
}
public int CountUnvisitedSite()
{
return m_dataBase.TableUnvisited.Count();
}
}
}