Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
javab_20230617
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
javab_20230617
Commits
fcd3d5a1
Commit
fcd3d5a1
authored
Jul 16, 2023
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implementacja pobierania walut oparta o JSON
parent
8b4c3d1f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
71 additions
and
0 deletions
+71
-0
build.gradle
PC25-Spring/build.gradle
+2
-0
PobieranieJSON.java
...src/main/java/com/example/demo/waluty/PobieranieJSON.java
+63
-0
PobieranieXML.java
.../src/main/java/com/example/demo/waluty/PobieranieXML.java
+6
-0
No files found.
PC25-Spring/build.gradle
View file @
fcd3d5a1
...
...
@@ -19,6 +19,8 @@ dependencies {
implementation
'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation
'org.springframework.boot:spring-boot-starter-web'
testImplementation
'org.springframework.boot:spring-boot-starter-test'
implementation
'jakarta.json:jakarta.json-api:2.1.2'
runtimeOnly
'org.eclipse.parsson:jakarta.json:1.1.3'
}
tasks
.
named
(
'test'
)
{
...
...
PC25-Spring/src/main/java/com/example/demo/waluty/PobieranieJSON.java
0 → 100644
View file @
fcd3d5a1
package
com
.
example
.
demo
.
waluty
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.net.URL
;
import
java.time.LocalDate
;
import
org.springframework.stereotype.Service
;
import
jakarta.json.Json
;
import
jakarta.json.JsonArray
;
import
jakarta.json.JsonObject
;
import
jakarta.json.JsonReader
;
import
jakarta.json.JsonValue
;
@Service
public
class
PobieranieJSON
implements
PobieranieWalut
{
private
static
final
String
ADRES
=
"http://api.nbp.pl/api/exchangerates/tables"
;
public
TabelaWalut
pobierzBiezaceKursy
()
{
return
pobierzJsonZAdresu
(
ADRES
+
"/a/?format=json"
);
}
public
TabelaWalut
pobierzArchiwalneKursy
(
String
data
)
{
return
pobierzJsonZAdresu
(
ADRES
+
"/a/"
+
data
+
"?format=json"
);
}
private
TabelaWalut
pobierzJsonZAdresu
(
String
adres
)
{
try
{
URL
url
=
new
URL
(
adres
);
try
(
InputStream
input
=
url
.
openStream
())
{
return
wczytajStream
(
input
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
private
static
TabelaWalut
wczytajStream
(
InputStream
input
)
{
try
(
JsonReader
reader
=
Json
.
createReader
(
input
))
{
// dokument zawiera [tablicę], a ta tablica zawiera {obiekt}
JsonArray
array
=
reader
.
readArray
();
JsonObject
tabela
=
array
.
getJsonObject
(
0
);
String
typ
=
tabela
.
getString
(
"table"
);
String
numer
=
tabela
.
getString
(
"no"
);
LocalDate
data
=
LocalDate
.
parse
(
tabela
.
getString
(
"effectiveDate"
));
JsonArray
waluty
=
tabela
.
getJsonArray
(
"rates"
);
TabelaWalut
wynikowaTabela
=
new
TabelaWalut
(
typ
,
numer
,
data
);
for
(
JsonValue
jsonValue
:
waluty
)
{
JsonObject
jsonObject
=
jsonValue
.
asJsonObject
();
Waluta
waluta
=
new
Waluta
(
jsonObject
.
getString
(
"code"
),
jsonObject
.
getString
(
"currency"
),
jsonObject
.
getJsonNumber
(
"mid"
).
bigDecimalValue
());
wynikowaTabela
.
dodajWalute
(
waluta
);
}
return
wynikowaTabela
;
}
}
}
PC25-Spring/src/main/java/com/example/demo/waluty/PobieranieXML.java
View file @
fcd3d5a1
...
...
@@ -14,6 +14,7 @@ import javax.xml.xpath.XPathConstants;
import
javax.xml.xpath.XPathExpressionException
;
import
javax.xml.xpath.XPathFactory
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.stereotype.Service
;
import
org.w3c.dom.Document
;
import
org.w3c.dom.Node
;
...
...
@@ -24,8 +25,13 @@ import org.xml.sax.SAXException;
* powodują, że:
* 1) podczas startu aplikacji Spring tworzy obiekt tej klasy (pojedynczą sztukę, czyli "singleton")
* 2) ten obiekt będzie dostępny dla innych jako "komponent" ("bean") i będzie go wstrzykiwać
*
* @Primary w tym miejscu oznacza, że w razie występowania innych komponentów implementujących ten sam interfejs,
* Spring będzie preferował tę implementację.
*
*/
@Service
@Primary
public
class
PobieranieXML
implements
PobieranieWalut
{
private
static
final
String
ADRES
=
"http://api.nbp.pl/api/exchangerates/tables"
;
...
...
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