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