diff --git a/.classpath b/.classpath index a8d6a65..d6d226b 100755 --- a/.classpath +++ b/.classpath @@ -6,16 +6,35 @@ + + + + + + + + + + + + + + + + + + - - + - + + + diff --git a/.myhibernatedata b/.myhibernatedata new file mode 100755 index 0000000..aa4f5fa --- /dev/null +++ b/.myhibernatedata @@ -0,0 +1,20 @@ +#MyEclipse Hibernate Properties +#Thu Mar 24 12:22:19 COT 2016 +genBasicCompId=true +sessionFactoryName=zen.persistence.financial.HibernateSessionFactory +profile= +daoSFId= +jndiPath= +detectM2M=false +reStrategyClass= +detectO2O=false +springDaoFile= +useJavaTypes=true +keyGenerator= +genVersionTag=false +sessionFactoryId= +basePersistenceClass= +genAnnotations=true +reSettingsFile= +configFile=/zen/src/zen/persistence/financial/hibernate.cfg.xml +createConfigFile=true diff --git a/.project b/.project index 362f10b..be0ce9a 100755 --- a/.project +++ b/.project @@ -1,6 +1,6 @@ - ProyectoTest + zen @@ -25,6 +25,11 @@ + + com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator + + + org.eclipse.m2e.core.maven2Builder diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope index 5cee5ac..3437951 100755 --- a/.settings/.jsdtscope +++ b/.settings/.jsdtscope @@ -1,12 +1,12 @@ - + - + diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index bea39c5..66a4c84 100755 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,9 +1,8 @@ - - - + + - - + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml index 5b67ce4..e07880d 100755 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -1,7 +1,12 @@ + + + + + - + diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs deleted file mode 100755 index 6f1cba6..0000000 --- a/.settings/org.eclipse.wst.validation.prefs +++ /dev/null @@ -1,2 +0,0 @@ -disabled=06target -eclipse.preferences.version=1 diff --git a/.tern-project b/.tern-project new file mode 100755 index 0000000..66ea919 --- /dev/null +++ b/.tern-project @@ -0,0 +1,14 @@ +{ + "plugins": { + "guess-types": { + + }, + "outline": { + + } + }, + "libs": [ + "ecma5", + "browser" + ] +} \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index dd27656..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# zen diff --git a/WebContent/index.jsp b/WebContent/index.jsp deleted file mode 100755 index 01f9880..0000000 --- a/WebContent/index.jsp +++ /dev/null @@ -1,12 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> - - - - -Insert title here - - - Hola Mundo Cruel! - - \ No newline at end of file diff --git a/WebContent/META-INF/MANIFEST.MF b/WebRoot/META-INF/MANIFEST.MF similarity index 100% rename from WebContent/META-INF/MANIFEST.MF rename to WebRoot/META-INF/MANIFEST.MF diff --git a/WebRoot/WEB-INF/lib/json-20160212.jar b/WebRoot/WEB-INF/lib/json-20160212.jar new file mode 100755 index 0000000..21e09db Binary files /dev/null and b/WebRoot/WEB-INF/lib/json-20160212.jar differ diff --git a/WebRoot/WEB-INF/lib/mysql-connector-java-5.1.6.jar b/WebRoot/WEB-INF/lib/mysql-connector-java-5.1.6.jar new file mode 100755 index 0000000..0539039 Binary files /dev/null and b/WebRoot/WEB-INF/lib/mysql-connector-java-5.1.6.jar differ diff --git a/WebContent/WEB-INF/web.xml b/WebRoot/WEB-INF/web.xml similarity index 59% rename from WebContent/WEB-INF/web.xml rename to WebRoot/WEB-INF/web.xml index ac64f81..f67a7df 100755 --- a/WebContent/WEB-INF/web.xml +++ b/WebRoot/WEB-INF/web.xml @@ -1,6 +1,17 @@ - ProyectoTest + zen + + DNUser + DNUser + Delegado de la clase usuarios + zen.delegate.DNUser + + + + DNUser + /servlet/DNUser + index.html index.htm diff --git a/WebRoot/index.jsp b/WebRoot/index.jsp new file mode 100755 index 0000000..2b33a56 --- /dev/null +++ b/WebRoot/index.jsp @@ -0,0 +1,28 @@ +<%@page import="zen.test.PersistenceTest"%> +<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +// new PersistenceTest().test(); +%> + + + + + + + My JSP 'index.jsp' starting page + + + + + + + + + + This is my JSP page.
+ + diff --git a/pom.xml b/pom.xml index d205214..4e37f19 100755 --- a/pom.xml +++ b/pom.xml @@ -1,36 +1,28 @@ 4.0.0 - ProyectoTest - ProyectoTest + zen + zen 0.0.1-SNAPSHOT war - ProyectoTest src maven-compiler-plugin - 3.3 + 3.1 - 1.8 - 1.8 + 1.7 + 1.7 maven-war-plugin - 2.6 + 2.4 - WebContent + WebRoot false - - - javax.servlet - javax.servlet-api - 3.0.1 - - \ No newline at end of file diff --git a/src/hibernate.cfg.xml b/src/hibernate.cfg.xml new file mode 100755 index 0000000..23fe94b --- /dev/null +++ b/src/hibernate.cfg.xml @@ -0,0 +1,24 @@ + + + + + + + + org.hibernate.dialect.MySQLDialect + + + jdbc:mysql://localhost:3306/financial + + root + root + + com.mysql.jdbc.Driver + + + + + + \ No newline at end of file diff --git a/src/model/financial/NameQryUsers.java b/src/model/financial/NameQryUsers.java new file mode 100755 index 0000000..0930fe2 --- /dev/null +++ b/src/model/financial/NameQryUsers.java @@ -0,0 +1,29 @@ +package model.financial; + +import org.hibernate.annotations.NamedNativeQueries; +import org.hibernate.annotations.NamedNativeQuery; +import org.hibernate.annotations.NamedQueries; + + +@NamedQueries({ + @org.hibernate.annotations.NamedQuery( + name = "findGetAllUser", + query = "from Usuarios o " + + " where o.userName = :userName" + + " and o.password = :password" + + " and o.names = :names" + + " and o.lastName = :lastName" + + ) +}) + +@NamedNativeQueries({ + @NamedNativeQuery( + name = "findGetAllUserNative", + query = "select * from Usuarios where user_name = :userName and password = :password and names = :names and last_name = :lastName", + resultClass = Usuarios.class + ) +}) +public class NameQryUsers { + public enum FieldsUser{ Name, Password, Names, LastName}; +} diff --git a/src/model/financial/Usuarios.java b/src/model/financial/Usuarios.java new file mode 100755 index 0000000..8ea229e --- /dev/null +++ b/src/model/financial/Usuarios.java @@ -0,0 +1,115 @@ +package model.financial; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; + + +import static javax.persistence.GenerationType.IDENTITY; + +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.NamedNativeQueries; +import org.hibernate.annotations.NamedNativeQuery; +import org.hibernate.annotations.NamedQueries; + +/** + * Usuarios entity. @author MyEclipse Persistence Tools + */ + +@NamedQueries({ + @org.hibernate.annotations.NamedQuery( + name = "findGetAllUser", + query = "from Usuarios o " + + " where o.userName = :userName" + + " and o.password = :password" + + " and o.names = :names" + + " and o.lastName = :lastName" + + ) +}) + +@NamedNativeQueries({ + @NamedNativeQuery( + name = "findGetAllUserNative", + query = "select * from Usuarios where user_name = :userName and password = :password and names = :names and last_name = :lastName", + resultClass = Usuarios.class + ) +}) +@Entity +@Table(name = "usuarios", catalog = "financial") +public class Usuarios extends NameQryUsers implements java.io.Serializable { + + // Fields + + private Integer userId; + private String userName; + private String password; + private String names; + private String lastName; + + // Constructors + + /** default constructor */ + public Usuarios() { + } + + /** full constructor */ + public Usuarios(String userName, String password, String names, + String lastName) { + this.userName = userName; + this.password = password; + this.names = names; + this.lastName = lastName; + } + + // Property accessors + @Id + @GeneratedValue(strategy = IDENTITY) + @Column(name = "user_id", unique = true, nullable = false) + public Integer getUserId() { + return this.userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + @Column(name = "user_name", nullable = false, length = 50) + public String getUserName() { + return this.userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + @Column(name = "password", nullable = false, length = 50) + public String getPassword() { + return this.password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Column(name = "names", nullable = false, length = 150) + public String getNames() { + return this.names; + } + + public void setNames(String names) { + this.names = names; + } + + @Column(name = "last_name", nullable = false, length = 150) + public String getLastName() { + return this.lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + +} \ No newline at end of file diff --git a/src/zen/delegate/DNUser.java b/src/zen/delegate/DNUser.java new file mode 100755 index 0000000..d011541 --- /dev/null +++ b/src/zen/delegate/DNUser.java @@ -0,0 +1,168 @@ +package zen.delegate; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import model.financial.Usuarios; + +import org.json.JSONObject; + +import zen.logic.BLSecurity; +import zen.logic.BLSecurity.ValidatesSecurity; +import zen.logic.BLUser; + +public class DNUser extends HttpServlet { + + + private Usuarios user; + private boolean success = false; + private BLUser bLUser; + private JSONObject json = null; + private PrintWriter out = null; + private ValidatesSecurity action = null; + + + /** + * The doDelete method of the servlet.
+ * + * This method is called when a HTTP delete request is received. + * + * @param request the request send by the client to the server + * @param response the response send by the server to the client + * @throws ServletException if an error occurred + * @throws IOException if an error occurred + */ + public void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + try{ + user = new Usuarios(); + user.setUserId( request.getSession().getAttribute("userId")!=null ? Integer.parseInt(request.getSession().getAttribute("userId").toString()) :null ); + + action = ValidatesSecurity.LogIn; + success = new BLSecurity().vaidateUser(user, action); + + if(!success){ + throw new Exception("Permission Denied"); + } + + bLUser = new BLUser(); + user.setUserId( request.getParameter("userId")!=null ? Integer.parseInt(request.getParameter("userId").toString()) :null ); + json =bLUser.delete(user); + + + } + catch(Exception e){ + json = new JSONObject(); + json.put("success", false); + json.put("message", e.getMessage()); + } + + + out = response.getWriter(); + out.print(json.toString()); + + } + + /** + * The doPost method of the servlet.
+ * + * This method is called when a form has its tag value method equals to post. + * + * @param request the request send by the client to the server + * @param response the response send by the server to the client + * @throws ServletException if an error occurred + * @throws IOException if an error occurred + */ + public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + Integer idOperacion = null; + try{ + user = new Usuarios(); + user.setUserId( request.getSession().getAttribute("userId")!=null ? Integer.parseInt(request.getSession().getAttribute("userId").toString()) :null ); + user.setLastName( request.getParameter("lastName")!=null ? request.getParameter("lastName").toString() :null ); + user.setNames( request.getParameter("names")!=null ? request.getParameter("names").toString() :null ); + user.setPassword( request.getParameter("password")!=null ? request.getParameter("password").toString() :null ); + user.setUserName( request.getParameter("userName")!=null ? request.getParameter("userName").toString() :null ); + + idOperacion = Integer.parseInt(request.getParameter("idOperacion")); + + success = new BLSecurity().vaidateOperacion(user, idOperacion); + + if(!success){ + throw new Exception("Permission Denied"); + } + + bLUser = new BLUser(); + if(action.equals(ValidatesSecurity.LogOut)){ + json = bLUser.register(user); + } + + if(action.equals(ValidatesSecurity.LogIn)){ + json =bLUser.update(user); + } + + } + catch(Exception e){ + json = new JSONObject(); + json.put("success", false); + json.put("message", e.getMessage()); + } + + + out = response.getWriter(); + out.print(json.toString()); + } + + /** + * The doPut method of the servlet.
+ * + * This method is called when a HTTP put request is received. + * + * @param request the request send by the client to the server + * @param response the response send by the server to the client + * @throws ServletException if an error occurred + * @throws IOException if an error occurred + */ + public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + try{ + user = new Usuarios(); + user.setUserId( request.getSession().getAttribute("userId")!=null ? Integer.parseInt(request.getSession().getAttribute("userId").toString()) :null ); + user.setLastName( request.getParameter("lastName")!=null ? request.getParameter("lastName").toString() :null ); + user.setNames( request.getParameter("names")!=null ? request.getParameter("names").toString() :null ); + user.setPassword( request.getParameter("password")!=null ? request.getParameter("password").toString() :null ); + user.setUserName( request.getParameter("userName")!=null ? request.getParameter("userName").toString() :null ); + + action = user.getUserId() != null ? ValidatesSecurity.LogOut : ValidatesSecurity.LogIn; + success = new BLSecurity().vaidateUser(user, action); + + if(!success){ + throw new Exception("Permission Denied"); + } + + bLUser = new BLUser(); + if(action.equals(ValidatesSecurity.LogOut)){ + json = bLUser.register(user); + } + + if(action.equals(ValidatesSecurity.LogIn)){ + json =bLUser.update(user); + } + + } + catch(Exception e){ + json = new JSONObject(); + json.put("success", false); + json.put("message", e.getMessage()); + } + + + out = response.getWriter(); + out.print(json.toString()); + } + + +} diff --git a/src/zen/logic/BLSecurity.java b/src/zen/logic/BLSecurity.java new file mode 100755 index 0000000..b28d375 --- /dev/null +++ b/src/zen/logic/BLSecurity.java @@ -0,0 +1,40 @@ +package zen.logic; + +import model.financial.Usuarios; + +public class BLSecurity { + + public enum ValidatesSecurity { LogOut, LogIn}; + + public enum OperactionSecurity { ActiveAccount, LogIn}; + + public boolean vaidateOperacion(Usuarios userSession, Integer operaction){ + boolean success = false; + + if(operaction == OperactionSecurity.ActiveAccount.ordinal()){ + success = true; + } + + if(operaction == OperactionSecurity.LogIn.ordinal()){ + success = vaidateUser(userSession, ValidatesSecurity.LogIn); + } + + return success; + } + + + public boolean vaidateUser(Usuarios userSession, ValidatesSecurity action){ + boolean success = false; + + if(action.equals(ValidatesSecurity.LogOut)){ + success = true; + } + + if(action.equals(ValidatesSecurity.LogIn)){ + success = userSession != null && userSession.getUserId() != null; + } + + return success; + } + +} diff --git a/src/zen/logic/BLUser.java b/src/zen/logic/BLUser.java new file mode 100755 index 0000000..d1db3c0 --- /dev/null +++ b/src/zen/logic/BLUser.java @@ -0,0 +1,39 @@ +package zen.logic; + +import model.financial.Usuarios; + +import org.json.JSONObject; + +public class BLUser implements IBLUser { + + @Override + public JSONObject register(Usuarios user) { + // TODO Auto-generated method stub + return null; + } + + @Override + public JSONObject activeAccount(String encryptId) { + // TODO Auto-generated method stub + return null; + } + + @Override + public JSONObject update(Usuarios user) { + // TODO Auto-generated method stub + return null; + } + + @Override + public JSONObject delete(Usuarios user) { + // TODO Auto-generated method stub + return null; + } + + @Override + public JSONObject logIn(Usuarios user) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/zen/logic/IBLUser.java b/src/zen/logic/IBLUser.java new file mode 100755 index 0000000..46befed --- /dev/null +++ b/src/zen/logic/IBLUser.java @@ -0,0 +1,62 @@ +package zen.logic; + +import model.financial.Usuarios; + +import org.json.JSONObject; + +public interface IBLUser { + /* + * Registra un nuevo usuarios + * Params: + * user : informacio del usuario a registrar + * Excepciones: + * 1. Requiere los campos obligatorios + * 2. Verifica la seguridad de la clave + * 3. Verifica la existencia de login + * 4. Envia un email para activacion de la cuenta + */ + public JSONObject register(Usuarios user); + + /* + * Activa la cuenta de usuario + * Params: + * encryptId : id del usuario encriptado + * Excepciones: + * 1. El id de usuario no existe + */ + public JSONObject activeAccount(String encryptId); + + + /* + * Actualiza la informacion de la cuenta del usuario + * Params: + * user : informacio del usuario a registrar + * Excepciones: + * 1. El id de usuario no existe + * 2. Longitud de campos no valida + * 3. Campos requeridos no especificados + */ + public JSONObject update(Usuarios user); + + + /* + * Elimina la cuenta del usuario e informacion relacionada + * Params: + * user : informacio del usuario a registrar + * Excepciones: + * 1. El id de usuario no existe + * 2. Error intentar borrar antes de eliminar todas las foraneas + */ + public JSONObject delete(Usuarios user); + + + /* + * iniciar session + * Params: + * user : informacio del usuario a registrar + * Excepciones: + * 1. El login y/o password no existen + */ + public JSONObject logIn(Usuarios user); + +} diff --git a/src/zen/persistence/DataBaseSession.java b/src/zen/persistence/DataBaseSession.java new file mode 100755 index 0000000..69de33a --- /dev/null +++ b/src/zen/persistence/DataBaseSession.java @@ -0,0 +1,505 @@ +package zen.persistence; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.hibernate.Query; +import org.hibernate.Session; + + + +public class DataBaseSession implements IDataBasesSession { + + + + // Indica si la sesion se mantiena para varias transacciones + private boolean closeSession; + + // Almacena la sesion de base de datos + private Session session; + + public DataBaseSession(){ + this.closeSession = true; + + // Me permite conectarme a la base de datos definidas + this.session = HibernateSession.getSession(); + + } + + + + @Override + public Object save(Serializable entity) throws Exception { + + Object object = null; + try { + + session.beginTransaction(); + object = session.save(entity); + + if(closeSession){ + session.getTransaction().commit(); + } + + return object; + } + catch (RuntimeException re) { + + if(session.getTransaction().isActive()){ + session.getTransaction().rollback(); + session.close(); + } + + throw re; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + } + } + + + @Override + public Object merge(Serializable entity) throws Exception { + + Object object = null; + try { + + session.beginTransaction(); + object = session.merge(entity); + + if(closeSession){ + session.getTransaction().commit(); + } + + return object; + } + catch (RuntimeException re) { + + if(session.getTransaction().isActive()){ + session.getTransaction().rollback(); + session.close(); + } + + throw re; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + } + } + + + @Override + public Object merge(Class entidad, Serializable id, HashMap parameters) throws Exception { + Object entity = null; + Object persistence = null; + Object object = null; + try { + + + persistence = (Serializable) findById(entidad, id); + entity = QueryManager.getEntity(parameters, persistence); + + // Si se cierra la session por la transaccion anterior se abre para la nueva transaccion + if(!session.isConnected()){ + session = HibernateSession.getSession(); + } + + session.beginTransaction(); + object = session.merge(entity); + + + if(closeSession){ + session.getTransaction().commit(); + } + + return object; + } + catch (RuntimeException re) { + + if(session.getTransaction().isActive()){ + session.getTransaction().rollback(); + session.close(); + } + + throw re; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + } + } + + @Override + public void saveOrUpdate(Serializable entity) throws Exception { + + try { + + session.beginTransaction(); + session.saveOrUpdate(entity); + + if(closeSession){ + session.getTransaction().commit(); + } + + } + catch (RuntimeException re) { + + if(session.getTransaction().isActive()){ + session.getTransaction().rollback(); + session.close(); + } + + throw re; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + } + } + + @Override + public void delete(Serializable entity) throws Exception { + try { + session.beginTransaction(); + session.delete(entity); + + if(closeSession){ + session.getTransaction().commit(); + } + } catch (RuntimeException re) { + + if(session.getTransaction().isActive()){ + session.getTransaction().rollback(); + session.close(); + } + throw re; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + } + } + + @Override + public Object findById(Class entidad, Serializable id) throws Exception { + Object instance = null; + try { + instance = (Object) session.get(entidad, id); + return instance; + } catch (RuntimeException re) { + throw re; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + } + } + + + + @Override + public List executeNameQuery(String nameQuery, HashMap parameters) throws Exception { + return executeNameQuery(nameQuery, parameters, null, null); + } + + @Override + public List executeNameQuery(String nameQuery, HashMap parameters, Integer top, Integer rows) throws Exception{ + Query queryObject = null; + Iterator vIterator = null; + Map.Entry mapEnt=null; + List result = null; + try { + + queryObject = session.getNamedQuery(nameQuery); + if(top != null){ + queryObject.setFirstResult(top); + } + + if(rows != null){ + queryObject.setMaxResults( rows); + } + + + if (parameters != null) + { + vIterator = parameters.entrySet().iterator(); + while (vIterator.hasNext()) { + mapEnt = (Map.Entry)vIterator.next(); + queryObject.setParameter(mapEnt.getKey().toString(),mapEnt.getValue()); + } + } + + result = queryObject.list(); + return result; + + } + catch(Exception ex){ + ex.printStackTrace(); + throw ex; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + + queryObject = null; + vIterator = null; + mapEnt=null; + result = null; + } + } + + + @Override + public List executeNativeQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving) throws Exception { + return executeNativeQuery(entityName, queryName, paramsWhere, paramsHaving, null, null); + } + + @Override + public List executeNativeQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving, Integer top, Integer rows) throws Exception{ + Query queryObject = null; + Iterator vIterator = null; + Map.Entry mapEnt=null; + List result = null; + String sql = null; + try { + + sql = QueryManager.getQuery(entityName, queryName, paramsWhere, paramsHaving); + queryObject = session.createSQLQuery(sql); + + if(top != null){ + queryObject.setFirstResult(top); + } + + if(rows != null){ + queryObject.setMaxResults( rows); + } + + if (paramsWhere != null) + { + vIterator = paramsWhere.entrySet().iterator(); + while (vIterator.hasNext()) { + mapEnt = (Map.Entry)vIterator.next(); + queryObject.setParameter(mapEnt.getKey().toString(),mapEnt.getValue()); + } + } + + if (paramsHaving != null) + { + vIterator = paramsWhere.entrySet().iterator(); + while (vIterator.hasNext()) { + mapEnt = (Map.Entry)vIterator.next(); + queryObject.setParameter(mapEnt.getKey().toString(),mapEnt.getValue()); + } + } + + result = queryObject.list(); + return result; + + } catch (Exception ex) { + throw ex; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + + queryObject = null; + vIterator = null; + mapEnt=null; + result = null; + sql = null; + } + } + + @Override + public int executeNativeQueryUpdate(String entityName, String queryName, HashMap paramsWhere) throws Exception { + Query queryObject = null; + Iterator vIterator = null; + Map.Entry mapEnt=null; + int result = -1; + String sql = null; + try { + + sql = QueryManager.getQuery(entityName, queryName, paramsWhere); + queryObject = session.createSQLQuery(sql); + + if (paramsWhere != null) + { + vIterator = paramsWhere.entrySet().iterator(); + while (vIterator.hasNext()) { + mapEnt = (Map.Entry)vIterator.next(); + queryObject.setParameter(mapEnt.getKey().toString(),mapEnt.getValue()); + } + } + + result = queryObject.executeUpdate(); + + + } catch (Exception ex) { + ex.printStackTrace(); + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + + queryObject = null; + vIterator = null; + mapEnt=null; + result = -1; + sql = null; + } + return result; + } + + @Override + public List executeHqlQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving) throws Exception { + return executeHqlQuery(entityName, queryName, paramsWhere, paramsHaving, null, null); + } + + + + @Override + public List executeHqlQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving, Integer top, Integer rows) throws Exception { + Query queryObject = null; + Iterator vIterator = null; + Map.Entry mapEnt=null; + List result = null; + String hql = null; + try { + + hql = QueryManager.getQuery(entityName, queryName, paramsWhere, paramsHaving); + queryObject = session.createQuery(hql); + + if(top != null){ + queryObject.setFirstResult(top); + } + + if(rows != null){ + queryObject.setMaxResults( rows); + } + + if (paramsWhere != null) + { + vIterator = paramsWhere.entrySet().iterator(); + while (vIterator.hasNext()) { + mapEnt = (Map.Entry)vIterator.next(); + queryObject.setParameter(mapEnt.getKey().toString(),mapEnt.getValue()); + } + } + + if (paramsHaving != null) + { + vIterator = paramsWhere.entrySet().iterator(); + while (vIterator.hasNext()) { + mapEnt = (Map.Entry)vIterator.next(); + queryObject.setParameter(mapEnt.getKey().toString(),mapEnt.getValue()); + } + } + + result = queryObject.list(); + return result; + + } catch (Exception ex) { + throw ex; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + + queryObject = null; + vIterator = null; + mapEnt=null; + result = null; + hql = null; + } + } + + + + + @Override + public List executeNameProcedure(String nameProcedure, HashMap parameters, Integer top, Integer rows) throws Exception { + + Query queryObject = null; + Iterator vIterator = null; + Map.Entry mapEnt = null; + List result = null; + + try{ + + queryObject = session.getNamedQuery(nameProcedure); + + if(top != null){ + queryObject.setFirstResult(top); + } + + if(rows != null){ + queryObject.setMaxResults( rows); + } + + if (parameters != null) + { + vIterator = parameters.entrySet().iterator(); + while (vIterator.hasNext()) { + mapEnt = (Map.Entry)vIterator.next(); + queryObject.setParameter(mapEnt.getKey().toString(),mapEnt.getValue()); + } + } + + result = queryObject.list(); + return result; + + } catch (Exception ex) { + throw ex; + } + finally{ + if(closeSession && session.isConnected()){ + session.close(); + } + + queryObject = null; + vIterator = null; + mapEnt = null; + result = null; + } + + } + + + @Override + public void keepSession() throws Exception { + this.closeSession = false; + } + + @Override + public void closeSession() throws Exception { + + try{ + session.getTransaction().commit(); + } + catch(Exception e){ + session.getTransaction().rollback(); + throw e; + } + finally{ + session.close(); + this.closeSession = true; + } + + } + +} diff --git a/src/zen/persistence/HibernateSession.java b/src/zen/persistence/HibernateSession.java new file mode 100755 index 0000000..101c818 --- /dev/null +++ b/src/zen/persistence/HibernateSession.java @@ -0,0 +1,109 @@ +package zen.persistence; + +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.cfg.Configuration; +import org.hibernate.service.ServiceRegistry; +import org.hibernate.service.ServiceRegistryBuilder; + +/** + * Configures and provides access to Hibernate sessions, tied to the + * current thread of execution. Follows the Thread Local Session + * pattern, see {@link http://hibernate.org/42.html }. + */ +public class HibernateSession { + + /** + * Location of hibernate.cfg.xml file. + * Location should be on the classpath as Hibernate uses + * #resourceAsStream style lookup for its configuration file. + * The default classpath location of the hibernate config file is + * in the default package. Use #setConfigFile() to update + * the location of the configuration file for the current session. + */ + private static final ThreadLocal threadLocal = new ThreadLocal(); + private static org.hibernate.SessionFactory sessionFactory; + + private static Configuration configuration = new Configuration(); + private static ServiceRegistry serviceRegistry; + + static { + try { + configuration.configure(); + serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } catch (Exception e) { + System.err.println("%%%% Error Creating SessionFactory %%%%"); + e.printStackTrace(); + } + } + private HibernateSession() { + } + + /** + * Returns the ThreadLocal Session instance. Lazy initialize + * the SessionFactory if needed. + * + * @return Session + * @throws HibernateException + */ + public static Session getSession() throws HibernateException { + Session session = (Session) threadLocal.get(); + + if (session == null || !session.isOpen()) { + if (sessionFactory == null) { + rebuildSessionFactory(); + } + session = (sessionFactory != null) ? sessionFactory.openSession() + : null; + threadLocal.set(session); + } + + return session; + } + + /** + * Rebuild hibernate session factory + * + */ + public static void rebuildSessionFactory() { + try { + configuration.configure(); + serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } catch (Exception e) { + System.err.println("%%%% Error Creating SessionFactory %%%%"); + e.printStackTrace(); + } + } + + /** + * Close the single hibernate session instance. + * + * @throws HibernateException + */ + public static void closeSession() throws HibernateException { + Session session = (Session) threadLocal.get(); + threadLocal.set(null); + + if (session != null) { + session.close(); + } + } + + /** + * return session factory + * + */ + public static org.hibernate.SessionFactory getSessionFactory() { + return sessionFactory; + } + /** + * return hibernate configuration + * + */ + public static Configuration getConfiguration() { + return configuration; + } + +} \ No newline at end of file diff --git a/src/zen/persistence/IDataBasesSession.java b/src/zen/persistence/IDataBasesSession.java new file mode 100755 index 0000000..9d5b424 --- /dev/null +++ b/src/zen/persistence/IDataBasesSession.java @@ -0,0 +1,202 @@ +package zen.persistence; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; + + + +public interface IDataBasesSession { + + + /* + * Almacena un registro de la entidad recibida como parametro + * params : + * entity : Objecto mapeado del modelo de datos + * return : + * Retorna un Object que contiene la llave primaria para los tipos auto numericos o identity. + */ + public Object save(Serializable entity) throws Exception; + + + /* + * Actualiza un registro de la entidad recibida con la informacion de dicho objecto + * params : + * entity : Objecto mapeado del modelo de datos + * Retorna un Object que contiene la llave primaria para los tipos auto numericos o identity. + */ + public Object merge(Serializable entity) throws Exception; + + + /* + * Actualiza un registro de la entidad recibida con la informacion pasada por los parametros + * params : + * entity : Objecto mapeado del modelo de datos + * entidad : Objecto class del objecto que se va a actualizar + * id : id o objecto que representa la llave primaria + * parameters : parametros que contien los campos que se van a actualizar + * Retorna un Object que contiene la llave primaria para los tipos auto numericos o identity. + */ + public Object merge(Class entidad, Serializable id, HashMap parameters) throws Exception; + + + /* + * Almacena o actualiza un registro de la entidad recibida con la informacion de dicho objecto + * params : + * entity : Objecto mapeado del modelo de datos + * Retorna un Object que contiene la llave primaria para los tipos auto numericos o identity. + */ + public void saveOrUpdate(Serializable entity) throws Exception; + + + /* + * Elimina un registro que coincida con el objecto (set atributes key primary) + * params : + * entity : Objecto mapeado del modelo de datos + */ + public void delete(Serializable entity) throws Exception; + + /* + * Consulta un registro por su llave primaria + * params : + * entity : Objecto mapeado del modelo de datos con la informacion de la llave primaria + * Retorna el objecto que representa el registro de la base de datos. + */ + public Object findById(Class entidad, Serializable id) throws Exception; + + /* + * Consulta un listado de registros que coincidan con los parametros especificados + * params : + * entity : Objecto Class de la Entidad a consultar + * parameters : Hashmap que almacena los parametros a buscar asociados a la llave que contribulle armar el where + * Retorna un listado de los registros que coinciden con los parametros. + */ + //public List findByProperty(Class entity, List parameters) throws Exception ; + + /* + * Ejecuta consulta en leguaje HQL (Hibernate Query Language) + * params: + * nameQuery : nombre del query name que almacena a un archivo xml con diferentes querys + * parameters : Hashmap que almacena los parametros a buscar asociados a la llave que contribulle armar el where + * Retorna un listado de los registros que coinciden con los parametros. + */ + public List executeNameQuery(String nameQuery, HashMap parameters) throws Exception; + + /* + * Ejecuta consulta en leguaje HQL (Hibernate Query Language) + * params: + * nameQuery : nombre del query name que almacena a un archivo xml con diferentes querys + * parameters : Hashmap que almacena los parametros a buscar asociados a la llave que contribulle armar el where + * top : indica el numero de registro top de la consulta + * rows : indica el numero de registros a paginar en la consulta + * Retorna un listado de los registros que coinciden con los parametros. + */ + public List executeNameQuery(String nameQuery, HashMap parameters, Integer top, Integer rows) throws Exception; + + /* + * Ejecuta consulta en leguaje SQL (SQL Nativo para cada base de datos) + * params: + * entity : El nombre del la categoria del query (nivel superior) + * queryName : El nombre del query + * paramsWhere : parametros del where + * paramsHaving : parametros del having + * Retorna un listado de los registros que coinciden con los parametros. + */ + public List executeNativeQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving) throws Exception; + + + /* + * Ejecuta consulta en leguaje SQL (SQL Nativo para cada base de datos) + * params: + * entity : El nombre del la categoria del query (nivel superior) + * queryName : El nombre del query + * paramsWhere : parametros del where + * paramsHaving : parametros del having + * Retorna un listado de los registros que coinciden con los parametros. + * top : indica el numero de registro top de la consulta + * rows : indica el numero de registros a paginar en la consulta + */ + public List executeNativeQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving, Integer top, Integer rows) throws Exception; + + + /* + * Ejecuta consulta de Update, delete, insert en leguaje SQL (SQL Nativo para cada base de datos) + * params: + * nameQuery : nombre del query name que almacena a un archivo xml con diferentes querys + * parameters : Hashmap que almacena los parametros a buscar asociados a la llave que contribulle armar el where + * Retorna un listado de los registros que coinciden con los parametros. + */ + public int executeNativeQueryUpdate(String entityName, String queryName, HashMap paramsWhere) throws Exception; + + + /* + * Ejecuta consulta en leguaje SQL (SQL Nativo) + * params: + * nameQuery : nombre del query name que almacena a un archivo xml con diferentes querys + * parameters : Hashmap que almacena los parametros a buscar asociados a la llave que contribulle armar el where + + * Retorna un listado de los registros que coinciden con los parametros. + */ + //public List executeNativeQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving) throws Exception; + + /* + * Ejecuta consulta en leguaje HQL (Hibernate Query Language) + * params: + * nameQuery : nombre del query name que almacena a un archivo xml con diferentes querys + * parameters : Hashmap que almacena los parametros a buscar asociados a la llave que contribulle armar el where + * top : indica el numero de registro top de la consulta + * rows : indica el numero de registros a paginar en la consulta + * Retorna un listado de los registros que coinciden con los parametros. + */ + //public List executeSqlQuery(String nameQuery, HashMap parameters, Integer top, Integer rows) throws Exception; + + /* + * Ejecuta consulta en leguaje SQL (SQL Nativo para cada base de datos) + * params: + * entity : El nombre del la categoria del query (nivel superior) + * queryName : El nombre del query + * paramsWhere : parametros del where + * paramsHaving : parametros del having + * Retorna un listado de los registros que coinciden con los parametros. + */ + public List executeHqlQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving) throws Exception; + + + /* + * Ejecuta consulta en leguaje SQL (SQL Nativo para cada base de datos) + * params: + * entity : El nombre del la categoria del query (nivel superior) + * queryName : El nombre del query + * paramsWhere : parametros del where + * paramsHaving : parametros del having + * Retorna un listado de los registros que coinciden con los parametros. + * top : indica el numero de registro top de la consulta + * rows : indica el numero de registros a paginar en la consulta + */ + public List executeHqlQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving, Integer top, Integer rows) throws Exception; + + + + /* + * Indica que debe mantener la sesion abierta con la base de datos mientras + * se ejecutan varias secuencias (save, update, delete) + */ + public void keepSession() throws Exception; + + /* + * Cierra una sesion que fue dejada abierta para ejecutar varias acciones + * Excepcion: si ocurre una excepcion se realiza rollback de todas las operaciones + */ + public void closeSession() throws Exception; + + + + /* + * Ejecuta procedimientos almacenados llamandolo por el nombre y los parametros + * Params: + * queryString : llamado del procedimiento (exec ProcedimientoName @params = :params1) + * parameters : Hashmap que almacena los valores de los parametros del procedimiento + */ + public List executeNameProcedure(String nameProcedure, HashMap parameters, Integer top, Integer rows) throws Exception; + +} diff --git a/src/zen/persistence/Queries.xml b/src/zen/persistence/Queries.xml new file mode 100755 index 0000000..157dc55 --- /dev/null +++ b/src/zen/persistence/Queries.xml @@ -0,0 +1,21 @@ + + + + + + + from Usuarios as model + + userName = :userName + password = :password + names = :names + lastName = :lastName + + + + + + + + + diff --git a/src/zen/persistence/QueryManager.java b/src/zen/persistence/QueryManager.java new file mode 100755 index 0000000..3434cf6 --- /dev/null +++ b/src/zen/persistence/QueryManager.java @@ -0,0 +1,191 @@ +package zen.persistence; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import model.financial.NameQryUsers.FieldsUser; +import model.financial.Usuarios; + +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; + +import zen.utilities.UtilitiesApp; + +public class QueryManager { + + + + private static final String OR = "or"; + + + + private Integer idField; + + private Object value; + + public QueryManager(){ + + } + + public QueryManager(Integer idField, Object value){ + this.idField = idField; + this.value = value; + } + + public static String getQuery(String entityName, String queryName) throws Exception{ + return getQuery(entityName, queryName, null,null); + } + + + public static String getQuery(String entityName, String queryName, HashMap paramsWhere) throws Exception{ + return getQuery(entityName, queryName, paramsWhere, null); + } + + public static String getQuery(String entityName, String queryName, HashMap paramsWhere, HashMap paramsHaving) throws Exception{ + SAXReader reader = null; + Document document = null; + String sql = null; + Iterator iterator = null; + Map.Entry keyParam =null; + String lastOr = null; + boolean firts= true; + String operador = null; + Element root = null; + Element entidad = null; + Element query = null; + Element filter = null; + Element element = null; + String key = null; + String condicions = ""; + + + int idx = 0; + try{ + + // Obtiene los elementos del xml (query) + reader = new SAXReader(); + document = reader.read(UtilitiesApp.getPathResources(QueryManager.class, "Queries.xml")); + root = document.getRootElement(); + entidad = (Element) root.element(entityName); + query = (Element) entidad.element(queryName); + + // Reemplaza por cada sesion del query (select, from, groupby, order) + sql = "select from where groupBy orderBy having"; + sql = sql.replace("select", query.element("select").getTextTrim()); + sql = sql.replace("from", query.element("from").getTextTrim()); + sql = sql.replace("groupBy", query.element("groupBy")!=null ? query.element("groupBy").getTextTrim() : ""); + sql = sql.replace("orderBy", query.element("orderBy")!=null ? query.element("orderBy").getTextTrim() : ""); + + + // Obtiene los filtros del where y/o having que fueron enviados como parametros + do{ + switch (idx) { + case 0: + iterator = paramsWhere !=null && !paramsWhere.isEmpty() ? paramsWhere.entrySet().iterator() : null; + key = "where"; + break; + + case 1: + iterator = paramsHaving!=null && !paramsHaving.isEmpty() ? paramsHaving.entrySet().iterator() : null; + key = "having"; + break; + + default: + iterator = null; + break; + } + + + filter = (Element) query.element(key); + condicions = ""; + + // Obtiene los filtros para Where o Having + if(iterator != null && filter!= null){ + lastOr = ""; + firts = true; + + while (iterator.hasNext()) { + keyParam = (Map.Entry)iterator.next(); + element = filter.element(keyParam.getKey().toString()); + if(element!=null){ + operador = element.attribute("condition").getText(); + operador = firts && !operador.trim().toLowerCase().equals(OR) ? "" : operador; + lastOr = firts && operador.trim().toLowerCase().equals(OR) ? (" " +operador + " " + element.getTextTrim()) : lastOr ; + condicions+= (" " + operador + " " + element.getTextTrim()); + firts = false; + } + } + + // En caso de que existan filtros se concatena la cadena sql (Where param = :param1) + condicions = (condicions.equals("") ? "" : filter.attributeValue("condition") +condicions) ; + + } + + sql = sql.replace(key, condicions); + idx++; + + } while(iterator != null); + + return sql; + } + catch(Exception e){ + throw e; + } + finally{ + reader = null; + document = null; + sql = null; + iterator = null; + keyParam =null; + lastOr = null; + firts= true; + operador = null; + root = null; + entidad = null; + query = null; + filter = null; + element = null; + key = null; + condicions = null; + } + } + + + public static Object getEntity(HashMap parameters, Object persistence) throws Exception{ + + try{ + if(persistence.getClass().getName().equals(Usuarios.class.getName())){ + return new QueryManager().getUsuarios(parameters, persistence); + } + + return null; + } + catch(Exception e){ + throw e; + } + } + + private Object getUsuarios(HashMap parameters, Object persistence ) throws Exception{ + Usuarios oldUsuario = null; + Usuarios usuario = null; + try{ + + oldUsuario = persistence != null ? (Usuarios)persistence : new Usuarios(); + usuario = (Usuarios) Usuarios.class.getConstructor(String.class, String.class, String.class, String.class).newInstance( + parameters.containsKey(FieldsUser.Name) ? parameters.get(FieldsUser.Name) : oldUsuario.getUserName(), + parameters.containsKey(FieldsUser.Password) ? parameters.get(FieldsUser.Password) : oldUsuario.getPassword(), + parameters.containsKey(FieldsUser.Names) ? parameters.get(FieldsUser.Names) : oldUsuario.getNames(), + parameters.containsKey(FieldsUser.LastName) ? parameters.get(FieldsUser.LastName) : oldUsuario.getLastName() + ); + + usuario.setUserId( oldUsuario.getUserId()); + + return usuario; + } + catch(Exception e){ + throw e; + } + } +} diff --git a/src/zen/test/PersistenceTest.java b/src/zen/test/PersistenceTest.java new file mode 100755 index 0000000..2be1383 --- /dev/null +++ b/src/zen/test/PersistenceTest.java @@ -0,0 +1,306 @@ +package zen.test; + +import static org.junit.Assert.*; + +import java.util.HashMap; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import junit.framework.Assert; +import model.financial.Usuarios; +import model.financial.NameQryUsers.FieldsUser; + +import org.junit.Test; + +import zen.delegate.DNUser; +import zen.persistence.DataBaseSession; +import zen.persistence.IDataBasesSession; + + +public class PersistenceTest { + + @Test + public void Transacciones() throws Exception { + IDataBasesSession session = null; + Usuarios user = null; + Usuarios userPers = null; + Usuarios userPers02 = null; + Integer idUser = null; + String newPasswd = "Aaa123456+"; + String newLastName = "Bolanos Lenis"; + try{ + session = new DataBaseSession(); + user = new Usuarios(); + user.setLastName("Bolaņos Lenis"); + user.setNames("Juan Pablo"); + user.setPassword("123"); + user.setUserName("jp"); + idUser = (Integer) session.save(user); + + Assert.assertNotNull("Error Save User", idUser); + + session = new DataBaseSession(); + userPers = (Usuarios) session.findById(Usuarios.class, idUser); + + Assert.assertNotNull("Error find by Id User", userPers); + + + session = new DataBaseSession(); + userPers.setPassword(newPasswd); + session.merge(userPers); + + session = new DataBaseSession(); + userPers = (Usuarios) session.findById(Usuarios.class, idUser); + + Assert.assertNotSame("Error Merge Usuario",newPasswd, userPers.getPassword()); + + + session = new DataBaseSession(); + HashMap params = new HashMap(); + params.put(FieldsUser.LastName.ordinal(), newLastName); + session.merge(Usuarios.class, idUser, params); + + session = new DataBaseSession(); + userPers = (Usuarios) session.findById(Usuarios.class, idUser); + + Assert.assertNotSame("No update las name", newLastName, userPers.getLastName()); + + + } + catch(Exception e){ + throw e; + } + finally{ + if(idUser != null){ + user.setUserId(idUser); + session = new DataBaseSession(); + session.delete(user); + } + } + + } + + + @Test + public void execHql() throws Exception { + IDataBasesSession session = null; + Usuarios user01 = null; + Usuarios user02 = null; + Usuarios user03 = null; + HashMap params = null; + List listUser; + try{ + + + + user01 = new Usuarios(); + user01.setLastName("Bolaņos Lenis"); + user01.setNames("Juan Pablo"); + user01.setPassword("123"); + user01.setUserName("jp"); + + user02 = new Usuarios(); + user02.setLastName("Bolaņos Salazar"); + user02.setNames("Luis Alberto"); + user02.setPassword("123"); + user02.setUserName("lb"); + + user03 = new Usuarios(); + user03.setLastName("Lenis Hurtado"); + user03.setNames("Angie Lucia"); + user03.setPassword("123"); + user03.setUserName("al"); + + session = new DataBaseSession(); + user01.setUserId((Integer)session.save(user01)); + + session = new DataBaseSession(); + user02.setUserId((Integer)session.save(user02)); + + session = new DataBaseSession(); + user03.setUserId((Integer)session.save(user03)); + + params = new HashMap(); + params.put("userName", "jp"); + params.put("names", "Juan Pablo"); + params.put("password", "123"); + params.put("lastName", "Bolaņos Lenis"); + session = new DataBaseSession(); + listUser = session.executeHqlQuery("Usuarios", "getAllUser", params, null); + + Assert.assertTrue("No se encontro registros", listUser!=null && listUser.size() > 0); + + + } + catch(Exception e){ + throw e; + } + finally{ + if(user01.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user01); + } + + if(user02.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user02); + } + + if(user03.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user03); + } + } + + } + + + @Test + public void execNameQuery() throws Exception { + IDataBasesSession session = null; + Usuarios user01 = null; + Usuarios user02 = null; + Usuarios user03 = null; + HashMap params = null; + List listUser; + try{ + + + + user01 = new Usuarios(); + user01.setLastName("Bolaņos Lenis"); + user01.setNames("Juan Pablo"); + user01.setPassword("123"); + user01.setUserName("jp"); + + user02 = new Usuarios(); + user02.setLastName("Bolaņos Salazar"); + user02.setNames("Luis Alberto"); + user02.setPassword("123"); + user02.setUserName("lb"); + + user03 = new Usuarios(); + user03.setLastName("Lenis Hurtado"); + user03.setNames("Angie Lucia"); + user03.setPassword("123"); + user03.setUserName("al"); + + session = new DataBaseSession(); + user01.setUserId((Integer)session.save(user01)); + + session = new DataBaseSession(); + user02.setUserId((Integer)session.save(user02)); + + session = new DataBaseSession(); + user03.setUserId((Integer)session.save(user03)); + + params = new HashMap(); + params.put("userName", "jp"); + params.put("names", "Juan Pablo"); + params.put("password", "123"); + params.put("lastName", "Bolaņos Lenis"); + session = new DataBaseSession(); + listUser = session.executeNameQuery("findGetAllUser", params); + + Assert.assertTrue("No se encontro registros", listUser!=null && listUser.size() > 0); + + + } + catch(Exception e){ + throw e; + } + finally{ + if(user01.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user01); + } + + if(user02.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user02); + } + + if(user03.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user03); + } + } + + } + + + @Test + public void execNativeQuery() throws Exception { + IDataBasesSession session = null; + Usuarios user01 = null; + Usuarios user02 = null; + Usuarios user03 = null; + HashMap params = null; + List listUser; + try{ + + + + user01 = new Usuarios(); + user01.setLastName("Bolaņos Lenis"); + user01.setNames("Juan Pablo"); + user01.setPassword("123"); + user01.setUserName("jp"); + + user02 = new Usuarios(); + user02.setLastName("Bolaņos Salazar"); + user02.setNames("Luis Alberto"); + user02.setPassword("123"); + user02.setUserName("lb"); + + user03 = new Usuarios(); + user03.setLastName("Lenis Hurtado"); + user03.setNames("Angie Lucia"); + user03.setPassword("123"); + user03.setUserName("al"); + + session = new DataBaseSession(); + user01.setUserId((Integer)session.save(user01)); + + session = new DataBaseSession(); + user02.setUserId((Integer)session.save(user02)); + + session = new DataBaseSession(); + user03.setUserId((Integer)session.save(user03)); + + params = new HashMap(); + params.put("userName", "jp"); + params.put("names", "Juan Pablo"); + params.put("password", "123"); + params.put("lastName", "Bolaņos Lenis"); + session = new DataBaseSession(); + listUser = session.executeNameQuery("findGetAllUserNative", params); + + Assert.assertTrue("No se encontro registros", listUser!=null && listUser.size() > 0); + + + } + catch(Exception e){ + throw e; + } + finally{ + if(user01.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user01); + } + + if(user02.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user02); + } + + if(user03.getUserId() != null){ + session = new DataBaseSession(); + session.delete(user03); + } + } + + } + +} diff --git a/src/zen/utilities/UtilitiesApp.java b/src/zen/utilities/UtilitiesApp.java new file mode 100755 index 0000000..9d53b26 --- /dev/null +++ b/src/zen/utilities/UtilitiesApp.java @@ -0,0 +1,31 @@ +package zen.utilities; + + + +public class UtilitiesApp { + + public static String getPathResources(Class entity, String nameResource){ + ClassLoader loader = null; + String path = null; + try{ + loader = entity.getClassLoader(); + path = entity.getName(); + path = path.replace(".", "/"); + + if(nameResource==null){ + path+= ".class"; + } + else{ + + path = path.substring(0, path.lastIndexOf("/") + 1 ); + path+= nameResource; + } + + return loader.getResource(path).getPath(); + + } + catch(Exception e){ + throw e; + } + } +} diff --git a/target/classes/hibernate.cfg.xml b/target/classes/hibernate.cfg.xml new file mode 100755 index 0000000..23fe94b --- /dev/null +++ b/target/classes/hibernate.cfg.xml @@ -0,0 +1,24 @@ + + + + + + + + org.hibernate.dialect.MySQLDialect + + + jdbc:mysql://localhost:3306/financial + + root + root + + com.mysql.jdbc.Driver + + + + + + \ No newline at end of file diff --git a/target/classes/model/financial/NameQryUsers$FieldsUser.class b/target/classes/model/financial/NameQryUsers$FieldsUser.class new file mode 100755 index 0000000..16b1b6b Binary files /dev/null and b/target/classes/model/financial/NameQryUsers$FieldsUser.class differ diff --git a/target/classes/model/financial/NameQryUsers.class b/target/classes/model/financial/NameQryUsers.class new file mode 100755 index 0000000..05af4d7 Binary files /dev/null and b/target/classes/model/financial/NameQryUsers.class differ diff --git a/target/classes/model/financial/Usuarios.class b/target/classes/model/financial/Usuarios.class new file mode 100755 index 0000000..b02ebf7 Binary files /dev/null and b/target/classes/model/financial/Usuarios.class differ diff --git a/target/classes/zen/delegate/DNUser.class b/target/classes/zen/delegate/DNUser.class new file mode 100755 index 0000000..2793708 Binary files /dev/null and b/target/classes/zen/delegate/DNUser.class differ diff --git a/target/classes/zen/logic/BLSecurity$OperactionSecurity.class b/target/classes/zen/logic/BLSecurity$OperactionSecurity.class new file mode 100755 index 0000000..7ad2801 Binary files /dev/null and b/target/classes/zen/logic/BLSecurity$OperactionSecurity.class differ diff --git a/target/classes/zen/logic/BLSecurity$ValidatesSecurity.class b/target/classes/zen/logic/BLSecurity$ValidatesSecurity.class new file mode 100755 index 0000000..4945112 Binary files /dev/null and b/target/classes/zen/logic/BLSecurity$ValidatesSecurity.class differ diff --git a/target/classes/zen/logic/BLSecurity.class b/target/classes/zen/logic/BLSecurity.class new file mode 100755 index 0000000..337607c Binary files /dev/null and b/target/classes/zen/logic/BLSecurity.class differ diff --git a/target/classes/zen/logic/BLUser.class b/target/classes/zen/logic/BLUser.class new file mode 100755 index 0000000..9bfbcd6 Binary files /dev/null and b/target/classes/zen/logic/BLUser.class differ diff --git a/target/classes/zen/logic/IBLUser.class b/target/classes/zen/logic/IBLUser.class new file mode 100755 index 0000000..63984d8 Binary files /dev/null and b/target/classes/zen/logic/IBLUser.class differ diff --git a/target/classes/zen/persistence/DataBaseSession.class b/target/classes/zen/persistence/DataBaseSession.class new file mode 100755 index 0000000..6e46f33 Binary files /dev/null and b/target/classes/zen/persistence/DataBaseSession.class differ diff --git a/target/classes/zen/persistence/HibernateSession.class b/target/classes/zen/persistence/HibernateSession.class new file mode 100755 index 0000000..e761edf Binary files /dev/null and b/target/classes/zen/persistence/HibernateSession.class differ diff --git a/target/classes/zen/persistence/IDataBasesSession.class b/target/classes/zen/persistence/IDataBasesSession.class new file mode 100755 index 0000000..c23ac26 Binary files /dev/null and b/target/classes/zen/persistence/IDataBasesSession.class differ diff --git a/target/classes/zen/persistence/Queries.xml b/target/classes/zen/persistence/Queries.xml new file mode 100755 index 0000000..157dc55 --- /dev/null +++ b/target/classes/zen/persistence/Queries.xml @@ -0,0 +1,21 @@ + + + + + + + from Usuarios as model + + userName = :userName + password = :password + names = :names + lastName = :lastName + + + + + + + + + diff --git a/target/classes/zen/persistence/QueryManager.class b/target/classes/zen/persistence/QueryManager.class new file mode 100755 index 0000000..91866a7 Binary files /dev/null and b/target/classes/zen/persistence/QueryManager.class differ diff --git a/target/classes/zen/test/PersistenceTest.class b/target/classes/zen/test/PersistenceTest.class new file mode 100755 index 0000000..b603e64 Binary files /dev/null and b/target/classes/zen/test/PersistenceTest.class differ diff --git a/target/classes/zen/utilities/UtilitiesApp.class b/target/classes/zen/utilities/UtilitiesApp.class new file mode 100755 index 0000000..48c7fc8 Binary files /dev/null and b/target/classes/zen/utilities/UtilitiesApp.class differ diff --git a/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF b/target/m2e-jee/web-resources/META-INF/MANIFEST.MF similarity index 76% rename from target/m2e-wtp/web-resources/META-INF/MANIFEST.MF rename to target/m2e-jee/web-resources/META-INF/MANIFEST.MF index e97b9a4..ad42972 100755 --- a/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF +++ b/target/m2e-jee/web-resources/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 +Build-Jdk: 1.7.0_45 Built-By: BOL-LEN -Build-Jdk: 1.8.0_74 Created-By: Maven Integration for Eclipse diff --git a/target/m2e-jee/web-resources/META-INF/maven/zen/zen/pom.properties b/target/m2e-jee/web-resources/META-INF/maven/zen/zen/pom.properties new file mode 100755 index 0000000..401fd38 --- /dev/null +++ b/target/m2e-jee/web-resources/META-INF/maven/zen/zen/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Fri Mar 25 10:37:25 COT 2016 +version=0.0.1-SNAPSHOT +groupId=zen +m2e.projectName=zen +m2e.projectLocation=C\:\\Users\\BOL-LEN\\Workspaces\\MyEclipse 2015 CI\\zen +artifactId=zen diff --git a/target/m2e-wtp/web-resources/META-INF/maven/ProyectoTest/ProyectoTest/pom.xml b/target/m2e-jee/web-resources/META-INF/maven/zen/zen/pom.xml similarity index 59% rename from target/m2e-wtp/web-resources/META-INF/maven/ProyectoTest/ProyectoTest/pom.xml rename to target/m2e-jee/web-resources/META-INF/maven/zen/zen/pom.xml index d205214..4e37f19 100755 --- a/target/m2e-wtp/web-resources/META-INF/maven/ProyectoTest/ProyectoTest/pom.xml +++ b/target/m2e-jee/web-resources/META-INF/maven/zen/zen/pom.xml @@ -1,36 +1,28 @@ 4.0.0 - ProyectoTest - ProyectoTest + zen + zen 0.0.1-SNAPSHOT war - ProyectoTest src maven-compiler-plugin - 3.3 + 3.1 - 1.8 - 1.8 + 1.7 + 1.7 maven-war-plugin - 2.6 + 2.4 - WebContent + WebRoot false - - - javax.servlet - javax.servlet-api - 3.0.1 - - \ No newline at end of file diff --git a/target/m2e-wtp/web-resources/META-INF/maven/ProyectoTest/ProyectoTest/pom.properties b/target/m2e-wtp/web-resources/META-INF/maven/ProyectoTest/ProyectoTest/pom.properties deleted file mode 100755 index e14c7fe..0000000 --- a/target/m2e-wtp/web-resources/META-INF/maven/ProyectoTest/ProyectoTest/pom.properties +++ /dev/null @@ -1,7 +0,0 @@ -#Generated by Maven Integration for Eclipse -#Mon Mar 21 16:04:29 COT 2016 -version=0.0.1-SNAPSHOT -groupId=ProyectoTest -m2e.projectName=ProyectoTest -m2e.projectLocation=D\:\\Proyectos\\ProyectoTest -artifactId=ProyectoTest