restructure packagin again. move user admin related code under infrastructure.

This commit is contained in:
Keith Woodlock
2012-11-27 01:16:41 +00:00
parent 71d573cae0
commit 72881c740b
145 changed files with 272 additions and 1950 deletions
@@ -1,63 +0,0 @@
package org.mifosng.platform.api;
import java.util.ArrayList;
import java.util.Collection;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.mifosng.platform.api.data.AuthenticatedUserData;
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
import org.mifosng.platform.user.domain.AppUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Component;
import com.sun.jersey.core.util.Base64;
@Path("/authentication")
@Component
@Scope("singleton")
public class AuthenticationApiResource {
@Qualifier("customAuthenticationProvider")
@Autowired
private DaoAuthenticationProvider customAuthenticationProvider;
@Autowired
private PortfolioApiJsonSerializerService apiJsonSerializerService;
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public String authenticate(@QueryParam("username") final String username, @QueryParam("password") final String password) {
Authentication authentication = new UsernamePasswordAuthenticationToken(username, password);
Authentication authenticationCheck = customAuthenticationProvider.authenticate(authentication);
Collection<String> permissions = new ArrayList<String>();
AuthenticatedUserData authenticatedUserData = new AuthenticatedUserData(username, permissions);
if (authenticationCheck.isAuthenticated()) {
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(authenticationCheck.getAuthorities());
for (GrantedAuthority grantedAuthority : authorities) {
permissions.add(grantedAuthority.getAuthority());
}
AppUser principal = (AppUser) authenticationCheck.getPrincipal();
byte[] base64EncodedAuthenticationKey = Base64.encode(username + ":" + password);
authenticatedUserData = new AuthenticatedUserData(username, permissions, principal.getId(), new String(base64EncodedAuthenticationKey));
}
return this.apiJsonSerializerService.serializeAuthenticatedUserDataToJson(false, authenticatedUserData);
}
}
@@ -40,9 +40,9 @@ import org.mifosng.platform.infrastructure.FileUtils;
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
import org.mifosng.platform.organisation.service.OfficeReadPlatformService;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosplatform.infrastructure.commands.api.data.CommandSourceData;
import org.mifosplatform.infrastructure.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.infrastructure.commands.service.PortfolioCommandsReadPlatformService;
import org.mifosplatform.commands.api.data.CommandSourceData;
import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.commands.service.PortfolioCommandsReadPlatformService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -32,7 +32,7 @@ import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
import org.mifosng.platform.noncore.GenericDataService;
import org.mifosng.platform.noncore.ReadWriteNonCoreDataService;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -15,13 +15,13 @@ import javax.ws.rs.core.UriInfo;
import org.mifosng.platform.api.commands.PermissionsCommand;
import org.mifosng.platform.api.data.EntityIdentifier;
import org.mifosng.platform.api.data.PermissionUsageData;
import org.mifosng.platform.api.infrastructure.PortfolioApiDataConversionService;
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.service.PermissionReadPlatformService;
import org.mifosng.platform.user.service.PermissionWritePlatformService;
import org.mifosplatform.infrastructure.user.api.data.PermissionUsageData;
import org.mifosplatform.infrastructure.user.service.PermissionReadPlatformService;
import org.mifosplatform.infrastructure.user.service.PermissionWritePlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@@ -22,7 +22,7 @@ import org.mifosng.platform.exceptions.NoAuthorizationException;
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
import org.mifosng.platform.noncore.ReadReportingService;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@@ -20,18 +20,18 @@ import javax.ws.rs.core.UriInfo;
import org.mifosng.platform.api.commands.RoleCommand;
import org.mifosng.platform.api.commands.RolePermissionCommand;
import org.mifosng.platform.api.data.EntityIdentifier;
import org.mifosng.platform.api.data.PermissionUsageData;
import org.mifosng.platform.api.data.RoleData;
import org.mifosng.platform.api.data.RolePermissionsData;
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
import org.mifosng.platform.api.infrastructure.PortfolioCommandDeserializerService;
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.service.PermissionReadPlatformService;
import org.mifosng.platform.user.service.RoleReadPlatformService;
import org.mifosplatform.infrastructure.commands.api.data.CommandSourceData;
import org.mifosplatform.infrastructure.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.infrastructure.commands.service.PortfolioCommandsReadPlatformService;
import org.mifosplatform.commands.api.data.CommandSourceData;
import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.commands.service.PortfolioCommandsReadPlatformService;
import org.mifosplatform.infrastructure.user.api.data.PermissionUsageData;
import org.mifosplatform.infrastructure.user.api.data.RoleData;
import org.mifosplatform.infrastructure.user.api.data.RolePermissionsData;
import org.mifosplatform.infrastructure.user.service.PermissionReadPlatformService;
import org.mifosplatform.infrastructure.user.service.RoleReadPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@@ -1,51 +0,0 @@
package org.mifosng.platform.api.data;
import java.util.Collection;
/**
* Immutable data object for authentication.
*/
public class AuthenticatedUserData {
private final String username;
private final Long userId;
private final String base64EncodedAuthenticationKey;
private final boolean authenticated;
private final Collection<String> permissions;
public AuthenticatedUserData(final String username, final Collection<String> permissions) {
this.username = username;
this.userId = null;
this.base64EncodedAuthenticationKey = null;
this.authenticated = false;
this.permissions = permissions;
}
public AuthenticatedUserData(final String username, final Collection<String> permissions, final Long userId, final String base64EncodedAuthenticationKey) {
this.username = username;
this.userId = userId;
this.base64EncodedAuthenticationKey = base64EncodedAuthenticationKey;
this.authenticated = true;
this.permissions = permissions;
}
public String getUsername() {
return username;
}
public Long getUserId() {
return userId;
}
public String getBase64EncodedAuthenticationKey() {
return base64EncodedAuthenticationKey;
}
public boolean isAuthenticated() {
return authenticated;
}
public Collection<String> getPermissions() {
return permissions;
}
}
@@ -7,8 +7,6 @@ import java.util.Set;
import org.mifosng.platform.accounting.api.data.ChartOfAccountsData;
import org.mifosng.platform.api.commands.ClientCommand;
import org.mifosng.platform.api.data.AppUserData;
import org.mifosng.platform.api.data.AuthenticatedUserData;
import org.mifosng.platform.api.data.ChargeData;
import org.mifosng.platform.api.data.ClientAccountSummaryCollectionData;
import org.mifosng.platform.api.data.ClientData;
@@ -34,14 +32,16 @@ import org.mifosng.platform.api.data.LoanTransactionData;
import org.mifosng.platform.api.data.NoteData;
import org.mifosng.platform.api.data.OfficeData;
import org.mifosng.platform.api.data.OfficeTransactionData;
import org.mifosng.platform.api.data.PermissionUsageData;
import org.mifosng.platform.api.data.RoleData;
import org.mifosng.platform.api.data.RolePermissionsData;
import org.mifosng.platform.api.data.SavingAccountData;
import org.mifosng.platform.api.data.SavingProductData;
import org.mifosng.platform.api.data.StaffData;
import org.mifosng.platform.infrastructure.api.GoogleGsonSerializerHelper;
import org.mifosplatform.infrastructure.commands.api.data.CommandSourceData;
import org.mifosplatform.commands.api.data.CommandSourceData;
import org.mifosplatform.infrastructure.user.api.data.AppUserData;
import org.mifosplatform.infrastructure.user.api.data.AuthenticatedUserData;
import org.mifosplatform.infrastructure.user.api.data.PermissionUsageData;
import org.mifosplatform.infrastructure.user.api.data.RoleData;
import org.mifosplatform.infrastructure.user.api.data.RolePermissionsData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -5,8 +5,6 @@ import java.util.Set;
import org.mifosng.platform.accounting.api.data.ChartOfAccountsData;
import org.mifosng.platform.api.commands.ClientCommand;
import org.mifosng.platform.api.data.AppUserData;
import org.mifosng.platform.api.data.AuthenticatedUserData;
import org.mifosng.platform.api.data.ChargeData;
import org.mifosng.platform.api.data.ClientAccountSummaryCollectionData;
import org.mifosng.platform.api.data.ClientData;
@@ -32,13 +30,15 @@ import org.mifosng.platform.api.data.LoanTransactionData;
import org.mifosng.platform.api.data.NoteData;
import org.mifosng.platform.api.data.OfficeData;
import org.mifosng.platform.api.data.OfficeTransactionData;
import org.mifosng.platform.api.data.PermissionUsageData;
import org.mifosng.platform.api.data.RoleData;
import org.mifosng.platform.api.data.RolePermissionsData;
import org.mifosng.platform.api.data.SavingAccountData;
import org.mifosng.platform.api.data.SavingProductData;
import org.mifosng.platform.api.data.StaffData;
import org.mifosplatform.infrastructure.commands.api.data.CommandSourceData;
import org.mifosplatform.commands.api.data.CommandSourceData;
import org.mifosplatform.infrastructure.user.api.data.AppUserData;
import org.mifosplatform.infrastructure.user.api.data.AuthenticatedUserData;
import org.mifosplatform.infrastructure.user.api.data.PermissionUsageData;
import org.mifosplatform.infrastructure.user.api.data.RoleData;
import org.mifosplatform.infrastructure.user.api.data.RolePermissionsData;
public interface PortfolioApiJsonSerializerService {
@@ -2,7 +2,7 @@ package org.mifosng.platform.charge.domain;
import org.mifosng.platform.api.commands.ChargeCommand;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import javax.persistence.*;
import java.math.BigDecimal;
@@ -15,7 +15,7 @@ import org.joda.time.LocalDate;
import org.mifosng.platform.api.commands.ClientCommand;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.organisation.domain.Office;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_client")
@@ -11,7 +11,7 @@ import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.commands.ClientIdentifierCommand;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.organisation.domain.CodeValue;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_client_identifier", uniqueConstraints = {
@@ -10,7 +10,7 @@ import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.loan.domain.Loan;
import org.mifosng.platform.loan.domain.LoanTransaction;
import org.mifosng.platform.saving.domain.DepositAccount;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_note")
@@ -9,7 +9,6 @@ import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.mifosng.platform.api.data.AppUserData;
import org.mifosng.platform.api.data.ClientAccountSummaryCollectionData;
import org.mifosng.platform.api.data.ClientAccountSummaryData;
import org.mifosng.platform.api.data.ClientData;
@@ -26,8 +25,9 @@ import org.mifosng.platform.infrastructure.JdbcSupport;
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
import org.mifosng.platform.organisation.service.OfficeReadPlatformService;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosng.platform.user.service.AppUserReadPlatformService;
import org.mifosplatform.infrastructure.user.api.data.AppUserData;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.service.AppUserReadPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -30,8 +30,8 @@ import org.mifosng.platform.organisation.domain.CodeValueRepository;
import org.mifosng.platform.organisation.domain.Office;
import org.mifosng.platform.organisation.domain.OfficeRepository;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.Permission;
import org.mifosng.platform.user.domain.PermissionRepository;
import org.mifosplatform.infrastructure.user.domain.Permission;
import org.mifosplatform.infrastructure.user.domain.PermissionRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -7,7 +7,7 @@ import javax.persistence.Table;
import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.commands.DocumentCommand;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_document")
@@ -8,7 +8,7 @@ import javax.persistence.UniqueConstraint;
import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.commands.FundCommand;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_fund", uniqueConstraints={
@@ -16,7 +16,7 @@ import org.mifosng.platform.api.commands.GroupCommand;
import org.mifosng.platform.client.domain.Client;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.organisation.domain.Office;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_group")
@@ -1,7 +1,7 @@
package org.mifosng.platform.infrastructure;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosng.platform.user.domain.AppUserRepository;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.AuditorAware;
import org.springframework.security.core.Authentication;
@@ -41,7 +41,7 @@ import org.mifosng.platform.fund.domain.Fund;
import org.mifosng.platform.group.domain.Group;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.staff.domain.Staff;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_loan", uniqueConstraints = @UniqueConstraint(columnNames = { "external_id" }))
@@ -3,7 +3,7 @@ package org.mifosng.platform.loan.domain;
import org.joda.time.LocalDate;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.staff.domain.Staff;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -18,7 +18,7 @@ import org.mifosng.platform.charge.domain.Charge;
import org.mifosng.platform.currency.domain.MonetaryCurrency;
import org.mifosng.platform.fund.domain.Fund;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
/**
* Loan products allow for categorisation of an organisations loans into something meaningful to them.
@@ -15,7 +15,7 @@ import org.joda.time.LocalDate;
import org.mifosng.platform.currency.domain.MonetaryCurrency;
import org.mifosng.platform.currency.domain.Money;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_loan_repayment_schedule")
@@ -23,7 +23,7 @@ import org.mifosng.platform.currency.domain.MonetaryCurrency;
import org.mifosng.platform.currency.domain.Money;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.loanproduct.service.LoanEnumerations;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.format.annotation.DateTimeFormat;
/**
@@ -6,7 +6,7 @@ import javax.persistence.Table;
import org.mifosng.platform.api.data.TransactionProcessingStrategyData;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
/**
*
@@ -55,7 +55,7 @@ import org.mifosng.platform.loan.domain.LoanTransactionRepository;
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.staff.domain.Staff;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@@ -22,7 +22,7 @@ import org.mifosng.platform.api.data.ResultsetDataRow;
import org.mifosng.platform.exceptions.PlatformDataIntegrityException;
import org.mifosng.platform.exceptions.ReportNotFoundException;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
import org.pentaho.reporting.engine.classic.core.MasterReport;
import org.pentaho.reporting.engine.classic.core.ReportProcessingException;
@@ -23,7 +23,7 @@ import org.mifosng.platform.exceptions.PlatformApiDataValidationException;
import org.mifosng.platform.exceptions.PlatformDataIntegrityException;
import org.mifosng.platform.infrastructure.api.JsonParserHelper;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +21,7 @@ import org.mifosng.platform.api.commands.OfficeCommand;
import org.mifosng.platform.exceptions.CannotUpdateOfficeWithParentOfficeSameAsSelf;
import org.mifosng.platform.exceptions.RootOfficeParentCannotBeUpdated;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_office", uniqueConstraints={
@@ -17,7 +17,7 @@ import org.joda.time.LocalDate;
import org.mifosng.platform.currency.domain.MonetaryCurrency;
import org.mifosng.platform.currency.domain.Money;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_office_transaction")
@@ -5,7 +5,7 @@ import javax.persistence.Entity;
import javax.persistence.Table;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_organisation_currency")
@@ -17,7 +17,7 @@ import org.mifosng.platform.exceptions.OfficeNotFoundException;
import org.mifosng.platform.infrastructure.JdbcSupport;
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -15,7 +15,7 @@ import org.mifosng.platform.organisation.domain.OfficeRepository;
import org.mifosng.platform.organisation.domain.OfficeTransaction;
import org.mifosng.platform.organisation.domain.OfficeTransactionRepository;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +33,7 @@ import org.mifosng.platform.exceptions.InvalidDepositStateTransitionException;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
import org.mifosng.platform.savingproduct.domain.DepositProduct;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_deposit_account", uniqueConstraints = @UniqueConstraint(name="deposit_acc_external_id", columnNames = { "external_id" }))
@@ -25,7 +25,7 @@ import org.mifosng.platform.savingproduct.domain.SavingProduct;
import org.mifosng.platform.savingproduct.domain.SavingProductType;
import org.mifosng.platform.savingproduct.domain.SavingsInterestType;
import org.mifosng.platform.savingproduct.domain.TenureTypeEnum;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_saving_account", uniqueConstraints = @UniqueConstraint(name="saving_acc_external_id", columnNames = { "external_id" }))
@@ -14,7 +14,7 @@ import org.mifosng.platform.currency.domain.MonetaryCurrency;
import org.mifosng.platform.exceptions.ValueOutsideRangeException;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_product_deposit", uniqueConstraints={
@@ -12,7 +12,7 @@ import org.mifosng.platform.api.commands.SavingProductCommand;
import org.mifosng.platform.currency.domain.MonetaryCurrency;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_product_savings")
@@ -1,6 +1,6 @@
package org.mifosng.platform.security;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
public interface PlatformSecurityContext {
@@ -1,7 +1,7 @@
package org.mifosng.platform.security;
import org.mifosng.platform.exceptions.UnAuthenticatedUserException;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
@@ -1,7 +1,7 @@
package org.mifosng.platform.security;
import org.mifosng.platform.infrastructure.PlatformUser;
import org.mifosng.platform.user.domain.PlatformUserRepository;
import org.mifosplatform.infrastructure.user.domain.PlatformUserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.security.core.userdetails.UserDetails;
@@ -11,7 +11,7 @@ import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.commands.StaffCommand;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosng.platform.organisation.domain.Office;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
@Entity
@Table(name = "m_staff", uniqueConstraints = { @UniqueConstraint(columnNames = { "display_name" }, name = "display_name") })
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.api;
package org.mifosplatform.commands.api;
import java.util.Collection;
import java.util.Set;
@@ -21,9 +21,9 @@ import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService
import org.mifosng.platform.exceptions.UnrecognizedQueryParamException;
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosplatform.infrastructure.commands.api.data.CommandSourceData;
import org.mifosplatform.infrastructure.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.infrastructure.commands.service.PortfolioCommandsReadPlatformService;
import org.mifosplatform.commands.api.data.CommandSourceData;
import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.commands.service.PortfolioCommandsReadPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.api.data;
package org.mifosplatform.commands.api.data;
import org.joda.time.LocalDate;
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.domain;
package org.mifosplatform.commands.domain;
import java.util.Date;
@@ -12,7 +12,7 @@ import javax.persistence.TemporalType;
import org.apache.commons.lang.StringUtils;
import org.joda.time.LocalDate;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.data.jpa.domain.AbstractPersistable;
@Entity
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.domain;
package org.mifosplatform.commands.domain;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.handler;
package org.mifosplatform.commands.handler;
import java.util.Arrays;
import java.util.List;
@@ -11,9 +11,9 @@ import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService
import org.mifosng.platform.client.service.ClientWritePlatformService;
import org.mifosng.platform.client.service.RollbackTransactionAsCommandIsNotApprovedByCheckerException;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.commands.domain.CommandSource;
import org.mifosplatform.infrastructure.commands.service.ChangeDetectionService;
import org.mifosplatform.commands.domain.CommandSource;
import org.mifosplatform.commands.service.ChangeDetectionService;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -0,0 +1,5 @@
package org.mifosplatform.commands.handler;
public interface CommandSourceHandler {
}
@@ -1,8 +1,8 @@
package org.mifosplatform.infrastructure.commands.handler;
package org.mifosplatform.commands.handler;
import org.mifosng.platform.infrastructure.errorhandling.UnsupportedCommandException;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosplatform.infrastructure.commands.domain.CommandSource;
import org.mifosplatform.commands.domain.CommandSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.handler;
package org.mifosplatform.commands.handler;
import java.util.Arrays;
import java.util.List;
@@ -12,10 +12,10 @@ import org.mifosng.platform.api.infrastructure.PortfolioCommandSerializerService
import org.mifosng.platform.client.service.RollbackTransactionAsCommandIsNotApprovedByCheckerException;
import org.mifosng.platform.infrastructure.errorhandling.UnsupportedCommandException;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosng.platform.user.service.RoleWritePlatformService;
import org.mifosplatform.infrastructure.commands.domain.CommandSource;
import org.mifosplatform.infrastructure.commands.service.ChangeDetectionService;
import org.mifosplatform.commands.domain.CommandSource;
import org.mifosplatform.commands.service.ChangeDetectionService;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.service.RoleWritePlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.handler;
package org.mifosplatform.commands.handler;
import java.util.Arrays;
import java.util.List;
@@ -10,10 +10,10 @@ import org.mifosng.platform.api.infrastructure.PortfolioCommandDeserializerServi
import org.mifosng.platform.api.infrastructure.PortfolioCommandSerializerService;
import org.mifosng.platform.client.service.RollbackTransactionAsCommandIsNotApprovedByCheckerException;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosng.platform.user.service.AppUserWritePlatformService;
import org.mifosplatform.infrastructure.commands.domain.CommandSource;
import org.mifosplatform.infrastructure.commands.service.ChangeDetectionService;
import org.mifosplatform.commands.domain.CommandSource;
import org.mifosplatform.commands.service.ChangeDetectionService;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.service.AppUserWritePlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.service;
package org.mifosplatform.commands.service;
public interface ChangeDetectionService {
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.service;
package org.mifosplatform.commands.service;
import org.mifosng.platform.api.commands.ClientCommand;
import org.mifosng.platform.api.data.ClientData;
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.service;
package org.mifosplatform.commands.service;
import org.mifosng.platform.api.data.EntityIdentifier;
@@ -1,12 +1,12 @@
package org.mifosplatform.infrastructure.commands.service;
package org.mifosplatform.commands.service;
import org.joda.time.LocalDate;
import org.mifosng.platform.api.data.EntityIdentifier;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosplatform.infrastructure.commands.domain.CommandSource;
import org.mifosplatform.infrastructure.commands.domain.CommandSourceRepository;
import org.mifosplatform.infrastructure.commands.handler.CommandSourceHandlerDelegator;
import org.mifosplatform.commands.domain.CommandSource;
import org.mifosplatform.commands.domain.CommandSourceRepository;
import org.mifosplatform.commands.handler.CommandSourceHandlerDelegator;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -1,8 +1,8 @@
package org.mifosplatform.infrastructure.commands.service;
package org.mifosplatform.commands.service;
import java.util.Collection;
import org.mifosplatform.infrastructure.commands.api.data.CommandSourceData;
import org.mifosplatform.commands.api.data.CommandSourceData;
public interface PortfolioCommandsReadPlatformService {
@@ -1,4 +1,4 @@
package org.mifosplatform.infrastructure.commands.service;
package org.mifosplatform.commands.service;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -8,7 +8,7 @@ import org.joda.time.LocalDate;
import org.mifosng.platform.infrastructure.JdbcSupport;
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosplatform.infrastructure.commands.api.data.CommandSourceData;
import org.mifosplatform.commands.api.data.CommandSourceData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
@@ -1,5 +0,0 @@
package org.mifosplatform.infrastructure.commands.handler;
public interface CommandSourceHandler {
}
@@ -0,0 +1,64 @@
package org.mifosplatform.infrastructure.user.api;
import java.util.ArrayList;
import java.util.Collection;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
import org.mifosplatform.infrastructure.user.api.data.AuthenticatedUserData;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Component;
import com.sun.jersey.core.util.Base64;
@Path("/authentication")
@Component
@Scope("singleton")
public class AuthenticationApiResource {
@Qualifier("customAuthenticationProvider")
@Autowired
private DaoAuthenticationProvider customAuthenticationProvider;
@Autowired
private PortfolioApiJsonSerializerService apiJsonSerializerService;
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String authenticate(@QueryParam("username") final String username, @QueryParam("password") final String password) {
Authentication authentication = new UsernamePasswordAuthenticationToken(username, password);
Authentication authenticationCheck = customAuthenticationProvider.authenticate(authentication);
Collection<String> permissions = new ArrayList<String>();
AuthenticatedUserData authenticatedUserData = new AuthenticatedUserData(username, permissions);
if (authenticationCheck.isAuthenticated()) {
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(authenticationCheck.getAuthorities());
for (GrantedAuthority grantedAuthority : authorities) {
permissions.add(grantedAuthority.getAuthority());
}
AppUser principal = (AppUser) authenticationCheck.getPrincipal();
byte[] base64EncodedAuthenticationKey = Base64.encode(username + ":" + password);
authenticatedUserData = new AuthenticatedUserData(username, permissions, principal.getId(), new String(
base64EncodedAuthenticationKey));
}
return this.apiJsonSerializerService.serializeAuthenticatedUserDataToJson(false, authenticatedUserData);
}
}
@@ -1,4 +1,4 @@
package org.mifosng.platform.api;
package org.mifosplatform.infrastructure.user.api;
import java.util.ArrayList;
import java.util.Arrays;
@@ -18,15 +18,15 @@ import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import org.mifosng.platform.api.data.AppUserData;
import org.mifosng.platform.api.data.EntityIdentifier;
import org.mifosng.platform.api.data.OfficeLookup;
import org.mifosng.platform.api.infrastructure.PortfolioApiJsonSerializerService;
import org.mifosng.platform.infrastructure.api.ApiParameterHelper;
import org.mifosng.platform.organisation.service.OfficeReadPlatformService;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.service.AppUserReadPlatformService;
import org.mifosplatform.infrastructure.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService;
import org.mifosplatform.infrastructure.user.api.data.AppUserData;
import org.mifosplatform.infrastructure.user.service.AppUserReadPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@@ -1,8 +1,10 @@
package org.mifosng.platform.api.data;
package org.mifosplatform.infrastructure.user.api.data;
import java.util.ArrayList;
import java.util.List;
import org.mifosng.platform.api.data.OfficeLookup;
/**
* Immutable data object for application user data.
*/
@@ -0,0 +1,37 @@
package org.mifosplatform.infrastructure.user.api.data;
import java.util.Collection;
/**
* Immutable data object for authentication.
*/
public class AuthenticatedUserData {
@SuppressWarnings("unused")
private final String username;
@SuppressWarnings("unused")
private final Long userId;
@SuppressWarnings("unused")
private final String base64EncodedAuthenticationKey;
@SuppressWarnings("unused")
private final boolean authenticated;
@SuppressWarnings("unused")
private final Collection<String> permissions;
public AuthenticatedUserData(final String username, final Collection<String> permissions) {
this.username = username;
this.userId = null;
this.base64EncodedAuthenticationKey = null;
this.authenticated = false;
this.permissions = permissions;
}
public AuthenticatedUserData(final String username, final Collection<String> permissions, final Long userId,
final String base64EncodedAuthenticationKey) {
this.username = username;
this.userId = userId;
this.base64EncodedAuthenticationKey = base64EncodedAuthenticationKey;
this.authenticated = true;
this.permissions = permissions;
}
}
@@ -1,4 +1,4 @@
package org.mifosng.platform.api.data;
package org.mifosplatform.infrastructure.user.api.data;
/**
* Immutable representation of permissions
@@ -1,4 +1,4 @@
package org.mifosng.platform.api.data;
package org.mifosplatform.infrastructure.user.api.data;
import java.util.Collection;
@@ -1,4 +1,4 @@
package org.mifosng.platform.api.data;
package org.mifosplatform.infrastructure.user.api.data;
import java.util.Collection;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
import java.util.ArrayList;
import java.util.Collection;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
import org.mifosng.platform.client.service.RollbackTransactionAsCommandIsNotApprovedByCheckerException;
import org.mifosng.platform.infrastructure.EmailDetail;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
public class PasswordMustBeDifferentException extends RuntimeException {
// basic runtime exception
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
import org.springframework.data.jpa.repository.JpaRepository;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
import org.mifosng.platform.infrastructure.PlatformUser;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
import java.util.Collection;
import java.util.HashSet;
@@ -13,8 +13,8 @@ import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.mifosng.platform.api.commands.RoleCommand;
import org.mifosng.platform.api.data.RoleData;
import org.mifosng.platform.infrastructure.AbstractAuditableCustom;
import org.mifosplatform.infrastructure.user.api.data.RoleData;
@Entity
@Table(name = "m_role")
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
public interface UserDomainService {
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.domain;
package org.mifosplatform.infrastructure.user.domain;
public class UsernameMustBeDifferentException extends RuntimeException {
// basic runtime exception
@@ -1,8 +1,8 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.util.Collection;
import org.mifosng.platform.api.data.AppUserData;
import org.mifosplatform.infrastructure.user.api.data.AppUserData;
public interface AppUserReadPlatformService {
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -7,18 +7,18 @@ import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.mifosng.platform.api.data.AppUserData;
import org.mifosng.platform.api.data.OfficeData;
import org.mifosng.platform.api.data.OfficeLookup;
import org.mifosng.platform.api.data.RoleData;
import org.mifosng.platform.exceptions.UserNotFoundException;
import org.mifosng.platform.infrastructure.JdbcSupport;
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
import org.mifosng.platform.organisation.service.OfficeReadPlatformService;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosng.platform.user.domain.AppUserRepository;
import org.mifosng.platform.user.domain.Role;
import org.mifosplatform.infrastructure.user.api.data.AppUserData;
import org.mifosplatform.infrastructure.user.api.data.RoleData;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUserRepository;
import org.mifosplatform.infrastructure.user.domain.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import org.mifosng.platform.api.commands.UserCommand;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.util.ArrayList;
import java.util.HashSet;
@@ -21,13 +21,13 @@ import org.mifosng.platform.infrastructure.PlatformUser;
import org.mifosng.platform.organisation.domain.Office;
import org.mifosng.platform.organisation.domain.OfficeRepository;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.AppUser;
import org.mifosng.platform.user.domain.AppUserRepository;
import org.mifosng.platform.user.domain.Permission;
import org.mifosng.platform.user.domain.PermissionRepository;
import org.mifosng.platform.user.domain.Role;
import org.mifosng.platform.user.domain.RoleRepository;
import org.mifosng.platform.user.domain.UserDomainService;
import org.mifosplatform.infrastructure.user.domain.AppUser;
import org.mifosplatform.infrastructure.user.domain.AppUserRepository;
import org.mifosplatform.infrastructure.user.domain.Permission;
import org.mifosplatform.infrastructure.user.domain.PermissionRepository;
import org.mifosplatform.infrastructure.user.domain.Role;
import org.mifosplatform.infrastructure.user.domain.RoleRepository;
import org.mifosplatform.infrastructure.user.domain.UserDomainService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -1,8 +1,8 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.util.Collection;
import org.mifosng.platform.api.data.PermissionUsageData;
import org.mifosplatform.infrastructure.user.api.data.PermissionUsageData;
public interface PermissionReadPlatformService {
@@ -1,12 +1,12 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import org.mifosng.platform.api.data.PermissionUsageData;
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosplatform.infrastructure.user.api.data.PermissionUsageData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import org.mifosng.platform.api.commands.PermissionsCommand;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.util.Collection;
import java.util.Map;
@@ -6,8 +6,8 @@ import java.util.Map;
import org.mifosng.platform.api.commands.PermissionsCommand;
import org.mifosng.platform.exceptions.PermissionNotFoundException;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.Permission;
import org.mifosng.platform.user.domain.PermissionRepository;
import org.mifosplatform.infrastructure.user.domain.Permission;
import org.mifosplatform.infrastructure.user.domain.PermissionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.util.ArrayList;
import java.util.List;
@@ -1,8 +1,8 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.util.Collection;
import org.mifosng.platform.api.data.RoleData;
import org.mifosplatform.infrastructure.user.api.data.RoleData;
public interface RoleReadPlatformService {
@@ -1,16 +1,16 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import org.mifosng.platform.api.data.RoleData;
import org.mifosng.platform.exceptions.RoleNotFoundException;
import org.mifosng.platform.infrastructure.JdbcSupport;
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.Role;
import org.mifosng.platform.user.domain.RoleRepository;
import org.mifosplatform.infrastructure.user.api.data.RoleData;
import org.mifosplatform.infrastructure.user.domain.Role;
import org.mifosplatform.infrastructure.user.domain.RoleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import org.mifosng.platform.api.commands.RoleCommand;
import org.mifosng.platform.api.commands.RolePermissionCommand;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.util.Collection;
import java.util.Map;
@@ -9,10 +9,10 @@ import org.mifosng.platform.client.service.RollbackTransactionAsCommandIsNotAppr
import org.mifosng.platform.exceptions.PermissionNotFoundException;
import org.mifosng.platform.exceptions.RoleNotFoundException;
import org.mifosng.platform.security.PlatformSecurityContext;
import org.mifosng.platform.user.domain.Permission;
import org.mifosng.platform.user.domain.PermissionRepository;
import org.mifosng.platform.user.domain.Role;
import org.mifosng.platform.user.domain.RoleRepository;
import org.mifosplatform.infrastructure.user.domain.Permission;
import org.mifosplatform.infrastructure.user.domain.PermissionRepository;
import org.mifosplatform.infrastructure.user.domain.Role;
import org.mifosplatform.infrastructure.user.domain.RoleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -1,4 +1,4 @@
package org.mifosng.platform.user.service;
package org.mifosplatform.infrastructure.user.service;
import java.util.ArrayList;
import java.util.List;
@@ -17,7 +17,7 @@
<context:component-scan base-package="org.mifosng.platform.security, org.mifosng.platform.infrastructure,
org.mifosng.platform.*.domain, org.mifosng.platform,
org.mifosplatform.*.*.service, org.mifosplatform.*.*.domain, org.mifosplatform">
org.mifosplatform.*.*.service, org.mifosplatform.*.*.domain, org.mifosplatform, org.mifosplatform.commands">
<context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation" />
</context:component-scan>
@@ -25,7 +25,8 @@
<jpa:auditing auditor-aware-ref="auditorAware" />
<jpa:repositories base-package="org.mifosng.platform.*.domain" />
<jpa:repositories base-package="org.mifosplatform.infrastructure.commands.domain" />
<jpa:repositories base-package="org.mifosplatform.commands.domain" />
<jpa:repositories base-package="org.mifosplatform.infrastructure.*.domain" />
<import resource="infrastructure.xml" />
@@ -1,164 +0,0 @@
Code,Name,DPs
AED,UAE Dirham,2
AFN,Afghanistan Afghani,2
ALL,Albanian Lek,2
AMD,Armenian Dram,2
ANG,Netherlands Antillian Guilder,2
AOA,Angolan Kwanza,2
ARS,Argentine Peso,2
AUD,Australian Dollar,2
AWG,Aruban Guilder,2
AZM,Azerbaijanian Manat,2
BAM,Bosnia and Herzegovina Convertible Marks,2
BBD,Barbados Dollar,2
BDT,Bangladesh Taka,2
BGN,Bulgarian Lev,2
BHD,Bahraini Dinar,3
BIF,Burundi Franc,0
BMD,Bermudian Dollar,2
BND,Brunei Dollar,2
BOB,Bolivian Boliviano,2
BRL,Brazilian Real,2
BSD,Bahamian Dollar,2
BTN,Bhutan Ngultrum,2
BWP,Botswana Pula,2
BYR,Belarussian Ruble,0
BZD,Belize Dollar,2
CAD,Canadian Dollar,2
CDF,Franc Congolais,2
CHF,Swiss Franc,2
CLP,Chilean Peso,0
CNY,Chinese Yuan Renminbi,2
COP,Colombian Peso,2
CRC,Costa Rican Colon,2
CSD,Serbian Dinar,2
CUP,Cuban Peso,2
CVE,Cape Verde Escudo,2
CYP,Cyprus Pound,2
CZK,Czech Koruna,2
DJF,Djibouti Franc,0
DKK,Danish Krone,2
DOP,Dominican Peso,2
DZD,Algerian Dinar,2
EEK,Estonian Kroon,2
EGP,Egyptian Pound,2
ERN,Eritrea Nafka,2
ETB,Ethiopian Birr,2
EUR,euro,2
FJD,Fiji Dollar,2
FKP,Falkland Islands Pound,2
GBP,Pound Sterling,2
GEL,Georgian Lari,2
GHC,Ghana Cedi,2
GIP,Gibraltar Pound,2
GMD,Gambian Dalasi,2
GNF,Guinea Franc,0
GTQ,Guatemala Quetzal,2
GYD,Guyana Dollar,2
HKD,Hong Kong Dollar,2
HNL,Honduras Lempira,2
HRK,Croatian Kuna,2
HTG,Haiti Gourde,2
HUF,Hungarian Forint,2
IDR,Indonesian Rupiah,2
ILS,New Israeli Shekel,2
INR,Indian Rupee,2
IQD,Iraqi Dinar,3
IRR,Iranian Rial,2
ISK,Iceland Krona,0
JMD,Jamaican Dollar,2
JOD,Jordanian Dinar,3
JPY,Japanese Yen,0
KES,Kenyan Shilling,2
KGS,Kyrgyzstan Som,2
KHR,Cambodia Riel,2
KMF,Comoro Franc,0
KPW,North Korean Won,2
KRW,Korean Won,0
KWD,Kuwaiti Dinar,3
KYD,Cayman Islands Dollar,2
KZT,Kazakhstan Tenge,2
LAK,Lao Kip,2
LBP,Lebanese Pound,2
LKR,Sri Lanka Rupee,2
LRD,Liberian Dollar,2
LSL,Lesotho Loti,2
LTL,Lithuanian Litas,2
LVL,Latvian Lats,2
LYD,Libyan Dinar,3
MAD,Moroccan Dirham,2
MDL,Moldovan Leu,2
MGA,Malagasy Ariary,2
MKD,Macedonian Denar,2
MMK,Myanmar Kyat,2
MNT,Mongolian Tugrik,2
MOP,Macau Pataca,2
MRO,Mauritania Ouguiya,2
MTL,Maltese Lira,2
MUR,Mauritius Rupee,2
MVR,Maldives Rufiyaa,2
MWK,Malawi Kwacha,2
MXN,Mexican Peso,2
MYR,Malaysian Ringgit,2
MZM,Mozambique Metical,2
NAD,Namibia Dollar,2
NGN,Nigerian Naira,2
NIO,Nicaragua Cordoba Oro,2
NOK,Norwegian Krone,2
NPR,Nepalese Rupee,2
NZD,New Zealand Dollar,2
OMR,Rial Omani,3
PAB,Panama Balboa,2
PEN,Peruvian Nuevo Sol,2
PGK,Papua New Guinea Kina,2
PHP,Philippine Peso,2
PKR,Pakistan Rupee,2
PLN,Polish Zloty,2
PYG,Paraguayan Guarani,0
QAR,Qatari Rial,2
RON,Romanian Leu,2
RUB,Russian Ruble,2
RWF,Rwanda Franc,0
SAR,Saudi Riyal,2
SBD,Solomon Islands Dollar,2
SCR,Seychelles Rupee,2
SDD,Sudanese Dinar,2
SEK,Swedish Krona,2
SGD,Singapore Dollar,2
SHP,St Helena Pound,2
SIT,Slovenian Tolar,2
SKK,Slovak Koruna,2
SLL,Sierra Leone Leone,2
SOS,Somali Shilling,2
SRD,Surinam Dollar,2
STD,São Tome and Principe Dobra,2
SVC,El Salvador Colon,2
SYP,Syrian Pound,2
SZL,Swaziland Lilangeni,2
THB,Thai Baht,2
TJS,Tajik Somoni,2
TMM,Turkmenistan Manat,2
TND,Tunisian Dinar,3
TOP,Tonga Pa'anga,2
TRY,Turkish Lira,2
TTD,Trinidad and Tobago Dollar,2
TWD,New Taiwan Dollar,2
TZS,Tanzanian Shilling,2
UAH,Ukraine Hryvnia,2
UGX,Uganda Shilling,2
USD,US Dollar,2
UYU,Peso Uruguayo,2
UZS,Uzbekistan Sum,2
VEB,Venezuelan Bolivar,2
VND,Vietnamese Dong,2
VUV,Vanuatu Vatu,0
WST,Samoa Tala,2
XAF,CFA Franc BEAC,0
XCD,East Caribbean Dollar,2
XDR,SDR (Special Drawing Rights),5
XOF,CFA Franc BCEAO,0
XPF,CFP Franc,0
YER,Yemeni Rial,2
ZAR,South African Rand,2
ZMK,Zambian Kwacha,2
ZWD,Zimbabwe Dollar,2
1 Code Name DPs
2 AED UAE Dirham 2
3 AFN Afghanistan Afghani 2
4 ALL Albanian Lek 2
5 AMD Armenian Dram 2
6 ANG Netherlands Antillian Guilder 2
7 AOA Angolan Kwanza 2
8 ARS Argentine Peso 2
9 AUD Australian Dollar 2
10 AWG Aruban Guilder 2
11 AZM Azerbaijanian Manat 2
12 BAM Bosnia and Herzegovina Convertible Marks 2
13 BBD Barbados Dollar 2
14 BDT Bangladesh Taka 2
15 BGN Bulgarian Lev 2
16 BHD Bahraini Dinar 3
17 BIF Burundi Franc 0
18 BMD Bermudian Dollar 2
19 BND Brunei Dollar 2
20 BOB Bolivian Boliviano 2
21 BRL Brazilian Real 2
22 BSD Bahamian Dollar 2
23 BTN Bhutan Ngultrum 2
24 BWP Botswana Pula 2
25 BYR Belarussian Ruble 0
26 BZD Belize Dollar 2
27 CAD Canadian Dollar 2
28 CDF Franc Congolais 2
29 CHF Swiss Franc 2
30 CLP Chilean Peso 0
31 CNY Chinese Yuan Renminbi 2
32 COP Colombian Peso 2
33 CRC Costa Rican Colon 2
34 CSD Serbian Dinar 2
35 CUP Cuban Peso 2
36 CVE Cape Verde Escudo 2
37 CYP Cyprus Pound 2
38 CZK Czech Koruna 2
39 DJF Djibouti Franc 0
40 DKK Danish Krone 2
41 DOP Dominican Peso 2
42 DZD Algerian Dinar 2
43 EEK Estonian Kroon 2
44 EGP Egyptian Pound 2
45 ERN Eritrea Nafka 2
46 ETB Ethiopian Birr 2
47 EUR euro 2
48 FJD Fiji Dollar 2
49 FKP Falkland Islands Pound 2
50 GBP Pound Sterling 2
51 GEL Georgian Lari 2
52 GHC Ghana Cedi 2
53 GIP Gibraltar Pound 2
54 GMD Gambian Dalasi 2
55 GNF Guinea Franc 0
56 GTQ Guatemala Quetzal 2
57 GYD Guyana Dollar 2
58 HKD Hong Kong Dollar 2
59 HNL Honduras Lempira 2
60 HRK Croatian Kuna 2
61 HTG Haiti Gourde 2
62 HUF Hungarian Forint 2
63 IDR Indonesian Rupiah 2
64 ILS New Israeli Shekel 2
65 INR Indian Rupee 2
66 IQD Iraqi Dinar 3
67 IRR Iranian Rial 2
68 ISK Iceland Krona 0
69 JMD Jamaican Dollar 2
70 JOD Jordanian Dinar 3
71 JPY Japanese Yen 0
72 KES Kenyan Shilling 2
73 KGS Kyrgyzstan Som 2
74 KHR Cambodia Riel 2
75 KMF Comoro Franc 0
76 KPW North Korean Won 2
77 KRW Korean Won 0
78 KWD Kuwaiti Dinar 3
79 KYD Cayman Islands Dollar 2
80 KZT Kazakhstan Tenge 2
81 LAK Lao Kip 2
82 LBP Lebanese Pound 2
83 LKR Sri Lanka Rupee 2
84 LRD Liberian Dollar 2
85 LSL Lesotho Loti 2
86 LTL Lithuanian Litas 2
87 LVL Latvian Lats 2
88 LYD Libyan Dinar 3
89 MAD Moroccan Dirham 2
90 MDL Moldovan Leu 2
91 MGA Malagasy Ariary 2
92 MKD Macedonian Denar 2
93 MMK Myanmar Kyat 2
94 MNT Mongolian Tugrik 2
95 MOP Macau Pataca 2
96 MRO Mauritania Ouguiya 2
97 MTL Maltese Lira 2
98 MUR Mauritius Rupee 2
99 MVR Maldives Rufiyaa 2
100 MWK Malawi Kwacha 2
101 MXN Mexican Peso 2
102 MYR Malaysian Ringgit 2
103 MZM Mozambique Metical 2
104 NAD Namibia Dollar 2
105 NGN Nigerian Naira 2
106 NIO Nicaragua Cordoba Oro 2
107 NOK Norwegian Krone 2
108 NPR Nepalese Rupee 2
109 NZD New Zealand Dollar 2
110 OMR Rial Omani 3
111 PAB Panama Balboa 2
112 PEN Peruvian Nuevo Sol 2
113 PGK Papua New Guinea Kina 2
114 PHP Philippine Peso 2
115 PKR Pakistan Rupee 2
116 PLN Polish Zloty 2
117 PYG Paraguayan Guarani 0
118 QAR Qatari Rial 2
119 RON Romanian Leu 2
120 RUB Russian Ruble 2
121 RWF Rwanda Franc 0
122 SAR Saudi Riyal 2
123 SBD Solomon Islands Dollar 2
124 SCR Seychelles Rupee 2
125 SDD Sudanese Dinar 2
126 SEK Swedish Krona 2
127 SGD Singapore Dollar 2
128 SHP St Helena Pound 2
129 SIT Slovenian Tolar 2
130 SKK Slovak Koruna 2
131 SLL Sierra Leone Leone 2
132 SOS Somali Shilling 2
133 SRD Surinam Dollar 2
134 STD São Tome and Principe Dobra 2
135 SVC El Salvador Colon 2
136 SYP Syrian Pound 2
137 SZL Swaziland Lilangeni 2
138 THB Thai Baht 2
139 TJS Tajik Somoni 2
140 TMM Turkmenistan Manat 2
141 TND Tunisian Dinar 3
142 TOP Tonga Pa'anga 2
143 TRY Turkish Lira 2
144 TTD Trinidad and Tobago Dollar 2
145 TWD New Taiwan Dollar 2
146 TZS Tanzanian Shilling 2
147 UAH Ukraine Hryvnia 2
148 UGX Uganda Shilling 2
149 USD US Dollar 2
150 UYU Peso Uruguayo 2
151 UZS Uzbekistan Sum 2
152 VEB Venezuelan Bolivar 2
153 VND Vietnamese Dong 2
154 VUV Vanuatu Vatu 0
155 WST Samoa Tala 2
156 XAF CFA Franc BEAC 0
157 XCD East Caribbean Dollar 2
158 XDR SDR (Special Drawing Rights) 5
159 XOF CFA Franc BCEAO 0
160 XPF CFP Franc 0
161 YER Yemeni Rial 2
162 ZAR South African Rand 2
163 ZMK Zambian Kwacha 2
164 ZWD Zimbabwe Dollar 2
@@ -18,8 +18,9 @@
<logger name="org.mifosng.platform" level="debug" />
<logger name="org.mifosplatform" level="debug" />
<logger name="org.springframework.web" level="info" />
<logger name="org.springframework.beans" level="debug" />
<logger name="org.springframework.beans" level="info" />
<logger name="net.sf.ehcache" level="error" />
<logger name="org.hibernate.cache" level="error" />
@@ -1,17 +0,0 @@
LoanDisbursalsExportSummary=MPESA Loan Disbursals Export Summary
TotalAmountOfDisbursals\:=Total Amount Of Disbursals:
TotalNumberOfExportedRecords\:=Number Of Exported Records:
ListOfExportErrors\:=List Of Export Errors:
LoanAccountNo=Loan Account Number
ReceiptNo=Receipt Number
ErrorDescription=Error Description
PhoneNo=Phone Number
SelectedGroup\:=Selected Group:
SelectedProduct\:=Selected Product:
SelectedExportDate\:=Selected Export Date:
AsOf\:=As Of:
LastEditedBy=Last edited by
PrintedBy\:=Printed by:
Page=Page
On\:=On:
VersionAt=Version 1.3
@@ -1,18 +0,0 @@
ActiveLoanSummaryBranch=Active Loan Summary per Branch
Branch=Branch
NoOfCenters=No. of Centers
NoOfGroups=No. of Groups
NoOfClients=No. of Clients
NoOfActiveLoans=No. of Active Loans
NoOfLoansInArrears=No. of Loans in Arrears
TotalLoansDisbursed=Total Loans Disbursed
TotalPrincipalRepaid=Total Principal Repaid
TotalInterestRepaid=Total Interest Repaid
TotalPrincipalOutstanding=Total Principal Outstanding
TotalInterestOutstanding=Total Interest Outstanding
AmountInArrears=Amount in Arrears
Total=Total
PrintedBy\:=Printed by:
On\:=On:
Page=Page
VersionAt=Version 1.3
@@ -1,21 +0,0 @@
ActiveLoansCenter=Active Loans by Center
Office\:=Office:
Center\:=Center:
SystemId=System Id
CenterName=Center Name
GroupName=Group Name
ClientName=Client Name
LoanAmount=Loan Amount
InterestRate=Interest Rate
DisbursalDate=Disbursal Date
RepaidPrincipal=Repaid Principal
RepaidInterest=Repaid Interest
OutstandingPrincipal=Outstanding Principal
OutstandingInterest=Outstanding Interest
LoanOfficer=Loan Officer
Total=Total
GrandTotal=Grand Total
PrintedBy\:=Printed by:
On\:=On:
Page=Page
VersionAt=Version 1.3
@@ -1,20 +0,0 @@
ActiveLoansLastInstallment=Active Loans in their Last Installment
Office\:=Office:
SystemId=System Id
CenterName=Center Name
GroupName=Group Name
ClientName=Client Name
LoanAmount=Loan Amount
InterestRate=Interest Rate
DisbursalDate=Disbursal Date
RepaidPrincipal=Repaid Principal
RepaidInterest=Repaid Interest
OutstandingPrincipal=Outstanding Principal
OutstandingInterest=Outstanding Interest
LoanOfficer=Loan Officer
Total=Total
GrandTotal=Grand Total
PrintedBy\:=Printed by:
On\:=On:
Page=Page
VersionAt=Version 1.3
@@ -1,21 +0,0 @@
ActiveLoansLoanOfficer=Active Loans by Loan Officer
Office\:=Office:
LoanOfficer\:=Loan Officer:
SystemId=System Id
CenterName=Center Name
GroupName=Group Name
ClientName=Client Name
LoanAmount=Loan Amount
InterestRate=Interest Rate
DisbursalDate=Disbursal Date
RepaidPrincipal=Repaid Principal
RepaidInterest=Repaid Interest
OutstandingPrincipal=Outstanding Principal
OutstandingInterest=Outstanding Interest
LoanOfficer=Loan Officer
Total=Total
GrandTotal=Grand Total
PrintedBy\:=Printed by:
On\:=On:
Page=Page
VersionAt=Version 1.3
@@ -1,21 +0,0 @@
ActiveLoansLoanProduct=Active Loans by Loan Product
Office\:=Office:
LoanProduct\:=Loan Product:
SystemId=System Id
CenterName=Center Name
GroupName=Group Name
ClientName=Client Name
LoanAmount=Loan Amount
InterestRate=Interest Rate
DisbursalDate=Disbursal Date
RepaidPrincipal=Repaid Principal
RepaidInterest=Repaid Interest
OutstandingPrincipal=Outstanding Principal
OutstandingInterest=Outstanding Interest
LoanOfficer=Loan Officer
Total=Total
GrandTotal=Grand Total
PrintedBy\:=Printed by:
On\:=On:
Page=Page
VersionAt=Version 1.3
@@ -1,21 +0,0 @@
ActiveLoansLoanPurpose=Active Loans by Loan Purpose
Office\:=Office:
LoanPurpose\:=Loan Purpose:
SystemId=System Id
CenterName=Center Name
GroupName=Group Name
ClientName=Client Name
LoanAmount=Loan Amount
InterestRate=Interest Rate
DisbursalDate=Disbursal Date
RepaidPrincipal=Repaid Principal
RepaidInterest=Repaid Interest
OutstandingPrincipal=Outstanding Principal
OutstandingInterest=Outstanding Interest
LoanOfficer=Loan Officer
Total=Total
GrandTotal=Grand Total
PrintedBy\:=Printed by:
On\:=On:
Page=Page
VersionAt=Version 1.3
@@ -1,37 +0,0 @@
AgingSummary=Aging Summary
Office\:=Office:
AGINGANALYSIS=AGING ANALYSIS
ArrearsAmount=Arrears Amount
PAR=PAR
PARratio=PAR Ratio
AGINGTABLE=AGING TABLE
ofloans=# of Loans
LoanAmount=Loan Amount
PrincipalInArrears=Principal in Arrears
InterestInArrears=Interest in Arrears
PrincipalOutstanding=Principal Outstanding
InterestOutstanding=Interest Outstanding
BalanceOutstanding=Balance Outstanding
Total=Total
VersionAt=Version 1.3
Page=Page
On\:=On:
PrintedBy\:=Printed by:
1\ Week\ in\ Arrears=1 Week in Arrears
2\ Weeks\ in\ Arrears=2 Weeks in Arrears
3\ Weeks\ in\ Arrears=3 Weeks in Arrears
4\ Weeks\ in\ Arrears=4 Weeks in Arrears
5\ Weeks\ in\ Arrears=5 Weeks in Arrears
6\ Weeks\ in\ Arrears=6 Weeks in Arrears
7\ Weeks\ in\ Arrears=7 Weeks in Arrears
8\ Weeks\ in\ Arrears=8 Weeks in Arrears
9\ Weeks\ in\ Arrears=9 Weeks in Arrears
10\ Weeks\ in\ Arrears=10 Weeks in Arrears
11\ Weeks\ in\ Arrears=11 Weeks in Arrears
12\ Weeks\ in\ Arrears=12 Weeks in Arrears
12+\ Weeks\ in\ Arrears=> 12 Weeks in Arrears
0\ to\ 30\ Days\ in\ Arrears=1 to 30 Days in Arrears
30\ to\ 60\ Days\ in\ Arrears=31 to 60 Days in Arrears
60\ to\ 90\ Days\ in\ Arrears=61 to 90 Days in Arrears
90\ to\ 180\ Days\ in\ Arrears=91 to 180 Days in Arrears
>\ 180\ Days\ in\ Arrears=> 180 Days in Arrears

Some files were not shown because too many files have changed in this diff Show More