| /** |
| * This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
| * You can obtain one at http://mozilla.org/MPL/2.0/. |
| */ |
| package org.mifosplatform.portfolio.group.service; |
| |
| import java.sql.ResultSet; |
| import java.sql.SQLException; |
| |
| import org.joda.time.LocalDate; |
| import org.mifosplatform.infrastructure.core.data.EnumOptionData; |
| import org.mifosplatform.infrastructure.core.domain.JdbcSupport; |
| import org.mifosplatform.portfolio.client.domain.ClientEnumerations; |
| import org.mifosplatform.portfolio.group.data.GroupGeneralData; |
| import org.mifosplatform.portfolio.group.data.GroupTimelineData; |
| import org.springframework.jdbc.core.RowMapper; |
| |
| /** |
| * |
| */ |
| public final class AllGroupTypesDataMapper implements RowMapper<GroupGeneralData> { |
| |
| private final String schemaSql; |
| |
| public AllGroupTypesDataMapper() { |
| final StringBuilder sqlBuilder = new StringBuilder(400); |
| sqlBuilder.append("g.id as id, g.account_no as accountNumber, g.external_id as externalId, g.display_name as name, "); |
| sqlBuilder.append("g.office_id as officeId, o.name as officeName, "); |
| sqlBuilder.append("g.parent_id as centerId, pg.display_name as centerName, "); |
| sqlBuilder.append("g.staff_id as staffId, s.display_name as staffName, "); |
| sqlBuilder.append("g.status_enum as statusEnum, g.activation_date as activationDate, "); |
| sqlBuilder.append("g.closedon_date as closedOnDate, "); |
| |
| sqlBuilder.append("g.submittedon_date as submittedOnDate, "); |
| sqlBuilder.append("sbu.username as submittedByUsername, "); |
| sqlBuilder.append("sbu.firstname as submittedByFirstname, "); |
| sqlBuilder.append("sbu.lastname as submittedByLastname, "); |
| |
| sqlBuilder.append("clu.username as closedByUsername, "); |
| sqlBuilder.append("clu.firstname as closedByFirstname, "); |
| sqlBuilder.append("clu.lastname as closedByLastname, "); |
| |
| sqlBuilder.append("acu.username as activatedByUsername, "); |
| sqlBuilder.append("acu.firstname as activatedByFirstname, "); |
| sqlBuilder.append("acu.lastname as activatedByLastname, "); |
| |
| sqlBuilder.append("g.hierarchy as hierarchy, "); |
| sqlBuilder.append("g.level_id as groupLevel "); |
| sqlBuilder.append("from m_group g "); |
| sqlBuilder.append("join m_office o on o.id = g.office_id "); |
| sqlBuilder.append("left join m_staff s on s.id = g.staff_id "); |
| sqlBuilder.append("left join m_group pg on pg.id = g.parent_id "); |
| sqlBuilder.append("left join m_appuser sbu on sbu.id = g.submittedon_userid "); |
| sqlBuilder.append("left join m_appuser acu on acu.id = g.activatedon_userid "); |
| sqlBuilder.append("left join m_appuser clu on clu.id = g.closedon_userid "); |
| |
| this.schemaSql = sqlBuilder.toString(); |
| } |
| |
| public String schema() { |
| return this.schemaSql; |
| } |
| |
| @Override |
| public GroupGeneralData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { |
| |
| final Long id = rs.getLong("id"); |
| final String accountNo = rs.getString("accountNumber"); |
| final String name = rs.getString("name"); |
| final String externalId = rs.getString("externalId"); |
| |
| final Integer statusEnum = JdbcSupport.getInteger(rs, "statusEnum"); |
| final EnumOptionData status = ClientEnumerations.status(statusEnum); |
| final LocalDate activationDate = JdbcSupport.getLocalDate(rs, "activationDate"); |
| |
| final Long officeId = JdbcSupport.getLong(rs, "officeId"); |
| final String officeName = rs.getString("officeName"); |
| final Long centerId = JdbcSupport.getLong(rs, "centerId"); |
| final String centerName = rs.getString("centerName"); |
| final Long staffId = JdbcSupport.getLong(rs, "staffId"); |
| final String staffName = rs.getString("staffName"); |
| final String hierarchy = rs.getString("hierarchy"); |
| final String groupLevel = rs.getString("groupLevel"); |
| |
| final LocalDate closedOnDate = JdbcSupport.getLocalDate(rs, "closedOnDate"); |
| final String closedByUsername = rs.getString("closedByUsername"); |
| final String closedByFirstname = rs.getString("closedByFirstname"); |
| final String closedByLastname = rs.getString("closedByLastname"); |
| |
| final LocalDate submittedOnDate = JdbcSupport.getLocalDate(rs, "submittedOnDate"); |
| final String submittedByUsername = rs.getString("submittedByUsername"); |
| final String submittedByFirstname = rs.getString("submittedByFirstname"); |
| final String submittedByLastname = rs.getString("submittedByLastname"); |
| |
| final String activatedByUsername = rs.getString("activatedByUsername"); |
| final String activatedByFirstname = rs.getString("activatedByFirstname"); |
| final String activatedByLastname = rs.getString("activatedByLastname"); |
| |
| final GroupTimelineData timeline = new GroupTimelineData(submittedOnDate, submittedByUsername, submittedByFirstname, |
| submittedByLastname, activationDate, activatedByUsername, activatedByFirstname, activatedByLastname, closedOnDate, |
| closedByUsername, closedByFirstname, closedByLastname); |
| |
| return GroupGeneralData.instance(id, accountNo, name, externalId, status, activationDate, officeId, officeName, centerId, centerName, staffId, |
| staffName, hierarchy, groupLevel, timeline); |
| } |
| } |