Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
waluty_22sierpnia
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
waluty_22sierpnia
Commits
bab2414b
Commit
bab2414b
authored
Aug 22, 2021
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Przelicznik walut - wersja XML
parent
ec8781c5
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
278 additions
and
0 deletions
+278
-0
ObslugaNBP.java
src/main/java/waluty/wersja_xml/ObslugaNBP.java
+93
-0
PrzelicznikWalutKonsola.java
src/main/java/waluty/wersja_xml/PrzelicznikWalutKonsola.java
+43
-0
PrzelicznikWalutOkno.java
src/main/java/waluty/wersja_xml/PrzelicznikWalutOkno.java
+0
-0
Tabela.java
src/main/java/waluty/wersja_xml/Tabela.java
+104
-0
WypiszKursyHistoryczne.java
src/main/java/waluty/wersja_xml/WypiszKursyHistoryczne.java
+21
-0
WypiszWszystkieWaluty.java
src/main/java/waluty/wersja_xml/WypiszWszystkieWaluty.java
+17
-0
No files found.
src/main/java/waluty/wersja_xml/ObslugaNBP.java
0 → 100644
View file @
bab2414b
package
waluty
.
wersja_xml
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.math.BigDecimal
;
import
java.net.URL
;
import
java.time.LocalDate
;
import
javax.xml.parsers.DocumentBuilder
;
import
javax.xml.parsers.DocumentBuilderFactory
;
import
javax.xml.parsers.ParserConfigurationException
;
import
javax.xml.xpath.XPath
;
import
javax.xml.xpath.XPathConstants
;
import
javax.xml.xpath.XPathExpressionException
;
import
javax.xml.xpath.XPathFactory
;
import
org.w3c.dom.Document
;
import
org.w3c.dom.Node
;
import
org.w3c.dom.NodeList
;
import
org.xml.sax.SAXException
;
public
class
ObslugaNBP
{
private
static
final
String
ADRES
=
"http://api.nbp.pl/api/exchangerates/tables"
;
/** Pobiera tabelę z bieżącymi kursami walut.
* Zwraca null w przypadku błędów.
*/
public
static
Tabela
pobierzBiezaceKursy
()
{
Document
doc
=
wczytajXmlZAdresu
(
ADRES
+
"/A?format=xml"
);
return
tabelaZXml
(
doc
);
}
/** Pobiera tabelę z archiwalnymi kursami walut z określonej daty.
* Zwraca null w przypadku błędów, np. wtedy, gdy dla danej daty nie istnieje tabela.
*/
public
static
Tabela
pobierzKursyHistoryczne
(
String
data
)
{
Document
doc
=
wczytajXmlZAdresu
(
ADRES
+
"/A/"
+
data
+
"?format=xml"
);
return
tabelaZXml
(
doc
);
}
private
static
Document
wczytajXmlZAdresu
(
String
adres
)
{
// Document Object Model
try
{
DocumentBuilderFactory
dbf
=
DocumentBuilderFactory
.
newInstance
();
DocumentBuilder
db
=
dbf
.
newDocumentBuilder
();
URL
url
=
new
URL
(
adres
);
try
(
InputStream
in
=
url
.
openStream
())
{
return
db
.
parse
(
in
);
}
}
catch
(
ParserConfigurationException
|
SAXException
|
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
private
static
Tabela
tabelaZXml
(
Document
doc
)
{
if
(
doc
==
null
)
return
null
;
try
{
XPathFactory
xpf
=
XPathFactory
.
newInstance
();
XPath
xpath
=
xpf
.
newXPath
();
// String numer = xpath.evaluate(
// "/ArrayOfExchangeRatesTable/ExchangeRatesTable/No", doc);
String
nazwaTabeli
=
xpath
.
evaluate
(
"//Table"
,
doc
);
String
numerTabeli
=
xpath
.
evaluate
(
"//No"
,
doc
);
LocalDate
data
=
LocalDate
.
parse
(
xpath
.
evaluate
(
"//EffectiveDate"
,
doc
));
Tabela
tabela
=
new
Tabela
(
nazwaTabeli
,
numerTabeli
,
data
);
NodeList
rates
=
(
NodeList
)
xpath
.
evaluate
(
"//Rate"
,
doc
,
XPathConstants
.
NODESET
);
final
int
n
=
rates
.
getLength
();
for
(
int
i
=
0
;
i
<
n
;
i
++)
{
Node
rate
=
rates
.
item
(
i
);
String
kod
=
xpath
.
evaluate
(
"Code"
,
rate
);
String
nazwa
=
xpath
.
evaluate
(
"Currency"
,
rate
);
String
kurs
=
xpath
.
evaluate
(
"Mid"
,
rate
);
BigDecimal
kursBD
=
new
BigDecimal
(
kurs
);
Waluta
waluta
=
new
Waluta
(
kod
,
nazwa
,
kursBD
);
tabela
.
dodaj
(
waluta
);
}
return
tabela
;
}
catch
(
XPathExpressionException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
}
\ No newline at end of file
src/main/java/waluty/wersja_xml/PrzelicznikWalutKonsola.java
0 → 100644
View file @
bab2414b
package
waluty
.
wersja_xml
;
import
java.math.BigDecimal
;
import
java.util.Scanner
;
public
class
PrzelicznikWalutKonsola
{
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
"Pobieram aktualne kursy..."
);
Tabela
tabela
=
ObslugaNBP
.
pobierzBiezaceKursy
();
System
.
out
.
println
(
tabela
);
Scanner
sc
=
new
Scanner
(
System
.
in
);
while
(
true
)
{
System
.
out
.
println
(
"\nPodaj kod waluty"
);
String
kod
=
sc
.
nextLine
().
trim
().
toUpperCase
();
if
(
kod
==
null
||
kod
.
isEmpty
())
break
;
Waluta
waluta
=
tabela
.
znajdz
(
kod
);
if
(
waluta
==
null
)
{
System
.
out
.
println
(
"Nie ma takiej waluty."
);
continue
;
}
System
.
out
.
println
(
"Wybrana waluta: "
+
waluta
.
getNazwa
());
System
.
out
.
println
(
"Podaj kwotę"
);
if
(!
sc
.
hasNextBigDecimal
())
{
System
.
out
.
println
(
"Nieprawidłowa kwota."
);
continue
;
}
BigDecimal
kwota
=
sc
.
nextBigDecimal
();
sc
.
nextLine
();
System
.
out
.
println
(
kwota
+
" "
+
kod
+
" = "
+
waluta
.
przeliczNaZlote
(
kwota
)
+
" PLN"
);
System
.
out
.
println
(
kwota
+
" PLN "
+
" = "
+
waluta
.
przeliczNaWalute
(
kwota
)
+
" "
+
kod
);
}
}
}
src/main/java/waluty/wersja_xml/PrzelicznikWalutOkno.java
0 → 100644
View file @
bab2414b
This diff is collapsed.
Click to expand it.
src/main/java/waluty/wersja_xml/Tabela.java
0 → 100644
View file @
bab2414b
package
waluty
.
wersja_xml
;
import
java.time.LocalDate
;
import
java.util.Collection
;
import
java.util.Map
;
import
java.util.TreeMap
;
public
class
Tabela
{
private
final
String
nazwaTabeli
;
private
final
String
numerTabeli
;
private
final
LocalDate
data
;
private
final
Map
<
String
,
Waluta
>
waluty
=
new
TreeMap
<>();
public
Tabela
()
{
nazwaTabeli
=
null
;
numerTabeli
=
null
;
data
=
null
;
}
public
Tabela
(
String
nazwaTabeli
,
String
numerTabeli
,
LocalDate
data
)
{
this
.
nazwaTabeli
=
nazwaTabeli
;
this
.
numerTabeli
=
numerTabeli
;
this
.
data
=
data
;
}
public
String
getNazwaTabeli
()
{
return
nazwaTabeli
;
}
public
String
getNumerTabeli
()
{
return
numerTabeli
;
}
public
LocalDate
getData
()
{
return
data
;
}
@Override
public
String
toString
()
{
return
"Tabela "
+
nazwaTabeli
+
" nr "
+
numerTabeli
+
" z dnia "
+
data
+
" ("
+
waluty
.
size
()
+
" walut)"
;
}
public
void
dodaj
(
Waluta
waluta
)
{
waluty
.
put
(
waluta
.
getKod
(),
waluta
);
}
public
Waluta
znajdz
(
String
kod
)
{
return
waluty
.
get
(
kod
);
}
public
Collection
<
Waluta
>
getWszystkieWaluty
()
{
return
waluty
.
values
();
}
private
static
final
String
[]
PUSTA_TABLICA
=
new
String
[
0
];
public
String
[]
getKodyWalut
()
{
return
waluty
.
keySet
().
toArray
(
PUSTA_TABLICA
);
}
@Override
public
int
hashCode
()
{
final
int
prime
=
31
;
int
result
=
1
;
result
=
prime
*
result
+
((
data
==
null
)
?
0
:
data
.
hashCode
());
result
=
prime
*
result
+
((
nazwaTabeli
==
null
)
?
0
:
nazwaTabeli
.
hashCode
());
result
=
prime
*
result
+
((
numerTabeli
==
null
)
?
0
:
numerTabeli
.
hashCode
());
result
=
prime
*
result
+
((
waluty
==
null
)
?
0
:
waluty
.
hashCode
());
return
result
;
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(
obj
==
null
)
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
Tabela
other
=
(
Tabela
)
obj
;
if
(
data
==
null
)
{
if
(
other
.
data
!=
null
)
return
false
;
}
else
if
(!
data
.
equals
(
other
.
data
))
return
false
;
if
(
nazwaTabeli
==
null
)
{
if
(
other
.
nazwaTabeli
!=
null
)
return
false
;
}
else
if
(!
nazwaTabeli
.
equals
(
other
.
nazwaTabeli
))
return
false
;
if
(
numerTabeli
==
null
)
{
if
(
other
.
numerTabeli
!=
null
)
return
false
;
}
else
if
(!
numerTabeli
.
equals
(
other
.
numerTabeli
))
return
false
;
if
(
waluty
==
null
)
{
if
(
other
.
waluty
!=
null
)
return
false
;
}
else
if
(!
waluty
.
equals
(
other
.
waluty
))
return
false
;
return
true
;
}
}
src/main/java/waluty/wersja_xml/WypiszKursyHistoryczne.java
0 → 100644
View file @
bab2414b
package
waluty
.
wersja_xml
;
import
java.util.Scanner
;
public
class
WypiszKursyHistoryczne
{
public
static
void
main
(
String
[]
args
)
{
Scanner
sc
=
new
Scanner
(
System
.
in
);
System
.
out
.
print
(
"Podaj datę: "
);
String
data
=
sc
.
nextLine
();
System
.
out
.
println
(
"Pobieram..."
);
Tabela
tabela
=
ObslugaNBP
.
pobierzKursyHistoryczne
(
data
);
System
.
out
.
println
(
"Pobrana tabela: "
+
tabela
);
for
(
Waluta
waluta
:
tabela
.
getWszystkieWaluty
())
{
System
.
out
.
println
(
waluta
);
}
}
}
src/main/java/waluty/wersja_xml/WypiszWszystkieWaluty.java
0 → 100644
View file @
bab2414b
package
waluty
.
wersja_xml
;
import
java.util.Collection
;
public
class
WypiszWszystkieWaluty
{
public
static
void
main
(
String
[]
args
)
{
Tabela
tabela
=
ObslugaNBP
.
pobierzBiezaceKursy
();
System
.
out
.
println
(
"Pobrana tabela: "
+
tabela
);
Collection
<
Waluta
>
waluty
=
tabela
.
getWszystkieWaluty
();
for
(
Waluta
waluta
:
waluty
)
{
System
.
out
.
println
(
waluta
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment