<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Kidolgozott_h%C3%A1zi_feladat</id>
	<title>Szoftverfejlesztés J2EE platformon - Kidolgozott házi feladat - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Kidolgozott_h%C3%A1zi_feladat"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Kidolgozott_h%C3%A1zi_feladat&amp;action=history"/>
	<updated>2026-05-17T20:59:06Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Kidolgozott_h%C3%A1zi_feladat&amp;diff=157045&amp;oldid=prev</id>
		<title>David14: David14 átnevezte a(z) Nobr Szoftverfejlesztés J2EE platformra br Házi feladat: Car sharing /nobr lapot a következő névre: Szoftverfejlesztés J2EE platformon - Kidolgozott házi feladat</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Kidolgozott_h%C3%A1zi_feladat&amp;diff=157045&amp;oldid=prev"/>
		<updated>2013-02-06T00:26:14Z</updated>

		<summary type="html">&lt;p&gt;David14 átnevezte a(z) &lt;a href=&quot;/index.php?title=Nobr_Szoftverfejleszt%C3%A9s_J2EE_platformra_br_H%C3%A1zi_feladat:_Car_sharing_/nobr&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Nobr Szoftverfejlesztés J2EE platformra br Házi feladat: Car sharing /nobr (a lap nem létezik)&quot;&gt;Nobr Szoftverfejlesztés J2EE platformra br Házi feladat: Car sharing /nobr&lt;/a&gt; lapot a következő névre: &lt;a href=&quot;/Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Kidolgozott_h%C3%A1zi_feladat&quot; title=&quot;Szoftverfejlesztés J2EE platformon - Kidolgozott házi feladat&quot;&gt;Szoftverfejlesztés J2EE platformon - Kidolgozott házi feladat&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;hu&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Régebbi változat&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;A lap 2013. február 6., 02:26-kori változata&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;hu&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Nincs különbség)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>David14</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Kidolgozott_h%C3%A1zi_feladat&amp;diff=145721&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|J2EECarSharing}}   %TOC{depth=&quot;3&quot;}%  ==Specifikáció==  A szoftver célja egy olyan szolgáltatás megvalósítása, amelynek segítségé…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Kidolgozott_h%C3%A1zi_feladat&amp;diff=145721&amp;oldid=prev"/>
		<updated>2012-10-22T11:40:32Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|J2EECarSharing}}   %TOC{depth=&amp;quot;3&amp;quot;}%  ==Specifikáció==  A szoftver célja egy olyan szolgáltatás megvalósítása, amelynek segítségé…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Valaszthato|J2EECarSharing}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%TOC{depth=&amp;quot;3&amp;quot;}%&lt;br /&gt;
