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
8d7bae13
Commit
8d7bae13
authored
Aug 19, 2023
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Przykłady klientów SOAP
parent
72991d88
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
350 additions
and
0 deletions
+350
-0
Klient1_WszystkieProdukty.java
...src/main/java/sklep/klient/Klient1_WszystkieProdukty.java
+1
-0
Klient2_JedenProdukt.java
...ient/src/main/java/sklep/klient/Klient2_JedenProdukt.java
+37
-0
Klient3_Edycja.java
...SoapKlient/src/main/java/sklep/klient/Klient3_Edycja.java
+70
-0
OknoSoap.java
PC31-SoapKlient/src/main/java/sklep/klient/OknoSoap.java
+242
-0
No files found.
PC31-SoapKlient/src/main/java/sklep/klient/Klient1_WszystkieProdukty.java
View file @
8d7bae13
...
...
@@ -16,6 +16,7 @@ public class Klient1_WszystkieProdukty {
System
.
out
.
println
(
"Mam obiekt proxy: "
+
sklep
+
" klasy "
+
sklep
.
getClass
().
getName
());
try
{
// "zdalne wywoływanie procedur" - "RPC"
List
<
Product
>
produkty
=
sklep
.
wszystkieProdukty
();
System
.
out
.
println
(
"Odczytano "
+
produkty
.
size
()
+
" produktów:"
);
for
(
Product
product
:
produkty
)
{
...
...
PC31-SoapKlient/src/main/java/sklep/klient/Klient2_JedenProdukt.java
0 → 100644
View file @
8d7bae13
package
sklep
.
klient
;
import
java.util.Scanner
;
import
sklep.generated.DBException_Exception
;
import
sklep.generated.Product
;
import
sklep.generated.RecordNotFound_Exception
;
import
sklep.generated.Sklep
;
import
sklep.generated.SklepService
;
public
class
Klient2_JedenProdukt
{
public
static
void
main
(
String
[]
args
)
{
Scanner
scanner
=
new
Scanner
(
System
.
in
);
SklepService
service
=
new
SklepService
();
Sklep
sklep
=
service
.
getSklepPort
();
while
(
true
)
{
System
.
out
.
println
(
"Podaj ID produktu lub 0, aby zakończyć"
);
int
id
=
scanner
.
nextInt
();
if
(
id
==
0
)
break
;
try
{
Product
product
=
sklep
.
jedenProdukt
(
id
);
System
.
out
.
println
(
"Znaleziono produkt: "
+
product
.
getName
()
+
" za cenę "
+
product
.
getPrice
());
if
(
product
.
getDescription
()
!=
null
)
{
System
.
out
.
println
(
"Opis: "
+
product
.
getDescription
());
}
}
catch
(
RecordNotFound_Exception
e
)
{
System
.
out
.
println
(
"Nie ma takiego rekordu"
);
}
catch
(
DBException_Exception
e
)
{
System
.
out
.
println
(
"Inny błąd: "
+
e
);
e
.
printStackTrace
();
}
}
}
}
PC31-SoapKlient/src/main/java/sklep/klient/Klient3_Edycja.java
0 → 100644
View file @
8d7bae13
package
sklep
.
klient
;
import
java.math.BigDecimal
;
import
java.util.Locale
;
import
java.util.Scanner
;
import
jakarta.xml.ws.Holder
;
import
sklep.generated.DBException_Exception
;
import
sklep.generated.Product
;
import
sklep.generated.RecordNotFound_Exception
;
import
sklep.generated.Sklep
;
import
sklep.generated.SklepService
;
public
class
Klient3_Edycja
{
public
static
void
main
(
String
[]
args
)
{
Scanner
scanner
=
new
Scanner
(
System
.
in
);
scanner
.
useLocale
(
Locale
.
US
);
SklepService
service
=
new
SklepService
();
Sklep
sklep
=
service
.
getSklepPort
();
while
(
true
)
{
System
.
out
.
println
(
"Podaj ID produktu lub 0, aby zakończyć"
);
int
id
=
scanner
.
nextInt
();
if
(
id
==
0
)
break
;
try
{
Product
product
=
sklep
.
jedenProdukt
(
id
);
System
.
out
.
println
(
"Znaleziono produkt: "
+
product
.
getName
()
+
" za cenę "
+
product
.
getPrice
());
if
(
product
.
getDescription
()
!=
null
)
{
System
.
out
.
println
(
"Opis: "
+
product
.
getDescription
());
}
boolean
czyCosSieZmienilo
=
false
;
System
.
out
.
println
(
"Podaj zmianę ceny: "
);
BigDecimal
zmiana
=
scanner
.
nextBigDecimal
();
if
(
zmiana
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
product
.
setPrice
(
product
.
getPrice
().
add
(
zmiana
));
czyCosSieZmienilo
=
true
;
}
scanner
.
nextLine
();
System
.
out
.
println
(
"Podaj nową nazwę (enter, aby nie zmieniać): "
);
String
nazwa
=
scanner
.
nextLine
();
if
(!
nazwa
.
isEmpty
())
{
product
.
setName
(
nazwa
);
czyCosSieZmienilo
=
true
;
}
System
.
out
.
println
(
"Podaj nowy opis (enter, aby nie zmieniać): "
);
String
opis
=
scanner
.
nextLine
();
if
(!
opis
.
isEmpty
())
{
product
.
setDescription
(
opis
);
czyCosSieZmienilo
=
true
;
}
if
(
czyCosSieZmienilo
)
{
Holder
<
Product
>
holder
=
new
Holder
<>(
product
);
sklep
.
zapiszProdukt
(
holder
);
System
.
out
.
println
(
"Zapisano zmiany. Id produktu = "
+
holder
.
value
.
getId
());
// W tej aplikacji ID produktu się nie zmiania, ale tak odczytalibyśmy ID nowotworzonego produktu...
}
System
.
out
.
println
();
}
catch
(
RecordNotFound_Exception
e
)
{
System
.
out
.
println
(
"Nie ma takiego rekordu"
);
}
catch
(
DBException_Exception
e
)
{
System
.
out
.
println
(
"Inny błąd: "
+
e
);
e
.
printStackTrace
();
}
}
}
}
PC31-SoapKlient/src/main/java/sklep/klient/OknoSoap.java
0 → 100644
View file @
8d7bae13
package
sklep
.
klient
;
import
java.awt.EventQueue
;
import
java.awt.Font
;
import
java.awt.event.ActionEvent
;
import
java.awt.event.ActionListener
;
import
javax.swing.GroupLayout
;
import
javax.swing.GroupLayout.Alignment
;
import
javax.swing.ImageIcon
;
import
javax.swing.JButton
;
import
javax.swing.JFrame
;
import
javax.swing.JLabel
;
import
javax.swing.JPanel
;
import
javax.swing.JSpinner
;
import
javax.swing.JTextField
;
import
javax.swing.LayoutStyle.ComponentPlacement
;
import
javax.swing.SwingWorker
;
import
javax.swing.event.ChangeEvent
;
import
javax.swing.event.ChangeListener
;
import
sklep.generated.*
;
public
class
OknoSoap
{
private
Sklep
proxy
;
private
JFrame
frame
;
private
JTextField
txtTytul
;
private
JTextField
txtMarka
;
private
JTextField
txtCena
;
private
JSpinner
spinner
;
private
JLabel
lblFoto
;
private
Product
biezacyProdukt
;
private
ImageIcon
ikonaZeZdjeciem
;
/**
* Launch the application.
*/
public
static
void
main
(
String
[]
args
)
{
EventQueue
.
invokeLater
(
new
Runnable
()
{
public
void
run
()
{
try
{
OknoSoap
window
=
new
OknoSoap
();
window
.
frame
.
setVisible
(
true
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
});
}
/**
* Create the application.
*/
public
OknoSoap
()
{
SklepService
serwis
=
new
SklepService
();
proxy
=
serwis
.
getSklepPort
();
initialize
();
}
/**
* Initialize the contents of the frame.
*/
private
void
initialize
()
{
frame
=
new
JFrame
();
frame
.
setBounds
(
100
,
100
,
841
,
801
);
frame
.
setDefaultCloseOperation
(
JFrame
.
EXIT_ON_CLOSE
);
spinner
=
new
JSpinner
();
spinner
.
addChangeListener
(
new
ChangeListener
()
{
public
void
stateChanged
(
ChangeEvent
e
)
{
wyswietl
();
}
});
spinner
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
BOLD
,
22
));
JLabel
lblPodajIdOgoszenia
=
new
JLabel
(
"Podaj ID ogłoszenia"
);
lblPodajIdOgoszenia
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
PLAIN
,
20
));
JButton
btnWywietl
=
new
JButton
(
"Wyświetl"
);
btnWywietl
.
addActionListener
(
new
ActionListener
()
{
public
void
actionPerformed
(
ActionEvent
ev
)
{
wyswietl
();
}
});
btnWywietl
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
BOLD
,
20
));
JPanel
panel
=
new
JPanel
();
lblFoto
=
new
JLabel
(
"FOTO"
);
GroupLayout
groupLayout
=
new
GroupLayout
(
frame
.
getContentPane
());
groupLayout
.
setHorizontalGroup
(
groupLayout
.
createParallelGroup
(
Alignment
.
TRAILING
)
.
addGroup
(
groupLayout
.
createSequentialGroup
()
.
addContainerGap
()
.
addGroup
(
groupLayout
.
createParallelGroup
(
Alignment
.
LEADING
)
.
addComponent
(
lblFoto
,
GroupLayout
.
DEFAULT_SIZE
,
817
,
Short
.
MAX_VALUE
)
.
addGroup
(
groupLayout
.
createSequentialGroup
()
.
addComponent
(
lblPodajIdOgoszenia
)
.
addPreferredGap
(
ComponentPlacement
.
UNRELATED
)
.
addComponent
(
spinner
,
GroupLayout
.
PREFERRED_SIZE
,
72
,
GroupLayout
.
PREFERRED_SIZE
)
.
addPreferredGap
(
ComponentPlacement
.
RELATED
,
437
,
Short
.
MAX_VALUE
)
.
addComponent
(
btnWywietl
))
.
addComponent
(
panel
,
GroupLayout
.
DEFAULT_SIZE
,
817
,
Short
.
MAX_VALUE
))
.
addContainerGap
())
);
groupLayout
.
setVerticalGroup
(
groupLayout
.
createParallelGroup
(
Alignment
.
LEADING
)
.
addGroup
(
groupLayout
.
createSequentialGroup
()
.
addContainerGap
()
.
addGroup
(
groupLayout
.
createParallelGroup
(
Alignment
.
TRAILING
)
.
addGroup
(
groupLayout
.
createSequentialGroup
()
.
addGroup
(
groupLayout
.
createParallelGroup
(
Alignment
.
BASELINE
)
.
addComponent
(
lblPodajIdOgoszenia
)
.
addComponent
(
spinner
,
GroupLayout
.
PREFERRED_SIZE
,
GroupLayout
.
DEFAULT_SIZE
,
GroupLayout
.
PREFERRED_SIZE
))
.
addGap
(
20
))
.
addGroup
(
groupLayout
.
createSequentialGroup
()
.
addComponent
(
btnWywietl
)
.
addPreferredGap
(
ComponentPlacement
.
UNRELATED
)))
.
addComponent
(
panel
,
GroupLayout
.
PREFERRED_SIZE
,
155
,
GroupLayout
.
PREFERRED_SIZE
)
.
addGap
(
18
)
.
addComponent
(
lblFoto
,
GroupLayout
.
DEFAULT_SIZE
,
523
,
Short
.
MAX_VALUE
)
.
addContainerGap
())
);
JLabel
lblTytu
=
new
JLabel
(
"Nazwa"
);
lblTytu
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
PLAIN
,
18
));
txtTytul
=
new
JTextField
();
txtTytul
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
BOLD
,
16
));
txtTytul
.
setColumns
(
10
);
JLabel
lblMarka
=
new
JLabel
(
"Opis"
);
lblMarka
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
PLAIN
,
18
));
txtMarka
=
new
JTextField
();
txtMarka
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
BOLD
,
16
));
txtMarka
.
setColumns
(
10
);
JLabel
lblCena
=
new
JLabel
(
"Cena"
);
lblCena
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
PLAIN
,
18
));
txtCena
=
new
JTextField
();
txtCena
.
setFont
(
new
Font
(
"Dialog"
,
Font
.
BOLD
,
16
));
txtCena
.
setColumns
(
10
);
GroupLayout
gl_panel
=
new
GroupLayout
(
panel
);
gl_panel
.
setHorizontalGroup
(
gl_panel
.
createParallelGroup
(
Alignment
.
LEADING
)
.
addGroup
(
gl_panel
.
createSequentialGroup
()
.
addContainerGap
()
.
addGroup
(
gl_panel
.
createParallelGroup
(
Alignment
.
LEADING
)
.
addGroup
(
gl_panel
.
createSequentialGroup
()
.
addGroup
(
gl_panel
.
createParallelGroup
(
Alignment
.
TRAILING
,
false
)
.
addComponent
(
lblMarka
,
Alignment
.
LEADING
,
GroupLayout
.
DEFAULT_SIZE
,
GroupLayout
.
DEFAULT_SIZE
,
Short
.
MAX_VALUE
)
.
addComponent
(
lblTytu
,
Alignment
.
LEADING
,
GroupLayout
.
DEFAULT_SIZE
,
152
,
Short
.
MAX_VALUE
))
.
addPreferredGap
(
ComponentPlacement
.
UNRELATED
)
.
addGroup
(
gl_panel
.
createParallelGroup
(
Alignment
.
LEADING
)
.
addComponent
(
txtMarka
,
GroupLayout
.
DEFAULT_SIZE
,
623
,
Short
.
MAX_VALUE
)
.
addComponent
(
txtTytul
,
GroupLayout
.
DEFAULT_SIZE
,
623
,
Short
.
MAX_VALUE
)))
.
addGroup
(
Alignment
.
TRAILING
,
gl_panel
.
createSequentialGroup
()
.
addComponent
(
lblCena
)
.
addGap
(
128
)
.
addComponent
(
txtCena
,
GroupLayout
.
DEFAULT_SIZE
,
623
,
Short
.
MAX_VALUE
)))
.
addContainerGap
())
);
gl_panel
.
setVerticalGroup
(
gl_panel
.
createParallelGroup
(
Alignment
.
LEADING
)
.
addGroup
(
gl_panel
.
createSequentialGroup
()
.
addContainerGap
()
.
addGroup
(
gl_panel
.
createParallelGroup
(
Alignment
.
BASELINE
)
.
addComponent
(
lblTytu
)
.
addComponent
(
txtTytul
,
GroupLayout
.
PREFERRED_SIZE
,
GroupLayout
.
DEFAULT_SIZE
,
GroupLayout
.
PREFERRED_SIZE
))
.
addPreferredGap
(
ComponentPlacement
.
UNRELATED
)
.
addGroup
(
gl_panel
.
createParallelGroup
(
Alignment
.
BASELINE
)
.
addComponent
(
lblMarka
)
.
addComponent
(
txtMarka
,
GroupLayout
.
PREFERRED_SIZE
,
GroupLayout
.
DEFAULT_SIZE
,
GroupLayout
.
PREFERRED_SIZE
))
.
addGap
(
18
)
.
addGroup
(
gl_panel
.
createParallelGroup
(
Alignment
.
BASELINE
)
.
addComponent
(
txtCena
,
GroupLayout
.
PREFERRED_SIZE
,
GroupLayout
.
DEFAULT_SIZE
,
GroupLayout
.
PREFERRED_SIZE
)
.
addComponent
(
lblCena
))
.
addContainerGap
(
44
,
Short
.
MAX_VALUE
))
);
panel
.
setLayout
(
gl_panel
);
frame
.
getContentPane
().
setLayout
(
groupLayout
);
}
// jest wywoływane przez Swinga po kliknięciu guzika itp.
// ta metoda jest wykonywana w wątku EDT
protected
void
wyswietl
()
{
int
idOgloszenia
=
(
Integer
)
spinner
.
getValue
();
SwingWorker
<
Void
,
Void
>
worker
=
new
SwingWorker
<
Void
,
Void
>()
{
@Override
protected
Void
doInBackground
()
throws
Exception
{
// to wykona się w oddzielnym wątku,
// nie zablokuj okna, ale tutaj nie powinniśmy korzystać z elementów okna
pobierzDane
(
idOgloszenia
);
return
null
;
}
@Override
protected
void
done
()
{
// tu powinniśmy wpisać polecenia dotyczące okna, które mają być wykonane przez EDT po zakończeniu operacji
uaktualnijWidok
();
}
};
worker
.
execute
();
}
private
void
pobierzDane
(
int
id
)
{
// ma być wykonane w tle
try
{
ikonaZeZdjeciem
=
null
;
biezacyProdukt
=
null
;
biezacyProdukt
=
proxy
.
jedenProdukt
(
id
);
try
{
byte
[]
bajtyZeZdjeciem
=
proxy
.
foto
(
id
);
if
(
bajtyZeZdjeciem
!=
null
)
{
ikonaZeZdjeciem
=
new
ImageIcon
(
bajtyZeZdjeciem
);
}
}
catch
(
RecordNotFound_Exception
e
)
{
// zdjecie zostaje nullem
}
}
catch
(
DBException_Exception
e
)
{
e
.
printStackTrace
();
}
catch
(
RecordNotFound_Exception
e
)
{
}
}
private
void
uaktualnijWidok
()
{
// ma być wykonane przez okno (czyli wątek EDT)
if
(
biezacyProdukt
!=
null
)
{
txtTytul
.
setText
(
biezacyProdukt
.
getName
());
txtMarka
.
setText
(
biezacyProdukt
.
getDescription
());
txtCena
.
setText
(
String
.
valueOf
(
biezacyProdukt
.
getPrice
()));
}
else
{
txtTytul
.
setText
(
""
);
txtMarka
.
setText
(
""
);
txtCena
.
setText
(
""
);
}
lblFoto
.
setIcon
(
ikonaZeZdjeciem
);
}
}
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