Cyclic dependency when recruiting employees and settings in a department
I have tables "department" and "employee" and I created a class object for both.
UserTable
userId userName departmentId
1 abc 2
2 xyz 1
Department table
departmentId depName depHeadId
1 R&D 2
2 IT 1
public List<User> getAllUsers(){
List<User> mUserList= null;
// mDbHelper=DBHelper.getDBHelperInstance(mContext);
if(mDbHelper==null){
// todo: handle this case
return null;
}
mUserList=new ArrayList<>();
Cursor mCursor=null;
SQLiteDatabase mReadableDB= mDbHelper.getReadableDatabase();
try{
mCursor=mReadableDB.rawQuery("SELECT * FROM User",null);
if(mCursor==null){
return null;
}
if(mCursor.moveToFirst()) {
do {
User user= new User();
user.setUserId(mCursor.getInt(mCursor.getColumnIndex("userId")));
user.setUserName(mCursor.getString(mCursor.getColumnIndex("userName")));
Department department= getDepartmentOfUser(mCursor.getInt(mCursor.getColumnIndex("departmentId")));
user.setDepartment(department);
if(department==null){
//Todo: handled this case
return null;
}
mUserList.add(user)
} while (mCursor.moveToNext());
}
}catch (SQLiteException e){
// ToDO: Add Exception to log file
}finally {
if(mCursor!=null){
mCursor.close();
}
}
return mUserList;
}
public Department getDepartment(int departmentId) {
// mDbHelper=DBHelper.getDBHelperInstance(mContext);
Department department=null;
if(mDbHelper==null){
// need to log about the condition
return null;
}
Cursor mCursor=null;
SQLiteDatabase mReadableDB= mDbHelper.getReadableDatabase();
try{
mCursor=mReadableDB.rawQuery("SELECT * FROM DepartmentMaster where departmentId=?",new String[]{String.valueOf(departmentId)});
if(mCursor==null){
// need to log about the condition
return null;
}
if(mCursor.moveToFirst()){
department=new Department();
department.setId(departmentId);
department.setName(mCursor.getString(mCursor.getColumnIndex("depName")));
department.setDepartMentHead(getUser(mCursor.getInt(mCursor.getColumnIndex("depHeadId"))));
}
}catch (SQLiteException e){
// ToDO: Add Exception to log file
}finally {
if(mCursor!=null){
mCursor.close();
}
}
return department;
}
I need to call getUser (userId) again. Now I am just stuck and its a circular dependency between department and user. Can anyone help me fix the class design or db design to get my required data easily.
+3
source to share
No one has answered this question yet
Check out similar questions: