Skip to content

Commit 143e714

Browse files
committed
completando el pull-request #12
1 parent 2075d2f commit 143e714

File tree

11 files changed

+390
-24
lines changed

11 files changed

+390
-24
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>org.devdom</groupId>
6-
<version>1.0</version>
6+
<version>1.0.2</version>
77
<artifactId>skills-devdom</artifactId>
88
<properties>
99
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

src/main/java/org/devdom/skills/model/dao/DeveloperDao.java

Lines changed: 61 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -102,18 +102,38 @@ public MasterDeveloper findAllDevelopers(String acceptHeader, String url, int pa
102102

103103
return masterDeveloper;
104104
}
105+
106+
public MasterDeveloper getAllDevelopersByFilters(String firstName, String lastName, String sort, int limit, String acceptHeader, String url){
107+
return getAllDevelopersByFilters(firstName, lastName, sort, limit, acceptHeader, url, 1);
108+
}
105109

106-
private List<Developer> findDevelopersBySkillId(int skillID){
107-
EntityManager em=emf.createEntityManager();
108-
try{
109-
return (List<Developer>) em.createNamedQuery("Developer.findDevelopersBySkillId")
110-
.setParameter("skill_id", skillID)
111-
.getResultList();
112-
} finally {
113-
if (em != null) {
114-
em.close();
115-
}
116-
}
110+
public MasterDeveloper getAllDevelopersByFilters(String firstName, String lastName, String sort, int limit, String acceptHeader, String url, int page) {
111+
112+
String path = getRealPath(url);
113+
currentPage = page;
114+
115+
from = (currentPage-1)*ROWS_PER_PAGE;
116+
to = (from+ROWS_PER_PAGE);
117+
118+
119+
List<Developer> developers = this.findAllDevelopersByFilters(firstName, lastName, sort, limit);
120+
rowCount = developers.size();
121+
122+
to = (to>rowCount)?rowCount:to;
123+
124+
developers = developers.subList(from, to);
125+
126+
Pagination pagination = new Pagination();
127+
pagination.setPositionCurrentPage(currentPage);
128+
pagination.setRowsPerPages(ROWS_PER_PAGE);
129+
pagination.setTotalRow(rowCount);
130+
pagination.setDataType(acceptHeader);
131+
pagination.setAbsolutePath(path);
132+
pagination.generate();
133+
masterDeveloper.setDevelopers(developers);
134+
masterDeveloper.setPagination(pagination);
135+
136+
return masterDeveloper;
117137
}
118138

119139
public MasterDeveloper getDeveloperById(int id,String acceptHeader, String url){
@@ -129,7 +149,7 @@ public MasterDeveloper getDeveloperById(int id,String acceptHeader, String url,
129149
to = (from+ROWS_PER_PAGE);
130150

131151

132-
List<Developer> developers = getDeveloperById(id);
152+
List<Developer> developers = findDeveloperById(id);
133153
List<Skills> skills = skillDao.findSkillsByDeveloperId(id);
134154
rowCount = skills.size();
135155

@@ -151,7 +171,20 @@ public MasterDeveloper getDeveloperById(int id,String acceptHeader, String url,
151171
return masterDeveloper;
152172
}
153173

154-
public List<Developer> getDeveloperById(int id){
174+
private List<Developer> findDevelopersBySkillId(int skillID){
175+
EntityManager em=emf.createEntityManager();
176+
try{
177+
return (List<Developer>) em.createNamedQuery("Developer.findDevelopersBySkillId")
178+
.setParameter("skill_id", skillID)
179+
.getResultList();
180+
} finally {
181+
if (em != null) {
182+
em.close();
183+
}
184+
}
185+
}
186+
187+
public List<Developer> findDeveloperById(int id){
155188
EntityManager em=emf.createEntityManager();
156189
try{
157190
return (List<Developer>) em.createNamedQuery("Developer.findDeveloperById")
@@ -176,5 +209,20 @@ public List<Developer> findAllDevelopers(){
176209
}
177210
}
178211

212+
public List<Developer> findAllDevelopersByFilters(String firstName, String lastName, String sort, int limit){
213+
EntityManager em=emf.createEntityManager();
214+
try{
215+
return (List<Developer>) em.createNamedQuery("Developer.findAllDevelopersByFilters")
216+
.setParameter("first_name",firstName)
217+
.setParameter("last_name",lastName)
218+
.setParameter("sort",sort)
219+
.setParameter("limit",limit)
220+
.getResultList();
221+
} finally {
222+
if (em != null) {
223+
em.close();
224+
}
225+
}
226+
}
179227

180228
}

src/main/java/org/devdom/skills/model/dao/SkillsDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public MasterSkillset getSkillsByDeveloperId(int developerId, String acceptHeade
8989
pagination.generate();
9090

9191
skillset.setPagination(pagination);
92-
skillset.setDevelopers(developerDao.getDeveloperById(developerId));
92+
skillset.setDevelopers(developerDao.findDeveloperById(developerId));
9393
skillset.setSkills(skills);
9494

9595
return skillset;

src/main/java/org/devdom/skills/model/dto/Developer.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,27 @@
4242
procedureName="findAllDevelopers",
4343
returnsResultSet=true,
4444
resultClass=Developer.class
45+
),
46+
@NamedStoredProcedureQuery( name="Developer.findAllDevelopersByFilters",
47+
procedureName="findAllDevelopersByFilters",
48+
returnsResultSet=true,
49+
resultClass=Developer.class,
50+
parameters={@StoredProcedureParameter(queryParameter="first_name",
51+
name="first_name",
52+
direction=Direction.IN,
53+
type=String.class),
54+
@StoredProcedureParameter(queryParameter="last_name",
55+
name="last_name",
56+
direction=Direction.IN,
57+
type=String.class),
58+
@StoredProcedureParameter(queryParameter="sort",
59+
name="sort",
60+
direction=Direction.IN,
61+
type=String.class),
62+
@StoredProcedureParameter(queryParameter="limit",
63+
name="limit",
64+
direction=Direction.IN,
65+
type=Integer.class)}
4566
)
4667
})
4768
public class Developer implements Serializable {

src/main/java/org/devdom/skills/service/DeveloperResource.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import javax.ws.rs.Path;
77
import javax.ws.rs.PathParam;
88
import javax.ws.rs.Produces;
9+
import javax.ws.rs.QueryParam;
910
import javax.ws.rs.core.Context;
1011
import javax.ws.rs.core.MediaType;
1112
import javax.ws.rs.core.UriInfo;
@@ -106,5 +107,38 @@ public MasterDeveloper developersByIDAndPage(@PathParam("id") int id,
106107
return developerDao.getDeveloperById(id, acceptHeader, path,page);
107108

108109
}
110+
111+
@GET
112+
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
113+
@Path("where")
114+
public MasterDeveloper allDevelopersByFilters(@HeaderParam("Accept") String acceptHeader,
115+
@Context UriInfo uri,
116+
@QueryParam("first_name") String firstName,
117+
@QueryParam("last_name") String lastName,
118+
@QueryParam("sort") String sort,
119+
@QueryParam("limit") int limit
120+
){
121+
String path = categoryDao.getRealPath(uri.getAbsolutePath().toString());
122+
123+
return developerDao.getAllDevelopersByFilters(firstName, lastName, sort, limit, acceptHeader, path);
124+
125+
}
126+
127+
@GET
128+
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
129+
@Path("where/page/{page}")
130+
public MasterDeveloper allDevelopersByFilters(@HeaderParam("Accept") String acceptHeader,
131+
@DefaultValue("1") @PathParam("page") int page,
132+
@Context UriInfo uri,
133+
@QueryParam("first_name") String firstName,
134+
@QueryParam("last_name") String lastName,
135+
@QueryParam("sort") String sort,
136+
@QueryParam("limit") int limit
137+
){
138+
String path = categoryDao.getRealPath(uri.getAbsolutePath().toString());
139+
140+
return developerDao.getAllDevelopersByFilters(firstName, lastName, sort, limit, acceptHeader, path, page);
141+
142+
}
109143

110144
}

src/main/java/org/devdom/skills/util/IResource.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,44 @@ private IResource(){
1616
"api/category",
1717
"api/category/page/:page-number",
1818
"api/category/id/:category-id",
19+
"api/skill",
20+
"api/skill/page/:page-number",
1921
"api/skill/by/category/id/:category-id",
2022
"api/skill/by/category/id/:category-id/page/:page-number",
2123
"api/skill/id/:skill-id",
2224
"api/developer",
2325
"api/developer/page/:page-number",
2426
"api/developer/id/:developer-id",
2527
"api/developer/id/:developer-id/page/:page-number",
26-
"api/skill",
27-
"api/skill/page/:page-number"
28+
"api/developer/where?first_name=:first-name",
29+
"api/developer/where?last_name=:last-name",
30+
"api/developer/where?sort=:sorting",
31+
"api/developer/where?limit=:top",
32+
"api/developer/where?first_name=:first-name&last_name=:last-name",
33+
"api/developer/where?first_name=:first-name&last_name=:last-name&sort=:sorting",
34+
"api/developer/where?first_name=:first-name&last_name=:last-name&sort=:sorting&limit=:top"
2835
};
2936

3037
public static final String[] DESCRIPTION = {
3138
"Lista las categorías que contienen skills de developers",
3239
"Lista las categorías que contienen skills de developers especificando que página se espera mostrar",
3340
"Retorna información sobre una categoría según su id",
41+
"Lista todos los skills",
42+
"Lista todos los skills, indicando que página se desea mostrar",
3443
"Retorna skills de developer según el id de una categoría",
3544
"Retorna skills de developer según el id de una categoría y especificando que página se quiere ver",
3645
"Retornar detalle de un skill",
3746
"Retornar el listado de developers",
3847
"Retornar el listado de developers, indicando la página que se desea mostrar",
3948
"Retorna información de un developer según su id",
4049
"Retorna información de un developer según su id y se especifica que página se desea mostrar",
41-
"Lista todos los skills",
42-
"Lista todos los skills, indicando que página se desea mostrar"
50+
"Retorna el Listado de developers buscando coincidencias en el nombre",
51+
"Retorna el listado de developers buscando coincidencias en el apellido",
52+
"Retorna el listado de developers sorteando de forma ascendente o descendente",
53+
"Retorna el listado de developers limitando según el parámetro pasado",
54+
"Lista developers realizando las conbinaciones de buscar por el :first-name así como por el :last-name al mismo tiempo",
55+
"Lista developers realizando las conbinaciones de buscar por el :first-name así como por el :last-name al mismo tiempo y sortear los resultados usando ASC o DESC",
56+
"Lista developers realizando las conbinaciones de buscar por el :first-name así como por el :last-name al mismo tiempo y sortear los resultados usando ASC o DESC y limitar la cantidad de resultados utilizando :limit",
4357
};
4458

4559
public static final String getTag(String uri){
@@ -57,7 +71,11 @@ public static final String finalURL(String url){
5771
return url.replaceAll(":page-number","1")
5872
.replaceAll(":category-id","5") //category-id = (5) programming language
5973
.replaceAll(":skill-id","8901") //skill-id = (8901) JBoss
60-
.replaceAll(":developer-id","1401"); //developer-id = 1401
74+
.replaceAll(":developer-id","1401") //developer-id = 1401
75+
.replaceAll(":first-name","Melvyn")
76+
.replaceAll(":last-name","P")
77+
.replaceAll(":sorting","asc")
78+
.replaceAll(":top","5");
6179
}
6280

63-
}
81+
}

src/main/webapp/images/link.png

1.1 KB
Loading
1.05 KB
Loading

src/main/webapp/index.xhtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
<c:forEach var="api" items="${restAPI.resources}">
101101

102102
<a name="#{api.tag}-ank" id="#{api.tag}-ank"></a>
103-
<a href="##{api.tag}-ank" title="clic para ver resultados en vivo" id="run" onclick="javascript:devdom.curl('#{api.uri}','#{api.tag}')">#{api.path}</a> <code class="verb-run">GET</code>
103+
<a href="##{api.tag}-ank" title="clic para ver resultados en vivo" id="run" onclick="javascript:devdom.curl('#{api.uri}','#{api.tag}')">#{api.path}</a> <img class="bt-verb" src="images/verb_get.png"/> <a href="#{api.uri}" target="_blank"><img src="images/link.png" class="bt-link"/></a>
104104
<p class="api-detail">#{api.description}</p>
105105
<span id="#{api.tag}"></span>
106106

@@ -122,4 +122,4 @@
122122
} catch(err) {}
123123
</script>
124124
</h:body>
125-
</html>
125+
</html>

0 commit comments

Comments
 (0)