project presentation - first spring
TRANSCRIPT
![Page 1: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/1.jpg)
Tab
le o
f C
on
ten
ts
1
Introduction and Schedule
General Diagrams
Tasks
1.1. Concept
1.2. App Goals
1.3. General Goals
1.4. Schedule
2.1. Communication Android-Server
2.2. Entity-Relationship
3.1. Tasks done: Scaling
3.2. Tasks done: Optimization
3.3. Remaining tasks: Zoom
3.4. Remaining tasks: Cache
4. Questions
![Page 2: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/2.jpg)
2
Introduction and Schedule 1
![Page 3: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/3.jpg)
» Android App for graphical display of statistical data.
» Diagrams should have zoom and scroll capabilities.
» Different months, different series and different qualities
can be selected.
» Each user can enrich the application adding comments
to the diagrams.
Concept 3
![Page 4: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/4.jpg)
» In any Mobile App, some factors to take into account,
» Computational process is limited Heavier tasks must take place on the server.
» Memory is limited Avoid heavy objects, or keep them in cache and instantiate them only when is strictly necessary.
» Don’t waste bandwidth Avoid unnecessary, heavy or repetitive requests to the server.
» Save battery Don’t make an intense use of the computational processor and of the internet connection.
App Goals 4
![Page 5: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/5.jpg)
» Scale the charts to the Mobile screen resolution.
» Optimize the transmission and the display of the charts.
» Create an optimal mechanism to interact with the server in the zoom-in process.
» Create a cache mechanism for retrieve previous graphs
» Have different users with different access levels (chars, categories).
General Goals 5
![Page 6: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/6.jpg)
Schedule 6
1. Android layouts.
2. SQL Scheme Tables and relationship between them.
3. Web Server with required REST methods (implementation of a Web
Service).
4. Connection between DB & Web Server DB Querys, Mapping
Objects-tables.
5. Connection between Web Server & Android.
6. Android Layouts II Some improvements after the connection with
the Web Server.
7. Chart points downscale and optimization.
8. Zoom implementation & cache mechanism.
9. Migrate Java Web Server to PHP Web Server.
![Page 7: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/7.jpg)
7
General Diagrams
![Page 8: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/8.jpg)
Communication Android-Server 8
Web Server: Handle the request; transform it in a SQL query; process it and creates the JSON representation for the response.
Database: Basic DB behavior, response to the SQL queries.
Client: Performs an HTTP Request; converts the JSON response to Java Object and display the results and/or performs some data processing.
Database W
eb
Se
rve
r
Mo
bile
Ap
p
HTTP/JSON
TCP/IP
REST
![Page 9: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/9.jpg)
Entity-Relationship Diagram 9
![Page 10: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/10.jpg)
10
Tasks
![Page 11: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/11.jpg)
11 Tasks done: Scaling
» Scaling (average algorithm) Fix Output = Screen resolution
![Page 12: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/12.jpg)
12 Tasks done: Optimization
» Optimization (deleting, or nulling the duplications) Variable output
![Page 13: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/13.jpg)
13 Remaining tasks: Zoom
» Choosing between the following procedures,
» Requests on demand Request to the server every time we zoom (slow and intense use of Internet).
» Request when higher resolution needed Request more than you need (higher resolution), but not in each zoom.
» Requests in advance Request in background other resolutions, that can be loaded directly when the user requires them (requires cache implementation).
![Page 14: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/14.jpg)
14 Remaining task: Cache
» Charts cache will be implemented
1. Request the chart, with some downscale and optimization parameters.
2. Save in the SSD the JSON representation (cache).
3. Save in memory the Object (SoftReference HashMap)
» Cache can be implemented with LRU algorithm Persistence == Requests == Battery consumption
![Page 15: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/15.jpg)
? Questions?
15
![Page 16: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/16.jpg)
16
Technologies used 1
![Page 17: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/17.jpg)
17
» Server Side
» Use of Apache Tomcat as a Java Servlet Container
» Use of Jersey Framework for implementing REST.
» Use of Hibernate Framework for implementing ORM.
» Use of MySQL as a Relational Database Management System.
Communication Android-Server
![Page 18: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/18.jpg)
18
REST: The predominant Web Service Model Software system designed to support machine-to-machine interaction over a network.
Clients requests to servers; servers process requests and return responses in a well known format.
» Transport layer is HTTP/MIME.
» The URI defines the resource.
» The operations are defined by the HTTP methods (GET, POST,
PUT, DELETE)
» The response is presented in JSON format (indicated thought
Media-Type).
REST Implementation
![Page 19: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/19.jpg)
REST Implementation 19
Advantages
» Simplifying the communication among independent and foreign systems.
» Organize an application into simple resources .
» No problem with firewalls and proxies (port 80, usually open)
» JSON is a lightweight text-based open standard and the Android parser offers
good performance.
» Possibility of HTTP cache and proxy server to handle high load.
Examples
» GET http://example.com/charts Obtain List of Charts.
» GET http://example.com/charts/1?month=1 Obtain Chart info for January
» PUT http://example.com/charts/1 Modify Chart with id=1
![Page 20: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/20.jpg)
20 ORM Implementation
ORM: Mapping technique for converting DB structure Object structure
Advantages
» Simplify the development of a service.
» Overcomes vendor specific SQL differences - the ORM knows how to write vendor specific SQL so you don't have to.
Disadvantages
» Developers loose understanding of what the code is actually doing the developer is more in control using SQL.
» ORM has a tendency to be slow, if is not used carefully.
![Page 21: Project Presentation - First Spring](https://reader033.vdocuments.site/reader033/viewer/2022060118/558c72ecd8b42a72098b46db/html5/thumbnails/21.jpg)
21 ORM Implementation
Hibernate
@Entity @Table(name = "categories")
public class Category{
private int id;
private String name;
private String description;
private Set<Chart> charts;
@Id @GeneratedValue @Column(name = "category_id")
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getDescription() { return description; }
public void setDescription(String description) { this.description = description; }
@OneToMany(mappedBy="category", fetch=FetchType.EAGER)
@LazyCollection(LazyCollectionOption.FALSE)
public Set<Chart> getCharts() { return charts;}
public void setCharts(Set<Chart> charts) { this.charts = charts; }
}