&lt;br /&gt;
==Specifikáció==&lt;br /&gt;
&lt;br /&gt;
A szoftver célja egy olyan szolgáltatás megvalósítása, amelynek segítségével egymásra találhatnak az egyedül utazó sofőrök és a társulni kívánó utasok.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásban a következő funkciókat valósítottam meg:&lt;br /&gt;
* Útvonal kijelölése térképen. A sofőrök a Google Maps segítségével adhatják meg, hogy milyen útvonalon haladnak.&lt;br /&gt;
* Közös állomások kijelölése. Az adminisztrátor felvehet a nagyobb csomópontokba állomásokat, hogy a felhasználók számára kevesebb munkával járjon az útvonal kijelölése.&lt;br /&gt;
* Időpontok kiválasztása. A sofőr megadhatja, hogy milyen időpont(ok)ban megy végig egy adott útvonalon&lt;br /&gt;
* Keresés az útvonalak között. A felhasználó cím és időpont alapján keresheti meg azt az útvonalat, ami legközelebb áll a terveihez.&lt;br /&gt;
* Jelentkezés utazásra. A felhasználó kiválaszthat egy útvonalat és megmondhatja, hogy egyedül vagy többedmagával akar utazni, és szöveges megjegyzést fűzhet a jelentkezéshez.&lt;br /&gt;
* Jelentkezések menedzselése. A sofőr elfogadhat vagy visszautasíthat egy jelentkezést.&lt;br /&gt;
&lt;br /&gt;
==Szoftver környezet==&lt;br /&gt;
&lt;br /&gt;
A fejlesztés során a következő környezetet használtam:&lt;br /&gt;
* NetBeans 5.5&lt;br /&gt;
* Sun Java System Application Server 9&lt;br /&gt;
* Microsoft SQL Server 2005 + JDBC Driver&lt;br /&gt;
* CVS szerver a SourceForge.net-en&lt;br /&gt;
Bár a program Microsoft SQL Server alatt készült, csak szabványos SQL utasításokat használ, ezért elvileg bármilyen más adatbázis szerver alá átültethető.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
&lt;br /&gt;
* Az sql\carsharing.sql tartalmazza az adatbázis sémát.&lt;br /&gt;
* A carsharing-ejb\setup\microsoft_sqlPool.sun-resource file-ban kell beállítani az adatbázis kapcsolat paramétereit.&lt;br /&gt;
* A Google Maps használatához ingyenes regisztráció szükséges. A jelenlegi regisztrációs kulcs a localhost:8080 alatt működik, ha máshonnan akarjuk futtatni, a carsharing-war\web\WEB-INF\jspf\GoogleMapsKey.jspf file-t felül kell írni.&lt;br /&gt;
&lt;br /&gt;
==Architektúra==&lt;br /&gt;
&lt;br /&gt;
===Entity beanek===&lt;br /&gt;
&lt;br /&gt;
* Users: a felhasználók alapadatait tartalmazza.&lt;br /&gt;
* Station: állomások földrajzi koordinátáit és címét tartalmazza.&lt;br /&gt;
* Path: útvonal, ami állomások sorozatából áll.&lt;br /&gt;
* PathStation: kapcsolótábla a Path és a Station között, továbbá ez tartalmazza az útvonalon az állomások sorrendjét.&lt;br /&gt;
* Route: útvonalhoz tartozó idő információk.&lt;br /&gt;
* Carriage: ha egy felhasználó jelentkezik egy utazásra, ide kerülnek be a kapcsolódó információk. Itt tartjuk nyilván azt a flaget, amivel a sofőr visszajelezhet, hogy elfogadta-e a jelentkezést.&lt;br /&gt;
* SearchResult: nem entity bean, csak sima bean. A web service-szel megvalósított keresés eredménye adódik vissza SearchResult tömbben.&lt;br /&gt;
&lt;br /&gt;
===Session beanek===&lt;br /&gt;
&lt;br /&gt;
A metódusokat szerep (szükséges jogosultsági szint) szerint csoportosítottam session beanekbe.&lt;br /&gt;
&lt;br /&gt;
======PassengerBean======&lt;br /&gt;
* checkLogin(): bejelentkezéskor ellenőrzi a jelszót.&lt;br /&gt;
* createUser(): regisztrál egy új felhasználót.&lt;br /&gt;
* search(): végrehajt egy keresést. A keresőkifejezés tartalmazhatja a kiindulási és a cél címet, és lehet időintervallumra szűkíteni.&lt;br /&gt;
* findRoutesBetween(): egy útvonalhoz keresi meg az időpontokat egy adott időintervallumban.&lt;br /&gt;
* getRouteInfo(): egy konkrét útvonal-időpont párhoz gyűjti ki a kapcsolódó információkat.&lt;br /&gt;
* applyForRoute(): jelentkezés utazásra.&lt;br /&gt;
* deleteApplication(): jelentkezés törlése.&lt;br /&gt;
&lt;br /&gt;
======DriverBean======&lt;br /&gt;
* insertStation(): felvesz egy új állomást.&lt;br /&gt;
* updateStation(): módosítja egy állomás adatait.&lt;br /&gt;
* deleteStation(): töröl egy állomást.&lt;br /&gt;
* findPathsByOwner(): kikeresi egy adott felhasználó útvonalait.&lt;br /&gt;
* findStationsOnPath(): részletez egy adott útvonalat.&lt;br /&gt;
* insertPath(): létrehoz egy útvonalat.&lt;br /&gt;
* updatePath(): módosít egy útvonalat.&lt;br /&gt;
* deletePath(): töröl egy útvonalat.&lt;br /&gt;
* insertRoute(): felvesz egy időpontot egy útvonalhoz.&lt;br /&gt;
* updateRoute(): módosítja az időpontot.&lt;br /&gt;
* deleteRoute(): törli az időpontot.&lt;br /&gt;
* findApplicantsByDriver(): kikeresi azokat a felhasználókat, akik egy adott sofőr útjaira jelentkeztek.&lt;br /&gt;
* acceptOrRefuse(): elfogad vagy elutasít egy jelentkezést.&lt;br /&gt;
&lt;br /&gt;
======AdminBean======&lt;br /&gt;
* listAllUsers(): felsorolja a felhasználókat.&lt;br /&gt;
* isAdmin(): megállapítja egy felhasználóról, hogy admin-e.&lt;br /&gt;
* deleteUser(): töröl egy felhasználót.&lt;br /&gt;
* exportDatabase(): az adatbázis tartalmát SQL scriptbe menti.&lt;br /&gt;
&lt;br /&gt;
===Szervletek===&lt;br /&gt;
&lt;br /&gt;
* Application: jelentkezés a kiválasztott útra.&lt;br /&gt;
* ChoosePath: felsorolja a sofőr által felvett útvonalakat, és megjeleníti térképen. Tovább lehet lépni az állomások vagy útvonalak szerkesztéséhez.&lt;br /&gt;
* ChooseRoute: egy útvonalhoz felsorolja az időpontokat, és tovább lehet lépni a jelentkezéshez.&lt;br /&gt;
* EditFixedStations: az admin itt tudja szerkeszteni a beépített állomásokat.&lt;br /&gt;
* EditPath: itt kötheti össze a sofőr az állomásokat útvonallá grafikus felületen.&lt;br /&gt;
* EditStations: új állomások felvétele, a meglévők átmozgatása vagy a cím módosítása.&lt;br /&gt;
* EditTime: egy útvonalhoz itt lehet indulási időpontokat hozzárendelni.&lt;br /&gt;
* ExportDatabase: az adatbázis tartalmát INSERT parancsokra fordítja és lementi SQL scriptbe. Mivel a reflection nem működött EJB-s annotációkra, nem garantált, hogy helyesek lesznek az oszlopnevek.&lt;br /&gt;
* ListApplicants: felsorolja a jelentkezőket egy sofőr útjaira. Itt lehet elfogadni vagy visszautasítani a jelentkezést.&lt;br /&gt;
* ListApplications: felsorolja egy felhasználó jelentkezéseit.&lt;br /&gt;
* ListUsers: felsorolja a regisztrált felhasználókat, és lehetőséget biztosít törlésre.&lt;br /&gt;
* Login: belépteti a felhasználót és átirányítja a megfelelő oldalra. A bejelentkezett felhasználó azonosítóját webes session-ben tárolom.&lt;br /&gt;
* Logout: kilépteti a felhasználót.&lt;br /&gt;
* Register: felhasználó regisztrációs form.&lt;br /&gt;
* Search: keresés az útvonalak között. A találatokhoz ki lehet választani az ideális időpontot és utána lehet jelentkezni az útra. A keresés web service-ként is meg van valósítva, ilyenkor egy SearchResult[] tömbbel tér vissza.&lt;br /&gt;
&lt;br /&gt;
======Tools.java======&lt;br /&gt;
&lt;br /&gt;
A szervletekben gyakran használt közös funkciókat implementáltam itt.&lt;br /&gt;
* konstruktor: beállítja a karakterkódolást.&lt;br /&gt;
* getIntParam(): parse-ol egy int típusú HTTP GET paramétert.&lt;br /&gt;
* checkLogin(): ellenőrzi, hogy be van-e jelentkezve a felhasználó, illetve szükség esetén azt is, hogy van-e admin joga.&lt;br /&gt;
* doRedirect(): a szervletről átirányít a jsp-re, vagy egy másik szervletre, miközben megtartja a query stringet.&lt;br /&gt;
* parseTime(): egy stringet dátumként értelmez.&lt;br /&gt;
&lt;br /&gt;
===Megjelenítés===&lt;br /&gt;
&lt;br /&gt;
A webes megjelenítési réteg tisztán jsp alapú. Fontos szempont volt a jsp oldalak írásánál, hogy minél kevesebb logika kerüljön beléjük. A bonyolultabb számításokat szervletek vagy Tag Handlerek végzik. Az utóbbiak hívják a session beaneket is. Tipikusan a térképekkel kapcsolatos, sok helyen ismétlődő műveleteket emeltem ki tagekbe.&lt;br /&gt;
&lt;br /&gt;
===Filterek===&lt;br /&gt;
&lt;br /&gt;
Filtert csak arra használtam, hogy megakadályozzam a jsp oldalak közvetlen letöltését. A jogosultságkezelés túlzottan összetett ahhoz, hogy filterek szintjén kezelni lehessen, ezért a szervletek elején ellenőrzök, és szükség esetén átirányítom a felhasználót a bejelentkező oldalra.&lt;br /&gt;
&lt;br /&gt;
===Javascriptek===&lt;br /&gt;
&lt;br /&gt;
A térkép kezelését 4 Javascript file-ba szedtem szét.&lt;br /&gt;
* map.js: közös megjelenítés és eseménykezelés.&lt;br /&gt;
* stations.js: állomások szerkesztése. A szervernek csak a változásokat küldi el, úgy történik a szinkronizáció.&lt;br /&gt;
* viewpath.js: térképen útvonal megjelenítésével kapcsolatos függvények&lt;br /&gt;
* editpath.js: útvonal szerkesztése.&lt;br /&gt;
Az állomások és az útvonalak inicializálását jsp tagek segítségével generált Javascript végzi.&lt;br /&gt;
A térkép működését az határozza meg, hogy a 4 .js file-ból melyeket töltjük be, és melyik inicializáló modult hívjuk meg.&lt;br /&gt;
&lt;br /&gt;
==Forráskód==&lt;br /&gt;
&lt;br /&gt;
A forráskód letölthető {{InLineFileLink|Valaszthato|J2EECarSharing|carsharing.zip|innen}} vagy a http://sourceforge.net/projects/carsharing/ oldalról anonim CVS-en keresztül.&lt;br /&gt;
&lt;br /&gt;
-- [[PallosPeter|Peti]] - 2007.12.15.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Valaszthato]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>