Harta Politico Administrativa a Unui Judet

Harta politico-administrativa a unui judet

VERSIUNE PENTRU SMARTPHONE

CUPRINSUL

HARTA POLITICO-ADMINISTRATIVA A UNUI JUDET

VERSIUNE PENTRU SMARTPHONE

1 INTRODUCERE

1.1 SCOPUL

1.2 MOTIVAȚIA

2 SPECIFICATII TEHNICE SI TEORETICE

2.1 LIMBAJUL DE PROGRAMARE JAVA

2.2 SISTEMUL DE OPERARE ANDROID

2.2.1 Arhitectura

2.2.2 Caracteristici

2.2.3 Managementul fisierelor

2.2.4 Procese și cicluri de viață

2.2.5 Apelul procedurilor la distanță

2.3 GOOGLE MAPS

2. STUDIU DE CAZ: JUDETUL DOLJ

2.1 PREZENTARE

2.2 LOCATIE GEOGRAFICA

2.3 ORGANIZARE SI ADMINISTRATIE

3. DESCRIEREA APLICATIEI

3.1 ARHITECTURA

3.2 ARHITECTURA MODULARA

3.2.1 Interfatarea cu modulul furnizor de harti administrative

3.2.2 Modulul furnizor de date politico-administrative

3.2.3 Modul de achizitie de date

3.2.4 Modulul de interfata vizuala

3.2.5 Protocol de interactiune

3.3 IERARHIA DE CLASE

3.4 DATE DE TEST

4. CONCLUZII

5. BIBLIOGRAFIE

6. REFERINȚE WEB

A. CODUL SURSĂ

CD / DVD

INDEX

LISTA FIGURILOR

Figura 1. Selectarea prin click dreapta a opțiunii „Update field” 5

Figure 1: Serviciu web de baza 2

Figure 2: Interactiunea web traditionala 3

Figure 3: Interactiunea serviciilor web 3

Figure 4 :Functionarea unei serviciu web de tip RPC 4

Figure 5:Rolurile din cadrul unui serviciu de tip RPC si interactiunea dintre acestea 5

Figure 6: Stiva serviciului web 6

Figure 7: Structura unui mesaj SOAP 7

Figure 8 : Procesul UDDI 10

Figure 9: Componentele ce alcatuiesc o arhitectura de tip RPC 10

Figure 10: Resursa, URI, Reprezentare -> REST 13

Figure 11: REST 13

Figure 12: Servicii Web REST 15

Figure 13: Servicii Web RPC folosind SOAP 15

Figure 14: Un exemplu de fisier de configurare pentru un serviciu web WCF 18

Figure 15: Definirea unui contract pentru serviciu web 18

Figure 16: Arhitectura Android 20

Figure 17: Functionarea metodei checksum 22

Figure 18: Verificarea sistemului de fisiere pentru ext4 este mult mai rapida decat ext3 23

Figure 19:Bucurestiul vazut din satelit 26

Figure 20: Paris, vazut din Sreet View 27

LISTA TABELELOR

Table 1: Date de test 24

Introducere

Scopul

Scopul acestei licente este de a concepe si dezvolta arhitectura unui prototip de harta politica si administrativa, portabila, care va fi mereu actualizata de catre un partid politic sau de catre orice alt doritor ce va vrea sa aibe o reprezentare cat mai clara asupra situatiei politice pe care o are de administrat.

Motivația

Motivatia mea pentru alegerea acestei teme este generata de interesul meu activ pentru scena politica. Lucrand ultimii sapte ani in preajma politicienilor, am observat nevoia lor continua de a fi la curent cu dispunerea aliatilor si adverasarilor politici pe harta administrativa. Pentru acest scop am decis sa abordez eu aceasta tema pentru licenta.

SPECIFICATII TEHNICE SI TEORETICE

La realizarea aplicatiei a fost necesara implementarea a mai multor tehnologii ca Limbajul de programare Java, hartile Google Maps, Sistemul de operare Android precum si diverse baze de date. In subcapitolele ce urmeaza am incercat sa cuprind cateva specificatii tehnice si teoretice de ansamblu legat de fiecare dintre aceste tehnologii.

Limbajul de programare Java

Limbajul de programare Java™ dezvoltat de catre Sun Microsystem, este construit pentru a fi un limbaj de programare masina independent, care este suficient de sigur sa traverseze retele si suficient de puternic pentru a inlocui codul executabil original. Denumita initial OAK, tehnologia Java care a avut un imapact enorm asupra dezvoltatorilor de software, dand dovada de robustete si simplitate, este formata dintr-un limbaj de programare de nivel inalt pe baza caruia sunt construite o serie de platforme destinate implementarii de aplicatii pentru toate segmentele industriei software.Initial, cel mai mare interes pentru Java a fost concentrat in jurul capacitatii sale de a dezvola aplicatii incorporate in world wide web, aceste aplicatii fiind numite applet-uri. Cu Java 2, limbajul de programare java devine cel mai complex instrument pentru construirea de interfete grafice, totodata el incepe sa devina o platforma populara in dezvoltarea traditionala de aplicatii software si de aplicatii de server folosind interfete servlet.

Dintre caracteristicile principale ale limbajului amintim:

simplitate – Java este ușor de învățat, caracteristicile complicate (supraîncărcarea operatorilor, moștenirea multiplă, șabloane) întâlnite în alte limbaje de programare nu mai sunt intalnite aici.

robustețe, elimină sursele frecvente de erori ce apar în programare prin eliminarea pointerilor, administrarea automată a memoriei și eliminarea fisurilor de memorie printr-o procedură de colectare a 'gunoiului' care rulează în fundal. Un program Java care a trecut de compilare are proprietatea că la execuția sa nu "crapă sistemul".

orientat pe obiecte – elimină complet stilul de programare procedural; se bazează pe încapsulare, moștenire, polimorfism

ușurință în ceea ce privește programarea în rețea sau a diverselor aplicatii ce folosesc baze de date ori fire de executie(multithreaded) etc

securitate, este cel mai sigur limbaj de programare disponibil în acest moment, asigurând mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamică a codului pentru detectarea secvențelor periculoase, impunerea unor reguli stricte pentru rularea programelor lansate pe calculatoare aflate la distanta, etc

portabilitate, cu alte cuvinte Java este un limbaj independent de platforma de lucru, aceeași aplicație rulând, fără nici o modificare, pe sisteme diferite cum ar fi Windows, UNIX sau Macintosh, lucru care aduce economii substanțiale firmelor care dezvoltă aplicații pentru Internet. Sloganul de bază este: „Write once, run anywhere”

compilat și interpretat

asigură o performanță destul de mare a codului de octeți

conține o librărie de clase și interfețe pentru diverse domenii cum ar fi programarea interfețelor-utilizator (JFC, AWT, Swing), programare distribuită (comunicare TCP/IP, CORBA, RMI etc.)

este un limbaj dinamic

este structurat dupa limbajele de programare C și C++, trecerea de la C / C++ la Java realizandu-se destul de ușor.

este case sensitive

permite dezvoltarea aplicațiilor pentru Internet – crearea unor documente Web îmbunătățite cu animație și multimedia.

Kitul de dezvoltare Java (JDK) este disponibil gratis

Limbajul Java este atat un limbaj compilat cat și interpretat. Limbajele de programare se împart în două categorii (dupa modul de executie) si anume:

interpretate: instrucțiunile limbajului sunt citite linie cu linie de catre un program numit interpretor și traduse în instrucțiuni cod mașină . Avantajul este legat de simplitate iar ca dezavantaj avem viteza de execuție redusă;

compilate: codul sursă al programelor este transformat de compilator într-un cod ce poate fi executat direct de procesor; avantaj: execuție rapidă; dezavantaj: lipsa portabilității, codul compilat într-un format de nivel scăzut nu poate fi rulat decât pe platforma pe care a fost compilat.

Codul de octeți este diferit de codul mașină. Codul mașină este reprezentat de o succesiune de 0 și 1; codurile de octeți sunt seturi de instrucțiuni care seamănă cu codul scris în limbaj de asamblare. Codul mașină este executat direct de către procesor și poate fi folosit numai pe platforma pe care a fost creat; codul de octeți este interpretat de mediul Java și de aceea poate fi rulat pe orice platformă care folosește mediul de execuție Java.

Fazele prin care trece un program Java sunt:

Codul sursa Java -> (compilare) -> Codul de octeti -> (interpretare)

Există două modalitati de a lucra în Java: în linie de comandă – pașii fiind descrisi mai jos, sau folosind un editor Java cum ar fi JCreator, Eclipse. In cazul de fata, pentru dezvoltarea aplicatiei ce urmeaza a fi prezentata in capitolele urmatoare s-a folosit editorul java Eclipse.

Realizarea unui program Java constă în următorii pași:

Programul este editat într-un editor de texte;

Salvarea programului sub numele NumeClasa.java unde NumeClasa este numele clasei care conține metoda main(). Într-un program Java trebuie să existe o singură clasă care să conțină o metodă main(). Cu alte cuvinte, numele clasei trebuie să coincidă cu numele fișierului. Extensia fișierului este .java

Compilarea programului se face folosindu-ne de comanda:

javac NumeClasa.java

Executarea programului se face cu comanda:

java NumeClasa

Sistemul de operare android

Android este o platforma software si un sistem de operare pentru dispozitive mobile, bazata pe nucleul Linux. Androidul include un sistem de operare middleware și aplicații cheie, fiind bazat pe o versiune modificată a kernel-ului de Linux .Acest sistem este dezvoltat initial de Google, mai tarziu fiind dezvoltat si de Open Handset Aliance (OHA), o alianta formata din mai multe firme celebre (HTC, Intel, Motorola, Nvidia,etc.), creata special pentru a dezvolta acest sistem.

2.2.1 Arhitectura. In figura de mai jos putem vedea ilustrata arhitectura Android si organizarea acestuia pe mai multe nivele:

Fig.1 – Structura Android

Un kernel de linux. Se foloseste Linuxul pentru ca este un sistem foarte stabil, avand driveri deja existenti.

Fig 2 – Nivelul Linux Kernel

Nivelul Librarii. Aceste librarii sunt scrise in limbajul C/C++ si sunt alcatuite la randul lor din:

Fig 4 – Nivelul Librarii

*Surface Manager este responsabil cu compunerea ferestrelor si afisarea acestora pe ecran precum si asigurarea afisarii pixelilor pe ecran.

*Open GL ES este o librarie 3D

*SGL este o librarie 2D folosita pentru desene.

*Media Framework este utilizat pentru formele de date audio si video , cuprinzand toate codecurile

necesare.

*Fonturi

*SSL

*SQLite- pentru stocarea datelor

*WebKit este folosit pentru navigarea web

*Libc

Android Run Time este un nivel ce contine contine:

Fig 5 – Android Runtime

-O masina virtuala Dalvik, aceasta fiind componenta principala a acestui nivel.

-Fisierele DEX care sunt alcatuite din cuvinte organizate pe biti.

-Core Libraries – aceste librarii sunt scrise in libajul JAVA

Aplicatii Framework este un alt nivel, fiind alcatuit in intregime in limbaj JAVA. Acesta

cuprinde:

Fig 6 – Nivelul Aplicatii Frameworks

ActivityManager – gestiunea activitatii – coordoneaza ciclul de viata al aplicatiilor

PackageManager – gestionarea pachetelor – trebuie sa stie ce trebuie sa faca fiecare aplicatie in parte

WindowManager – gestiunea ferestrelor

TelephonyManager – gestiunea telefonului

ContentProvider – providerul de continut – ofera posibilitatea datelor sa fie folosite de alte aplicatii

ResouseManager – Gestiunea resurselor – este folosit in stocarea vectorilor

ViewSystem – Sistemul de vizualizare – contine butoane, liste, etc.

LocationManager – gestiunea locatiilor

NotificationManager – gestiunea instiintarilor

Nivelul Aplicatiilor este ultimul nivel din aceasta arhitectura. Este alcatuita din totalitatea aplicatiilor ce folosesc o frendly-user-interface – interfata prietenoasa. Componente

Fig 7 – Nivelul Aplicatii

-Home aplicatie de baza, asemenea unei pagini de start

-Contacte – o baza de date care contine nr de telefon, nume, adresa, etc.

-Telefon- aplicatie folosita pentru a putea da un telefon

-Browser – salveaza informatii, descarca informatii si acceseaza pagini web

Caracteristici

Sistemul de operare Android are urmatoarele caracteristici:

Cadru de aplicatii care permite reutilizarea și înlocuirea componentelor

Mașina virtuală folosita este Dalvik optimizata pentru dispozitive mobile

Browser-ul integrat bazat pe open-source WebKit motor

Grafica optimizata bazata pe o bibliotecă grafica 2D personalizată; grafica 3D este bazată pe OpenGL ES 1.0

SQLite pentru stocarea datelor structurale

Suport media pentru fisierele audio, video, și imagini (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

Telefonie GSM

Bluetooth, EDGE, 3G si WiFi licatiilor ce folosesc o frendly-user-interface – interfata prietenoasa. Componente

Fig 7 – Nivelul Aplicatii

-Home aplicatie de baza, asemenea unei pagini de start

-Contacte – o baza de date care contine nr de telefon, nume, adresa, etc.

-Telefon- aplicatie folosita pentru a putea da un telefon

-Browser – salveaza informatii, descarca informatii si acceseaza pagini web

Caracteristici

Sistemul de operare Android are urmatoarele caracteristici:

Cadru de aplicatii care permite reutilizarea și înlocuirea componentelor

Mașina virtuală folosita este Dalvik optimizata pentru dispozitive mobile

Browser-ul integrat bazat pe open-source WebKit motor

Grafica optimizata bazata pe o bibliotecă grafica 2D personalizată; grafica 3D este bazată pe OpenGL ES 1.0

SQLite pentru stocarea datelor structurale

Suport media pentru fisierele audio, video, și imagini (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

Telefonie GSM

Bluetooth, EDGE, 3G si WiFi

Aparat de fotografiat, GPS, busola, și accelerometru

Mediu bogat de dezvoltare, inclusiv un emulator de dispozitiv, instrumente pentru depanare, profilare de memorie și de performanță, precum și un plug-in pentru Eclipse IDE

Managementul fisierelor

Din momentul aparitiei sistemului Android 2.3 (Gingerbread), s-a trecut de la sistemul de fisiere YAFFS, la sistemul de fisiere ext4. Acest sistem de fisiere a fost dezvoltat pentru Linux, fiind succesorul sistemului ext3.

Procese și cicluri de viață

In momentul in care prima dintre componentele unei aplicații va trebui să fie rulata, sistemul Android începe un proces de Linux, cu un singur fir de execuție. In mod implicit, toate componentele aplicației ruleza în acest proces și fir de executie.

Sistemul Android încearcă să mențină procesul unei aplicatii pentru un timp cat mai indelungat, dar în cele din urmă vechile procese trebuiesc inchise atunci cand memoria este scăzuta. Pentru a determina care procese trebuiesc păstrate și care inchise, Androidul acorda locuri pentru fiecare proces într-o "ierarhie de importanță", bazata pe componentele ce funcționeaza în ea și starea acestor componente. Procese cu cea mai mica importanța sunt eliminate în primul rând, apoi următoarele cu cel mai mica, și așa mai departe. Există cinci niveluri în ierarhie. Lista de mai jos le prezintă în ordinea importanței:

Un proces de prim-plan este un proces necesar pentru ceea ce utilizatorul realizeaza efectiv în prezent. Un proces este considerat a fi în prim-plan dacă indeplineste oricare dintre următoarele condiții:

Acesta execută o activitate cu care utilizatorul interacționează.

Acesta găzduiește un serviciu care este legat de activitatea cu care utilizatorul interacționează.

Detine un  obiect de tip Service care executa unul dintre Callbacks-urile ciclului său de viață

Detine un obiect de tip BroadcastReceiver  care executa metoda de receptie.Doar câteva procese de prim-plan pot exista la un moment dat. Ele sunt ucise numai in ultimă instant.În cazul în care memoria este atât de mică încât să nu poate continua să le ruleze toate. În general, în acel moment, dispozitivul a atins o stare de paginare a memoriei, astfel încât uciderea unor procese de prim-plan este necesară pentru a păstra interfață pentru utilizator receptivă.

Un proces vizibil este unul care nu are toate componentele in prim-plan, dar încă mai pot afecta ceea ce utilizatorul vede pe ecran. Un proces este considerat a fi vizibil dacă oricare dintre următoarele condiții sunt indeplinite:

Acesta găzduiește o activitate care nu se află în prim-plan, dar este încă vizibila pentru utilizator.

Acesta găzduiește un serviciu de care este legat la o activitate vizibilă. Un proces vizibil este considerat important și nu va fi ucis excepția cazului în care acest lucru este necesar pentru a păstra toate procesele care rulează in prim-plan.

Un proces de servicii este unul care execută un serviciu care nu se încadrează în una dintre cele două categorii mai mari. Deși procesele de servicii nu sunt direct legate de orice interfata cu utilizatorul, ele fac, în general, lucruri de care utilizatorului ii pasa, astfel încât sistemul le menține, cu excepția cazului în care nu este de ajunsa memorie pentru a le menține, împreună cu toate procesele de prim-plan și vizibile.

Un proces de fundal este unul care deține o activitate care nu este în prezent vizibila pentru utilizator. Aceste procese nu au un impact direct asupra experienței utilizatorului, si poate fi ucis în orice moment pentru a recupera memorie pentru un proces de prim-plan, vizibil, sau de serviciu. De obicei, există mai multe procese care rulează in fundal, astfel încât acestea sunt ținute într-o lista LRU (Least Recently Used = cel mai puțin recent folosit) pentru a se asigura că procesul cu activitatea cea mai recent vazuta de catre utilizator este ultimul care urmează să fie ucis. 

Un proces gol este unul care nu deține componentele active ale unei aplicație. Singurul motiv pentru a menține un astfel de proces este pentru a îmbunătăți timpul de pornire data viitoare cand o componentă are nevoie pentru a rula în el. Sistemul ucide adesea aceste procese, în scopul de a echilibra resursele generale ale sistemului de cache între proces și cache care stau la baza kernel-ului.

Android plaseaza un proces la cel mai înalt nivel care este posibil, pe baza importanței componentelor active în prezent în proces. De exemplu, dacă un proces găzduiește un serviciu și o activitate vizibilă, procesul va fi cotat ca fiind un proces vizibil, nu ca proces de serviciu.

În plus, clasamentul unui proces poate fi crescut, deoarece alte procese sunt dependente de el. Un proces care servește unui alt proces nu poate fi clasat mai jos decât procesul servit. 

Deoarece un proces care rulează un serviciu este clasat mai sus decât unul cu activități de fundal, o activitate care inițiază o operațiune de lungă durată ar putea face bine să înceapă un serviciu pentru această operațiune, mai degrabă decât pur și simplu sa ruleze un fir – în special în cazul în care operațiunea va dura probabil mai mult decât activitatea. Folosind un serviciu garantează că operațiunea va avea cel puțin prioritat de "procesul de serviciu", indiferent de ceea ce se întâmplă cu activitatea.

Procese

Procesul în cazul în care o componentă se execută este controlat de fișierul manifest. Elementele componente:

– activitate

– serviciu

– receptor

– furnizor

Fiecare are un proces atribut care poate specifica un proces în cazul în care această componentă ar trebui să ruleze. Aceste atribute pot fi stabilite astfel încât fiecare componentă se execută în propriul proces, sau astfel încât unele componentele sa imparta un proces în timp ce altele nu. Acestea pot fi de asemenea setat astfel încât componentele diferitelor aplicații pot rula în cadrul aceluiași proces – cu condiția ca cererile sa aiba același ID-ul de utilizator Linux și sa fie semnate de către aceleași autorități. Fiecare aplicatie are de asemenea un process atribut, pentru a stabili o valoare implicită care se aplică la toate componentele.

Sitemul de operare Android poate decide să închidă un proces la un moment dat, atunci când memoria este scăzuta și este solicitat de alte procese care servesc imediat utilizatorul. Componentele aplicației care rulează în acest proces, sunt distruse. Un proces este repornit pentru acele componente atunci sunt utilizate.

Fire de proces

Deoarece interfața cu utilizatorul ar trebui să fie mereu rapidă pentru a răspunde la acțiunile utilizatorului, firul care găzduiește o activitate nu ar trebui sa gazduiasca, de asemenea, operațiunile de consumatoare de timp. Orice lucruri care nu pot fi realizate rapid sunt atribuite unui fir diferit.

Apelul procedurilor la distanță

Sistemul de operare Android are un mecanism ușor pentru apelurile de procedură la distanță (RPCs-remote procedure call), in cazul în care o metodă se numește la nivel local, dar este executată la distanță (într-un alt proces), cu orice rezultat întors înapoi la apelantului. Acest lucru presupune descompunerea apelul metodei și toate datele sale inerente la un nivel la care sistemul de operare poate înțelege, si transmite de la procesul de la nivelul și spatiu de adrese local la procesul și spațiul de adrese de la distanță. Valorile returnate sunt transmise în direcția opusă. 

O interfață RPC pot include numai metode, in mod implicit, toate metodele sunt executate sincron, chiar dacă nu există nici o valoare de întoarcere.

Google maps

Google Maps este o aplicație de cartografiere ce poate fi accesată la adresa http://maps.google.com si pusa la dispozitie utilizatorilor, gratuit. Istoria google maps ia nastere odată cu achiziționarea companiei Where 2 Technologies de către Google la finele anului 2004. Pentru a putea fi utilizata, trebuie să avem neapărat un calculator și o conexiune la Internet.

Cu ajutorul lui Google Maps se pot vedea șosele de pe tot globul, sensuri de circulație, informații despre traffic, cum ar fi străzi închise sau deschise circulației sau care se află în reparație, stare despre carosabil și multe alte informatii utile.

Google Maps este adesea folosita la aflarea distanței dintre două sau mai multe puncte de pe hartă (indiferent de mijlocul de transport utilizat) cu evitarea autostrăzilor sau a diverselor trasee. Aplicatia oferă si multe indicații rutiere utile și îți sugerează diverse trasee care pot fi exprimate, în funcție de preferințele utilizatorilor, in diverse unitati de masura (km sau mile) dar și durata de parcurs pe aceste trasee.

Exista trei moduri diferite de a vizualiza hărțile: Harta, Satelit și Teren. Indiferent de modul ales dacă duci cursorul deasupra butonului “Mai multe…” poți adăuga pe hartă elemente ca: fotografii, materiale video, camere web și/sau informații preluate de pe site-ul www.wikipedia.com.

Figura 8 – Bucurestiul vazut din satelit

Aplicația pe care am dezvoltat-o se bazeaza in mare parte pe aceste harti pe care și-au pus amprenta definitive am putea spune,dezvoltatorii de la Google si este normal să mentionez si funcția de căutare ce urmeaza a fi introdusa in variant finala a aplicatiei. Astfel, pe lângă căutarea diverselor puncte de pe harta, se pot căuta in Google Maps si companii, adrese și diverse locații de interes. Prin intermediul caracteristicii intitulată Street View se pot afișa pe monitor imagini panoramice 360°, aceasta optiune nu va fi insa implementata in aplicatie deoarece ea necesita o conexiune foarte buna la internet si consuma foarte mult trafic de date.Momentan in aceasta caracteristica au fost acoperite doar anumite orase din diverse tari. Odata cu trecerea timpului cei de la Google o să capteze probabil imagini stradale și din toate țările de pe glob.

Figura 9 – Paris, vazut din Sreet View

Venind în ajutorul posesorilor de dispozitive mobile de tip smartphone, Google a lansat în anul 2006 o aplicație denumită Google Maps Mobile bazată pe mediul de programare Java. Aceasta se poate instala pe orice dispozitive (smartphone,tablete,etc.) ce rulează:

IOS

Android

Palm OS dar și pe dispozitivele BlackBerry

Windows Mobile

Symbian

Studiu de Caz: judetul Dolj

Prezentare

Județul Dolj se întinde pe o suprafață de 7.414 km2, respectiv 3,1% din teritoriul României, fiind al VII-lea județ ca mărime al tării. Fluviul Dunărea străbate partea de sud a județului pe o distantă de 150 km, formând totodată granița cu Bulgaria. 

Prima atestare documentară datează din anul 1444 ca Județul de Balta, delimitat de Lacul Blahnița la nord, care acum aparține județului Mehedinți și de Lacul Bistreț la sud. Primele comunități omenești cunoscute în acest spațiu sunt atestate arheologic prin descoperirile de la Amărăști, comuna Fărcas și Dobromira, comuna Vârvoru de Jos și aparțin sfârșitului epocii vechi a patriei. Mult mai bogate sunt însa urmele de locuire ce datează din epoca neolitică. La Cârcea, comuna Coșoveni, a fost identificată astfel cea mai veche fază a acestei epoci, caracterizată, printre altele, de o ceramica pictată ce rivalizează din punct de vedere artistic cu ceramica policromă din neoliticul egeo – anatolian.

Densitatea de locuire, originalitatea culturii materiale și spirituale, ca și rafinamentul artistic ce individualizează epoca neolitică sunt amplu ilustrate de descoperirile din numeroase asezări de pe teritoriul județului: Șimnic, Verbița, Verbicioara, Padea, Leu, Rast, Sălcuța (care a dat și multe culturi neolitice), Cerăt etc. 

La sfarsitul secolului al XV – lea, într-un document din 1 iunie 1475 este menționată Craiova, resedința actuală a județului.

Locatie Geografica

Privit în ansamblul teritorial al României, Doljul are o poziție sudică-sud-vestică, axată pe cursul inferior al râului Jiu de la care își trage numele (Jiul de Jos sau Doljiu). Teritoriul județului se întinde între 43°43' și 44°42' latitudine nordică și, respectiv, 22° 50' și 24° 16' longitudine estică.

       Vecini: Doljul este învecinat cu judetele: Mehedinți la vest, Gorj și Vâlcea la nord, Olt la est și fluviul Dunărea la sud, pe o lungime de circa 150 km, distanță ce constituie o parte din granița naturală a României cu Bulgaria.

       Suprafața: Suprafața totală este de 7.414 kmp și reprezintă 3,1% din suprafața țării. Din acest punct de vedere Doljul se situează pe locul 7 între unitățile administrativ-teritoriale ale României.

       Populație: Evolutia istorică și transformările sociale și economice pe care societatea românească le-a cunoscut, în ultimele decenii, au determinat și modul în care a evoluat populatia judetului și structurile ei specifice. Populația Doljului, la 1 iulie 2007 (conform indicatorilor centralizați de către Direcția Regională de Statistică Dolj, data de referintă pentru ultimul anuar statistic al județului; informații ce stau la baza documentării noastre pentru actuala publicație) a fost de 712187 locuitori; din care 48,7 % – persoane de sex masculin și 51,3 % – persoane de sex feminin. Din totalul populației – 53,6 % trăieste în mediul urban și 46,4 % este stabilita la sate. Densitatea populației – în scădere – este de 96,0 locuitori/kmp. În prezent, în componența județului sunt incluse trei municipii: Craiova – reședința Doljului (297.539 locuitori), Băilești (19.802 locuitori) și Calafat (18.070 locuitori); patru orașe: Bechet (3.945 locuitori), Dăbuleni (13.033 locuitori); Filiași (18.771 locuitori), Segarcea (8.203 locuitori), 104 comune, precum și 378 sate.

Organizare si Administratie

In prezent judetul cuprinde 111 localitati cu primarii sub coordonarea consiliului judetean. Din punct de vedere administrativ judetul Dolj este format din 3 municipii, Craiova – resedința a județului, Calafat și Băilești, 4 orașe, Segarcea, Filiași, Bechet și Dăbuleni, 104 comune și 380 sate. 

Descrierea Aplicatiei

Aplicatia reprezinta o harta politico-administrativa dinamica, mereu la zi si care poate fi purtata in buzunar oriunde,o harta care nu a fost implementata niciodata in Romania. Aplicatia ce urmeaza a fi prezentata este prototipul primei astfel de harti, reprezentarea indicilor politici se realizeaza, in faza de prototip, pe structura judetului Dolj.

Functionalitatea de baza a aplicatiei este aceea de a suprapune indicatori ai orientarii politice a administatiei fiecarei localitati din Romania. Acest lucru este posibil din punct de vedere vizual folosind icoane si baloane cu detalii pe fiecare localitate vizata.

Portabilitatea hartii este posibila daca este implementata ca o aplicatie de smartphone. Iar actualizarea poate fi asigurata folosindu-se servicii web implementate de un partid politic,sau un administrator al acestei aplicatii.

Figură 10 Interfata vizuala ce permite suprapunerii informatiei politice cu harta administrativa

Arhitectura

Use case

Aplicatia este menita sa fie folosita de o singura persoana cu scop informativ pe smartphone-ul personal. Prin urmare va exista un singur use case cu multiplele functionalitati: zoom harta, rotire harta, detalii primarie, statistici primarie.

Figură 11 – Diagrama UseCase

Arhitectura modulara

Aplicatia are patru tipuri distincte de module:

Modul furnizor de harti administrative

Modul furnizor de Informatii administrativ-politice

Modul pentru interfata grafica

Modul pentru achizitia datelor necesare

Modulul care furnizeaza informatiile administrativ-politice se afla pe servere ce vor trebui sa fie implementate de catre un partid politic. Acestea vor furniza informatia necesara aplicatiilor mobile prin servicii web de tip REST.

Modulul care furnizeaza hartile exista deja implementat sub forma hartilor google care este un serviciu gratuit in limita a 20 000 de cereri pe zi. Folosirea acestui serviciu permite extinderea functionalitatii acestei aplicatii pe intreaga harta a Romaniei in momentul in care datele despre primarii vor fi disponibile.Aceasta informatie trebuie ceruta in functie de zona pe care utilizatorul doreste sa o afiseze pe ecranul dispozitivului. Prin urmare modulul de achizitie a datelor si modulul pentru interfata grafica trebuie sa fie strans legate. Acestea se vor executa pe dispozitvul mobil, urmand ca modulul de achizitie a datelor sa invoce serviciile rest necesare pentru a obtine resursele necesare aplicatiei prin intermediul unei conexiuni la internet.

Figură 12 – Arhitectura aplicatiei.

Interfatarea cu modulul furnizor de harti administrative

Fundalul aplicatiei va fi in mod constant o harta administrativa obtinuta de la Google maps. O astfel de harta se obtine de prin serviciile google care nu pot fi accesate decat cu o cheie google-api. Pentru a obine o astfel de cheie pe masina pe care se implementeaza aplicatia trebuie genereze o cheie SHA-2 si introdusa pe pagina google console a unui cont google valid creand astfel un nou proiect. Astfel posesorul acelui cont google isi asuma responsabilitatea pentru posibilele abuzuri pe care le va efectua prin intermediul aplicatiei sale dar isi asuma si posibilele castiguri generate de aplicatia sa conform figurii de mai jos. Tot astfel Google se asigura ca are cateva detalii despre proiectul din care face parte respectiva aplicatie.

Figură 13 – Monitorizarea cererilor catre serviciul de harti

În urmatorul pas se va declara în consola google că proiectul curent are nevoie de hărti. Pentru aceasta se accesează google developer console a proiectului respectiv iar in secțiunea API’s se activează serviciile necesare. În cazul nostru acest serviciu a fost Google Maps Android v2 conform figurii de mai jos.

Figură 14 – Api-ul necesar furnizarii hartilor este Google Maps Android v2

În final, pentru a identifica și aplicația Android ca fiind cea care trebuie să acceseze acest api trebuie să setăm in manifest cheia generată mai sus. Din acest moment aplicația va face toate cererile catre google services în contul acestui api.

<meta-data

android:name="com.google.android.maps.v2.API_KEY"

android:value="PASTEAPIKEYHERECAREFULLY" />

Modulul furnizor de date politico-administrative

Avand in vedere ca la nivel national nu exista o baza de date disponibila publicului larg care sa ne poata furniza orientarea politica a administratiei fiecarei localitati de pe teritoriul Romaniei, aceasta a trebuit construita adunand manual informatiile necesare pentru judetul Dolj. Baza de date este formata din tabelele primarie, partid si persoana conform figurii de mai jos. Pentru tabelul Persoana cheia primara este CNP, pentru Partid Abrevierea este cheie primara iar pentru primarie cheia primara este ID. Tabelul persoana este contine doua foreign keys catre cheile primare din Partid si Primarie indicand astfel faptul ca unei persoane ii corespunde un singur partid si o singura primarie. Fiind o bazade date mica nu a fost necesara normalizarea fiind deja in forma normala 4 conform nevoilor aplicatiei curente si natura datelor ce pot fi obtinute. Tabelul Baza de date nu contine decat versiunea curenta a bazei de date pentru a observa cu usurinta atunci cand datele trebuiesc descarcate din nou.

Figură 15 – Structura baza de date.

Obiectele care se folosesc pentru a reprezenta o localitate au următoarea structură (denumire localitate; partidul primarului; nume primar; adresa primarie; telefon primarie; logo partid). Aceasta informatie este obtinuta prin serviciul web in format comma separated values (csv) si prin serviciul web de tip REST de la serverul de baze de date. În aplicatie sunt organizate ca listă de astfel de obiecte ce urmează să populeze cu informație icoanele de pe zona hărții afișate.

Prin urmare aceasta baza de date este gestionata de un server de baze de date din spatele unui server web ce ofera posibilitatea unor interogari prin intermediul serviciilor web de tip REST. In momentul in care din internet se face o invocare a servletului rest din serverul web, acesta va returna un fisier csv care pe fiecare linie va contine o primarie. Parametrii interogarii sunt judetul din care incercam sa afisam primariile “judet” si “versiune” daca dorim ca pe prima linie a csv-ului sa apara numarul versiunii bazei de date.

Figură 16 – Modulul furnizor de date politico-administrative

Modul de achizitie de date

Modulul de achizitie de date trebuie sa ruleze pe un thread separat de modulul interfetei vizuale a celularului. Software development kit-ul de la Android ne ofera clasa AsyncTask ce poate fi extinsa cu scopul acesta. Aceasta clasa nu este menita sa ruleze intregul modul ci doar task-uri unitare precum o singura interogare catre baza de date.

Acest gen de clasa este folosit pentru obtinerea datelor administrativ politice de la serviciul Rest. Datele astfel obtinute sunt stocate automat in cache in fisierul primarii.csv pentru utilizare ulterioara. Acest fisier este utilizat in continuare pana cand baza de date trece la versiunea urmatoare.

Fig 17 – AsyncTask

Modulul de interfata vizuala

Fundalul aplicatiei este mereu o harta asa ca descrierea interfetei este formata dintr-un singur element de tip fragment care ocupa intreg ecranul. Atat inaltimea cat si latimea sunt la fel ca ale parintelui.

<fragment

android:id="@+id/map"

android:name="com.google.android.gms.maps.SupportMapFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

Algoritmul pentru modulul interfata vizuala este prezentat in urmatorul cod. Mai intai se obtine un pointer catre fragmentul harta si se citeste lista de primarii din fisierul primarii.csv. Apoi, pentru fiecare primarie se adauga un marker pe harta.

Fig 18 – GUIModule

Protocol de interactiune

Modulele aplicatiei sunt distribuite si comunica prin mesaje prin urmare trebuie definit un protocol de interactiune pentru comunicatiile dintre module. Precum se poate observa in urmatoarea diagrama de secventa prima interactiune este cu modulul de harti care furnizeaza aplicatiei harta administrativa de pe fundal. Intre timp, in mod automat se actualizeaza lista de localitati in fisierul cache primarii.csv daca este necesar. Apoi ori de cate ori utilizatorul navigheaza in harta se invoca automat serviciul modulului de harti pentru a actualiza interfata.

Marcarele adaucate in sectiunea anterioara vor ramane stationare in raport cu harta iar restul locatiilor se vor adauga atunci cand pozitia lor pe harta va deveni vizibila.

Figură 19 – Diagrama de secventa a protocolului de interactiuni

Ierarhia de clase

Clasele utilizate in prototip sunt MainActivity, Location, MyInfoWindowAdapter, care compun modulul de interfata vizuala, respectiv clasa ServiceHandler care reprezinta modulul de achizitie de date (vezi figura urmatoare). MainActivity contine metoda onCreate() care este invocata la inceputul aplicatiei . Rolul acestei metode este de a crea interfata vizuala si a o popula cu harti google, de a instantia clasa ServiceHandler pentru a invoca serviciul rest in scopul adunarii informatiei de la baza de date daca este necesar, si de a adauga MyInfoWindowAdapter ca adaptor pentru markere pe harta. Rolul clasei MyInfoWindowAdapter este acela de a customiza icoana si fereastra cu explicatii a fiecarui marker adaugat pe harta. Pentru aceasta se foloseste un xml de layout :

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal">

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical">

<ImageView

android:id="@+id/logo"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="5dp"

android:adjustViewBounds="true"

/>

<TextView

android:id="@+id/title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="12dp"

android:textStyle="bold"/>

<TextView

android:id="@+id/snippet"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="10dp"/>

</LinearLayout>

</LinearLayout>

Figură 20 – Diagrama UML a ierarhiei de clase

Date de test

Datele de test in cazul acestui prototip au fost culese de pe diferite site-uri web si reunite intr-o singura baza de date si contine date despre numele localitatii, partidul politic de guvernamant al administratiei publice locale, numele primarului, strada pe care se afla sediul primariei si numarul de telefon la care poate fi contacta primaria. In dezvoltarea finala a acestei aplicatii datele vor fi preluate de pe un singur web site, folosind serviciul WEB REST.

Tabel 1 Date de test.

Avand la dispozitie doar datele din tabelul de mai sus a fost necesar sa se identifice locatia geografica a fiecarei localitati. Cu acest scop am folosit serviciul de geolocatie dupa adresa de la google maps. Ceea ce ne permite sa pozitionam icoanele cu simbolurile partidelor politice pe harta judetului.

Concluzii

Aplicatiile mobile au devenit o necesitate in ziua de astazi deoarce simplifica cu mult accesul la informatii. Practic aplicatiile mobile iau locul celor folosite in mod conventional pe PC-uri. Gadgeturile mobile sunt in plina expansiune si vin ca o nevoie a omului de a fi in continuu conectat cu ceialalti oameni, cu mediul inconjurator cu ceea ce se intampla in societate, astfel ca ele devin metaforic o “prelungire a membrelor umane”. Principala functie pe care aceste gadgeturi o stapanesc este aceea de conectivitate la internet, lucru care nu numai ca este placut dar este si extrem de util, scutindu-ne de multe ori sa facem drumuri pana la un PC. Evolutia acestor dispozitive a fost de a dreptul spectaculoasa, cele mai performante smartphonuri fiind deja comparabile cu multe PC de pe piata si cu siguranta evolutia lor nu se va opri decat probabil acolo unde se va opri si imaginatia omului.

Pe masura evolutiilor acestor dispozitive se va observa cu siguranta si o evolutie a aplicatiilor ce ruleaza pe acestea.

.

Bibliografie

Cristian Frasinaru, Curs practic de Java, 2010

Mathur, Avantika; Cao, MingMing; Bhattacharya, Suparna; Dilger, Andreas; Tomas, Alex; Vivier, Laurent (2007). "The new ext4 filesystem: current status and future plans" (PDF). Proceedings of the Linux Symposium. Ottawa, ON, CA: Red Hat. Retrieved 2008-01-15.

Leonard Richardson,Sam Ruby – RESTful Web Services (2007 05) , O’reilly, 2007

Web Services Essentials, Distributed Applications with XML-RPC, SOAP, UDDI & WSDL By Ethan Cerami, O’Reilly, 2003

Dissertation „Architectural Styles and the Design of Network-based Software Architectures” by Roy Thomas Fielding University of California, Irvine, 2000

Learning Java, Pat Niemeyer and Jonathan Knudsen, O'Reilly, 2000

Referințe web

Interactiunea web traditionala

[http://www.w3.org/2003/Talks/0521-hh-wsa/slide2-2.html]

Interactiunea serviciilor web

[http://www.w3.org/2003/Talks/0521-hh-wsa/slide3-2.html]

REST

[http://www.xfront.com/sld004.htm]

Servicii Web REST

[ http://www.xfront.com/sld011.htm ]

Servicii Web RPC folosind SOAP

[ http://www.xfront.com/sld011.htm ]

Un exemplu de fisier de configurare pentru un serviciu web WCF [olausson.net/blog/content/binary/Windows%20Communication%20Foundation.ppt]

Definirea unui contract pentru serviciu web

[olausson.net/blog/content/binary/Windows%20Communication%20Foundation.ppt]

Tutorial servicii web

http://www.w3schools.com/webservices/ws_platform.asp

Interactiuni ale serviciilor web

http://www.w3.org/2003/Talks/0521-hh-wsa/slide3-2.html

Cea mai avansata harta administrativa publica pentru judetul Dolj la ora actuala

http://www.judetuldolj.ro/dolj/servlet/portal

Site-ul oficial al primariei Craiova

http://www.primariacraiova.ro/ro.primariacraiova.ro/primaria/viceprimari/index.html

Siteul consiliului judetean Dolj http://www.cjdolj.ro/

Pagina oficiala a proiectului Android , sistemul de operare pentru smartphone http://www.android.com/about/

Servicii web de la Amazon: http://aws.amazon.com/s3/#resources

Studiu despre REST: [ http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=297424&source=rss_topic11]

Articol online REST versus SOAP : http://www.petefreitag.com/item/431.cfm

Raport Tehnic W3C despre Arhitectura serviciilor web : http://www.w3.org/TR/ws-arch/

http://www.itcsolutions.eu/2011/08/31/tutorial-android-descriere-si-cuprins/

Tutorial SOAP: http://www.w3schools.com/soap/default.asp

Arhitectura Sistemului Android: http://profs.info.uaic.ro/~alaiba/mw/index.php?title=Dezvoltarea_aplica%C5%A3iilor_grafice_3D_pe_platforma_Android

Codul sursă

package ro.ucv.licentanicolaalin;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

import android.content.Context;

import android.content.res.Resources;

import android.location.Geocoder;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

import android.location.Address;

import com.google.android.gms.maps.CameraUpdateFactory;

import com.google.android.gms.maps.GoogleMap;

import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;

import com.google.android.gms.maps.SupportMapFragment;

import com.google.android.gms.maps.model.BitmapDescriptorFactory;

import com.google.android.gms.maps.model.LatLng;

import com.google.android.gms.maps.model.Marker;

import com.google.android.gms.maps.model.MarkerOptions;

import com.saulpower.piechart.adapter.PieChartAdapter;

import com.saulpower.piechart.extra.FrictionDynamics;

import com.saulpower.piechart.views.PieChartView;

import com.saulpower.piechart.views.PieChartView.PieChartAnchor;

public class MainActivity extends FragmentActivity {

LatLng CRAIOVA=new LatLng(44.321638,23.80114);

// Google Map

private GoogleMap googleMap;

List<Location> locations=new ArrayList<Location>();

class MyInfoWindowAdapter implements InfoWindowAdapter{

private final View myContentsView;

Context mContext;

MyInfoWindowAdapter(Context context){

mContext=context;

myContentsView = getLayoutInflater().inflate(R.layout.custom_info_contents, null);

}

@Override

public View getInfoContents(Marker marker) {

TextView tvTitle = ((TextView)myContentsView.findViewById(R.id.title));

tvTitle.setText(marker.getTitle());

TextView tvSnippet = ((TextView)myContentsView.findViewById(R.id.snippet));

tvSnippet.setText(marker.getSnippet());

List<Float> slices = new ArrayList<Float>();

slices.add(0.25f);

slices.add(0.05f);

slices.add(0.1f);

slices.add(0.05f);

slices.add(0.2f);

slices.add(0.3f);

slices.add(0.05f);

PieChartAdapter adapter = new PieChartAdapter(mContext, slices);

PieChartView mChart = (PieChartView) findViewById(R.id.chart);

mChart.setDynamics(new FrictionDynamics(0.95f));

mChart.setSnapToAnchor(PieChartAnchor.BOTTOM);

mChart.setAdapter(adapter);

mChart.onResume();

return myContentsView;

}

@Override

public View getInfoWindow(Marker marker) {

// TODO Auto-generated method stub

return null;

}

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

try {

// Loading map

initilizeMap();

} catch (Exception e) {

e.printStackTrace();

}

}

private void initilizeMap() {

if (googleMap == null) {

googleMap = ((SupportMapFragment) getSupportFragmentManager()

.findFragmentById(R.id.map)).getMap();

// check if map is created successfully or not

if (googleMap == null) {

Toast.makeText(getApplicationContext(),

"Sorry! unable to create maps", Toast.LENGTH_SHORT)

.show();

}else{

googleMap.setInfoWindowAdapter(new MyInfoWindowAdapter(this));

for(Location loc:getLocations()){

MarkerOptions m=new MarkerOptions()

.position(loc.coordinates)

.title(loc.loc)

.snippet("Primar: "+loc.mayor+"\n Telefon:"+loc.tel+"\n "+loc.address+"\n"+loc.party+" ")

.icon(BitmapDescriptorFactory

.fromResource(loc.logo));

googleMap.addMarker(m);

}

googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(CRAIOVA, 10));

}

}

}

private LatLng getLocationCoordinates(String strAddress){

Geocoder coder = new Geocoder(this);

List<Address> address;

Address location=null ;

try {

address = coder.getFromLocationName(strAddress,5);

if (address == null) {

return null;

}

if(address.size()>=1)

location = address.get(0);

else location=null;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

LatLng p1=null;

if(location!=null){

p1 = new LatLng(location.getLatitude(),location.getLongitude());

}

return p1;

}

private List<Location> getLocations(){

InputStream fis =null;

BufferedReader br=null;

try {

String sCurrentLine;

Resources res = getResources();

fis = res.openRawResource(R.raw.primarii);

br = new BufferedReader(new InputStreamReader(fis));

while ((sCurrentLine = br.readLine()) != null) {

String token[]=sCurrentLine.split(";");

String nr=token[0].replaceAll("\"", "").trim();

String loc=token[1].replaceAll("\"", "").replace("MUNICIPIUL","").replace("ORAS ", "").trim();

String party=token[2].replaceAll("\"", "").trim();

String mayor=token[3].replaceAll("\"", "").trim();

String address=token[4].replaceAll("\"", "").trim();

String tel="0251"+token[5].replaceAll("\"", "").replace(".", "");

LatLng l=getLocationCoordinates(loc+" Romania Dolj");

if(loc.equals("")==false && l!=null){

Location local=new Location(nr,loc,party,mayor,address,tel,l);

locations.add(local);

}

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (br != null){

br.close();

fis.close();

}

} catch (IOException ex) {

ex.printStackTrace();

}

}

return locations;

}

@Override

protected void onResume() {

super.onResume();

initilizeMap();

}

}

package ro.ucv.licentanicolaalin;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.List;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import android.os.AsyncTask;

import android.util.Log;

public class ServiceHandler extends AsyncTask<String, Integer,String > {

List<String> listaJudete= new ArrayList<String>();

int version;

protected String doInBackground(String… urls) {

listaJudete.add("dolj");

String result = "";

HttpClient httpclient = new DefaultHttpClient();

HttpGet httpget = new HttpGet(urls[0]);

HttpResponse response;

try {

response = httpclient.execute(httpget);

HttpEntity entity = response.getEntity();

if (entity != null) {

InputStream instream = entity.getContent();

result = convertStreamToString(instream);

instream.close();

}

if(Integer.parseInt(result)>version){

File file = new File("primarii.csv");

if(file.delete()){

System.out.println(file.getName() + " is deleted!");

}else{

System.out.println("Delete operation is failed.");

}

for(String judet:listaJudete){

httpget = new HttpGet(urls[1]+"judet="+judet);

response = httpclient.execute(httpget);

entity = response.getEntity();

if (entity != null) {

// A Simple JSON Response Read

InputStream instream = entity.getContent();

result = convertStreamToString(instream);

instream.close();

}

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("primarii.csv", true)));

out.println(result);

}

}

} catch (Exception e) {

Log.e("Alin",e.toString());

}

return result;

}

protected void onProgressUpdate(Integer… progress) {

}

protected void onPostExecute(Long result) {

}

private static String convertStreamToString(InputStream is) {

BufferedReader reader = new BufferedReader(new InputStreamReader(is));

StringBuilder sb = new StringBuilder();

String line = null;

try {

while ((line = reader.readLine()) != null) {

sb.append(line + "\n");

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

is.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return sb.toString();

}

}

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<fragment

android:id="@+id/map"

android:name="com.google.android.gms.maps.SupportMapFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="ro.ucv.licentanicolaalin"

android:versionCode="1"

android:versionName="1.0" >

<permission

android:name="ro.ucv.licentanicolaalin.permission.MAPS_RECEIVE"

android:protectionLevel="signature" />

<uses-permission android:name="ro.ucv.licentanicolaalin.permission.MAPS_RECEIVE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!– Required to show current location –>

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!– Required OpenGL ES 2.0. for Maps V2 –>

<uses-feature

android:glEsVersion="0x00020000"

android:required="true" />

<!– Requires OpenGL ES version 2 –>

<uses-feature

android:glEsVersion="0x00020000"

android:required="true" />

<uses-sdk

android:minSdkVersion="9"

android:targetSdkVersion="19" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="ro.ucv.licentanicolaalin.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<meta-data

android:name="com.google.android.maps.v2.API_KEY"

android:value="AIzaSyDaw1RUMmXoXcFDkTrNKGc8jjAqaCb413Q" />

<meta-data

android:name="com.google.android.gms.version"

android:value="@integer/google_play_services_version" />

</application>

</manifest>

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<fragment

android:id="@+id/map"

android:name="com.google.android.gms.maps.SupportMapFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

</RelativeLayout>

package ro.ucv.licentanicolaalin;

public class Location {

String nr;

String loc;

String party;

String mayor;

String address;

String tel;

int logo;

public Location(String nr, String loc, String party, String mayor,

String address, String tel) {

super();

this.nr = nr;

this.loc = loc;

this.party = party;

this.mayor = mayor;

this.address = address;

this.tel = tel;

if(party.equals("UNIUNEA SOCIAL LIBERALA"))

logo=R.drawable.usl;

else

if(party.equals("PARTIDUL DEMOCRAT LIBERAL"))

logo=R.drawable.pdl;

else

if(party.equals("PARTIDUL SOCIAL DEMOCRAT"))

logo=R.drawable.psd;

else

if(party.equals("ALIANTA DE CENTRU DREAPTA PARTIDUL NATIONAL LIBERAL-PC"))

logo=R.drawable.pnl;

else

if(party.equals("PARTIDUL NATIONAL LIBERAL"))

logo=R.drawable.pnl;

else

if(party.equals("UNIUNEA NATIONALA PENTRU PROGRESUL ROMANIEI"))

logo=R.drawable.unpr;

else

if(party.equals("PARTIDUL NATIONAL TARANESC CRESTIN DEMOCRAT"))

logo=R.drawable.pntcd;

else

if(party.equals("PARTIDUL POPORULIUI – DAN DIACONESCU"))

logo=R.drawable.ppdd;

else logo=R.drawable.ic_launcher;

}

}

Date de test asa cum sunt primite de la serviciul web, in format csv:

"1 ";"MUNICIPIUL CRAIOVA ";"UNIUNEA SOCIAL LIBERALA ";"VASILESCU LIA OLGUTA "; str. A.I.Cuza nr. 7;411.561

"2 ";"MUNICIPIUL BAILESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"PISTRITU COSTEL ";Str. Revolutiei nr. 1;311.950 

"3 ";"MUNICIPIUL CALAFAT ";"PARTIDUL NATIONAL LIBERAL ";"GUTA MIRCEA MARINEL ";str. Tudor Vladimirescu nr. 24 ;333.105

"4 ";"ORAS BECHET ";"PARTIDUL SOCIAL DEMOCRAT ";"IONELE GHEORGHE ";Str. Alexandru Ioan Cuza nr. 63 ;336.826

"5 ";"ORAS DABULENI ";"PARTIDUL SOCIAL DEMOCRAT ";"DRAGOI NICOLAE ";str. Unirii nr. 15 ;334.310

"6 ";"ORAS FILIASI ";"PARTIDUL SOCIAL DEMOCRAT ";"STANCIOI NICOLAE ";Str. Racoteanu nr. 160 ;441.018

"7 ";"ORAS SEGARCEA ";"PARTIDUL SOCIAL DEMOCRAT ";"POPA NICOLAE ";Str. Unirii nr. 52 ;210.750 

"8 ";"AFUMATI ";"PARTIDUL NATIONAL LIBERAL ";"BELU MARIAN ";;318.001 

"9 ";"ALMAJ ";"PARTIDUL SOCIAL DEMOCRAT ";"RACAREANU ION ";;449.397

"10 ";"AMARASTII DE JOS ";"PARTIDUL SOCIAL DEMOCRAT ";"DINU ION ";;374.244

"11 ";"AMARASTII DE SUS ";"PARTIDUL SOCIAL DEMOCRAT ";"ROSIU VALENTIN ";;375.311

"12 ";"APELE VII ";"UNIUNEA SOCIAL LIBERALA ";"STANCIU AUGUSTIN "; ;371.607

"13 ";"ARGETOAIA ";"PARTIDUL DEMOCRAT LIBERAL ";"BEZNA MIRCEA ";Str. Constantin Argetoianu nr. 186;452.701

"14 ";"BISTRET ";"PARTIDUL NATIONAL LIBERAL ";"ANTONIE CRISTIANA "; ;355.011 

"15 ";"BARCA ";"PARTIDUL SOCIAL DEMOCRAT ";"POPA MARIN ";Str. Mihai Viteazu nr. 257;356.111

"16 ";"BOTOSESTI-PAIA ";"PARTIDUL DEMOCRAT LIBERAL ";"MORARU ION ";Str. Opran Alexandru nr. 132;451.943 

"17 ";"BRABOVA ";"PARTIDUL SOCIAL DEMOCRAT ";"PLESEA VERGIL ";Str. Centrala nr. 126;447.310

"18 ";"BRALOSTITA ";"PARTIDUL SOCIAL DEMOCRAT ";"SARBU IOAN ";Str. Stadion nr. 1;450.704 

"19 ";"BRATOVOESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"MARIN ION ";;371.029

"20 ";"BRADESTI ";"PARTIDUL NATIONAL LIBERAL ";"RACAREANU ION ";str. Mihai Viteazul nr. 3;444.206 

"21 ";"BREASTA ";"PARTIDUL DEMOCRAT LIBERAL ";"MARCU MARIN ";Str. Constantin Argetoianu nr. 11 ;455.244 

"22 ";"BUCOVAT ";"PARTIDUL SOCIAL DEMOCRAT ";"VASILE CONSTANTIN "; ;360.285  

"23 ";"BULZESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"SORESCU GIN ";;447.802

"24 ";"CALOPAR ";"PARTIDUL SOCIAL DEMOCRAT ";"CATALINA MARIN ";;350.734

"25 ";"CARAULA ";"ALIANTA DE CENTRU DREAPTA PARTIDUL NATIONAL LIBERAL-PC ";"VANCEA STEFAN ";Str. Craiovei nr. 142 ;369.568

"26 ";"CARPEN ";"UNIUNEA SOCIAL LIBERALA ";"VASILICA STEFAN ";Str. Primariei nr. 13 ;445.637

"27 ";"CASTRANOVA ";"PARTIDUL DEMOCRAT LIBERAL ";"MACESANU DUMITRU ";Str. Calea Apeleviului nr. 1 ;372.602

"28 ";"CATANE ";"PARTIDUL DEMOCRAT LIBERAL ";"CIUREA STEFAN ";;319.662

"29 ";"CALARASI ";"PARTIDUL DEMOCRAT LIBERAL ";"SOVAILA VERGICA "; ;379.052

"30 ";"CARCEA ";"PARTIDUL SOCIAL DEMOCRAT ";"PUPAZA VALERICA "; ;458.121

"31 ";"CARNA ";"PARTIDUL SOCIAL DEMOCRAT ";"TITIROAGA ELENA "; ;256.824

"32 ";"CELARU ";"UNIUNEA SOCIAL LIBERALA ";"CELAREANU STELIAN ";;375.509 

"33 ";"CERAT ";"PARTIDUL SOCIAL DEMOCRAT ";"BARBU IONUT OCTAVIAN ";;358.202 

"34 ";"CERNATESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"CIONTEA DUMITRU ";;445.072

"35 ";"CETATE ";"PARTIDUL SOCIAL DEMOCRAT ";"DUTA MARIN ";;364.022

"36 ";"CIOROIASI ";"UNIUNEA SOCIAL LIBERALA ";"DASCALU VERGIL "; ;317.122

"37 ";"CIUPERCENII NOI ";"UNIUNEA SOCIAL LIBERALA ";"MUNGIU GHEORGHE "; ;321.002

"38 ";"COSOVENI ";"ALIANTA DE CENTRU DREAPTA PARTIDUL NATIONAL LIBERAL-PC ";"COANDA NICUSOR ";;457.360

"39 ";"COTOFENII DIN DOS ";"PARTIDUL SOCIAL DEMOCRAT ";"PREDUCA VASILE ";;447.089

"40 ";"COTOFENII DIN FATA ";"UNIUNEA NATIONALA PENTRU PROGRESUL ROMANIEI ";"CARCIUMARU CONSTANTIN "; ;446.598

"41 ";"DANETI ";"PARTIDUL DEMOCRAT LIBERAL ";"SPIRIDON CONSTANTIN "; ;377.001 

"42 ";"DESA ";"PARTIDUL NATIONAL LIBERAL ";"BALTEANU IULIAN ";;322.496 

"43 ";"DIOSTI ";"PARTIDUL NATIONAL TARANESC CRESTIN DEMOCRAT ";"ILIESCU DUMITRU ";Str. Santierului nr. 33 ;458.611 

"44 ";"DOBRESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"TIULESCU MIHAIL ";;338.000

"45 ";"DOBROTESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"STANCU ION ";;378.034

46;" DRAGOTESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"DINCA DUMITRU ";str. Tudor Vladimirescu nr. 2 ;456.355

47;" DRANIC ";"PARTIDUL NATIONAL LIBERAL ";"ANDREI MARIAN DANUT ";;351.070

48;" FARCAS ";"PARTIDUL NATIONAL LIBERAL ";"BITOLEANU SORIN ";;440.052 

49;" GALICEA MARE ";"PARTIDUL NATIONAL LIBERAL ";"CATANA FLOREL ";;316.004

50;" GALICIUICA ";"PARTIDUL DEMOCRAT LIBERAL ";"BANA CONSTANTIN ";;460.667

51;" GHERCESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"PAPAROIU NOLICA CORNEL ";Str. Eroilor nr. 107 ;450.580 

52;" GHIDICI ";"UNIUNEA SOCIAL LIBERALA ";"TACHE CONSTANTIN ";;323.302

53;" GHINDENI ";"PARTIDUL DEMOCRAT LIBERAL ";"MOTOI MARIN ";;455777

54;" GIGHERA ";"UNIUNEA SOCIAL LIBERALA ";"NEACSU FLOREA ";;353.011

55;" GIUBEGA ";"PARTIDUL NATIONAL LIBERAL ";"GUNA GHEORGHE ";;460.222

56;" GIURGITA ";"PARTIDUL DEMOCRAT LIBERAL ";"BONEA VIKY ";;357.122

57;" GANGIOVA ";"PARTIDUL POPORULIUI – DAN DIACONESCU ";"PREDA CRISTACHE ";;351.505

58;" GOGOSU ";"PARTIDUL DEMOCRAT LIBERAL ";"BARAGAN JANIN CRISTIAN ";;445.098

59;" GOICEA ";"UNIUNEA SOCIAL LIBERALA ";"MARCU DUMITRU VIOREL ";;256.161 

60;" GOIESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"ADAM ATANASIE ";;452.154

61;" GRECESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"CORICI MARCEL ";;445.318

62;" ISALNITA ";"UNIUNEA SOCIAL LIBERALA ";"FLORI OVIDIU AURELIAN ";;448.004

63;" IZVOARE ";"PARTIDUL DEMOCRAT LIBERAL ";"FULGU VERGIL ";;366.681

64;" INTORSURA ";"PARTIDUL DEMOCRAT LIBERAL ";"CAMEN CONSTANTIN ";;359.286

65;" LEU ";"PARTIDUL SOCIAL DEMOCRAT ";"CRISTESCU IULIAN ";;373.259

66;" LIPOVU ";"PARTIDUL DEMOCRAT LIBERAL ";"DOBRESCU DUMITRU ";;359.206

67;" MAGLAVIT ";"PARTIDUL SOCIAL DEMOCRAT ";"DINU ION ";Str. Calea Severinului nr. 83 ;328.662

68;" MALU MARE ";"PARTIDUL SOCIAL DEMOCRAT ";"DICU ALEXANDRU ";;446.145

69;" MACESU DE JOS ";"PARTIDUL NATIONAL LIBERAL ";"BOJIN MIHAI ";;354.507

70;" MACESU DE SUS ";"PARTIDUL DEMOCRAT LIBERAL ";"BECE GHEORGHE ";;354.191

71;" MELINESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"CEANA ANA ";;440.042

72;" MISCHII ";"PARTIDUL DEMOCRAT LIBERAL ";"POPA GHEORGHE ";;450.194

73;" MARSANI ";"UNIUNEA SOCIAL LIBERALA ";"GHENCIOIU CONSTANTIN ";;336.106

74;" MOTATEI ";"PARTIDUL SOCIAL DEMOCRAT ";"ENEA CONSTANTIN ";;326.211 

75;" MURGASI ";"PARTIDUL DEMOCRAT LIBERAL ";"NEDELEA CONSTANTIN ";Str. Primariei nr. 4 ;447.507 

76;" NEOI ";"UNIUNEA SOCIAL LIBERALA ";"ZAVELEA LIDIA ADRIANA ";;325.349

77;" ORODEL ";"UNIUNEA SOCIAL LIBERALA ";"VILCOMEANU JANE ";;367.538

78;" OSTROVENI ";"UNIUNEA SOCIAL LIBERALA ";"OPRESCU GHEORGHE ";;337.366

79;" PERISOR ";"PARTIDUL NATIONAL LIBERAL ";"CHIPIRLIN MARIAN ";;459707

80;" PIELESTI ";"UNIUNEA NATIONALA PENTRU PROGRESUL ROMANIEI ";"DICA DAN VIOREL ";;459.474

81;" PISCU VECHI ";"UNIUNEA SOCIAL LIBERALA ";"DECA STEFAN ";Str. Mihai Viteazul nr. 83 ;323.008

82;" PLENTA ";"UNIUNEA SOCIAL LIBERALA ";"CALAFETEANU MIHAI PUIU ";;368.189 

83;" PLESOI ";"PARTIDUL SOCIAL DEMOCRAT ";"IONESCU ION ";;454.246

84;" PODARI ";"UNIUNEA SOCIAL LIBERALA ";"GHEORGHITA CONSTANTIN ";str. Dunarii nr. 67 ;339.155

85;" POIANA MARE ";"UNIUNEA SOCIAL LIBERALA ";"VINTILA MARIN ";;236.284

86;" PREDESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"SERBAN FLORIAN ";;454.002 

87;" RADOVAN ";"PARTIDUL NATIONAL LIBERAL ";"CIRSTIANU AURICA ";Str. Soseaua Calafatului nr. 42;359.223

88;" RAST ";"PARTIDUL SOCIAL DEMOCRAT ";"SILISTEANU IULIAN ";Str. Dunarii nr. 158 ;324.001 

89;" ROBANESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"NITU ROMICA ";Str. Traian Vuia nr. 96 ;456.101 

90;" ROJISTE ";"PARTIDUL DEMOCRAT LIBERAL ";"NEDELCU IONEL ";;372.138

91;" SADOVA ";"PARTIDUL DEMOCRAT LIBERAL ";"SAFTA EUGEN ";;376.510

92;" SALCUTA ";"PARTIDUL DEMOCRAT LIBERAL ";"PAVEL ION ";;363.006

93;" SCAESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"CALOTA BARBU ";;447.007

94;" SEACA DE CAMP ";"UNIUNEA SOCIAL LIBERALA ";"ROGOJINA FANE ";;320.017

95;" SEACA DE PADURE ";"PARTIDUL NATIONAL LIBERAL ";"OSIAC SANDICA ";;445.686

96;" SECU ";"PARTIDUL DEMOCRAT LIBERAL ";"POPA ADRIAN ";;453.508

97;" SILISTEA CRUCII ";"PARTIDUL NATIONAL LIBERAL ";"SANDU LAURENTIU ADRIAN ";;319.212

98;" SOPOT ";"UNIUNEA SOCIAL LIBERALA ";"TRAISTARU ION CATALIN ";;453102

99;" SIMNICU DE SUS ";"UNIUNEA NATIONALA PENTRU PROGRESUL ROMANIEI ";"FULGA JANA ";str. Craiovei nr. 10 ;451.094

100;" TALPAS ";"PARTIDUL SOCIAL DEMOCRAT ";"CASIU GHEORGHE ";;452.487

101;" TEASC ";"PARTIDUL DEMOCRAT LIBERAL ";"BANU CRISTINEL ";Str. Bechetului nr. 197 ;370.728 

102;" TERPEZITA ";"UNIUNEA SOCIAL LIBERALA ";"POPA CONSTANTIN ";;362.009

103;" TESLUI ";"PARTIDUL SOCIAL DEMOCRAT ";"RESCEANU COSTICA ";;456.606 

104;" TUGLUI ";"PARTIDUL SOCIAL DEMOCRAT ";"NEAGOE PAULICA ";;350.205

105;" UNIREA ";"PARTIDUL SOCIAL DEMOCRAT ";"BADOIU MARIN ";;365.320

106;" URZICUTA ";"UNIUNEA SOCIAL LIBERALA ";"GRIGORESCU FLOREA ";Str. Craiovei nr. 40 ;317.619 

107;" VALEA STANCIULUI";"PARTIDUL POPORULUI – DAN DIACONESCU ";"GINGIOVEANU IONEL OVIDIU ";Str. Arhitect Cezar Lazarescu nr. 39 ;352.025

108;" VELA ";"PARTIDUL SOCIAL DEMOCRAT ";"CIMPEANU GHEORGHE ";;362.504

109;" VERBITA ";"PARTIDUL DEMOCRAT LIBERAL ";"BRANECI MARIN ";;367.113

110;" VARTOP ";"UNIUNEA SOCIAL LIBERALA ";"DOBRESCU CONSTANTIN ";;363.508

111;" VARVORU DE JOS ";"PARTIDUL SOCIAL DEMOCRAT ";"TABACU NICU ";;360.251

CD / DVD

Referințe web

Interactiunea web traditionala

[http://www.w3.org/2003/Talks/0521-hh-wsa/slide2-2.html]

Interactiunea serviciilor web

[http://www.w3.org/2003/Talks/0521-hh-wsa/slide3-2.html]

REST

[http://www.xfront.com/sld004.htm]

Servicii Web REST

[ http://www.xfront.com/sld011.htm ]

Servicii Web RPC folosind SOAP

[ http://www.xfront.com/sld011.htm ]

Un exemplu de fisier de configurare pentru un serviciu web WCF [olausson.net/blog/content/binary/Windows%20Communication%20Foundation.ppt]

Definirea unui contract pentru serviciu web

[olausson.net/blog/content/binary/Windows%20Communication%20Foundation.ppt]

Tutorial servicii web

http://www.w3schools.com/webservices/ws_platform.asp

Interactiuni ale serviciilor web

http://www.w3.org/2003/Talks/0521-hh-wsa/slide3-2.html

Cea mai avansata harta administrativa publica pentru judetul Dolj la ora actuala

http://www.judetuldolj.ro/dolj/servlet/portal

Site-ul oficial al primariei Craiova

http://www.primariacraiova.ro/ro.primariacraiova.ro/primaria/viceprimari/index.html

Siteul consiliului judetean Dolj http://www.cjdolj.ro/

Pagina oficiala a proiectului Android , sistemul de operare pentru smartphone http://www.android.com/about/

Servicii web de la Amazon: http://aws.amazon.com/s3/#resources

Studiu despre REST: [ http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=297424&source=rss_topic11]

Articol online REST versus SOAP : http://www.petefreitag.com/item/431.cfm

Raport Tehnic W3C despre Arhitectura serviciilor web : http://www.w3.org/TR/ws-arch/

http://www.itcsolutions.eu/2011/08/31/tutorial-android-descriere-si-cuprins/

Tutorial SOAP: http://www.w3schools.com/soap/default.asp

Arhitectura Sistemului Android: http://profs.info.uaic.ro/~alaiba/mw/index.php?title=Dezvoltarea_aplica%C5%A3iilor_grafice_3D_pe_platforma_Android

Codul sursă

package ro.ucv.licentanicolaalin;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

import android.content.Context;

import android.content.res.Resources;

import android.location.Geocoder;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

import android.location.Address;

import com.google.android.gms.maps.CameraUpdateFactory;

import com.google.android.gms.maps.GoogleMap;

import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;

import com.google.android.gms.maps.SupportMapFragment;

import com.google.android.gms.maps.model.BitmapDescriptorFactory;

import com.google.android.gms.maps.model.LatLng;

import com.google.android.gms.maps.model.Marker;

import com.google.android.gms.maps.model.MarkerOptions;

import com.saulpower.piechart.adapter.PieChartAdapter;

import com.saulpower.piechart.extra.FrictionDynamics;

import com.saulpower.piechart.views.PieChartView;

import com.saulpower.piechart.views.PieChartView.PieChartAnchor;

public class MainActivity extends FragmentActivity {

LatLng CRAIOVA=new LatLng(44.321638,23.80114);

// Google Map

private GoogleMap googleMap;

List<Location> locations=new ArrayList<Location>();

class MyInfoWindowAdapter implements InfoWindowAdapter{

private final View myContentsView;

Context mContext;

MyInfoWindowAdapter(Context context){

mContext=context;

myContentsView = getLayoutInflater().inflate(R.layout.custom_info_contents, null);

}

@Override

public View getInfoContents(Marker marker) {

TextView tvTitle = ((TextView)myContentsView.findViewById(R.id.title));

tvTitle.setText(marker.getTitle());

TextView tvSnippet = ((TextView)myContentsView.findViewById(R.id.snippet));

tvSnippet.setText(marker.getSnippet());

List<Float> slices = new ArrayList<Float>();

slices.add(0.25f);

slices.add(0.05f);

slices.add(0.1f);

slices.add(0.05f);

slices.add(0.2f);

slices.add(0.3f);

slices.add(0.05f);

PieChartAdapter adapter = new PieChartAdapter(mContext, slices);

PieChartView mChart = (PieChartView) findViewById(R.id.chart);

mChart.setDynamics(new FrictionDynamics(0.95f));

mChart.setSnapToAnchor(PieChartAnchor.BOTTOM);

mChart.setAdapter(adapter);

mChart.onResume();

return myContentsView;

}

@Override

public View getInfoWindow(Marker marker) {

// TODO Auto-generated method stub

return null;

}

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

try {

// Loading map

initilizeMap();

} catch (Exception e) {

e.printStackTrace();

}

}

private void initilizeMap() {

if (googleMap == null) {

googleMap = ((SupportMapFragment) getSupportFragmentManager()

.findFragmentById(R.id.map)).getMap();

// check if map is created successfully or not

if (googleMap == null) {

Toast.makeText(getApplicationContext(),

"Sorry! unable to create maps", Toast.LENGTH_SHORT)

.show();

}else{

googleMap.setInfoWindowAdapter(new MyInfoWindowAdapter(this));

for(Location loc:getLocations()){

MarkerOptions m=new MarkerOptions()

.position(loc.coordinates)

.title(loc.loc)

.snippet("Primar: "+loc.mayor+"\n Telefon:"+loc.tel+"\n "+loc.address+"\n"+loc.party+" ")

.icon(BitmapDescriptorFactory

.fromResource(loc.logo));

googleMap.addMarker(m);

}

googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(CRAIOVA, 10));

}

}

}

private LatLng getLocationCoordinates(String strAddress){

Geocoder coder = new Geocoder(this);

List<Address> address;

Address location=null ;

try {

address = coder.getFromLocationName(strAddress,5);

if (address == null) {

return null;

}

if(address.size()>=1)

location = address.get(0);

else location=null;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

LatLng p1=null;

if(location!=null){

p1 = new LatLng(location.getLatitude(),location.getLongitude());

}

return p1;

}

private List<Location> getLocations(){

InputStream fis =null;

BufferedReader br=null;

try {

String sCurrentLine;

Resources res = getResources();

fis = res.openRawResource(R.raw.primarii);

br = new BufferedReader(new InputStreamReader(fis));

while ((sCurrentLine = br.readLine()) != null) {

String token[]=sCurrentLine.split(";");

String nr=token[0].replaceAll("\"", "").trim();

String loc=token[1].replaceAll("\"", "").replace("MUNICIPIUL","").replace("ORAS ", "").trim();

String party=token[2].replaceAll("\"", "").trim();

String mayor=token[3].replaceAll("\"", "").trim();

String address=token[4].replaceAll("\"", "").trim();

String tel="0251"+token[5].replaceAll("\"", "").replace(".", "");

LatLng l=getLocationCoordinates(loc+" Romania Dolj");

if(loc.equals("")==false && l!=null){

Location local=new Location(nr,loc,party,mayor,address,tel,l);

locations.add(local);

}

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (br != null){

br.close();

fis.close();

}

} catch (IOException ex) {

ex.printStackTrace();

}

}

return locations;

}

@Override

protected void onResume() {

super.onResume();

initilizeMap();

}

}

package ro.ucv.licentanicolaalin;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.List;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import android.os.AsyncTask;

import android.util.Log;

public class ServiceHandler extends AsyncTask<String, Integer,String > {

List<String> listaJudete= new ArrayList<String>();

int version;

protected String doInBackground(String… urls) {

listaJudete.add("dolj");

String result = "";

HttpClient httpclient = new DefaultHttpClient();

HttpGet httpget = new HttpGet(urls[0]);

HttpResponse response;

try {

response = httpclient.execute(httpget);

HttpEntity entity = response.getEntity();

if (entity != null) {

InputStream instream = entity.getContent();

result = convertStreamToString(instream);

instream.close();

}

if(Integer.parseInt(result)>version){

File file = new File("primarii.csv");

if(file.delete()){

System.out.println(file.getName() + " is deleted!");

}else{

System.out.println("Delete operation is failed.");

}

for(String judet:listaJudete){

httpget = new HttpGet(urls[1]+"judet="+judet);

response = httpclient.execute(httpget);

entity = response.getEntity();

if (entity != null) {

// A Simple JSON Response Read

InputStream instream = entity.getContent();

result = convertStreamToString(instream);

instream.close();

}

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("primarii.csv", true)));

out.println(result);

}

}

} catch (Exception e) {

Log.e("Alin",e.toString());

}

return result;

}

protected void onProgressUpdate(Integer… progress) {

}

protected void onPostExecute(Long result) {

}

private static String convertStreamToString(InputStream is) {

BufferedReader reader = new BufferedReader(new InputStreamReader(is));

StringBuilder sb = new StringBuilder();

String line = null;

try {

while ((line = reader.readLine()) != null) {

sb.append(line + "\n");

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

is.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return sb.toString();

}

}

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<fragment

android:id="@+id/map"

android:name="com.google.android.gms.maps.SupportMapFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="ro.ucv.licentanicolaalin"

android:versionCode="1"

android:versionName="1.0" >

<permission

android:name="ro.ucv.licentanicolaalin.permission.MAPS_RECEIVE"

android:protectionLevel="signature" />

<uses-permission android:name="ro.ucv.licentanicolaalin.permission.MAPS_RECEIVE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!– Required to show current location –>

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!– Required OpenGL ES 2.0. for Maps V2 –>

<uses-feature

android:glEsVersion="0x00020000"

android:required="true" />

<!– Requires OpenGL ES version 2 –>

<uses-feature

android:glEsVersion="0x00020000"

android:required="true" />

<uses-sdk

android:minSdkVersion="9"

android:targetSdkVersion="19" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="ro.ucv.licentanicolaalin.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<meta-data

android:name="com.google.android.maps.v2.API_KEY"

android:value="AIzaSyDaw1RUMmXoXcFDkTrNKGc8jjAqaCb413Q" />

<meta-data

android:name="com.google.android.gms.version"

android:value="@integer/google_play_services_version" />

</application>

</manifest>

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<fragment

android:id="@+id/map"

android:name="com.google.android.gms.maps.SupportMapFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

</RelativeLayout>

package ro.ucv.licentanicolaalin;

public class Location {

String nr;

String loc;

String party;

String mayor;

String address;

String tel;

int logo;

public Location(String nr, String loc, String party, String mayor,

String address, String tel) {

super();

this.nr = nr;

this.loc = loc;

this.party = party;

this.mayor = mayor;

this.address = address;

this.tel = tel;

if(party.equals("UNIUNEA SOCIAL LIBERALA"))

logo=R.drawable.usl;

else

if(party.equals("PARTIDUL DEMOCRAT LIBERAL"))

logo=R.drawable.pdl;

else

if(party.equals("PARTIDUL SOCIAL DEMOCRAT"))

logo=R.drawable.psd;

else

if(party.equals("ALIANTA DE CENTRU DREAPTA PARTIDUL NATIONAL LIBERAL-PC"))

logo=R.drawable.pnl;

else

if(party.equals("PARTIDUL NATIONAL LIBERAL"))

logo=R.drawable.pnl;

else

if(party.equals("UNIUNEA NATIONALA PENTRU PROGRESUL ROMANIEI"))

logo=R.drawable.unpr;

else

if(party.equals("PARTIDUL NATIONAL TARANESC CRESTIN DEMOCRAT"))

logo=R.drawable.pntcd;

else

if(party.equals("PARTIDUL POPORULIUI – DAN DIACONESCU"))

logo=R.drawable.ppdd;

else logo=R.drawable.ic_launcher;

}

}

Date de test asa cum sunt primite de la serviciul web, in format csv:

"1 ";"MUNICIPIUL CRAIOVA ";"UNIUNEA SOCIAL LIBERALA ";"VASILESCU LIA OLGUTA "; str. A.I.Cuza nr. 7;411.561

"2 ";"MUNICIPIUL BAILESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"PISTRITU COSTEL ";Str. Revolutiei nr. 1;311.950 

"3 ";"MUNICIPIUL CALAFAT ";"PARTIDUL NATIONAL LIBERAL ";"GUTA MIRCEA MARINEL ";str. Tudor Vladimirescu nr. 24 ;333.105

"4 ";"ORAS BECHET ";"PARTIDUL SOCIAL DEMOCRAT ";"IONELE GHEORGHE ";Str. Alexandru Ioan Cuza nr. 63 ;336.826

"5 ";"ORAS DABULENI ";"PARTIDUL SOCIAL DEMOCRAT ";"DRAGOI NICOLAE ";str. Unirii nr. 15 ;334.310

"6 ";"ORAS FILIASI ";"PARTIDUL SOCIAL DEMOCRAT ";"STANCIOI NICOLAE ";Str. Racoteanu nr. 160 ;441.018

"7 ";"ORAS SEGARCEA ";"PARTIDUL SOCIAL DEMOCRAT ";"POPA NICOLAE ";Str. Unirii nr. 52 ;210.750 

"8 ";"AFUMATI ";"PARTIDUL NATIONAL LIBERAL ";"BELU MARIAN ";;318.001 

"9 ";"ALMAJ ";"PARTIDUL SOCIAL DEMOCRAT ";"RACAREANU ION ";;449.397

"10 ";"AMARASTII DE JOS ";"PARTIDUL SOCIAL DEMOCRAT ";"DINU ION ";;374.244

"11 ";"AMARASTII DE SUS ";"PARTIDUL SOCIAL DEMOCRAT ";"ROSIU VALENTIN ";;375.311

"12 ";"APELE VII ";"UNIUNEA SOCIAL LIBERALA ";"STANCIU AUGUSTIN "; ;371.607

"13 ";"ARGETOAIA ";"PARTIDUL DEMOCRAT LIBERAL ";"BEZNA MIRCEA ";Str. Constantin Argetoianu nr. 186;452.701

"14 ";"BISTRET ";"PARTIDUL NATIONAL LIBERAL ";"ANTONIE CRISTIANA "; ;355.011 

"15 ";"BARCA ";"PARTIDUL SOCIAL DEMOCRAT ";"POPA MARIN ";Str. Mihai Viteazu nr. 257;356.111

"16 ";"BOTOSESTI-PAIA ";"PARTIDUL DEMOCRAT LIBERAL ";"MORARU ION ";Str. Opran Alexandru nr. 132;451.943 

"17 ";"BRABOVA ";"PARTIDUL SOCIAL DEMOCRAT ";"PLESEA VERGIL ";Str. Centrala nr. 126;447.310

"18 ";"BRALOSTITA ";"PARTIDUL SOCIAL DEMOCRAT ";"SARBU IOAN ";Str. Stadion nr. 1;450.704 

"19 ";"BRATOVOESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"MARIN ION ";;371.029

"20 ";"BRADESTI ";"PARTIDUL NATIONAL LIBERAL ";"RACAREANU ION ";str. Mihai Viteazul nr. 3;444.206 

"21 ";"BREASTA ";"PARTIDUL DEMOCRAT LIBERAL ";"MARCU MARIN ";Str. Constantin Argetoianu nr. 11 ;455.244 

"22 ";"BUCOVAT ";"PARTIDUL SOCIAL DEMOCRAT ";"VASILE CONSTANTIN "; ;360.285  

"23 ";"BULZESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"SORESCU GIN ";;447.802

"24 ";"CALOPAR ";"PARTIDUL SOCIAL DEMOCRAT ";"CATALINA MARIN ";;350.734

"25 ";"CARAULA ";"ALIANTA DE CENTRU DREAPTA PARTIDUL NATIONAL LIBERAL-PC ";"VANCEA STEFAN ";Str. Craiovei nr. 142 ;369.568

"26 ";"CARPEN ";"UNIUNEA SOCIAL LIBERALA ";"VASILICA STEFAN ";Str. Primariei nr. 13 ;445.637

"27 ";"CASTRANOVA ";"PARTIDUL DEMOCRAT LIBERAL ";"MACESANU DUMITRU ";Str. Calea Apeleviului nr. 1 ;372.602

"28 ";"CATANE ";"PARTIDUL DEMOCRAT LIBERAL ";"CIUREA STEFAN ";;319.662

"29 ";"CALARASI ";"PARTIDUL DEMOCRAT LIBERAL ";"SOVAILA VERGICA "; ;379.052

"30 ";"CARCEA ";"PARTIDUL SOCIAL DEMOCRAT ";"PUPAZA VALERICA "; ;458.121

"31 ";"CARNA ";"PARTIDUL SOCIAL DEMOCRAT ";"TITIROAGA ELENA "; ;256.824

"32 ";"CELARU ";"UNIUNEA SOCIAL LIBERALA ";"CELAREANU STELIAN ";;375.509 

"33 ";"CERAT ";"PARTIDUL SOCIAL DEMOCRAT ";"BARBU IONUT OCTAVIAN ";;358.202 

"34 ";"CERNATESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"CIONTEA DUMITRU ";;445.072

"35 ";"CETATE ";"PARTIDUL SOCIAL DEMOCRAT ";"DUTA MARIN ";;364.022

"36 ";"CIOROIASI ";"UNIUNEA SOCIAL LIBERALA ";"DASCALU VERGIL "; ;317.122

"37 ";"CIUPERCENII NOI ";"UNIUNEA SOCIAL LIBERALA ";"MUNGIU GHEORGHE "; ;321.002

"38 ";"COSOVENI ";"ALIANTA DE CENTRU DREAPTA PARTIDUL NATIONAL LIBERAL-PC ";"COANDA NICUSOR ";;457.360

"39 ";"COTOFENII DIN DOS ";"PARTIDUL SOCIAL DEMOCRAT ";"PREDUCA VASILE ";;447.089

"40 ";"COTOFENII DIN FATA ";"UNIUNEA NATIONALA PENTRU PROGRESUL ROMANIEI ";"CARCIUMARU CONSTANTIN "; ;446.598

"41 ";"DANETI ";"PARTIDUL DEMOCRAT LIBERAL ";"SPIRIDON CONSTANTIN "; ;377.001 

"42 ";"DESA ";"PARTIDUL NATIONAL LIBERAL ";"BALTEANU IULIAN ";;322.496 

"43 ";"DIOSTI ";"PARTIDUL NATIONAL TARANESC CRESTIN DEMOCRAT ";"ILIESCU DUMITRU ";Str. Santierului nr. 33 ;458.611 

"44 ";"DOBRESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"TIULESCU MIHAIL ";;338.000

"45 ";"DOBROTESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"STANCU ION ";;378.034

46;" DRAGOTESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"DINCA DUMITRU ";str. Tudor Vladimirescu nr. 2 ;456.355

47;" DRANIC ";"PARTIDUL NATIONAL LIBERAL ";"ANDREI MARIAN DANUT ";;351.070

48;" FARCAS ";"PARTIDUL NATIONAL LIBERAL ";"BITOLEANU SORIN ";;440.052 

49;" GALICEA MARE ";"PARTIDUL NATIONAL LIBERAL ";"CATANA FLOREL ";;316.004

50;" GALICIUICA ";"PARTIDUL DEMOCRAT LIBERAL ";"BANA CONSTANTIN ";;460.667

51;" GHERCESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"PAPAROIU NOLICA CORNEL ";Str. Eroilor nr. 107 ;450.580 

52;" GHIDICI ";"UNIUNEA SOCIAL LIBERALA ";"TACHE CONSTANTIN ";;323.302

53;" GHINDENI ";"PARTIDUL DEMOCRAT LIBERAL ";"MOTOI MARIN ";;455777

54;" GIGHERA ";"UNIUNEA SOCIAL LIBERALA ";"NEACSU FLOREA ";;353.011

55;" GIUBEGA ";"PARTIDUL NATIONAL LIBERAL ";"GUNA GHEORGHE ";;460.222

56;" GIURGITA ";"PARTIDUL DEMOCRAT LIBERAL ";"BONEA VIKY ";;357.122

57;" GANGIOVA ";"PARTIDUL POPORULIUI – DAN DIACONESCU ";"PREDA CRISTACHE ";;351.505

58;" GOGOSU ";"PARTIDUL DEMOCRAT LIBERAL ";"BARAGAN JANIN CRISTIAN ";;445.098

59;" GOICEA ";"UNIUNEA SOCIAL LIBERALA ";"MARCU DUMITRU VIOREL ";;256.161 

60;" GOIESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"ADAM ATANASIE ";;452.154

61;" GRECESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"CORICI MARCEL ";;445.318

62;" ISALNITA ";"UNIUNEA SOCIAL LIBERALA ";"FLORI OVIDIU AURELIAN ";;448.004

63;" IZVOARE ";"PARTIDUL DEMOCRAT LIBERAL ";"FULGU VERGIL ";;366.681

64;" INTORSURA ";"PARTIDUL DEMOCRAT LIBERAL ";"CAMEN CONSTANTIN ";;359.286

65;" LEU ";"PARTIDUL SOCIAL DEMOCRAT ";"CRISTESCU IULIAN ";;373.259

66;" LIPOVU ";"PARTIDUL DEMOCRAT LIBERAL ";"DOBRESCU DUMITRU ";;359.206

67;" MAGLAVIT ";"PARTIDUL SOCIAL DEMOCRAT ";"DINU ION ";Str. Calea Severinului nr. 83 ;328.662

68;" MALU MARE ";"PARTIDUL SOCIAL DEMOCRAT ";"DICU ALEXANDRU ";;446.145

69;" MACESU DE JOS ";"PARTIDUL NATIONAL LIBERAL ";"BOJIN MIHAI ";;354.507

70;" MACESU DE SUS ";"PARTIDUL DEMOCRAT LIBERAL ";"BECE GHEORGHE ";;354.191

71;" MELINESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"CEANA ANA ";;440.042

72;" MISCHII ";"PARTIDUL DEMOCRAT LIBERAL ";"POPA GHEORGHE ";;450.194

73;" MARSANI ";"UNIUNEA SOCIAL LIBERALA ";"GHENCIOIU CONSTANTIN ";;336.106

74;" MOTATEI ";"PARTIDUL SOCIAL DEMOCRAT ";"ENEA CONSTANTIN ";;326.211 

75;" MURGASI ";"PARTIDUL DEMOCRAT LIBERAL ";"NEDELEA CONSTANTIN ";Str. Primariei nr. 4 ;447.507 

76;" NEOI ";"UNIUNEA SOCIAL LIBERALA ";"ZAVELEA LIDIA ADRIANA ";;325.349

77;" ORODEL ";"UNIUNEA SOCIAL LIBERALA ";"VILCOMEANU JANE ";;367.538

78;" OSTROVENI ";"UNIUNEA SOCIAL LIBERALA ";"OPRESCU GHEORGHE ";;337.366

79;" PERISOR ";"PARTIDUL NATIONAL LIBERAL ";"CHIPIRLIN MARIAN ";;459707

80;" PIELESTI ";"UNIUNEA NATIONALA PENTRU PROGRESUL ROMANIEI ";"DICA DAN VIOREL ";;459.474

81;" PISCU VECHI ";"UNIUNEA SOCIAL LIBERALA ";"DECA STEFAN ";Str. Mihai Viteazul nr. 83 ;323.008

82;" PLENTA ";"UNIUNEA SOCIAL LIBERALA ";"CALAFETEANU MIHAI PUIU ";;368.189 

83;" PLESOI ";"PARTIDUL SOCIAL DEMOCRAT ";"IONESCU ION ";;454.246

84;" PODARI ";"UNIUNEA SOCIAL LIBERALA ";"GHEORGHITA CONSTANTIN ";str. Dunarii nr. 67 ;339.155

85;" POIANA MARE ";"UNIUNEA SOCIAL LIBERALA ";"VINTILA MARIN ";;236.284

86;" PREDESTI ";"PARTIDUL DEMOCRAT LIBERAL ";"SERBAN FLORIAN ";;454.002 

87;" RADOVAN ";"PARTIDUL NATIONAL LIBERAL ";"CIRSTIANU AURICA ";Str. Soseaua Calafatului nr. 42;359.223

88;" RAST ";"PARTIDUL SOCIAL DEMOCRAT ";"SILISTEANU IULIAN ";Str. Dunarii nr. 158 ;324.001 

89;" ROBANESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"NITU ROMICA ";Str. Traian Vuia nr. 96 ;456.101 

90;" ROJISTE ";"PARTIDUL DEMOCRAT LIBERAL ";"NEDELCU IONEL ";;372.138

91;" SADOVA ";"PARTIDUL DEMOCRAT LIBERAL ";"SAFTA EUGEN ";;376.510

92;" SALCUTA ";"PARTIDUL DEMOCRAT LIBERAL ";"PAVEL ION ";;363.006

93;" SCAESTI ";"PARTIDUL SOCIAL DEMOCRAT ";"CALOTA BARBU ";;447.007

94;" SEACA DE CAMP ";"UNIUNEA SOCIAL LIBERALA ";"ROGOJINA FANE ";;320.017

95;" SEACA DE PADURE ";"PARTIDUL NATIONAL LIBERAL ";"OSIAC SANDICA ";;445.686

96;" SECU ";"PARTIDUL DEMOCRAT LIBERAL ";"POPA ADRIAN ";;453.508

97;" SILISTEA CRUCII ";"PARTIDUL NATIONAL LIBERAL ";"SANDU LAURENTIU ADRIAN ";;319.212

98;" SOPOT ";"UNIUNEA SOCIAL LIBERALA ";"TRAISTARU ION CATALIN ";;453102

99;" SIMNICU DE SUS ";"UNIUNEA NATIONALA PENTRU PROGRESUL ROMANIEI ";"FULGA JANA ";str. Craiovei nr. 10 ;451.094

100;" TALPAS ";"PARTIDUL SOCIAL DEMOCRAT ";"CASIU GHEORGHE ";;452.487

101;" TEASC ";"PARTIDUL DEMOCRAT LIBERAL ";"BANU CRISTINEL ";Str. Bechetului nr. 197 ;370.728 

102;" TERPEZITA ";"UNIUNEA SOCIAL LIBERALA ";"POPA CONSTANTIN ";;362.009

103;" TESLUI ";"PARTIDUL SOCIAL DEMOCRAT ";"RESCEANU COSTICA ";;456.606 

104;" TUGLUI ";"PARTIDUL SOCIAL DEMOCRAT ";"NEAGOE PAULICA ";;350.205

105;" UNIREA ";"PARTIDUL SOCIAL DEMOCRAT ";"BADOIU MARIN ";;365.320

106;" URZICUTA ";"UNIUNEA SOCIAL LIBERALA ";"GRIGORESCU FLOREA ";Str. Craiovei nr. 40 ;317.619 

107;" VALEA STANCIULUI";"PARTIDUL POPORULUI – DAN DIACONESCU ";"GINGIOVEANU IONEL OVIDIU ";Str. Arhitect Cezar Lazarescu nr. 39 ;352.025

108;" VELA ";"PARTIDUL SOCIAL DEMOCRAT ";"CIMPEANU GHEORGHE ";;362.504

109;" VERBITA ";"PARTIDUL DEMOCRAT LIBERAL ";"BRANECI MARIN ";;367.113

110;" VARTOP ";"UNIUNEA SOCIAL LIBERALA ";"DOBRESCU CONSTANTIN ";;363.508

111;" VARVORU DE JOS ";"PARTIDUL SOCIAL DEMOCRAT ";"TABACU NICU ";;360.251

Similar Posts

  • Atentatele de la 11 Septembrie Si Declansarea Razboiului Impotriva Terorismului

    Atentatele de la 11 Septembrie și declanșarea războiului împotriva terorismului CUPRINS Intorducere I. Considerații generale privind terorismul 1.1 Noțiuni introductive 1.2 Definirea terorismului 1.3 Originile terorismului 1.4 Organizații și grupuri teroriste II. Statele Unite ale Americii și terorismul 2.1 Primele atentate 2.2 Secolul XX 2.3 Secolul XXI III. 9/11 – Simbolism și consecințe 3.2 Revendicările…

  • Dreptul Muncii Inspectia Muncii

    CUPRINSUL LUCRĂRII DE LICENȚĂ CAPITOLUL I : ASPECTE INTRODUCTIVE PRIVIND INSPECȚIA MUNCII Izvoarele dreptului muncii și Principiile dreptului muncii Izvoarele dreptului muncii. Dreptul muncii este reglementat prin Constituie și Codul muncii , dar și prin numeroase alte legi speciale , dintre care enumerăm: Legea nr. 62/2011 a dialogului social , Legea nr. 56/2007 privind încadrarea…

  • Teoria Generala a Dreptului.metode ale Cercetarii Stiintifice a Fenomenului Juridic

    Cuprins: Introducere……………………………………………………………………..3 Clasificare generală………………………………………………………….4 Metode tradiționale………………………………………………………….6 Metoda logică………………………………………………………………….8 Metoda dialectică…………………………………………………………….9 Metoda dogmatică……………………………………………………………9 Metoda careteziană………………………………………………………..10 Metoda conceptualistă……………………………………………………10 Metoda intuitivă…………………………………………………………….11 Metoda comparativă……………………………………………………….12 Metoda istorică………………………………………………………………13 Metoda sociologică………………………………………………………..13 Metodele cantitative……………………………………………………….14 Bibliografie…………………………………………………………………..16 Metode  ale cercetarii stiintifice a fenomenului juridic Pe parcursul dezvoltarii stiintei, in istoria acesteaia se observa o dezvoltare permanenta a cunoasterii stiintifice, o dezvoltare considerabila a tehnologiilor utilizate in…

  • Istoria Contenciosului Administrativ

    CUPRINS 1. INTRODUCERE………………………………………………………………………………………………..5 2. CAPITOLUL I. CONSIDERAȚII PRIVIND EVOLUȚIA ISTORICĂ A CONTENCIOSULUI ADMINISTRATIV ÎN ROMÂNIA……………………………………8 1. Perioada 11 februarie 1864 – 12 iulie 1866……………………..…..…………….…9 2. Perioada 12 iulie 1866-1 iulie 1905……………………………………………..…12 3. Perioada 1 iulie 1905 – 25 martie 1910…………………………….………….….14 4. Perioada 25 martie 1910 – 17 februarie 1912………………………………..….…17 5. Perioada 17 februarie 1912 –…

  • Institutia Primarului. Origine Si Evolutie

    Drd. HORCHIDAN DORINEL INSTITUȚIA PRIMARULUI ORIGINE ȘI EVOLUȚIE ϹUPRІΝЅ 3. АUТORІТĂȚІ АLЕ АDMІΝІЅТRАȚІЕІ PUBLІϹЕ АUТOΝOMЕ LOϹАLЕ АUТOΝOMЕ. ЅТАТUТUL JURІDІϹ ȘІ АDMІΝІЅТRАТІV АL PRІMАRULUІ Originea și evoluția Instituției primarului 3.1.1.Începutul instituției primarului. Prin legea comunală din 9/21 martie 1864 și promulgată la 31 martie același an, satele, orașele și târgurile au fost reorganizate sub forma unor…

  • Infractiunea de Furt

    CAPITOLUL I. NOȚIUNI GENERALE 1. „ FURTUL SIMPLU – art. 208 -„ Conținutul juridic Potrivit aln. 1, infracțiunea constă în luarea unui bun mobil din posesia sau detenția altuia, fără consimțământul acestuia, în scopul de a și-l însuși pe nedrept, iar potrivit alin. 4, constă în luarea, în condițiile aln. 1 ai textului, a unui…