forked from ztgreenleaves/JavaWeatherApplication
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOperator.java
More file actions
156 lines (142 loc) · 5.35 KB
/
Copy pathOperator.java
File metadata and controls
156 lines (142 loc) · 5.35 KB
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
152
153
154
155
156
package xmlDOM;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.xml.crypto.Data;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import Bean.WeatherBean;
import Jframe.IShowWarning;
import Utils.HttpUtil;
public class Operator implements iIDUQ {
// lianyungang 101191001
// xuzhou 101190801
// nanjing 101190101
private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
private String url = "http://wthrcdn.etouch.cn/WeatherApi?city=";
private Document doc = null;
private DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
private DocumentBuilder db = null;
private Element root = null;
private String city;
private String fileName;
private String path ="xmlsave/";
private WeatherBean weather = new WeatherBean();
private int flag;
private WeatherBean initBeanByInputStream(String city, IShowWarning iw) {
setCity(city);
flag = 0;
try {
db = dbf.newDocumentBuilder();
doc = db.parse(HttpUtil.getXMLStream(url + city));
root = doc.getDocumentElement();
weather.setCity(root.getElementsByTagName("city").item(0).getTextContent());
flag = 1;
weather.setWendu(root.getElementsByTagName("wendu").item(0).getTextContent());
weather.setFengli(root.getElementsByTagName("fengli").item(0).getTextContent());
weather.setShidu(root.getElementsByTagName("shidu").item(0).getTextContent());
weather.setFengxiang(root.getElementsByTagName("fengxiang").item(0).getTextContent());
weather.setSunrise(root.getElementsByTagName("sunrise_1").item(0).getTextContent());
weather.setSunset(root.getElementsByTagName("sunset_1").item(0).getTextContent());
weather.setPm25(root.getElementsByTagName("pm25").item(0).getTextContent());
weather.setSuggest(root.getElementsByTagName("suggest").item(0).getTextContent());
weather.setQuality(root.getElementsByTagName("quality").item(0).getTextContent());
Date date = new Date();
fileName = city + "_" + formatter.format(date);
tfInXmlFile(fileName);
return weather;
} catch (Exception e) {
//e.printStackTrace();
if(flag == 1){
weather.setPm25(null);
weather.setQuality(null);
weather.setSuggest(null);
}else{
System.out.println(flag);
String warnings = "²éÎ޴˳ÇÊÐ";
iw.ShowWarnings(warnings);
}
}
return weather;
}
private WeatherBean initBeanByFilePath(String fileName) {
setCity(city);
try {
db = dbf.newDocumentBuilder();
doc = db.parse(path+fileName);
root = doc.getDocumentElement();
weather.setCity(root.getElementsByTagName("city").item(0).getTextContent());
weather.setWendu(root.getElementsByTagName("wendu").item(0).getTextContent());
weather.setFengli(root.getElementsByTagName("fengli").item(0).getTextContent());
weather.setShidu(root.getElementsByTagName("shidu").item(0).getTextContent());
weather.setFengxiang(root.getElementsByTagName("fengxiang").item(0).getTextContent());
weather.setSunrise(root.getElementsByTagName("sunrise_1").item(0).getTextContent());
weather.setSunset(root.getElementsByTagName("sunset_1").item(0).getTextContent());
weather.setPm25(root.getElementsByTagName("pm25").item(0).getTextContent());
weather.setSuggest(root.getElementsByTagName("suggest").item(0).getTextContent());
weather.setQuality(root.getElementsByTagName("quality").item(0).getTextContent());
return weather;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public WeatherBean updateXML() {
initBeanByFilePath(fileName + ".xml");
Element currentTime = (Element) root.getElementsByTagName("currentTime").item(0);
Date date = new Date();
String curTime = formatter.format(date);
currentTime.setTextContent(curTime);
weather.setCurrentTime(curTime);
fileName = city + "_" + formatter.format(date);
tfInXmlFile(fileName);
return weather;
}
@Override
public WeatherBean deleteXML() {
initBeanByFilePath(fileName + ".xml");
Element currentTime = (Element) root.getElementsByTagName("currentTime").item(0);
root.removeChild(currentTime);
weather.setCurrentTime(null);
Date date = new Date();
fileName = city + "_" + formatter.format(date);
tfInXmlFile(fileName);
return weather;
}
@Override
public WeatherBean insertXML() {
initBeanByFilePath(fileName + ".xml");
Element currentTime = doc.createElement("currentTime");
Date date = new Date();
String curTime = formatter.format(date);
currentTime.setTextContent(curTime);
root.appendChild(currentTime);
weather.setCurrentTime(root.getElementsByTagName("currentTime").item(0).getTextContent());
fileName = city + "_" + formatter.format(date);
tfInXmlFile(fileName);
return weather;
}
@Override
public WeatherBean queryXML(String city,IShowWarning iw) {
return initBeanByInputStream(city,iw);
}
public void setCity(String city) {
this.city = city;
}
public void tfInXmlFile(String fileName) {
TransformerFactory tff = TransformerFactory.newInstance();
try {
Transformer tf = tff.newTransformer();
tf.transform(new DOMSource(doc), new StreamResult(new File(path+fileName + ".xml")));
} catch (Exception e) {
e.printStackTrace();
}
}
}