/*
* Copyright (C) 2009 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.etk.core.membership.jdbc;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Calendar;
import java.util.Date;
import org.etk.component.base.event.ListenerService;
import org.etk.component.database.DBObjectMapper;
import org.etk.component.database.DBTableManager;
import org.etk.component.database.DatabaseService;
import org.etk.component.database.ExoDatasource;
import org.etk.core.membership.BaseOrganizationService;
public class OrganizationServiceImpl extends BaseOrganizationService {
public OrganizationServiceImpl(ListenerService listenerService, DatabaseService dbService) throws Exception {
ExoDatasource datasource = dbService.getDatasource();
userDAO_ = new UserDAOImpl(listenerService, datasource, new UserMapper());
groupDAO_ = new GroupDAOImpl(listenerService, datasource, new GroupMapper());
membershipTypeDAO_ = new MembershipTypeDAOImpl(listenerService, datasource, new MembershipTypeMapper());
membershipDAO_ = new MembershipDAOImpl(listenerService, datasource, new MembershipMapper(), this);
userProfileDAO_ = new UserProfileDAOImpl(listenerService, datasource, new UserProfileMapper());
DBTableManager dbManager = datasource.getDBTableManager();
// try{
if (!dbManager.hasTable(UserImpl.class))
dbManager.createTable(UserImpl.class, false);
// int k = 3/0;
// } catch(Exception e) {
// e.printStackTrace();
// }
if (!dbManager.hasTable(GroupImpl.class))
dbManager.createTable(GroupImpl.class, false);
if (!dbManager.hasTable(MembershipTypeImpl.class))
dbManager.createTable(MembershipTypeImpl.class, false);
if (!dbManager.hasTable(UserProfileData.class))
dbManager.createTable(UserProfileData.class, false);
if (!dbManager.hasTable(MembershipImpl.class))
dbManager.createTable(MembershipImpl.class, false);
}
static class UserMapper implements DBObjectMapper<UserImpl> {
public String[][] toParameters(UserImpl bean) throws Exception {
Date date = bean.getCreatedDate();
if (date == null)
date = Calendar.getInstance().getTime();
java.sql.Date createdDate = new java.sql.Date(date.getTime());
date = bean.getLastLoginTime();
if (date == null)
date = Calendar.getInstance().getTime();
java.sql.Date lastLogin = new java.sql.Date(date.getTime());
return new String[][] { { "ID", String.valueOf(bean.getDBObjectId()) },
{ "USER_NAME", bean.getUserName() }, { "PASSWORD", bean.getPassword() },
{ "FIRST_NAME", bean.getFirstName() }, { "LAST_NAME", bean.getLastName() },
{ "EMAIL", bean.getEmail() }, { "CREATED_DATE", createdDate.toString() },
{ "LAST_LOGIN_TIME", lastLogin.toString() },
{ "ORGANIZATION_ID", bean.getOrganizationId() } };
}
public void mapUpdate(UserImpl bean, PreparedStatement statement) throws Exception {
statement.setString(1, bean.getUserName());
statement.setString(2, bean.getPassword());
statement.setString(3, bean.getFirstName());
statement.setString(4, bean.getLastName());
statement.setString(5, bean.getEmail());
Date createdDate = bean.getCreatedDate();
if (createdDate == null)
createdDate = Calendar.getInstance().getTime();
statement.setDate(6, new java.sql.Date(createdDate.getTime()));
Date lastLoginTime = bean.getLastLoginTime();
if (lastLoginTime == null)
lastLoginTime = Calendar.getInstance().getTime();
statement.setDate(7, new java.sql.Date(lastLoginTime.getTime()));
statement.setString(8, bean.getOrganizationId());
}
public void mapResultSet(ResultSet res, UserImpl bean) throws Exception {
bean.setDBObjectId(res.getLong("ID"));
bean.setUserName(res.getString("USER_NAME"));
bean.setPassword(res.getString("PASSWORD"));
bean.setFirstName(res.getString("FIRST_NAME"));
bean.setLastName(res.getString("LAST_NAME"));
bean.setEmail(res.getString("EMAIL"));
Calendar calendar = Calendar.getInstance();
res.getDate("CREATED_DATE", calendar);
bean.setCreatedDate(calendar.getTime());
res.getDate("LAST_LOGIN_TIME", calendar);
bean.setLastLoginTime(calendar.getTime());
bean.setOrganizationId(res.getString("ORGANIZATION_ID"));
}
}
static class GroupMapper implements DBObjectMapper<GroupImpl> {
public String[][] toParameters(GroupImpl bean) throws Exception {
return new String[][] { { "GROUP_ID", bean.getId() }, { "PARENT_ID", bean.getParentId() },
{ "GROUP_NAME", bean.getGroupName() }, { "LABEL", bean.getLabel() },
{ "GROUP_DESC", bean.getDescription() } };
}
public void mapUpdate(GroupImpl bean, PreparedStatement statement) throws Exception {
statement.setString(1, bean.getId());
statement.setString(2, bean.getParentId());
statement.setString(3, bean.getGroupName());
statement.setString(4, bean.getLabel());
statement.setString(5, bean.getDescription());
}
public void mapResultSet(ResultSet res, GroupImpl bean) throws Exception {
bean.setDBObjectId(res.getLong("ID"));
bean.setId(res.getString("GROUP_ID"));
bean.setParentId(res.getString("PARENT_ID"));
bean.setGroupName(res.getString("GROUP_NAME"));
bean.setLabel(res.getString("LABEL"));
bean.setDescription(res.getString("GROUP_DESC"));
}
}
static class MembershipTypeMapper implements DBObjectMapper<MembershipTypeImpl> {
public String[][] toParameters(MembershipTypeImpl bean) throws Exception {
Date date = bean.getCreatedDate();
if (date == null)
date = Calendar.getInstance().getTime();
java.sql.Date createdDate = new java.sql.Date(date.getTime());
date = bean.getModifiedDate();
if (date == null)
date = Calendar.getInstance().getTime();
java.sql.Date modifiedDate = new java.sql.Date(date.getTime());
return new String[][] { { "MT_NAME", bean.getName() }, { "MT_OWNER", bean.getOwner() },
{ "MT_DESCRIPTION", bean.getDescription() }, { "CREATED_DATE", createdDate.toString() },
{ "LAST_LOGIN_TIME", modifiedDate.toString() } };
}
public void mapUpdate(MembershipTypeImpl bean, PreparedStatement statement) throws Exception {
statement.setString(1, bean.getName());
statement.setString(2, bean.getOwner());
statement.setString(3, bean.getDescription());
Date createdDate = bean.getCreatedDate();
if (createdDate == null)
createdDate = Calendar.getInstance().getTime();
statement.setDate(4, new java.sql.Date(createdDate.getTime()));
Date lastLoginTime = bean.getModifiedDate();
if (lastLoginTime == null)
lastLoginTime = Calendar.getInstance().getTime();
statement.setDate(5, new java.sql.Date(lastLoginTime.getTime()));
}
public void mapResultSet(ResultSet res, MembershipTypeImpl bean) throws Exception {
bean.setDBObjectId(res.getLong("ID"));
bean.setName(res.getString("MT_NAME"));
bean.setOwner(res.getString("MT_OWNER"));
bean.setDescription(res.getString("MT_DESCRIPTION"));
Calendar calendar = Calendar.getInstance();
res.getDate("CREATED_DATE", calendar);
bean.setCreatedDate(calendar.getTime());
res.getDate("MODIFIED_DATE", calendar);
bean.setModifiedDate(calendar.getTime());
}
}
static class MembershipMapper implements DBObjectMapper<MembershipImpl> {
public String[][] toParameters(MembershipImpl bean) throws Exception {
return new String[][] { { "MEMBERSHIP_ID", bean.getId() },
{ "MEMBERSHIP_TYPE", bean.getMembershipType() }, { "GROUP_ID", bean.getGroupId() },
{ "USER_NAME", bean.getUserName() } };
}
public void mapUpdate(MembershipImpl bean, PreparedStatement statement) throws Exception {
statement.setString(1, bean.getId());
statement.setString(2, bean.getMembershipType());
statement.setString(3, bean.getGroupId());
statement.setString(4, bean.getUserName());
}
public void mapResultSet(ResultSet res, MembershipImpl bean) throws Exception {
bean.setDBObjectId(res.getLong("ID"));
bean.setId(res.getString("MEMBERSHIP_ID"));
bean.setMembershipType(res.getString("MEMBERSHIP_TYPE"));
bean.setGroupId(res.getString("GROUP_ID"));
bean.setUserName(res.getString("USER_NAME"));
}
}
static class UserProfileMapper implements DBObjectMapper<UserProfileData> {
public String[][] toParameters(UserProfileData bean) throws Exception {
return new String[][] { { "USER_NAME", bean.getUserName() }, { "PROFILE", bean.getProfile() } };
}
public void mapUpdate(UserProfileData bean, PreparedStatement statement) throws Exception {
statement.setString(1, bean.getUserName());
statement.setString(2, bean.getProfile());
}
public void mapResultSet(ResultSet res, UserProfileData bean) throws Exception {
bean.setDBObjectId(res.getLong("ID"));
bean.setUserName(res.getString("USER_NAME"));
bean.setProfile(res.getString("PROFILE"));
}
}
}