• Nie Znaleziono Wyników

Laboratorium telekomunikacji Zadanie 5

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorium telekomunikacji Zadanie 5"

Copied!
4
0
0

Pełen tekst

(1)

150875

numer indeksu

Grzegorz Graczyk

imię i nazwisko

151021

numer indeksu

Paweł Tarasiuk

imię i nazwisko

Data 2010-03-03

Kierunek Informatyka Rok akademicki 2009/10

Semestr 4

Grupa dziekańska 2

Laboratorium telekomunikacji

Zadanie 5

(2)

Krótki wstęp

Przygotowany przez nas program, mający działać na telefonie komórkowym, został napisany w języku Java, z przeznaczeniem dla technologii J2ME (Java Micro Edition). Środowisko uru- chomieniowe języka Java jest bardzo dobrze rozpowszechnione na telefonach komórkowych oraz urządzeniach mobilnych, dzięki czemu stworzone przy pomocy J2ME aplikacje mogą być urucha- miane na bardzo serokiej gamie urządzeń. Nasz program pozwala odczytać aktualne, oficjalnie podane przez Narodowy Bank Polski kursy walut za pomocą urządzenia mobilnego majacego dostęp do Internetu. Wykorzystany jest w tym celu plik XML udostępniany poprzez serwer http działający w domenie nbp.pl.

Program posiada prosty interfejs wyświetlający wszystkie kursy oraz pozwalającty wyszukać konkretną walutę, w celu odczytania jej kursu. Wydzielona została osobna klasa ”TabelaKur- sow”, której zadaniem jest zarządzanie otrzymaną w postaci pliku XML z Internetu informacją.

Pisanie w języku Java jest w zasadzie identyczne z tym, co robimy w ramach Programowania Komponentowego - jedyną rzeczą specyficzną dla niniejszego programu jest tworzenie interfej- sów dla telefonu komórkowego za pomocą javax.microedition.lcdui oraz zarządzanie połączeniem internetowym przez biblioteki z javax.microedition.io.

Kod źródłowy obu stworzonych klas (klasy głównej oraz klasy TabelaKursow) załączony jest poniżej:

Plik MyApplication.java

i m p o r t j a v a . i o . I O E x c e p t i o n ; i m p o r t j a v a . i o . I n p u t S t r e a m ;

i m p o r t j a v a x . m i c r o e d i t i o n . i o . C o n n e c t o r ; i m p o r t j a v a x . m i c r o e d i t i o n . i o . H t t p C o n n e c t i o n ; i m p o r t j a v a x . m i c r o e d i t i o n . l c d u i . Command ;

i m p o r t j a v a x . m i c r o e d i t i o n . l c d u i . CommandListener ; i m p o r t j a v a x . m i c r o e d i t i o n . l c d u i . D i s p l a y ;

i m p o r t j a v a x . m i c r o e d i t i o n . l c d u i . D i s p l a y a b l e ; i m p o r t j a v a x . m i c r o e d i t i o n . l c d u i . Form ;

i m p o r t j a v a x . m i c r o e d i t i o n . l c d u i . TextBox ; i m p o r t j a v a x . m i c r o e d i t i o n . l c d u i . T e x t F i e l d ; i m p o r t j a v a x . m i c r o e d i t i o n . m i d l e t . MIDlet ;

i m p o r t j a v a x . m i c r o e d i t i o n . m i d l e t . M I D l e t S t a t e C h a n g e E x c e p t i o n ; i m p o r t j a v a x . xml . p a r s e r s . SAXParser ;

i m p o r t j a v a x . xml . p a r s e r s . SAXParserFactory ;

p u b l i c c l a s s M y A p p l i c a t i o n e x t e n d s MIDlet i m p l e m e n t s CommandListener { H t t p C o n n e c t i o n conn ;

Form form ;

TabelaKursow dane ; Command s e a r c h , f i n d ;

S t r i n g p a t t e r n=” ”; TextBox t e x t b o x ;

p u b l i c M y A p p l i c a t i o n ( ) { dane = new TabelaKursow ( ) ; t r y {

conn = ( H t t p C o n n e c t i o n ) C o n n e c t o r . open (” h t t p : / / nbp . p l / k u r s y / xml / a 0 8 4 z 1 0 0 4 3 0 . xml ”) ; conn . s e t R e q u e s t M e t h o d ( H t t p C o n n e c t i o n .GET) ;

I n p u t S t r e a m i s = conn . o p e n I n p u t S t r e a m ( ) ;

SAXParserFactory f a c t o r y = SAXParserFactory . n e w I n s t a n c e ( ) ; t r y {

SAXParser p a r s e r = f a c t o r y . newSAXParser ( ) ; p a r s e r . p a r s e ( i s , dane ) ;

} c a t c h ( E x c e p t i o n e ) { e . p r i n t S t a c k T r a c e ( ) ; }

} c a t c h ( I O E x c e p t i o n e ) { e . p r i n t S t a c k T r a c e ( ) ;

Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 2 / 4

(3)

}

s e a r c h = new Command(” S e a r c h ”,Command .OK, 1 ) ; form = new Form (” C u r r e n c y ”) ;

form . addCommand ( s e a r c h ) ; form . setCommandListener (t h i s) ;

t e x t b o x = new TextBox (” S e a r c h what ”,” ”, 3 0 , T e x t F i e l d .ANY) ; f i n d = new Command(” Find ”,Command .OK, 1 ) ;

t e x t b o x . addCommand ( f i n d ) ;

t e x t b o x . setCommandListener (t h i s) ;

D i s p l a y . g e t D i s p l a y (t h i s) . s e t C u r r e n t ( form ) ; u p d a t e ( ) ;

}

p u b l i c v o i d u p d a t e ( ) { form . d e l e t e A l l ( ) ;

f o r( i n t i = 0 ; i < dane . p o z y c j e . s i z e ( ) ; i++ )

i f( ( ( P o z y c j a ) dane . p o z y c j e . e l e m e n t A t ( i ) ) . match ( p a t t e r n ) ) form . append ( dane . p o z y c j e . e l e m e n t A t ( i ) . t o S t r i n g ( ) + ” \n”) ; }

p r o t e c t e d v o i d d e s t r o y A p p (b o o l e a n a r g 0 ) t h r o w s M I D l e t S t a t e C h a n g e E x c e p t i o n { }

p r o t e c t e d v o i d pauseApp ( ) { }

p r o t e c t e d v o i d s t a r t A p p ( ) t h r o w s M I D l e t S t a t e C h a n g e E x c e p t i o n { }

p u b l i c v o i d commandAction (Command a r g 0 , D i s p l a y a b l e a r g 1 ) { System . o u t . p r i n t l n (” H e l l o ”) ;

i f( a r g 0 . e q u a l s ( s e a r c h ) ) {

D i s p l a y . g e t D i s p l a y (t h i s) . s e t C u r r e n t ( t e x t b o x ) ; }

i f( a r g 0 . e q u a l s ( f i n d ) ) {

p a t t e r n = t e x t b o x . g e t S t r i n g ( ) ; u p d a t e ( ) ;

D i s p l a y . g e t D i s p l a y (t h i s) . s e t C u r r e n t ( form ) ; }

}

}

Plik TabelaKursow.java

i m p o r t j a v a . u t i l . S t a c k ; i m p o r t j a v a . u t i l . V e c t o r ;

i m p o r t o r g . xml . s a x . A t t r i b u t e s ; i m p o r t o r g . xml . s a x . SAXException ;

i m p o r t o r g . xml . s a x . h e l p e r s . D e f a u l t H a n d l e r ;

c l a s s P o z y c j a {

p u b l i c S t r i n g nazwaWaluty ; p u b l i c i n t p r z e l i c z n i k ; p u b l i c S t r i n g kodWaluty ; p u b l i c d o u b l e k u r s S r e d n i ; p u b l i c S t r i n g t o S t r i n g ( ) {

r e t u r n nazwaWaluty + ” \n [ ” + I n t e g e r . t o S t r i n g ( p r z e l i c z n i k ) + ” PLN = ” + Double . t o S t r i n g ( k u r s S r e d n i ) + ” ” + kodWaluty + ” ] ”; }

p u b l i c b o o l e a n match ( S t r i n g p a t t e r n ) {

i f( p a t t e r n . l e n g t h ( ) < 1 | | nazwaWaluty . i n d e x O f ( p a t t e r n ) >= 0 | | kodWaluty . e q u a l s ( p a t t e r n ) ) r e t u r n t r u e;

r e t u r n f a l s e; }

Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 3 / 4

(4)

}

p u b l i c c l a s s TabelaKursow e x t e n d s D e f a u l t H a n d l e r { p r i v a t e S t a c k s t a t e s ;

p r i v a t e P o z y c j a p o z y c j a ; p u b l i c V e c t o r p o z y c j e ;

p u b l i c TabelaKursow ( ) { p o z y c j e = new V e c t o r ( ) ; }

p u b l i c v o i d s t a r t E l e m e n t ( S t r i n g u r i , S t r i n g localName , S t r i n g qName , A t t r i b u t e s a t t r i b u t e s ) t h r o w s SAXException {

s u p e r. s t a r t E l e m e n t ( u r i , localName , qName , a t t r i b u t e s ) ; s t a t e s . addElement ( qName ) ;

i f( qName . e q u a l s (” p o z y c j a ”) ) { p o z y c j a = new P o z y c j a ( ) ; p o z y c j e . addElement ( p o z y c j a ) ; }

}

p u b l i c v o i d c h a r a c t e r s (c h a r[ ] ch , i n t s t a r t , i n t l e n g t h ) t h r o w s SAXException {

s u p e r. c h a r a c t e r s ( ch , s t a r t , l e n g t h ) ;

S t r i n g v a l u e = new S t r i n g ( ch , s t a r t , l e n g t h ) ; S t r i n g s t a t e = ( S t r i n g ) s t a t e s . p e e k ( ) ; i f( s t a t e . e q u a l s (” n a z w a w a l u t y ”) ) {

p o z y c j a . nazwaWaluty = v a l u e ; }

e l s e i f( s t a t e . e q u a l s (” p r z e l i c z n i k ”) ) {

p o z y c j a . p r z e l i c z n i k = I n t e g e r . p a r s e I n t ( v a l u e ) ; }

e l s e i f( s t a t e . e q u a l s (” k u r s s r e d n i ”) ) {

p o z y c j a . k u r s S r e d n i = Double . p a r s e D o u b l e ( v a l u e . r e p l a c e (’ , ’, ’ . ’) ) ; }

e l s e i f( s t a t e . e q u a l s (” k o d w a l u t y ”) ) { p o z y c j a . kodWaluty = v a l u e ;

} }

p u b l i c v o i d endElement ( S t r i n g u r i , S t r i n g localName , S t r i n g qName ) t h r o w s SAXException {

s u p e r. endElement ( u r i , localName , qName ) ; S t r i n g s t a t e = ( S t r i n g ) s t a t e s . pop ( ) ; i f( s t a t e . e q u a l s (” p o z y c j a ”) )

p o z y c j a = n u l l; }

p u b l i c v o i d endDocument ( ) t h r o w s SAXException { s u p e r. endDocument ( ) ;

s t a t e s = n u l l; }

p u b l i c v o i d s t a r t D o c u m e n t ( ) t h r o w s SAXException { s u p e r. s t a r t D o c u m e n t ( ) ;

s t a t e s = new S t a c k ( ) ;

p o z y c j e . r e m o v e A l l E l e m e n t s ( ) ; }

}

Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 4 / 4

Cytaty

Powiązane dokumenty

Dzięki szybkiemu dostępowi do testów będziemy mogli w  przy- szłości wykluczyć tworzenie się ognisk epidemicznych w  kopal- niach, zadbać o  bezpieczeństwo pracowników

Jednakże kompilator WATCOM dostępny obecnie jako Open Watcom na warunkach open-source jest doskonale przystosowany do budo- wania 16-bitowych binariów systemu DOS za pomocą

Dużo prościej jest dla korekty jednego błędu - potrafimy oszacować od dołu, że liczba bitów kontrolnych musi wynosić co najmniej 4, i faktycznie dla 4 bitów udało nam

Program przyjmuje prosty, jednoznakowy argument pozwalający decydować, czy pliki będą wysyłane, czy odbierane, oraz argumenty po- zwalające wybrać port COM oraz plik do

Jego działanie jest bardzo proste - tworzone są dwa wątki, z których jeden odczytuje dane wpisywane za pomocą klawiatury na standardowe wejście i przekazuje je w niezmienionej

Przykład użycia instrukcji DELETE do usunięcia z tabeli Oferty_Wycofane rekordów dodanych uprzednio przy pomocy instrukcji INSERT w Listing 6 przedstawia Listing

Oznacza to, że kompilator wyłączy dla takiej zmiennej optymaliza- cje typu zastąpienia przez stałą lub zawartość rejestru, za to wygeneruje kod, który będzie odwoływał się

Dodanie atrybutu czas typu Date do klasy RequestBean1 w celu przechowania czasu rejestracji klienta pamiętany jedynie podczas przesłania jego wartości oraz danych rejestracji