1 6 7 package org.manentia.kasai.operative; 8 9 import com.koala.commons.log.Log; 10 import com.koala.commons.persistence.DBUtil; 11 import java.sql.*; 12 import java.util.ArrayList ; 13 import java.util.Arrays ; 14 import java.util.Collection ; 15 import java.util.logging.Level ; 16 import org.apache.commons.lang.StringUtils; 17 import org.apache.commons.lang.exception.ExceptionUtils; 18 import org.manentia.kasai.AuthObject; 19 import org.manentia.kasai.Group; 20 import org.manentia.kasai.Operative; 21 import org.manentia.kasai.Role; 22 import org.manentia.kasai.User; 23 import org.manentia.kasai.exceptions.AlreadyExistsException; 24 import org.manentia.kasai.exceptions.DataAccessException; 25 import org.manentia.kasai.exceptions.DoesntExistsException; 26 import org.manentia.kasai.exceptions.InvalidAttributesException; 27 import org.manentia.kasai.user.UserHandler; 28 import org.manentia.kasai.util.Constants; 29 30 34 public class JDBCMySQLOperativeDAO implements OperativeDAO { 35 36 37 public JDBCMySQLOperativeDAO() { 38 } 39 40 public Collection listGroupsOperative(String operative, String object) throws DataAccessException{ 41 Connection con = null; 42 String sql; 43 ResultSet rs = null; 44 Group g = null; 45 ArrayList groups = new ArrayList (); 46 try{ 47 48 int index = 0; 49 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE); 50 while (index!=-1){ 51 52 sql = "select distinct AG.* from kasai_roles_operatives ARO, " + 53 "kasai_users_groups AUG,kasai_objects_groups_roles AOGR,kasai_groups AG where " + 54 "ARO.id_operative='"+ org.apache.commons.lang.StringEscapeUtils.escapeSql(operative) + "' and AOGR.id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "' and AOGR.id_group=AUG.id_group " + 55 "and ARO.id_role=AOGR.id_role and AG.id=AUG.id_group " + 56 "and AG.blocked=0"; 57 58 rs = con.createStatement().executeQuery(sql); 59 while (rs.next()){ 60 g = new Group (rs); 61 if (!groups.contains(g)) 62 groups.add(g); 63 } 64 65 index = operative.lastIndexOf('.'); 66 if (index>=0){ 67 operative = operative.substring(0,index); 68 } 69 70 } 71 72 return groups; 73 }catch (SQLException sqle){ 74 Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "listGroupsOperative", ExceptionUtils.getStackTrace(sqle),Level.SEVERE); 75 throw new DataAccessException(sqle); 76 }finally{ 77 try{ 78 rs.close(); 79 }catch(Exception e){} 80 try{ 81 con.close(); 82 }catch(Exception e){} 83 } 84 85 } 86 87 public Collection list(String idOperative) throws DataAccessException{ 88 Connection con = null; 89 String sql; 90 ResultSet rs = null; 91 Operative o = null; 92 ArrayList operatives = new ArrayList (); 93 try{ 94 sql = "SELECT * FROM kasai_operatives "; 95 if (StringUtils.isNotEmpty(idOperative)){ 96 sql += " where id='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(idOperative) +"'"; 97 } 98 sql += " order by sequence "; 99 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE); 100 rs = con.createStatement().executeQuery(sql); 101 while (rs.next()){ 102 o = new Operative (rs); 103 operatives.add(o); 104 } 105 return operatives; 106 }catch (SQLException sqle){ 107 Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "list", ExceptionUtils.getStackTrace(sqle),Level.SEVERE); 108 throw new DataAccessException(sqle); 109 }finally{ 110 try{ 111 rs.close(); 112 }catch(Exception e){} 113 try{ 114 con.close(); 115 }catch(Exception e){} 116 } 117 118 } 119 120 public Collection listUsersOperative(String operative, String object) throws DataAccessException{ 121 Connection con = null; 122 String sql; 123 ResultSet rs = null; 124 User u = null; 125 ArrayList users = new ArrayList (); 126 try{ 127 128 sql = "SELECT AU.* FROM kasai_users AU WHERE AU.super_user=1 AND AU.blocked=0"; 129 con = DBUtil.getConnection(Constants.DATABASE_SOURCE, Constants.PROPERTY_FILE); 130 rs = con.createStatement().executeQuery(sql); 131 while (rs.next()){ 132 u = new User (rs); 133 users.add(u); 134 } 135 136 int index = 0; 137 while (index!=-1){ 138 139 sql = "select distinct AU.* from kasai_roles_operatives ARO, " + 140 "kasai_users_groups AUG,kasai_users AU,kasai_objects_groups_roles AOGR,kasai_groups AG where " + 141 "ARO.id_operative='"+ org.apache.commons.lang.StringEscapeUtils.escapeSql(operative) + "' and AOGR.id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "' and AOGR.id_group=AUG.id_group " + 142 "and ARO.id_role=AOGR.id_role and AG.id=AUG.id_group " + 143 "and AU.id=AUG.id_user" + " and AG.blocked=0" + " and AU.blocked=0"; 144 145 rs = con.createStatement().executeQuery(sql); 146 while (rs.next()){ 147 u = new User (rs); 148 if (!users.contains(u)) 149 users.add(u); 150 } 151 152 sql = "select distinct AU.* from kasai_roles_operatives ARO,kasai_users AU,kasai_objects_users_roles AOUR " + 153 "where AOUR.id_user=AU.id and " + 154 "ARO.id_operative='"+ org.apache.commons.lang.StringEscapeUtils.escapeSql(operative) + "' and AOUR.id_object='" + org.apache.commons.lang.StringEscapeUtils.escapeSql(object) + "' and ARO.id_role=AOUR.id_role" + " and AU.blocked=0"; 155 156 rs = con.createStatement().executeQuery(sql); 157 while (rs.next()){ 158 u = new User (rs); 159 if (!users.contains(u)) 160 users.add(u); 161 } 162 163 index = operative.lastIndexOf('.'); 164 if (index>=0){ 165 operative = operative.substring(0,index); 166 } 167 168 } 169 int i = 0; 170 return users; 171 }catch (SQLException sqle){ 172 Log.getInstance(Constants.PROPERTY_FILE).write (this.getClass().getName(), "listUsersOperative", ExceptionUtils.getStackTrace(sqle),Level.SEVERE); 173 throw new DataAccessException(sqle); 174 }finally{ 175 try{ 176 rs.close(); 177 }catch(Exception e){} 178 try{ 179 con.close(); 180 }catch(Exception e){} 181 } 182 183 } 184 } 185
| Popular Tags
|