From 8feb9980f368e04471e3e761ecedcfb67b5d0068 Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Sat, 14 Jul 2012 23:38:51 +0100 Subject: [PATCH] remove organisation and anything org_id related --- .../patch-0007-remove-organisations.sql | 43 ++ .../org/mifosng/platform/Specifications.java | 110 +---- .../api/OfficeTransactionsApiResource.java | 12 - .../platform/api/data/AppUserData.java | 12 +- .../platform/api/data/PermissionData.java | 13 +- .../mifosng/platform/api/data/RoleData.java | 13 +- .../mifosng/platform/client/domain/Note.java | 28 +- .../ClientReadPlatformServiceImpl.java | 60 +-- ...WritePlatformServiceJpaRepositoryImpl.java | 27 +- ...WritePlatformServiceJpaRepositoryImpl.java | 13 +- .../CurrencyReadPlatformServiceImpl.java | 8 +- .../mifosng/platform/fund/domain/Fund.java | 21 +- .../service/FundReadPlatformServiceImpl.java | 19 +- ...WritePlatformServiceJpaRepositoryImpl.java | 11 +- .../mifosng/platform/loan/domain/Loan.java | 26 +- .../platform/loan/domain/LoanProduct.java | 13 +- .../LoanRepaymentScheduleInstallment.java | 12 - .../platform/loan/domain/LoanTransaction.java | 11 - .../CalculationPlatformServiceImpl.java | 7 +- .../platform/loan/service/LoanAssembler.java | 19 +- .../service/LoanReadPlatformServiceImpl.java | 36 +- ...WritePlatformServiceJpaRepositoryImpl.java | 59 ++- .../LoanProductReadPlatformServiceImpl.java | 17 +- ...WritePlatformServiceJpaRepositoryImpl.java | 20 +- .../platform/organisation/domain/Office.java | 21 +- .../domain/OfficeTransaction.java | 6 + .../organisation/domain/Organisation.java | 93 ---- .../domain/OrganisationCurrency.java | 11 - .../domain/OrganisationRepository.java | 7 - .../OfficeReadPlatformServiceImpl.java | 19 +- ...WritePlatformServiceJpaRepositoryImpl.java | 22 +- .../mifosng/platform/user/domain/AppUser.java | 23 +- .../user/domain/JpaUserDomainService.java | 29 +- .../JpaUserPriviledgeDomainService.java | 65 ++- .../platform/user/domain/Permission.java | 14 +- .../user/domain/PermissionBuilder.java | 415 +++++++++--------- .../mifosng/platform/user/domain/Role.java | 12 +- .../user/domain/UserDomainService.java | 6 +- .../domain/UserPriviledgeDomainService.java | 5 +- .../AppUserReadPlatformServiceImpl.java | 24 +- ...WritePlatformServiceJpaRepositoryImpl.java | 10 +- .../PermissionReadPlatformServiceImpl.java | 13 +- .../service/RoleReadPlatformServiceImpl.java | 18 +- ...WritePlatformServiceJpaRepositoryImpl.java | 11 +- 44 files changed, 497 insertions(+), 937 deletions(-) create mode 100644 mifosng-db/patches-beta-3-heavens-family/patch-0007-remove-organisations.sql delete mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/Organisation.java delete mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OrganisationRepository.java diff --git a/mifosng-db/patches-beta-3-heavens-family/patch-0007-remove-organisations.sql b/mifosng-db/patches-beta-3-heavens-family/patch-0007-remove-organisations.sql new file mode 100644 index 000000000..c1a0d1b75 --- /dev/null +++ b/mifosng-db/patches-beta-3-heavens-family/patch-0007-remove-organisations.sql @@ -0,0 +1,43 @@ +/* remove column org_id */ + +ALTER TABLE `org_office` DROP FOREIGN KEY `FK2291C47754DF2770`; +ALTER TABLE `org_office` DROP COLUMN `org_id`, +DROP INDEX `name_org`, +ADD UNIQUE INDEX `name_org` (`name` ASC), +DROP INDEX `externalid_org`, +ADD UNIQUE INDEX `externalid_org` (`external_id` ASC), +DROP INDEX `FK2291C47754DF2770`; + +ALTER TABLE `org_fund` DROP FOREIGN KEY `FK4E56DB4054DF2770` ; +ALTER TABLE `org_fund` DROP COLUMN `org_id` , DROP INDEX `fund_name_org` , ADD UNIQUE INDEX `fund_name_org` (`name` ASC) , DROP INDEX `fund_externalid_org` , ADD UNIQUE INDEX `fund_externalid_org` (`external_id` ASC) , DROP INDEX `FK4E56DB4054DF2770` ; + +ALTER TABLE `org_organisation_currency` DROP FOREIGN KEY `FK308062BB54DF2770` ;ALTER TABLE `org_organisation_currency` DROP COLUMN `org_id` , DROP INDEX `FK308062BB54DF2770` ; + +ALTER TABLE `admin_appuser` DROP FOREIGN KEY `FKB3D587C54DF2770` ;ALTER TABLE `admin_appuser` DROP COLUMN `org_id` , DROP INDEX `username_org` , ADD UNIQUE INDEX `username_org` (`username` ASC) , DROP INDEX `FKB3D587C54DF2770` ; + +ALTER TABLE `admin_permission` DROP FOREIGN KEY `FK18040BF54DF2770` ;ALTER TABLE `admin_permission` DROP COLUMN `org_id` , DROP INDEX `FK18040BF54DF2770` ; + +ALTER TABLE `admin_role` DROP FOREIGN KEY `FK2902EF6654DF2770` ;ALTER TABLE `admin_role` DROP COLUMN `org_id` , DROP INDEX `FK2902EF6654DF2770`; + +ALTER TABLE `portfolio_loan` DROP FOREIGN KEY `FKB6F935D854DF2770` ;ALTER TABLE `portfolio_loan` DROP COLUMN `org_id` , DROP INDEX `org_id` , ADD UNIQUE INDEX `org_id` (`external_id` ASC) , DROP INDEX `FKB6F935D854DF2770` ; + +ALTER TABLE `portfolio_loan_repayment_schedule` DROP COLUMN `org_id`; + +ALTER TABLE `portfolio_loan_transaction` DROP COLUMN `org_id`; + +ALTER TABLE `portfolio_note` DROP FOREIGN KEY `FK7C9708954DF2770` ;ALTER TABLE `portfolio_note` DROP COLUMN `org_id` , DROP INDEX `FK7C9708954DF2770`; + +ALTER TABLE `portfolio_product_loan` DROP FOREIGN KEY `FK1BD0772854DF2770` ;ALTER TABLE `portfolio_product_loan` DROP COLUMN `org_id` , DROP INDEX `FK1BD0772854DF2770`; + +drop table `admin_oauth_consumer_application`; + +drop table `org_organisation`; + + + + + + + + + diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/Specifications.java b/mifosng-provider/src/main/java/org/mifosng/platform/Specifications.java index 1bef18ba2..110b4e6f4 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/Specifications.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/Specifications.java @@ -6,122 +6,18 @@ import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import org.mifosng.platform.client.domain.Client; -import org.mifosng.platform.client.domain.Note; -import org.mifosng.platform.fund.domain.Fund; import org.mifosng.platform.loan.domain.Loan; -import org.mifosng.platform.loan.domain.LoanProduct; -import org.mifosng.platform.loan.domain.LoanTransaction; -import org.mifosng.platform.organisation.domain.Office; -import org.mifosng.platform.organisation.domain.Organisation; -import org.mifosng.platform.user.domain.AppUser; -import org.mifosng.platform.user.domain.Role; import org.springframework.data.jpa.domain.Specification; public final class Specifications { - public static Specification usersThatMatch(final Organisation organisation, final Long id) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } - - public static Specification usersThatMatch(final Organisation organisation, final String username) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("username"), username)); - } - }; - } - - public static Specification rolesThatMatch(final Organisation organisation, final Long id) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } - - public static Specification loanTransactionsThatMatch(final Organisation organisation, final Long id) { - return new Specification() { - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } - - public static Specification loansThatMatch(final Organisation organisation, final Long id) { - return new Specification() { - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } - - public static Specification loansThatMatch(final Organisation organisation, final Client client) { + public static Specification loansThatMatch(final Client client) { return new Specification() { @Override public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("client"), client)); + return cb.equal(root.get("client"), client); } }; } - - public static Specification productThatMatches(final Organisation organisation, final Long id) { - return new Specification() { - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } - - public static Specification officesThatMatch(final Organisation organisation, final Long id) { - return new Specification() { - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } - - public static Specification fundsThatMatch(final Organisation organisation, final Long id) { - return new Specification() { - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } - - @Deprecated - public static Specification clientsThatMatch(final Organisation organisation, final Long id) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } - - public static Specification notesThatMatch(final Organisation organisation, final Long id) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.and(cb.equal(root.get("organisation"), organisation), cb.equal(root.get("id"), id)); - } - }; - } -} +} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/OfficeTransactionsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/OfficeTransactionsApiResource.java index 15382c0dc..056fba6fd 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/OfficeTransactionsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/OfficeTransactionsApiResource.java @@ -16,9 +16,7 @@ import org.joda.time.LocalDate; import org.mifosng.platform.api.commands.BranchMoneyTransferCommand; import org.mifosng.platform.api.data.EntityIdentifier; import org.mifosng.platform.api.infrastructure.ApiDataConversionService; -import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService; import org.mifosng.platform.exceptions.UnrecognizedQueryParamException; -import org.mifosng.platform.organisation.service.OfficeReadPlatformService; import org.mifosng.platform.organisation.service.OfficeWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; @@ -29,22 +27,12 @@ import org.springframework.stereotype.Component; @Scope("singleton") public class OfficeTransactionsApiResource { - private String defaultFieldList = "openingDate"; - private String allowedFieldList = "allowedParents"; - private String filterName = "myFilter"; - - @Autowired - private OfficeReadPlatformService readPlatformService; - @Autowired private OfficeWritePlatformService writePlatformService; @Autowired private ApiDataConversionService apiDataConversionService; - @Autowired - private ApiJSONFormattingService jsonFormattingService; - @POST @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AppUserData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AppUserData.java index 8fe8f4a2e..4bc34c37b 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AppUserData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AppUserData.java @@ -11,7 +11,6 @@ import org.codehaus.jackson.map.annotate.JsonFilter; public class AppUserData { private Long id; - private Long orgId; private Long officeId; private String officeName; private String username; @@ -29,12 +28,11 @@ public class AppUserData { } public AppUserData(final Long id, final String username, - final String email, final Long orgId, final Long officeId, + final String email, final Long officeId, final String officeName) { this.id = id; this.username = username; this.email = email; - this.orgId = orgId; this.officeId = officeId; this.officeName = officeName; } @@ -51,10 +49,6 @@ public class AppUserData { return this.email; } - public Long getOrgId() { - return this.orgId; - } - public Long getOfficeId() { return this.officeId; } @@ -75,10 +69,6 @@ public class AppUserData { this.email = email; } - public void setOrgId(final Long orgId) { - this.orgId = orgId; - } - public void setOfficeId(final Long officeId) { this.officeId = officeId; } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionData.java index fe360201a..b869efe16 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionData.java @@ -10,7 +10,6 @@ import org.codehaus.jackson.map.annotate.JsonFilter; public class PermissionData implements Serializable { private Long id; - private Long orgId; private String name; private String description; private String code; @@ -20,10 +19,8 @@ public class PermissionData implements Serializable { // } - public PermissionData(final Long id, final Long orgId, final String name, - final String description, final String code, int groupType) { + public PermissionData(final Long id, final String name, final String description, final String code, int groupType) { this.id = id; - this.orgId = orgId; this.name = name; this.description = description; this.code = code; @@ -45,10 +42,6 @@ public class PermissionData implements Serializable { return this.id; } - public Long getOrgId() { - return this.orgId; - } - public String getName() { return this.name; } @@ -65,10 +58,6 @@ public class PermissionData implements Serializable { this.id = id; } - public void setOrgId(final Long orgId) { - this.orgId = orgId; - } - public void setName(final String name) { this.name = name; } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RoleData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RoleData.java index cc29e00d7..764b4838b 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RoleData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RoleData.java @@ -11,7 +11,6 @@ import org.codehaus.jackson.map.annotate.JsonFilter; public class RoleData { private Long id; - private Long orgId; private String name; private String description; @@ -22,10 +21,8 @@ public class RoleData { // } - public RoleData(final Long id, final Long orgId, final String name, - final String description) { + public RoleData(final Long id, final String name, final String description) { this.id = id; - this.orgId = orgId; this.name = name; this.description = description; } @@ -45,10 +42,6 @@ public class RoleData { return this.id; } - public Long getOrgId() { - return this.orgId; - } - public String getName() { return this.name; } @@ -61,10 +54,6 @@ public class RoleData { this.id = id; } - public void setOrgId(final Long orgId) { - this.orgId = orgId; - } - public void setName(final String name) { this.name = name; } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/client/domain/Note.java b/mifosng-provider/src/main/java/org/mifosng/platform/client/domain/Note.java index 579b7f1f5..4cd36529e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/client/domain/Note.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/client/domain/Note.java @@ -9,18 +9,12 @@ import javax.persistence.Table; import org.mifosng.platform.infrastructure.AbstractAuditableCustom; import org.mifosng.platform.loan.domain.Loan; import org.mifosng.platform.loan.domain.LoanTransaction; -import org.mifosng.platform.organisation.domain.Organisation; import org.mifosng.platform.user.domain.AppUser; @Entity @Table(name = "portfolio_note") public class Note extends AbstractAuditableCustom { - @SuppressWarnings("unused") - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private final Organisation organisation; - @ManyToOne @JoinColumn(name = "client_id", nullable = false) private final Client client; @@ -69,35 +63,32 @@ public class Note extends AbstractAuditableCustom { } } - public static Note clientNote(Organisation organisation, Client client, String note) { - return new Note(organisation, client, note); + public static Note clientNote(Client client, String note) { + return new Note(client, note); } - public static Note loanNote(Organisation organisation, Loan loan, String note) { - return new Note(organisation, loan, note); + public static Note loanNote(Loan loan, String note) { + return new Note(loan, note); } - public static Note loanTransactionNote(Organisation organisation, Loan loan, LoanTransaction loanTransaction, String note) { - return new Note(organisation, loan, loanTransaction, note); + public static Note loanTransactionNote(Loan loan, LoanTransaction loanTransaction, String note) { + return new Note(loan, loanTransaction, note); } - private Note(Organisation organisation, Client client, String note) { - this.organisation = organisation; + private Note(Client client, String note) { this.client = client; this.note = note; this.noteTypeId = NoteType.CLIENT.getValue(); } - private Note(Organisation organisation, Loan loan, String note) { - this.organisation = organisation; + private Note(Loan loan, String note) { this.loan = loan; this.client = loan.getClient(); this.note = note; this.noteTypeId = NoteType.LOAN.getValue(); } - private Note(Organisation organisation, Loan loan, LoanTransaction loanTransaction, String note) { - this.organisation = organisation; + private Note(Loan loan, LoanTransaction loanTransaction, String note) { this.loan = loan; this.loanTransaction = loanTransaction; this.client = loan.getClient(); @@ -106,7 +97,6 @@ public class Note extends AbstractAuditableCustom { } protected Note() { - this.organisation = null; this.client = null; this.loan = null; this.loanTransaction = null; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java index c23ed69a4..f6f4dc3b9 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java @@ -68,16 +68,14 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService public Collection retrieveAllIndividualClients( String extraCriteria) { - AppUser currentUser = this.context.authenticatedUser(); + this.context.authenticatedUser(); - List offices = new ArrayList( - officeReadPlatformService.retrieveAllOffices()); + List offices = new ArrayList(officeReadPlatformService.retrieveAllOffices()); String officeIdsList = generateOfficeIdInClause(offices); ClientMapper rm = new ClientMapper(offices); - String sql = "select " + rm.clientSchema() + " where c.office_id in (" - + officeIdsList + ") "; + String sql = "select " + rm.clientSchema() + " where c.office_id in (" + officeIdsList + ") "; if (StringUtils.isNotBlank(extraCriteria)) sql += " and " + extraCriteria; @@ -91,18 +89,16 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService public ClientData retrieveIndividualClient(final Long clientId) { try { - AppUser currentUser = this.context.authenticatedUser(); + this.context.authenticatedUser(); // TODO - JW include office name in query rather than get the lot // for office name List offices = new ArrayList( officeReadPlatformService.retrieveAllOffices()); ClientMapper rm = new ClientMapper(offices); - String sql = "select " + rm.clientSchema() - + " where c.id = ? "; + String sql = "select " + rm.clientSchema() + " where c.id = ? "; - return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { - clientId }); + return this.jdbcTemplate.queryForObject(sql, rm, new Object[] {clientId}); } catch (EmptyResultDataAccessException e) { throw new ClientNotFoundException(clientId); } @@ -134,7 +130,8 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService } public String clientSchema() { - return "c.office_id as officeId, c.id as id, c.firstname as firstname, c.lastname as lastname, c.external_id as externalId, c.joining_date as joinedDate from portfolio_client c"; + return "c.office_id as officeId, c.id as id, c.firstname as firstname, c.lastname as lastname, c.external_id as externalId, " + + "c.joining_date as joinedDate from portfolio_client c"; } @Override @@ -171,11 +168,10 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService } @Override - public ClientLoanAccountSummaryCollectionData retrieveClientAccountDetails( - final Long clientId) { + public ClientLoanAccountSummaryCollectionData retrieveClientAccountDetails(final Long clientId) { try { - AppUser currentUser = this.context.authenticatedUser(); + this.context.authenticatedUser(); List pendingApprovalLoans = new ArrayList(); List awaitingDisbursalLoans = new ArrayList(); @@ -185,11 +181,9 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService ClientLoanAccountSummaryDataMapper rm = new ClientLoanAccountSummaryDataMapper(); String sql = "select " + rm.loanAccountSummarySchema() - + " where l.client_id = ? and l.org_id = ?"; + + " where l.client_id = ?"; - List results = this.jdbcTemplate - .query(sql, rm, new Object[] { clientId, - currentUser.getOrganisation().getId() }); + List results = this.jdbcTemplate.query(sql, rm, new Object[] {clientId}); if (results != null) { for (ClientLoanAccountSummaryData row : results) { @@ -243,18 +237,8 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService Long productId = JdbcSupport.getLong(rs, "productId"); String loanProductName = rs.getString("productName"); Integer loanStatusId = JdbcSupport.getInteger(rs, "statusId"); - // String lifeCycleStatusText = rs.getString("statusName"); - // - // LoanStatusMapper statusMapper = new - // LoanStatusMapper(loanStatusId); - // - // boolean pendingApproval = statusMapper.isPendingApproval(); - // boolean waitingForDisbursal = statusMapper.isAwaitingDisbursal(); - // boolean open = statusMapper.isOpen(); - // boolean closed = statusMapper.isClosed(); - return new ClientLoanAccountSummaryData(id, externalId, productId, - loanProductName, loanStatusId); + return new ClientLoanAccountSummaryData(id, externalId, productId, loanProductName, loanStatusId); } } @@ -262,7 +246,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService public NoteData retrieveClientNote(Long clientId, Long noteId) { try { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); // FIXME - use join on sql query to fetch user information for note // rather than fetching users? @@ -272,11 +256,9 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService NoteMapper noteMapper = new NoteMapper(allUsers); String sql = "select " + noteMapper.schema() - + " where n.org_id = ? and n.client_id = ? and n.id = ?"; + + " where n.client_id = ? and n.id = ?"; - return this.jdbcTemplate.queryForObject(sql, noteMapper, - new Object[] { currentUser.getOrganisation().getId(), - clientId, noteId }); + return this.jdbcTemplate.queryForObject(sql, noteMapper, new Object[] {clientId, noteId}); } catch (EmptyResultDataAccessException e) { throw new NoteNotFoundException(clientId); } @@ -285,7 +267,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService @Override public Collection retrieveAllClientNotes(Long clientId) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); // FIXME - use join on sql query to fetch user information for note // rather than fetching users? @@ -296,10 +278,9 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService String sql = "select " + noteMapper.schema() - + " where n.org_id = ? and n.client_id = ? order by n.created_date DESC"; + + " where n.client_id = ? order by n.created_date DESC"; - return this.jdbcTemplate.query(sql, noteMapper, new Object[] { - currentUser.getOrganisation().getId(), clientId }); + return this.jdbcTemplate.query(sql, noteMapper, new Object[] {clientId}); } private static final class NoteMapper implements RowMapper { @@ -342,8 +323,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService lastModifiedDate, lastModifiedById, updatedByUsername); } - private String findUserById(Long createdById, - Collection allUsers) { + private String findUserById(Long createdById, Collection allUsers) { String username = ""; for (AppUserData appUserData : allUsers) { if (appUserData.getId().equals(createdById)) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java index b6473d1a0..4279d366d 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java @@ -1,8 +1,5 @@ package org.mifosng.platform.client.service; -import static org.mifosng.platform.Specifications.notesThatMatch; -import static org.mifosng.platform.Specifications.officesThatMatch; - import org.apache.commons.lang.StringUtils; import org.mifosng.platform.api.commands.ClientCommand; import org.mifosng.platform.api.commands.NoteCommand; @@ -17,7 +14,6 @@ import org.mifosng.platform.exceptions.OfficeNotFoundException; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -43,12 +39,12 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP @Override public Long enrollClient(final ClientCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); ClientCommandValidator validator = new ClientCommandValidator(command); validator.validateForCreate(); - Office clientOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), command.getOfficeId())); + Office clientOffice = this.officeRepository.findOne(command.getOfficeId()); if (clientOffice == null) { throw new OfficeNotFoundException(command.getOfficeId()); } @@ -69,9 +65,9 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP @Transactional @Override - public EntityIdentifier updateClientDetails(ClientCommand command) { + public EntityIdentifier updateClientDetails(final ClientCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); ClientCommandValidator validator = new ClientCommandValidator(command); validator.validateForUpdate(); @@ -79,7 +75,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP Office clientOffice = null; Long officeId = command.getOfficeId(); if (officeId != null) { - clientOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), officeId)); + clientOffice = this.officeRepository.findOne(officeId); if (clientOffice == null) { throw new OfficeNotFoundException(command.getOfficeId()); } @@ -106,17 +102,16 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP @Transactional @Override - public EntityIdentifier addClientNote(NoteCommand command) { + public EntityIdentifier addClientNote(final NoteCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); -// Client clientForUpdate = this.clientRepository.findOne(clientsThatMatch(currentUser.getOrganisation(), command.getClientId())); Client clientForUpdate = this.clientRepository.findOne(command.getClientId()); if (clientForUpdate == null) { throw new ClientNotFoundException(command.getClientId()); } - Note note = Note.clientNote(currentUser.getOrganisation(), clientForUpdate, command.getNote()); + Note note = Note.clientNote(clientForUpdate, command.getNote()); this.noteRepository.save(note); @@ -125,11 +120,11 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP @Transactional @Override - public EntityIdentifier updateNote(NoteCommand command) { + public EntityIdentifier updateNote(final NoteCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); - Note noteForUpdate = this.noteRepository.findOne(notesThatMatch(currentUser.getOrganisation(), command.getId())); + Note noteForUpdate = this.noteRepository.findOne(command.getId()); if (noteForUpdate == null || noteForUpdate.isNotAgainstClientWithIdOf(command.getClientId())) { throw new NoteNotFoundException(command.getId(), command.getClientId(), "client"); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/configuration/service/ConfigurationWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/configuration/service/ConfigurationWritePlatformServiceJpaRepositoryImpl.java index dcb1905e2..592b8b291 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/configuration/service/ConfigurationWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/configuration/service/ConfigurationWritePlatformServiceJpaRepositoryImpl.java @@ -11,11 +11,8 @@ import org.mifosng.platform.api.data.ApiParameterError; import org.mifosng.platform.currency.domain.ApplicationCurrency; import org.mifosng.platform.currency.domain.ApplicationCurrencyRepository; import org.mifosng.platform.exceptions.PlatformApiDataValidationException; -import org.mifosng.platform.organisation.domain.Organisation; import org.mifosng.platform.organisation.domain.OrganisationCurrency; -import org.mifosng.platform.organisation.domain.OrganisationRepository; import org.mifosng.platform.security.PlatformSecurityContext; -import org.mifosng.platform.user.domain.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -24,14 +21,12 @@ import org.springframework.transaction.annotation.Transactional; public class ConfigurationWritePlatformServiceJpaRepositoryImpl implements ConfigurationWritePlatformService { private final PlatformSecurityContext context; - private final OrganisationRepository organisationRepository; private final ApplicationCurrencyRepository applicationCurrencyRepository; @Autowired - public ConfigurationWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final OrganisationRepository organisationRepository, + public ConfigurationWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final ApplicationCurrencyRepository applicationCurrencyRepository) { this.context = context; - this.organisationRepository = organisationRepository; this.applicationCurrencyRepository = applicationCurrencyRepository; } @@ -39,7 +34,7 @@ public class ConfigurationWritePlatformServiceJpaRepositoryImpl implements Confi @Override public void updateOrganisationCurrencies(final OrganisationCurrencyCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); List dataValidationErrors = new ArrayList(); DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("configuration"); @@ -69,9 +64,5 @@ public class ConfigurationWritePlatformServiceJpaRepositoryImpl implements Confi if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors); } - - Organisation org = currentUser.getOrganisation(); - org.setAllowedCurrencies(allowedCurrencies); - this.organisationRepository.save(org); } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java index 28f5abc5b..e3a6fde1e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java @@ -8,7 +8,6 @@ import org.mifosng.platform.api.data.CurrencyData; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -29,14 +28,13 @@ public class CurrencyReadPlatformServiceImpl implements CurrencyReadPlatformServ @Override public List retrieveAllowedCurrencies() { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); - String sql = "select c.code as code, c.name as name, c.decimal_places as decimalPlaces, c.display_symbol as displaySymbol, c.internationalized_name_code as nameCode from org_organisation_currency c where c.org_id = ?"; + String sql = "select c.code as code, c.name as name, c.decimal_places as decimalPlaces, c.display_symbol as displaySymbol, c.internationalized_name_code as nameCode from org_organisation_currency c"; RowMapper rm = new CurrencyMapper(); - return this.jdbcTemplate.query(sql, rm, new Object[] { currentUser - .getOrganisation().getId() }); + return this.jdbcTemplate.query(sql, rm, new Object[] {}); } @Override diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/fund/domain/Fund.java b/mifosng-provider/src/main/java/org/mifosng/platform/fund/domain/Fund.java index b4a8256dc..39db24913 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/fund/domain/Fund.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/fund/domain/Fund.java @@ -2,43 +2,36 @@ package org.mifosng.platform.fund.domain; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import org.mifosng.platform.api.commands.FundCommand; import org.mifosng.platform.infrastructure.AbstractAuditableCustom; -import org.mifosng.platform.organisation.domain.Organisation; import org.mifosng.platform.user.domain.AppUser; @Entity @Table(name = "org_fund", uniqueConstraints={ - @UniqueConstraint(columnNames = {"org_id", "name"}, name="fund_name_org"), - @UniqueConstraint(columnNames = {"org_id", "external_id"}, name="fund_externalid_org") + @UniqueConstraint(columnNames = {"name"}, name="fund_name_org"), + @UniqueConstraint(columnNames = {"external_id"}, name="fund_externalid_org") }) public class Fund extends AbstractAuditableCustom { - - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private final Organisation organisation; + @SuppressWarnings("unused") @Column(name = "name") private String name; + @SuppressWarnings("unused") @Column(name = "external_id", length=100) private String externalId; - public static Fund createNew(final Organisation organisation, final String fundName) { - return new Fund(organisation, fundName); + public static Fund createNew(final String fundName) { + return new Fund(fundName); } protected Fund() { - this.organisation = null; } - private Fund(final Organisation organisation, final String fundName) { - this.organisation = organisation; + private Fund(final String fundName) { this.name = fundName; } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundReadPlatformServiceImpl.java index 9d96369af..2ff9adbd3 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundReadPlatformServiceImpl.java @@ -8,7 +8,6 @@ import org.mifosng.platform.api.data.FundData; import org.mifosng.platform.exceptions.FundNotFoundException; import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource; import org.mifosng.platform.security.PlatformSecurityContext; -import org.mifosng.platform.user.domain.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -30,7 +29,7 @@ public class FundReadPlatformServiceImpl implements FundReadPlatformService { private static final class FundMapper implements RowMapper { - public String officeSchema() { + public String schema() { return " f.id as id, f.name as name, f.external_id as externalId from org_fund f "; } @@ -49,28 +48,26 @@ public class FundReadPlatformServiceImpl implements FundReadPlatformService { @Override public Collection retrieveAllFunds() { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); FundMapper rm = new FundMapper(); String sql = "select " - + rm.officeSchema() - + " where f.org_id = ? order by f.name"; + + rm.schema() + + " order by f.name"; - return this.jdbcTemplate.query(sql, rm, new Object[] {currentUser.getOrganisation().getId()}); + return this.jdbcTemplate.query(sql, rm, new Object[] {}); } @Override public FundData retrieveFund(final Long fundId) { try { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); FundMapper rm = new FundMapper(); - String sql = "select " + rm.officeSchema() - + " where f.org_id = ? and f.id = ?"; + String sql = "select " + rm.schema() + " where f.id = ?"; - FundData selectedFund = this.jdbcTemplate.queryForObject(sql, - rm, new Object[] { currentUser.getOrganisation().getId(), fundId}); + FundData selectedFund = this.jdbcTemplate.queryForObject(sql, rm, new Object[] {fundId}); return selectedFund; } catch (EmptyResultDataAccessException e) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundWritePlatformServiceJpaRepositoryImpl.java index 28908cee8..341774851 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/fund/service/FundWritePlatformServiceJpaRepositoryImpl.java @@ -1,14 +1,11 @@ package org.mifosng.platform.fund.service; -import static org.mifosng.platform.Specifications.fundsThatMatch; - import org.mifosng.platform.api.commands.FundCommand; import org.mifosng.platform.exceptions.FundNotFoundException; import org.mifosng.platform.exceptions.PlatformDataIntegrityException; import org.mifosng.platform.fund.domain.Fund; import org.mifosng.platform.fund.domain.FundRepository; import org.mifosng.platform.security.PlatformSecurityContext; -import org.mifosng.platform.user.domain.AppUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -35,12 +32,12 @@ public class FundWritePlatformServiceJpaRepositoryImpl implements FundWritePlatf public Long createFund(final FundCommand command) { try { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); FundCommandValidator validator = new FundCommandValidator(command); validator.validateForCreate(); - Fund fund = Fund.createNew(currentUser.getOrganisation(), command.getName()); + Fund fund = Fund.createNew(command.getName()); this.fundRepository.saveAndFlush(fund); @@ -56,13 +53,13 @@ public class FundWritePlatformServiceJpaRepositoryImpl implements FundWritePlatf public Long updateFund(final FundCommand command) { try { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); FundCommandValidator validator = new FundCommandValidator(command); validator.validateForCreate(); final Long fundId = command.getId(); - Fund fund = this.fundRepository.findOne(fundsThatMatch(currentUser.getOrganisation(), fundId)); + Fund fund = this.fundRepository.findOne(fundId); if (fund == null) { throw new FundNotFoundException(fundId); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java index 5e170033f..312d9405e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java @@ -44,17 +44,12 @@ import org.mifosng.platform.exceptions.InvalidLoanTransactionTypeException; import org.mifosng.platform.fund.domain.Fund; import org.mifosng.platform.infrastructure.AbstractAuditableCustom; import org.mifosng.platform.loanproduct.service.LoanEnumerations; -import org.mifosng.platform.organisation.domain.Organisation; import org.mifosng.platform.user.domain.AppUser; @Entity -@Table(name = "portfolio_loan", uniqueConstraints = @UniqueConstraint(columnNames = {"org_id", "external_id" })) +@Table(name = "portfolio_loan", uniqueConstraints = @UniqueConstraint(columnNames = {"external_id" })) public class Loan extends AbstractAuditableCustom { - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private final Organisation organisation; - @ManyToOne @JoinColumn(name = "client_id", nullable = false) private final Client client; @@ -149,24 +144,20 @@ public class Loan extends AbstractAuditableCustom { @Transient private final InterestRebateCalculatorFactory interestRebateCalculatorFactory = new DailyEquivalentInterestRebateCalculatorFactory(); - public static Loan createNew(Organisation organisation, - Fund fund, LoanProduct loanProduct, Client client, - LoanProductRelatedDetail loanRepaymentScheduleDetail) { - return new Loan(organisation, client, fund, loanProduct, loanRepaymentScheduleDetail, null); + public static Loan createNew(final Fund fund, final LoanProduct loanProduct, final Client client, final LoanProductRelatedDetail loanRepaymentScheduleDetail) { + return new Loan(client, fund, loanProduct, loanRepaymentScheduleDetail, null); } public Loan() { - this.organisation = null; this.client = null; this.loanProduct = null; this.loanRepaymentScheduleDetail = null; } - public Loan(final Organisation organisation, final Client client, + public Loan(final Client client, Fund fund, final LoanProduct loanProduct, final LoanProductRelatedDetail loanRepaymentScheduleDetail, final LoanStatus loanStatus) { - this.organisation = organisation; this.client = client; if (fund != null) { this.fund = fund; @@ -179,10 +170,6 @@ public class Loan extends AbstractAuditableCustom { this.interestRebateOwed = BigDecimal.ZERO; } - public Organisation getOrganisation() { - return this.organisation; - } - public Client getClient() { return this.client; } @@ -292,7 +279,6 @@ public class Loan extends AbstractAuditableCustom { final List modifiedLoanRepaymentSchedule, LoanLifecycleStateMachine loanLifecycleStateMachine) { this.repaymentScheduleInstallments.clear(); for (LoanRepaymentScheduleInstallment modifiedInstallment : modifiedLoanRepaymentSchedule) { - modifiedInstallment.updateOrgnaisation(this.organisation); modifiedInstallment.updateLoan(this); this.repaymentScheduleInstallments.add(modifiedInstallment); } @@ -309,7 +295,6 @@ public class Loan extends AbstractAuditableCustom { LoanTransaction loanTransaction = LoanTransaction.disbursement( this.loanRepaymentScheduleDetail.getPrincipal(), disbursedOn); loanTransaction.updateLoan(this); - loanTransaction.updateOrganisation(organisation); this.loanTransactions.add(loanTransaction); if (disbursedOn.isBefore(getApprovedOnDate())) { @@ -338,7 +323,6 @@ public class Loan extends AbstractAuditableCustom { public void waive(LoanTransaction loanTransaction, LoanLifecycleStateMachine loanLifecycleStateMachine) { this.loanStatus = loanLifecycleStateMachine.transition(LoanEvent.LOAN_REPAYMENT, this.loanStatus); loanTransaction.updateLoan(this); - loanTransaction.updateOrganisation(organisation); this.loanTransactions.add(loanTransaction); LocalDate loanTransactionDate = loanTransaction.getTransactionDate(); @@ -382,7 +366,6 @@ public class Loan extends AbstractAuditableCustom { public void makeRepayment(final LoanTransaction loanTransaction, LoanLifecycleStateMachine loanLifecycleStateMachine) { this.loanStatus = loanLifecycleStateMachine.transition(LoanEvent.LOAN_REPAYMENT, this.loanStatus); loanTransaction.updateLoan(this); - loanTransaction.updateOrganisation(organisation); this.loanTransactions.add(loanTransaction); deriveLoanRepaymentScheduleCompletedData(); @@ -804,7 +787,6 @@ public class Loan extends AbstractAuditableCustom { } public void addRepaymentScheduleInstallment(final LoanRepaymentScheduleInstallment installment) { - installment.updateOrgnaisation(this.organisation); installment.updateLoan(this); this.repaymentScheduleInstallments.add(installment); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanProduct.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanProduct.java index 9081726dc..18259aa9d 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanProduct.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanProduct.java @@ -15,7 +15,6 @@ import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; import org.mifosng.platform.fund.domain.Fund; import org.mifosng.platform.infrastructure.AbstractAuditableCustom; -import org.mifosng.platform.organisation.domain.Organisation; import org.mifosng.platform.user.domain.AppUser; /** @@ -30,10 +29,6 @@ import org.mifosng.platform.user.domain.AppUser; @Table(name = "portfolio_product_loan") public class LoanProduct extends AbstractAuditableCustom { - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private final Organisation organisation; - @ManyToOne @JoinColumn(name = "fund_id", nullable = true) private Fund fund; @@ -48,19 +43,17 @@ public class LoanProduct extends AbstractAuditableCustom { private final LoanProductRelatedDetail loanProductRelatedDetail; public LoanProduct() { - this.organisation = null; this.fund = null; this.name = null; this.description = null; this.loanProductRelatedDetail = null; } - public LoanProduct(final Organisation organisation, Fund fund, final String name, final String description, final MonetaryCurrency currency, final BigDecimal defaultPrincipal, + public LoanProduct(final Fund fund, final String name, final String description, final MonetaryCurrency currency, final BigDecimal defaultPrincipal, final BigDecimal defaultNominalInterestRatePerPeriod, final PeriodFrequencyType interestPeriodFrequencyType, final BigDecimal defaultAnnualNominalInterestRate, final InterestMethod interestMethod, final InterestCalculationPeriodMethod interestCalculationPeriodMethod, final Integer repayEvery, final PeriodFrequencyType repaymentFrequencyType, final Integer defaultNumberOfInstallments, final AmortizationMethod amortizationMethod, final BigDecimal inArrearsTolerance) { - this.organisation = organisation; this.fund = fund; this.name = name.trim(); if (StringUtils.isNotBlank(description)) { @@ -75,10 +68,6 @@ public class LoanProduct extends AbstractAuditableCustom { repayEvery, repaymentFrequencyType, defaultNumberOfInstallments, amortizationMethod, inArrearsTolerance); } - public Organisation getOrganisation() { - return this.organisation; - } - public MonetaryCurrency getCurrency() { return this.loanProductRelatedDetail.getCurrency(); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentScheduleInstallment.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentScheduleInstallment.java index 0f5451762..4f3addb96 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentScheduleInstallment.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentScheduleInstallment.java @@ -15,18 +15,12 @@ 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.organisation.domain.Organisation; import org.mifosng.platform.user.domain.AppUser; @Entity @Table(name = "portfolio_loan_repayment_schedule") public class LoanRepaymentScheduleInstallment extends AbstractAuditableCustom { - @SuppressWarnings("unused") - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private Organisation organisation; - @ManyToOne(optional = false) @JoinColumn(name = "loan_id") private Loan loan; @@ -54,7 +48,6 @@ public class LoanRepaymentScheduleInstallment extends AbstractAuditableCustom { - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private Organisation organisation; - @ManyToOne(optional = false) @JoinColumn(name = "loan_id", nullable=false) private Loan loan; @@ -55,7 +50,6 @@ public class LoanTransaction extends AbstractAuditableCustom { private LoanTransaction contra; protected LoanTransaction() { - this.organisation = null; this.loan = null; this.amount = null; this.dateOf = null; @@ -152,13 +146,8 @@ public class LoanTransaction extends AbstractAuditableCustom { public void contra() { this.contra = LoanTransaction.contra(this); contra.updateLoan(this.loan); - contra.updateOrganisation(this.organisation); } - public void updateOrganisation(Organisation organisation) { - this.organisation = organisation; - } - public void updateLoan(final Loan loan) { this.loan = loan; } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java index 88c813176..4db5260f2 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java @@ -1,7 +1,5 @@ package org.mifosng.platform.loan.service; -import static org.mifosng.platform.Specifications.productThatMatches; - import java.math.BigDecimal; import org.joda.time.LocalDate; @@ -30,7 +28,6 @@ import org.mifosng.platform.loanschedule.domain.DefaultLoanScheduleGeneratorFact import org.mifosng.platform.loanschedule.domain.LoanScheduleGenerator; import org.mifosng.platform.loanschedule.domain.LoanScheduleGeneratorFactory; import org.mifosng.platform.security.PlatformSecurityContext; -import org.mifosng.platform.user.domain.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -60,7 +57,7 @@ public class CalculationPlatformServiceImpl implements @Override public LoanSchedule calculateLoanSchedule(final CalculateLoanScheduleCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); CalculateLoanScheduleCommandValidator validator = new CalculateLoanScheduleCommandValidator(command); validator.validate(); @@ -77,7 +74,7 @@ public class CalculationPlatformServiceImpl implements final BigDecimal defaultAnnualNominalInterestRate = this.aprCalculator.calculateFrom(interestPeriodFrequencyType, defaultNominalInterestRatePerPeriod); - LoanProduct loanProduct = this.loanProductRepository.findOne(productThatMatches(currentUser.getOrganisation(), command.getProductId())); + LoanProduct loanProduct = this.loanProductRepository.findOne(command.getProductId()); if (loanProduct == null) { throw new LoanProductNotFoundException(command.getProductId()); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanAssembler.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanAssembler.java index 3daca2d42..8122d9df9 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanAssembler.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanAssembler.java @@ -1,8 +1,5 @@ package org.mifosng.platform.loan.service; -import static org.mifosng.platform.Specifications.fundsThatMatch; -import static org.mifosng.platform.Specifications.productThatMatches; - import java.math.BigDecimal; import java.util.List; @@ -32,7 +29,6 @@ import org.mifosng.platform.loan.domain.LoanStatus; import org.mifosng.platform.loan.domain.LoanStatusRepository; import org.mifosng.platform.loan.domain.PeriodFrequencyType; import org.mifosng.platform.loanschedule.domain.AprCalculator; -import org.mifosng.platform.organisation.domain.Organisation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -55,12 +51,13 @@ public class LoanAssembler { this.fundRepository = fundRepository; } - public Loan assembleFrom(SubmitLoanApplicationCommand command, Organisation organisation) { - LoanProduct loanProduct = this.loanProductRepository.findOne(productThatMatches(organisation, command.getProductId())); + public Loan assembleFrom(SubmitLoanApplicationCommand command) { + + LoanProduct loanProduct = this.loanProductRepository.findOne(command.getProductId()); if (loanProduct == null) { throw new LoanProductNotFoundException(command.getProductId()); } -// Client client = this.clientRepository.findOne(clientsThatMatch(organisation, command.getClientId())); + Client client = this.clientRepository.findOne(command.getClientId()); if (client == null) { throw new ClientNotFoundException(command.getClientId()); @@ -89,9 +86,9 @@ public class LoanAssembler { List loanRepaymentSchedule = loanSchedule.getScheduledLoanInstallments(); // associating fund with loan product at creation is optional for now. - Fund fund = findFundByIdIfProvided(organisation, command.getFundId()); + Fund fund = findFundByIdIfProvided(command.getFundId()); - Loan loan = Loan.createNew(organisation, fund, loanProduct, client, loanRepaymentScheduleDetail); + Loan loan = Loan.createNew(fund, loanProduct, client, loanRepaymentScheduleDetail); loan.setExternalId(command.getExternalId()); for (ScheduledLoanInstallment scheduledLoanInstallment : loanRepaymentSchedule) { @@ -117,10 +114,10 @@ public class LoanAssembler { return new DefaultLoanLifecycleStateMachine(allowedLoanStatuses); } - private Fund findFundByIdIfProvided(final Organisation organisation, final Long fundId) { + private Fund findFundByIdIfProvided(final Long fundId) { Fund fund = null; if (fundId != null) { - fund = this.fundRepository.findOne(fundsThatMatch(organisation, fundId)); + fund = this.fundRepository.findOne(fundId); if (fund == null) { throw new FundNotFoundException(fundId); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java index b31420e20..207a49b4e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java @@ -1,8 +1,5 @@ package org.mifosng.platform.loan.service; -import static org.mifosng.platform.Specifications.loanTransactionsThatMatch; -import static org.mifosng.platform.Specifications.loansThatMatch; - import java.util.ArrayList; import java.util.Collection; @@ -33,7 +30,6 @@ import org.mifosng.platform.loan.domain.LoanTransactionType; import org.mifosng.platform.loanproduct.service.LoanEnumerations; import org.mifosng.platform.loanproduct.service.LoanProductReadPlatformService; import org.mifosng.platform.security.PlatformSecurityContext; -import org.mifosng.platform.user.domain.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -67,13 +63,13 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { } @Override - public LoanAccountData retrieveLoanAccountDetails(Long loanId) { + public LoanAccountData retrieveLoanAccountDetails(final Long loanId) { // TODO - OPTIMISE - prefer jdbc sql approach to return only what we // need of loan information. - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), loanId)); + Loan loan = this.loanRepository.findOne(loanId); if (loan == null) { throw new LoanNotFoundException(loanId); } @@ -149,14 +145,13 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { } @Override - public LoanTransactionData retrieveNewLoanRepaymentDetails(Long loanId) { + public LoanTransactionData retrieveNewLoanRepaymentDetails(final Long loanId) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); // TODO - OPTIMIZE - write simple sql query to fetch back date of // possible next transaction date. - Loan loan = this.loanRepository.findOne(loansThatMatch( - currentUser.getOrganisation(), loanId)); + Loan loan = this.loanRepository.findOne(loanId); if (loan == null) { throw new LoanNotFoundException(loanId); } @@ -188,14 +183,13 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { } @Override - public LoanTransactionData retrieveNewLoanWaiverDetails(Long loanId) { + public LoanTransactionData retrieveNewLoanWaiverDetails(final Long loanId) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); // TODO - OPTIMIZE - write simple sql query to fetch back date of // possible next transaction date. - Loan loan = this.loanRepository.findOne(loansThatMatch( - currentUser.getOrganisation(), loanId)); + Loan loan = this.loanRepository.findOne(loanId); if (loan == null) { throw new LoanNotFoundException(loanId); } @@ -225,13 +219,11 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { } @Override - public LoanTransactionData retrieveLoanTransactionDetails(Long loanId, - Long transactionId) { + public LoanTransactionData retrieveLoanTransactionDetails(final Long loanId, final Long transactionId) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); - Loan loan = this.loanRepository.findOne(loansThatMatch( - currentUser.getOrganisation(), loanId)); + Loan loan = this.loanRepository.findOne(loanId); if (loan == null) { throw new LoanNotFoundException(loanId); } @@ -244,9 +236,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { throw new CurrencyNotFoundException(currencyCode); } - LoanTransaction transaction = this.loanTransactionRepository - .findOne(loanTransactionsThatMatch( - currentUser.getOrganisation(), transactionId)); + LoanTransaction transaction = this.loanTransactionRepository.findOne(transactionId); if (transaction == null) { throw new LoanTransactionNotFoundException(transactionId); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java index b6156638a..31c2587d6 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java @@ -1,7 +1,5 @@ package org.mifosng.platform.loan.service; -import static org.mifosng.platform.Specifications.loansThatMatch; - import java.util.ArrayList; import java.util.List; @@ -89,12 +87,12 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf throw new NoAuthorizationException("Cannot add backdated loan."); } - Loan loan = loanAssembler.assembleFrom(command, currentUser.getOrganisation()); + Loan loan = loanAssembler.assembleFrom(command); this.loanRepository.save(loan); if (StringUtils.isNotBlank(command.getSubmittedOnNote())) { - Note note = Note.loanNote(currentUser.getOrganisation(), loan, command.getSubmittedOnNote()); + Note note = Note.loanNote(loan, command.getSubmittedOnNote()); this.noteRepository.save(note); } @@ -103,11 +101,11 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf @Transactional @Override - public EntityIdentifier deleteLoan(Long loanId) { + public EntityIdentifier deleteLoan(final Long loanId) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), loanId)); + Loan loan = this.loanRepository.findOne(loanId); if (loan == null) { throw new LoanNotFoundException(loanId); } @@ -133,7 +131,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf LoanStateTransitionCommandValidator validator = new LoanStateTransitionCommandValidator(command); validator.validate(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -148,7 +146,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf String noteText = command.getNote(); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanNote(currentUser.getOrganisation(), loan, noteText); + Note note = Note.loanNote(loan, noteText); this.noteRepository.save(note); } @@ -159,9 +157,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf @Override public EntityIdentifier undoLoanApproval(final UndoStateTransitionCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -171,7 +169,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf String noteText = command.getNote(); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanNote(currentUser.getOrganisation(), loan, noteText); + Note note = Note.loanNote(loan, noteText); this.noteRepository.save(note); } @@ -187,7 +185,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf LoanStateTransitionCommandValidator validator = new LoanStateTransitionCommandValidator(command); validator.validate(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -202,7 +200,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf String noteText = command.getNote(); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanNote(currentUser.getOrganisation(), loan, noteText); + Note note = Note.loanNote(loan, noteText); this.noteRepository.save(note); } @@ -218,7 +216,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf LoanStateTransitionCommandValidator validator = new LoanStateTransitionCommandValidator(command); validator.validate(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -233,7 +231,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf String noteText = command.getNote(); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanNote(currentUser.getOrganisation(), loan, noteText); + Note note = Note.loanNote(loan, noteText); this.noteRepository.save(note); } @@ -249,7 +247,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf LoanStateTransitionCommandValidator validator = new LoanStateTransitionCommandValidator(command); validator.validate(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -322,7 +320,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf this.loanRepository.save(loan); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanNote(currentUser.getOrganisation(), loan, noteText); + Note note = Note.loanNote(loan, noteText); this.noteRepository.save(note); } @@ -333,9 +331,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf @Override public EntityIdentifier undoLoanDisbursal(final UndoStateTransitionCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -350,7 +348,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf String noteText = command.getNote(); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanNote(currentUser.getOrganisation(), loan, noteText); + Note note = Note.loanNote(loan, noteText); this.noteRepository.save(note); } @@ -366,7 +364,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf LoanTransactionCommandValidator validator = new LoanTransactionCommandValidator(command); validator.validate(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -387,7 +385,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf String noteText = command.getNote(); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanTransactionNote(currentUser.getOrganisation(), loan, loanRepayment, noteText); + Note note = Note.loanTransactionNote(loan, loanRepayment, noteText); this.noteRepository.save(note); } @@ -396,14 +394,14 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf @Transactional @Override - public EntityIdentifier adjustLoanTransaction(AdjustLoanTransactionCommand command) { + public EntityIdentifier adjustLoanTransaction(final AdjustLoanTransactionCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); AdjustLoanTransactionCommandValidator validator = new AdjustLoanTransactionCommandValidator(command); validator.validate(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -432,8 +430,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf String noteText = command.getNote(); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanTransactionNote(currentUser.getOrganisation(), - loan, newTransactionDetail, noteText); + Note note = Note.loanTransactionNote(loan, newTransactionDetail, noteText); this.noteRepository.save(note); } @@ -444,12 +441,12 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf @Override public EntityIdentifier waiveLoanAmount(LoanTransactionCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); LoanTransactionCommandValidator validator = new LoanTransactionCommandValidator(command); validator.validate(); - Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), command.getLoanId())); + Loan loan = this.loanRepository.findOne(command.getLoanId()); if (loan == null) { throw new LoanNotFoundException(command.getLoanId()); } @@ -468,7 +465,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf String noteText = command.getNote(); if (StringUtils.isNotBlank(noteText)) { - Note note = Note.loanTransactionNote(currentUser.getOrganisation(), loan, waiver, noteText); + Note note = Note.loanTransactionNote(loan, waiver, noteText); this.noteRepository.save(note); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java index 17f38a938..908eb0a80 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java @@ -23,7 +23,6 @@ import org.mifosng.platform.loan.domain.InterestCalculationPeriodMethod; import org.mifosng.platform.loan.domain.InterestMethod; import org.mifosng.platform.loan.domain.PeriodFrequencyType; import org.mifosng.platform.security.PlatformSecurityContext; -import org.mifosng.platform.user.domain.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -76,29 +75,25 @@ public class LoanProductReadPlatformServiceImpl implements @Override public Collection retrieveAllLoanProducts() { - AppUser currentUser = this.context.authenticatedUser(); + this.context.authenticatedUser(); LoanProductMapper rm = new LoanProductMapper(); - String sql = "select " + rm.loanProductSchema() - + " where lp.org_id = ?"; + String sql = "select " + rm.loanProductSchema(); - return this.jdbcTemplate.query(sql, rm, new Object[] { currentUser - .getOrganisation().getId() }); + return this.jdbcTemplate.query(sql, rm, new Object[] {}); } @Override public Collection retrieveAllLoanProductsForLookup() { - AppUser currentUser = this.context.authenticatedUser(); + this.context.authenticatedUser(); LoanProductLookupMapper rm = new LoanProductLookupMapper(); - String sql = "select " + rm.loanProductLookupSchema() - + " where lp.org_id = ?"; + String sql = "select " + rm.loanProductLookupSchema(); - return this.jdbcTemplate.query(sql, rm, new Object[] { currentUser - .getOrganisation().getId() }); + return this.jdbcTemplate.query(sql, rm, new Object[] {}); } @Override diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java index abbca000b..209f30935 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java @@ -1,7 +1,5 @@ package org.mifosng.platform.loanproduct.service; -import static org.mifosng.platform.Specifications.*; - import java.math.BigDecimal; import org.mifosng.platform.api.commands.LoanProductCommand; @@ -18,9 +16,7 @@ import org.mifosng.platform.loan.domain.LoanProduct; import org.mifosng.platform.loan.domain.LoanProductRepository; import org.mifosng.platform.loan.domain.PeriodFrequencyType; import org.mifosng.platform.loanschedule.domain.AprCalculator; -import org.mifosng.platform.organisation.domain.Organisation; import org.mifosng.platform.security.PlatformSecurityContext; -import org.mifosng.platform.user.domain.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -46,7 +42,7 @@ public class LoanProductWritePlatformServiceJpaRepositoryImpl implements LoanPro @Override public EntityIdentifier createLoanProduct(final LoanProductCommand command) { - AppUser currentUser = this.context.authenticatedUser(); + this.context.authenticatedUser(); LoanProductCommandValidator validator = new LoanProductCommandValidator(command); validator.validateForCreate(); @@ -68,9 +64,9 @@ public class LoanProductWritePlatformServiceJpaRepositoryImpl implements LoanPro BigDecimal annualInterestRate = this.aprCalculator.calculateFrom(interestFrequencyType, command.getInterestRatePerPeriodValue()); // associating fund with loan product at creation is optional for now. - Fund fund = findFundByIdIfProvided(currentUser.getOrganisation(), command.getFundId()); + Fund fund = findFundByIdIfProvided(command.getFundId()); - LoanProduct loanproduct = new LoanProduct(currentUser.getOrganisation(), fund, command.getName(), command.getDescription(), + LoanProduct loanproduct = new LoanProduct(fund, command.getName(), command.getDescription(), currency, command.getPrincipalValue(), command.getInterestRatePerPeriodValue(), interestFrequencyType, annualInterestRate, interestMethod, interestCalculationPeriodMethod, command.getRepaymentEveryValue(), repaymentFrequencyType, command.getNumberOfRepaymentsValue(), @@ -81,10 +77,10 @@ public class LoanProductWritePlatformServiceJpaRepositoryImpl implements LoanPro return new EntityIdentifier(loanproduct.getId()); } - private Fund findFundByIdIfProvided(final Organisation organisation, final Long fundId) { + private Fund findFundByIdIfProvided(final Long fundId) { Fund fund = null; if (fundId != null) { - fund = this.fundRepository.findOne(fundsThatMatch(organisation, fundId)); + fund = this.fundRepository.findOne(fundId); if (fund == null) { throw new FundNotFoundException(fundId); } @@ -96,18 +92,18 @@ public class LoanProductWritePlatformServiceJpaRepositoryImpl implements LoanPro @Override public EntityIdentifier updateLoanProduct(LoanProductCommand command) { - AppUser currentUser = this.context.authenticatedUser(); + this.context.authenticatedUser(); LoanProductCommandValidator validator = new LoanProductCommandValidator(command); validator.validateForUpdate(); - LoanProduct product = this.loanProductRepository.findOne(productThatMatches(currentUser.getOrganisation(), command.getId())); + LoanProduct product = this.loanProductRepository.findOne(command.getId()); if (product == null) { throw new LoanProductNotFoundException(command.getId()); } // associating fund with loan product at creation is optional for now. - Fund fund = findFundByIdIfProvided(currentUser.getOrganisation(), command.getFundId()); + Fund fund = findFundByIdIfProvided(command.getFundId()); product.update(command, fund); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/Office.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/Office.java index 6519a53aa..4253991e8 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/Office.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/Office.java @@ -25,16 +25,11 @@ import org.mifosng.platform.user.domain.AppUser; @Entity @Table(name = "org_office", uniqueConstraints={ - @UniqueConstraint(columnNames = {"org_id", "name"}, name="name_org"), - @UniqueConstraint(columnNames = {"org_id", "external_id"}, name="externalid_org") + @UniqueConstraint(columnNames = {"name"}, name="name_org"), + @UniqueConstraint(columnNames = {"external_id"}, name="externalid_org") }) public class Office extends AbstractAuditableCustom { - @SuppressWarnings("unused") - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private final Organisation organisation; - @OneToMany(fetch = FetchType.EAGER) @JoinColumn(name = "parent_id") private final List children = new LinkedList(); @@ -57,24 +52,22 @@ public class Office extends AbstractAuditableCustom { @Column(name = "external_id", length=100) private String externalId; - public static Office headOffice(final Organisation org, final String name, final LocalDate openingDate, final String externalId) { - return new Office(org, null, name, openingDate, externalId); + public static Office headOffice(final String name, final LocalDate openingDate, final String externalId) { + return new Office(null, name, openingDate, externalId); } - public static Office createNew(Organisation organisation, Office parent, String name, LocalDate openingDate, String externalId) { - return new Office(organisation, parent, name, openingDate, externalId); + public static Office createNew(final Office parent, final String name, final LocalDate openingDate, final String externalId) { + return new Office(parent, name, openingDate, externalId); } protected Office() { - this.organisation = null; this.openingDate = null; this.parent = null; this.name = null; this.externalId = null; } - public Office(final Organisation organisation, final Office parent, final String name, final LocalDate openingDate, final String externalId) { - this.organisation = organisation; + public Office(final Office parent, final String name, final LocalDate openingDate, final String externalId) { this.parent = parent; this.openingDate = openingDate.toDateMidnight().toDate(); if (parent != null) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OfficeTransaction.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OfficeTransaction.java index 7907bbc13..8a12314de 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OfficeTransaction.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OfficeTransaction.java @@ -23,24 +23,30 @@ import org.mifosng.platform.user.domain.AppUser; @Table(name = "portfolio_office_transaction") public class OfficeTransaction extends AbstractAuditableCustom { + @SuppressWarnings("unused") @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "from_office_id") private Office from; + @SuppressWarnings("unused") @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "to_office_id") private Office to; + @SuppressWarnings("unused") @Column(name = "transaction_date", nullable = false) @Temporal(TemporalType.DATE) private Date transactionDate; + @SuppressWarnings("unused") @Embedded private MonetaryCurrency currency; + @SuppressWarnings("unused") @Column(name = "transaction_amount", scale = 6, precision = 19, nullable = false) private BigDecimal transactionAmount; + @SuppressWarnings("unused") @Column(name = "description", nullable=true, length=100) private String description; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/Organisation.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/Organisation.java deleted file mode 100644 index d64680431..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/Organisation.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.mifosng.platform.organisation.domain; - -import java.util.Date; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; - -import org.joda.time.LocalDate; -import org.mifosng.platform.infrastructure.AbstractAuditableCustom; -import org.mifosng.platform.user.domain.AppUser; - -@Entity -@Table(name = "org_organisation") -public class Organisation extends AbstractAuditableCustom { - - @Column(name = "name", nullable = false, unique=true, length=100) - private final String name; - - @Column(name = "opening_date", nullable = false) - @Temporal(TemporalType.DATE) - private final Date openingDate; - - @Column(name = "contact_email", nullable = false, length=100) - private final String contactEmail; - - @Column(name = "contact_name", nullable = false, length=100) - private final String contactName; - - @OneToMany(mappedBy = "organisation", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true) - private Set allowedCurrencies; - - protected Organisation() { - this.name = null; - this.openingDate = null; - this.contactEmail = null; - this.contactName = null; - this.allowedCurrencies = null; - } - - public Organisation(final String name, final LocalDate openingDate, - final String contactEmail, final String contactName, - final List currencies - ) { - this.name = name.trim(); - this.contactEmail = contactEmail.trim(); - this.contactName = contactName.trim(); - this.openingDate = openingDate.toDateMidnight().toDate(); - this.setAllowedCurrencies(new LinkedHashSet( - currencies)); - } - - public String defaultHeadOfficeName() { - return this.name + " Head Office"; - } - - public LocalDate openingDate() { - return new LocalDate(this.openingDate); - } - - public String getContactEmail() { - return this.contactEmail; - } - - public String getContactName() { - return this.contactName; - } - - public String getName() { - return this.name; - } - - public void addAllowedCurrency(final OrganisationCurrency currency) { - currency.updateOrganisation(this); - this.allowedCurrencies.add(currency); - } - - public void setAllowedCurrencies( - final Set allowedCurrencies) { - this.allowedCurrencies = allowedCurrencies; - for (OrganisationCurrency currency : allowedCurrencies) { - currency.updateOrganisation(this); - } - } -} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OrganisationCurrency.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OrganisationCurrency.java index 8d3b12040..d4b7c1700 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OrganisationCurrency.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OrganisationCurrency.java @@ -2,8 +2,6 @@ package org.mifosng.platform.organisation.domain; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; import javax.persistence.Table; import org.mifosng.platform.infrastructure.AbstractAuditableCustom; @@ -13,11 +11,6 @@ import org.mifosng.platform.user.domain.AppUser; @Table(name = "org_organisation_currency") public class OrganisationCurrency extends AbstractAuditableCustom { - @SuppressWarnings("unused") - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private Organisation organisation; - @SuppressWarnings("unused") @Column(name = "code", nullable = false, length=3) private final String code; @@ -53,8 +46,4 @@ public class OrganisationCurrency extends AbstractAuditableCustom this.nameCode = nameCode; this.displaySymbol = displaySymbol; } - - public void updateOrganisation(final Organisation organisation) { - this.organisation = organisation; - } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OrganisationRepository.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OrganisationRepository.java deleted file mode 100644 index bb4ba4522..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/domain/OrganisationRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.mifosng.platform.organisation.domain; - -import org.springframework.data.jpa.repository.JpaRepository; - -public interface OrganisationRepository extends JpaRepository { - // no added behaviour -} diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java index 2c8a560b5..8beb0810a 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeReadPlatformServiceImpl.java @@ -91,10 +91,9 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService OfficeMapper rm = new OfficeMapper(); String sql = "select " + rm.officeSchema() - + "where o.org_id = ? and o.hierarchy like ? order by o.hierarchy"; + + "where o.hierarchy like ? order by o.hierarchy"; - return this.jdbcTemplate.query(sql, rm, new Object[] { - currentUser.getOrganisation().getId(), hierarchySearchString }); + return this.jdbcTemplate.query(sql, rm, new Object[] {hierarchySearchString}); } @Override @@ -107,25 +106,21 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService OfficeLookupMapper rm = new OfficeLookupMapper(); String sql = "select " + rm.officeLookupSchema() - + "where o.org_id = ? and o.hierarchy like ? order by o.hierarchy"; + + "where o.hierarchy like ? order by o.hierarchy"; - return this.jdbcTemplate.query(sql, rm, new Object[] { - currentUser.getOrganisation().getId(), hierarchySearchString }); + return this.jdbcTemplate.query(sql, rm, new Object[] {hierarchySearchString}); } @Override public OfficeData retrieveOffice(final Long officeId) { try { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); OfficeMapper rm = new OfficeMapper(); - String sql = "select " + rm.officeSchema() - + " where o.org_id = ? and o.id = ?"; + String sql = "select " + rm.officeSchema() + " where o.id = ?"; - OfficeData selectedOffice = this.jdbcTemplate.queryForObject(sql, - rm, new Object[] { currentUser.getOrganisation().getId(), - officeId }); + OfficeData selectedOffice = this.jdbcTemplate.queryForObject(sql, rm, new Object[] {officeId}); return selectedOffice; } catch (EmptyResultDataAccessException e) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeWritePlatformServiceJpaRepositoryImpl.java index db9da1b25..3108be4e1 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/organisation/service/OfficeWritePlatformServiceJpaRepositoryImpl.java @@ -1,7 +1,5 @@ package org.mifosng.platform.organisation.service; -import static org.mifosng.platform.Specifications.officesThatMatch; - import org.mifosng.platform.api.commands.BranchMoneyTransferCommand; import org.mifosng.platform.api.commands.OfficeCommand; import org.mifosng.platform.currency.domain.ApplicationCurrency; @@ -13,9 +11,9 @@ import org.mifosng.platform.exceptions.NoAuthorizationException; import org.mifosng.platform.exceptions.OfficeNotFoundException; import org.mifosng.platform.exceptions.PlatformDataIntegrityException; import org.mifosng.platform.organisation.domain.Office; +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.organisation.domain.OfficeRepository; import org.mifosng.platform.security.PlatformSecurityContext; import org.mifosng.platform.user.domain.AppUser; import org.slf4j.Logger; @@ -58,7 +56,7 @@ public class OfficeWritePlatformServiceJpaRepositoryImpl implements OfficeWriteP Office parent = validateUserPriviledgeOnOfficeAndRetrieve(currentUser, command.getParentId()); - Office office = Office.createNew(currentUser.getOrganisation(), parent, command.getName(), command.getOpeningLocalDate(), command.getExternalId()); + Office office = Office.createNew(parent, command.getName(), command.getOpeningLocalDate(), command.getExternalId()); // pre save to generate id for use in office hierarchy this.officeRepository.save(office); @@ -106,17 +104,17 @@ public class OfficeWritePlatformServiceJpaRepositoryImpl implements OfficeWriteP @Override public Long interBranchMoneyTransfer(final BranchMoneyTransferCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); BranchMoneyTransferCommandValidator validator = new BranchMoneyTransferCommandValidator(command); validator.validateInterBranchTransfer(); - Office fromOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), command.getFromOfficeId())); + Office fromOffice = this.officeRepository.findOne(command.getFromOfficeId()); if (fromOffice == null) { throw new OfficeNotFoundException(command.getFromOfficeId()); } - Office toOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), command.getToOfficeId())); + Office toOffice = this.officeRepository.findOne(command.getToOfficeId()); if (toOffice == null) { throw new OfficeNotFoundException(command.getToOfficeId()); } @@ -141,13 +139,13 @@ public class OfficeWritePlatformServiceJpaRepositoryImpl implements OfficeWriteP @Override public Long externalBranchMoneyTransfer(BranchMoneyTransferCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); BranchMoneyTransferCommandValidator validator = new BranchMoneyTransferCommandValidator(command); validator.validateExternalBranchTransfer(); - Office fromOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), command.getFromOfficeId())); - Office toOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), command.getToOfficeId())); + Office fromOffice = this.officeRepository.findOne(command.getFromOfficeId()); + Office toOffice = this.officeRepository.findOne(command.getToOfficeId()); if (fromOffice == null && toOffice == null) { throw new OfficeNotFoundException(command.getToOfficeId()); } @@ -189,7 +187,7 @@ public class OfficeWritePlatformServiceJpaRepositoryImpl implements OfficeWriteP */ private Office validateUserPriviledgeOnOfficeAndRetrieve(AppUser currentUser, Long officeId) { - Office userOffice = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), currentUser.getOffice().getId())); + Office userOffice = this.officeRepository.findOne(currentUser.getOffice().getId()); if (userOffice == null) { throw new OfficeNotFoundException(currentUser.getOffice().getId()); } @@ -200,7 +198,7 @@ public class OfficeWritePlatformServiceJpaRepositoryImpl implements OfficeWriteP Office officeToReturn = userOffice; if (!userOffice.identifiedBy(officeId)) { - officeToReturn = this.officeRepository.findOne(officesThatMatch(currentUser.getOrganisation(), officeId)); + officeToReturn = this.officeRepository.findOne(officeId); if (officeToReturn == null) { throw new OfficeNotFoundException(officeId); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/AppUser.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/AppUser.java index 8c1b14b57..b6087cfb7 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/AppUser.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/AppUser.java @@ -19,13 +19,12 @@ import javax.persistence.UniqueConstraint; import org.mifosng.platform.infrastructure.AbstractAuditableCustom; import org.mifosng.platform.infrastructure.PlatformUser; import org.mifosng.platform.organisation.domain.Office; -import org.mifosng.platform.organisation.domain.Organisation; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.User; @Entity -@Table(name = "admin_appuser", uniqueConstraints=@UniqueConstraint(columnNames = {"org_id", "username"}, name="username_org")) +@Table(name = "admin_appuser", uniqueConstraints=@UniqueConstraint(columnNames = {"username"}, name="username_org")) public class AppUser extends AbstractAuditableCustom implements PlatformUser { @Column(name = "email", nullable=false, length=100) @@ -58,10 +57,6 @@ public class AppUser extends AbstractAuditableCustom implements P @Column(name = "firsttime_login_remaining", nullable=false) private boolean firstTimeLoginRemaining; - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private final Organisation organisation; - @ManyToOne @JoinColumn(name = "office_id") private Office office; @@ -71,9 +66,9 @@ public class AppUser extends AbstractAuditableCustom implements P private Set roles; - public static AppUser createNew(Organisation organisation, Office office, - Set allRoles, String username, String email, - String firstname, String lastname, String password) { + public static AppUser createNew(final Office office, + final Set allRoles, final String username, final String email, + final String firstname, final String lastname, final String password) { boolean userEnabled = true; boolean userAccountNonExpired = true; @@ -84,11 +79,10 @@ public class AppUser extends AbstractAuditableCustom implements P authorities.add(new SimpleGrantedAuthority("DUMMY_ROLE_NOT_USED_OR_PERSISTED_TO_AVOID_EXCEPTION")); User user = new User(username, password, userEnabled, userAccountNonExpired, userCredentialsNonExpired, userAccountNonLocked, authorities); - return new AppUser(organisation, office, user, allRoles, email, firstname, lastname); + return new AppUser(office, user, allRoles, email, firstname, lastname); } protected AppUser() { - this.organisation = null; this.office = null; this.email = null; this.username = null; @@ -101,8 +95,7 @@ public class AppUser extends AbstractAuditableCustom implements P this.firstTimeLoginRemaining = true; } - public AppUser(final Organisation organisation, final Office office, final User user, final Set roles, final String email, final String firstname, final String lastname) { - this.organisation = organisation; + public AppUser(final Office office, final User user, final Set roles, final String email, final String firstname, final String lastname) { this.office = office; this.email = email.trim(); this.username = user.getUsername().trim(); @@ -214,10 +207,6 @@ public class AppUser extends AbstractAuditableCustom implements P this.setId(id); } - public Organisation getOrganisation() { - return this.organisation; - } - public Office getOffice() { return this.office; } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/JpaUserDomainService.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/JpaUserDomainService.java index a1e02b69a..4dc77f954 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/JpaUserDomainService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/JpaUserDomainService.java @@ -4,19 +4,12 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; - import org.mifosng.platform.infrastructure.EmailDetail; import org.mifosng.platform.infrastructure.PlatformEmailService; import org.mifosng.platform.infrastructure.PlatformPasswordEncoder; import org.mifosng.platform.infrastructure.RandomPasswordGenerator; import org.mifosng.platform.organisation.domain.Office; -import org.mifosng.platform.organisation.domain.Organisation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -38,29 +31,19 @@ public class JpaUserDomainService implements UserDomainService { @Autowired private PlatformEmailService emailService; - public static Specification thatMatch(final Organisation organisation) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.equal(root.get("organisation"), organisation); - } - }; - } - @Transactional @Override - public void createDefaultAdminUser(final Organisation organisation, final Office office) { + public void createDefaultAdminUser(final Office office) { - this.userPriviledgeDomainService.createAllOrganisationRolesAndPermissions(organisation); + this.userPriviledgeDomainService.createAllOrganisationRolesAndPermissions(); - List organisationalRoles = this.roleRepository.findAll(thatMatch(organisation)); + List organisationalRoles = this.roleRepository.findAll(); Set allRoles = new HashSet(organisationalRoles); - String username = "admin" + organisation.getId(); + String username = "admin"; String password = ""; - AppUser defaultAdministrator = AppUser.createNew(organisation, office, allRoles, username, organisation.getContactEmail(), "Organisation", "Administrator", password); + AppUser defaultAdministrator = AppUser.createNew(office, allRoles, username, "email?", "Organisation", "Administrator", password); this.create(defaultAdministrator); } @@ -81,7 +64,7 @@ public class JpaUserDomainService implements UserDomainService { this.userRepository.save(appUser); - EmailDetail emailDetail = new EmailDetail(appUser.getOrganisation().getName(), appUser.getOrganisation().getContactName(), appUser.getEmail(), appUser.getUsername()); + EmailDetail emailDetail = new EmailDetail(appUser.getFirstname(), appUser.getFirstname(), appUser.getEmail(), appUser.getUsername()); this.emailService.sendToUserAccount(emailDetail, unencodedPassword); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/JpaUserPriviledgeDomainService.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/JpaUserPriviledgeDomainService.java index 62bbd4de3..e0b4d3232 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/JpaUserPriviledgeDomainService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/JpaUserPriviledgeDomainService.java @@ -2,7 +2,6 @@ package org.mifosng.platform.user.domain; import java.util.Arrays; -import org.mifosng.platform.organisation.domain.Organisation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,48 +17,48 @@ public class JpaUserPriviledgeDomainService implements UserPriviledgeDomainServi @Transactional @Override - public void createAllOrganisationRolesAndPermissions(final Organisation organisation) { + public void createAllOrganisationRolesAndPermissions() { // 2. create out of the box application permissions and roles - Permission viewUsersAndRolesPermission = new PermissionBuilder().viewUsersAndRoles().with(organisation).build(); - Permission createUserPermission = new PermissionBuilder().userCreation().with(organisation).build(); - Permission createRolePermission = new PermissionBuilder().roleCreation().with(organisation).build(); - Permission updateApplicationPermissionsPermission = new PermissionBuilder().updateApplicationPermissions().with(organisation).build(); + Permission viewUsersAndRolesPermission = new PermissionBuilder().viewUsersAndRoles().build(); + Permission createUserPermission = new PermissionBuilder().userCreation().build(); + Permission createRolePermission = new PermissionBuilder().roleCreation().build(); + Permission updateApplicationPermissionsPermission = new PermissionBuilder().updateApplicationPermissions().build(); Permission[] userAdminPermissions = new Permission[] {viewUsersAndRolesPermission, createUserPermission, createRolePermission, updateApplicationPermissionsPermission}; - Permission viewOrganisationOfficesStaffAndProductsPermission = new PermissionBuilder().viewOrganisationsOfficesStaffAndProducts().with(organisation).build(); - Permission addOfficePermission = new PermissionBuilder().addOffice().with(organisation).build(); - Permission addStaffPermission = new PermissionBuilder().addStaff().with(organisation).build(); - Permission addLoanProductPermission = new PermissionBuilder().addLoanProduct().with(organisation).build(); + Permission viewOrganisationOfficesStaffAndProductsPermission = new PermissionBuilder().viewOrganisationsOfficesStaffAndProducts().build(); + Permission addOfficePermission = new PermissionBuilder().addOffice().build(); + Permission addStaffPermission = new PermissionBuilder().addStaff().build(); + Permission addLoanProductPermission = new PermissionBuilder().addLoanProduct().build(); Permission[] organisationAdminPermissions = new Permission[] {viewOrganisationOfficesStaffAndProductsPermission, addOfficePermission ,addStaffPermission, addLoanProductPermission}; - Permission viewLoanPortfolioPermission = new PermissionBuilder().viewLoanPortfolio().with(organisation).build(); - Permission addLoanPermission = new PermissionBuilder().addLoan().with(organisation).build(); - Permission addBackdatedLoanPermission = new PermissionBuilder().addBackdatedLoan().with(organisation).build(); - Permission approveLoanPermission = new PermissionBuilder().approveLoan().with(organisation).build(); - Permission approveLoanWithPastDatePermission = new PermissionBuilder().approveLoanInThePast().with(organisation).build(); - Permission rejectLoanPermission = new PermissionBuilder().rejectLoan().with(organisation).build(); - Permission rejectLoanWithPastDatePermission = new PermissionBuilder().rejectLoanInThePast().with(organisation).build(); - Permission withdrawLoanPermission = new PermissionBuilder().withdrawLoan().with(organisation).build(); - Permission withdrawLoanWithPastDatePermission = new PermissionBuilder().withdrawLoanInThePast().with(organisation).build(); - Permission undoLoanApprovalPermission = new PermissionBuilder().undoLoanApproval().with(organisation).build(); + Permission viewLoanPortfolioPermission = new PermissionBuilder().viewLoanPortfolio().build(); + Permission addLoanPermission = new PermissionBuilder().addLoan().build(); + Permission addBackdatedLoanPermission = new PermissionBuilder().addBackdatedLoan().build(); + Permission approveLoanPermission = new PermissionBuilder().approveLoan().build(); + Permission approveLoanWithPastDatePermission = new PermissionBuilder().approveLoanInThePast().build(); + Permission rejectLoanPermission = new PermissionBuilder().rejectLoan().build(); + Permission rejectLoanWithPastDatePermission = new PermissionBuilder().rejectLoanInThePast().build(); + Permission withdrawLoanPermission = new PermissionBuilder().withdrawLoan().build(); + Permission withdrawLoanWithPastDatePermission = new PermissionBuilder().withdrawLoanInThePast().build(); + Permission undoLoanApprovalPermission = new PermissionBuilder().undoLoanApproval().build(); - Permission disburseLoanPermission = new PermissionBuilder().disburseLoan().with(organisation).build(); - Permission disburseLoanWithPastDatePermission = new PermissionBuilder().disburseLoanInThePast().with(organisation).build(); - Permission undoLoanDisbursalPermission = new PermissionBuilder().undoLoanDisbursal().with(organisation).build(); + Permission disburseLoanPermission = new PermissionBuilder().disburseLoan().build(); + Permission disburseLoanWithPastDatePermission = new PermissionBuilder().disburseLoanInThePast().build(); + Permission undoLoanDisbursalPermission = new PermissionBuilder().undoLoanDisbursal().build(); - Permission makeLoanRepaymentPermission = new PermissionBuilder().makeLoanRepayment().with(organisation).build(); - Permission makeLoanRepaymentWithPastDatePermission = new PermissionBuilder().makeLoanRepaymentInThePast().with(organisation).build(); + Permission makeLoanRepaymentPermission = new PermissionBuilder().makeLoanRepayment().build(); + Permission makeLoanRepaymentWithPastDatePermission = new PermissionBuilder().makeLoanRepaymentInThePast().build(); - // Permission writeoffLoanPermission = new PermissionBuilder().writeoffLoan().with(organisation).build(); - // Permission writeoffLoanWithPastDatePermission = new PermissionBuilder().writeoffLoanInThePast().with(organisation).build(); + // Permission writeoffLoanPermission = new PermissionBuilder().writeoffLoan().build(); + // Permission writeoffLoanWithPastDatePermission = new PermissionBuilder().writeoffLoanInThePast().build(); - // Permission rescheduleLoanPermission = new PermissionBuilder().rescheduleLoan().with(organisation).build(); - // Permission rescheduleLoanWithPastDatePermission = new PermissionBuilder().rescheduleInThePast().with(organisation).build(); + // Permission rescheduleLoanPermission = new PermissionBuilder().rescheduleLoan().build(); + // Permission rescheduleLoanWithPastDatePermission = new PermissionBuilder().rescheduleInThePast().build(); // MIFOS-2878 - support recovery of payments for written off loans. @@ -89,7 +88,7 @@ public class JpaUserPriviledgeDomainService implements UserPriviledgeDomainServi }; Permission dataMigrationPermission = new PermissionBuilder() - .dataMigration().with(organisation).build(); + .dataMigration().build(); Permission[] migrationPermissions = new Permission[] { dataMigrationPermission }; @@ -101,13 +100,13 @@ public class JpaUserPriviledgeDomainService implements UserPriviledgeDomainServi // 2. roles String userAdminRoleDescription = "A user administrator can create new roles, assign and update roles assigned to users and create and deactivate users."; - Role userAdminRole = new Role(organisation, "User Administrator", userAdminRoleDescription, Arrays.asList(userAdminPermissions)); + Role userAdminRole = new Role("User Administrator", userAdminRoleDescription, Arrays.asList(userAdminPermissions)); String organisationAdminRoleDescription = "A organisation administrator can view, create and update organisation office hierarchy, staff and products."; - Role organisatonAdminRole = new Role(organisation, "Organisation Administrator", organisationAdminRoleDescription, Arrays.asList(organisationAdminPermissions)); + Role organisatonAdminRole = new Role("Organisation Administrator", organisationAdminRoleDescription, Arrays.asList(organisationAdminPermissions)); String fullLoanPortfolioRoleDescription = "A loan portfolio user can view, create and update client, group and loan information."; - Role loanPortfolioFullRole = new Role(organisation, "Full Loan Portfolio", fullLoanPortfolioRoleDescription, Arrays.asList(fullLoanPortfolioPermissions)); + Role loanPortfolioFullRole = new Role("Full Loan Portfolio", fullLoanPortfolioRoleDescription, Arrays.asList(fullLoanPortfolioPermissions)); this.roleRepository.save(Arrays.asList(userAdminRole, organisatonAdminRole, loanPortfolioFullRole)); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Permission.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Permission.java index 7a1c5556d..212dce673 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Permission.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Permission.java @@ -4,12 +4,9 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; import javax.persistence.Table; import org.mifosng.platform.api.data.PermissionData; -import org.mifosng.platform.organisation.domain.Organisation; import org.springframework.data.jpa.domain.AbstractPersistable; @Entity @@ -29,21 +26,14 @@ public class Permission extends AbstractPersistable { @Enumerated(EnumType.ORDINAL) private final PermissionGroup permissionGroup; - @ManyToOne - @JoinColumn(name = "org_id", nullable = false) - private final Organisation organisation; - public Permission() { this.code = null; this.defaultDescription = null; - this.organisation = null; this.defaultName = null; this.permissionGroup = null; } - public Permission(final Organisation organisation, final String code, final String defaultDescription, final String defaultName, - final PermissionGroup permissionGroup) { - this.organisation = organisation; + public Permission(final String code, final String defaultDescription, final String defaultName, final PermissionGroup permissionGroup) { this.code = code; this.defaultDescription = defaultDescription; this.permissionGroup = permissionGroup; @@ -59,6 +49,6 @@ public class Permission extends AbstractPersistable { } public PermissionData toData() { - return new PermissionData(this.getId(), this.organisation.getId(), this.defaultName, this.defaultDescription, this.code, this.permissionGroup.ordinal()); + return new PermissionData(this.getId(), this.defaultName, this.defaultDescription, this.code, this.permissionGroup.ordinal()); } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/PermissionBuilder.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/PermissionBuilder.java index fb6503469..f5ce56b9c 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/PermissionBuilder.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/PermissionBuilder.java @@ -1,245 +1,238 @@ package org.mifosng.platform.user.domain; -import org.mifosng.platform.organisation.domain.Organisation; - public class PermissionBuilder { - private Organisation organisation; - private String code; - private String name; - private String description; - private PermissionGroup permissionGroup; + private String code; + private String name; + private String description; + private PermissionGroup permissionGroup; - public Permission build() { - return new Permission(this.organisation, this.code, this.description, this.name, this.permissionGroup); - } + public Permission build() { + return new Permission(this.code, this.description, this.name, + this.permissionGroup); + } - public PermissionBuilder with(final Organisation withOrg) { - this.organisation = withOrg; - return this; - } + public PermissionBuilder userCreation() { + this.code = "CAN_CREATE_APPLICATION_USER_ROLE"; + this.name = "User Creation"; + this.description = "Allows an application user to create other users for the application."; + this.permissionGroup = PermissionGroup.USER_ADMINISTRATION; + return this; + } - public PermissionBuilder userCreation() { - this.code = "CAN_CREATE_APPLICATION_USER_ROLE"; - this.name = "User Creation"; - this.description = "Allows an application user to create other users for the application."; - this.permissionGroup = PermissionGroup.USER_ADMINISTRATION; - return this; - } + public PermissionBuilder roleCreation() { + this.code = "CAN_CREATE_APPLICATION_ROLE_ROLE"; + this.name = "Role Creation"; + this.description = "Allows an application user to create other application roles for assigning to users."; + this.permissionGroup = PermissionGroup.USER_ADMINISTRATION; + return this; + } - public PermissionBuilder roleCreation() { - this.code = "CAN_CREATE_APPLICATION_ROLE_ROLE"; - this.name = "Role Creation"; - this.description = "Allows an application user to create other application roles for assigning to users."; - this.permissionGroup = PermissionGroup.USER_ADMINISTRATION; - return this; - } + public PermissionBuilder viewUsersAndRoles() { + this.code = "CAN_VIEW_USERS_AND_ROLES_ROLE"; + this.name = "View users and roles"; + this.description = "Allows an application user to view other application users and roles in their organisation."; + this.permissionGroup = PermissionGroup.USER_ADMINISTRATION; + return this; + } - public PermissionBuilder viewUsersAndRoles() { - this.code = "CAN_VIEW_USERS_AND_ROLES_ROLE"; - this.name = "View users and roles"; - this.description = "Allows an application user to view other application users and roles in their organisation."; - this.permissionGroup = PermissionGroup.USER_ADMINISTRATION; - return this; - } + public PermissionBuilder updateApplicationPermissions() { + this.code = "CAN_UPDATE_APPLICATION_PERMISSION_NAMES_AND_DESCRIPTIONS_ROLE"; + this.name = "Update name and descriptions of application permissions"; + this.description = "Allows an application user to update the names and description of application permissions for their organisation."; + this.permissionGroup = PermissionGroup.USER_ADMINISTRATION; + return this; + } - public PermissionBuilder updateApplicationPermissions() { - this.code = "CAN_UPDATE_APPLICATION_PERMISSION_NAMES_AND_DESCRIPTIONS_ROLE"; - this.name = "Update name and descriptions of application permissions"; - this.description = "Allows an application user to update the names and description of application permissions for their organisation."; - this.permissionGroup = PermissionGroup.USER_ADMINISTRATION; - return this; - } + public PermissionBuilder viewOrganisationsOfficesStaffAndProducts() { + this.code = "CAN_VIEW_ORGANISATION_WIDE_VIEW_OF_OFFICES_STAFF_AND_PRODUCTS_ROLE"; + this.name = "View organisations offices, staff and products"; + this.description = "Allows an application user to view all offices, staff and products for their organisation."; + this.permissionGroup = PermissionGroup.ORGANISATION_ADMINISTRATION; + return this; + } - public PermissionBuilder viewOrganisationsOfficesStaffAndProducts() { - this.code = "CAN_VIEW_ORGANISATION_WIDE_VIEW_OF_OFFICES_STAFF_AND_PRODUCTS_ROLE"; - this.name = "View organisations offices, staff and products"; - this.description = "Allows an application user to view all offices, staff and products for their organisation."; - this.permissionGroup = PermissionGroup.ORGANISATION_ADMINISTRATION; - return this; - } + public PermissionBuilder addOffice() { + this.code = "CAN_ADD_OFFICE_ROLE"; + this.name = "Add offices"; + this.description = "Allows an application user add new offices for their organisation."; + this.permissionGroup = PermissionGroup.ORGANISATION_ADMINISTRATION; + return this; + } - public PermissionBuilder addOffice() { - this.code = "CAN_ADD_OFFICE_ROLE"; - this.name = "Add offices"; - this.description = "Allows an application user add new offices for their organisation."; - this.permissionGroup = PermissionGroup.ORGANISATION_ADMINISTRATION; - return this; - } + public PermissionBuilder addStaff() { + this.code = "CAN_ADD_STAFF_ROLE"; + this.name = "Add staff"; + this.description = "Allows an application user add new staff members for their organisation."; + this.permissionGroup = PermissionGroup.ORGANISATION_ADMINISTRATION; + return this; + } - public PermissionBuilder addStaff() { - this.code = "CAN_ADD_STAFF_ROLE"; - this.name = "Add staff"; - this.description = "Allows an application user add new staff members for their organisation."; - this.permissionGroup = PermissionGroup.ORGANISATION_ADMINISTRATION; - return this; - } + public PermissionBuilder addLoanProduct() { + this.code = "CAN_ADD_LOAN_PRODUCT_ROLE"; + this.name = "Add loan product"; + this.description = "Allows an application user add new loan products for their organisation."; + this.permissionGroup = PermissionGroup.ORGANISATION_ADMINISTRATION; + return this; + } - public PermissionBuilder addLoanProduct() { - this.code = "CAN_ADD_LOAN_PRODUCT_ROLE"; - this.name = "Add loan product"; - this.description = "Allows an application user add new loan products for their organisation."; - this.permissionGroup = PermissionGroup.ORGANISATION_ADMINISTRATION; - return this; - } + public PermissionBuilder viewLoanPortfolio() { + this.code = "CAN_VIEW_LOAN_PORTFOLIO_ROLE"; + this.name = "View client, group and loan information"; + this.description = "Allows an application user to view client, group and loan information for their organisation."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder viewLoanPortfolio() { - this.code = "CAN_VIEW_LOAN_PORTFOLIO_ROLE"; - this.name = "View client, group and loan information"; - this.description = "Allows an application user to view client, group and loan information for their organisation."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder addLoan() { + this.code = "CAN_ADD_LOAN_ROLE"; + this.name = "Add loan."; + this.description = "Allows an application user to add a loan."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder addLoan() { - this.code = "CAN_ADD_LOAN_ROLE"; - this.name = "Add loan."; - this.description = "Allows an application user to add a loan."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder addBackdatedLoan() { + this.code = "CAN_ADD_BACKDATED_LOAN_ROLE"; + this.name = "Add backdated loan."; + this.description = "Allows an application user to add a loan where the submitted on date is in the past."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder addBackdatedLoan() { - this.code = "CAN_ADD_BACKDATED_LOAN_ROLE"; - this.name = "Add backdated loan."; - this.description = "Allows an application user to add a loan where the submitted on date is in the past."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder approveLoan() { + this.code = "CAN_APPROVE_LOAN_ROLE"; + this.name = "Approve loan."; + this.description = "Allows an application user to approve a loan."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder approveLoan() { - this.code = "CAN_APPROVE_LOAN_ROLE"; - this.name = "Approve loan."; - this.description = "Allows an application user to approve a loan."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder approveLoanInThePast() { + this.code = "CAN_APPROVE_LOAN_IN_THE_PAST_ROLE"; + this.name = "Approve loan with date in past."; + this.description = "Allows an application user to approve a loan with a date in the past."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder approveLoanInThePast() { - this.code = "CAN_APPROVE_LOAN_IN_THE_PAST_ROLE"; - this.name = "Approve loan with date in past."; - this.description = "Allows an application user to approve a loan with a date in the past."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder rejectLoan() { + this.code = "CAN_REJECT_LOAN_ROLE"; + this.name = "Reject loan."; + this.description = "Allows an application user to reject the loan application."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder rejectLoan() { - this.code = "CAN_REJECT_LOAN_ROLE"; - this.name = "Reject loan."; - this.description = "Allows an application user to reject the loan application."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder rejectLoanInThePast() { + this.code = "CAN_REJECT_LOAN_IN_THE_PAST_ROLE"; + this.name = "Reject loan with date in past."; + this.description = "Allows an application user to reject the loan application with a date in the past."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder rejectLoanInThePast() { - this.code = "CAN_REJECT_LOAN_IN_THE_PAST_ROLE"; - this.name = "Reject loan with date in past."; - this.description = "Allows an application user to reject the loan application with a date in the past."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder withdrawLoan() { + this.code = "CAN_WITHDRAW_LOAN_ROLE"; + this.name = "Withdraw loan."; + this.description = "Allows an application user to withdraw the loan application."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder withdrawLoan() { - this.code = "CAN_WITHDRAW_LOAN_ROLE"; - this.name = "Withdraw loan."; - this.description = "Allows an application user to withdraw the loan application."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder withdrawLoanInThePast() { + this.code = "CAN_WITHDRAW_LOAN_IN_THE_PAST_ROLE"; + this.name = "Withdraw loan with date in past."; + this.description = "Allows an application user to withraw the loan application with a date in the past."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder withdrawLoanInThePast() { - this.code = "CAN_WITHDRAW_LOAN_IN_THE_PAST_ROLE"; - this.name = "Withdraw loan with date in past."; - this.description = "Allows an application user to withraw the loan application with a date in the past."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder undoLoanApproval() { + this.code = "CAN_UNDO_LOAN_APPROVAL_ROLE"; + this.name = "Undo loan approval."; + this.description = "Allows an application user to undo a loan approval."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder undoLoanApproval() { - this.code = "CAN_UNDO_LOAN_APPROVAL_ROLE"; - this.name = "Undo loan approval."; - this.description = "Allows an application user to undo a loan approval."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder disburseLoan() { + this.code = "CAN_DISBURSE_LOAN_ROLE"; + this.name = "Disburse loan."; + this.description = "Allows an application user to disburse the loan."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder disburseLoan() { - this.code = "CAN_DISBURSE_LOAN_ROLE"; - this.name = "Disburse loan."; - this.description = "Allows an application user to disburse the loan."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder disburseLoanInThePast() { + this.code = "CAN_DISBURSE_LOAN_IN_THE_PAST_ROLE"; + this.name = "Disburse loan with date in past."; + this.description = "Allows an application user to disburse the loan with a date in the past."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder disburseLoanInThePast() { - this.code = "CAN_DISBURSE_LOAN_IN_THE_PAST_ROLE"; - this.name = "Disburse loan with date in past."; - this.description = "Allows an application user to disburse the loan with a date in the past."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder undoLoanDisbursal() { + this.code = "CAN_UNDO_LOAN_DISBURSAL_ROLE"; + this.name = "Undo loan disbursal."; + this.description = "Allows an application user to undo a loan disbursal (if no payments already made)."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder undoLoanDisbursal() { - this.code = "CAN_UNDO_LOAN_DISBURSAL_ROLE"; - this.name = "Undo loan disbursal."; - this.description = "Allows an application user to undo a loan disbursal (if no payments already made)."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder makeLoanRepayment() { + this.code = "CAN_MAKE_LOAN_REPAYMENT_ROLE"; + this.name = "Make loan repayment."; + this.description = "Allows an application user to make a repayment against a loan."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder makeLoanRepayment() { - this.code = "CAN_MAKE_LOAN_REPAYMENT_ROLE"; - this.name = "Make loan repayment."; - this.description = "Allows an application user to make a repayment against a loan."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder makeLoanRepaymentInThePast() { + this.code = "CAN_MAKE_LOAN_REPAYMENT_IN_THE_PAST_ROLE"; + this.name = "Make loan repayment with date in past."; + this.description = "Allows an application user to disburse the loan with a date in the past."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder makeLoanRepaymentInThePast() { - this.code = "CAN_MAKE_LOAN_REPAYMENT_IN_THE_PAST_ROLE"; - this.name = "Make loan repayment with date in past."; - this.description = "Allows an application user to disburse the loan with a date in the past."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder writeoffLoan() { + this.code = "CAN_WRITEOFF_LOAN_ROLE"; + this.name = "Write off loan."; + this.description = "Allows an application user to write off the loan application."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder writeoffLoan() { - this.code = "CAN_WRITEOFF_LOAN_ROLE"; - this.name = "Write off loan."; - this.description = "Allows an application user to write off the loan application."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder writeoffLoanInThePast() { + this.code = "CAN_WRITEOFF_LOAN_IN_THE_PAST_ROLE"; + this.name = "Write off loan with date in past."; + this.description = "Allows an application user to write off the loan application with a date in the past."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder writeoffLoanInThePast() { - this.code = "CAN_WRITEOFF_LOAN_IN_THE_PAST_ROLE"; - this.name = "Write off loan with date in past."; - this.description = "Allows an application user to write off the loan application with a date in the past."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder rescheduleLoan() { + this.code = "CAN_RESCHEDULE_LOAN_ROLE"; + this.name = "Reschedule loan."; + this.description = "Allows an application user to reschedule the loan application."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder rescheduleLoan() { - this.code = "CAN_RESCHEDULE_LOAN_ROLE"; - this.name = "Reschedule loan."; - this.description = "Allows an application user to reschedule the loan application."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } + public PermissionBuilder rescheduleInThePast() { + this.code = "CAN_RESCHEDULE_LOAN_IN_THE_PAST_ROLE"; + this.name = "Reschedule loan with date in past."; + this.description = "Allows an application user to reschedule the loan application with a date in the past."; + this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; + return this; + } - public PermissionBuilder rescheduleInThePast() { - this.code = "CAN_RESCHEDULE_LOAN_IN_THE_PAST_ROLE"; - this.name = "Reschedule loan with date in past."; - this.description = "Allows an application user to reschedule the loan application with a date in the past."; - this.permissionGroup = PermissionGroup.PORTFOLIO_MANAGEMENT; - return this; - } - - public PermissionBuilder dataMigration() { - this.code = "CAN_MIGRATE_DATA_ROLE"; - this.name = "Upload client, group and loan data onto application in bulk"; - this.description = "Allows an application user to upload client, group and loan information in bulk for their organisation."; - this.permissionGroup = PermissionGroup.DATA_MIGRATION; - return this; - } + public PermissionBuilder dataMigration() { + this.code = "CAN_MIGRATE_DATA_ROLE"; + this.name = "Upload client, group and loan data onto application in bulk"; + this.description = "Allows an application user to upload client, group and loan information in bulk for their organisation."; + this.permissionGroup = PermissionGroup.DATA_MIGRATION; + return this; + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Role.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Role.java index 303083e34..9c63646f8 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Role.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/Role.java @@ -12,13 +12,11 @@ import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; import javax.persistence.Table; import org.mifosng.platform.api.data.PermissionData; import org.mifosng.platform.api.data.RoleData; import org.mifosng.platform.infrastructure.AbstractAuditableCustom; -import org.mifosng.platform.organisation.domain.Organisation; @Entity @Table(name = "admin_role") @@ -30,10 +28,6 @@ public class Role extends AbstractAuditableCustom { @Column(name="description", nullable=false, length=500) private String description; - @ManyToOne - @JoinColumn(name="org_id", nullable=false) - private Organisation organisation; - @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "admin_role_permission", joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "permission_id")) private Set permissions; @@ -42,11 +36,9 @@ public class Role extends AbstractAuditableCustom { this.name = null; this.description = null; this.permissions = new HashSet(); - this.organisation = null; } - public Role(final Organisation organisation, final String name, final String description, final List rolePermissions) { - this.organisation = organisation; + public Role(final String name, final String description, final List rolePermissions) { this.name = name.trim(); this.description = description.trim(); this.permissions = new HashSet(rolePermissions); @@ -69,7 +61,7 @@ public class Role extends AbstractAuditableCustom { public RoleData toData() { - RoleData data = new RoleData(this.getId(), this.organisation.getId(), this.name, this.description); + RoleData data = new RoleData(this.getId(), this.name, this.description); Collection rolePermissions = new ArrayList(); for (Permission permission : this.permissions) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/UserDomainService.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/UserDomainService.java index d539e3995..e6f1dcc63 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/UserDomainService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/UserDomainService.java @@ -1,12 +1,10 @@ package org.mifosng.platform.user.domain; import org.mifosng.platform.organisation.domain.Office; -import org.mifosng.platform.organisation.domain.Organisation; - public interface UserDomainService { - void createDefaultAdminUser(Organisation organisation, Office office); + void createDefaultAdminUser(Office office); - void create(AppUser appUser); + void create(AppUser appUser); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/UserPriviledgeDomainService.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/UserPriviledgeDomainService.java index f5f4fa7ef..6be111464 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/UserPriviledgeDomainService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/domain/UserPriviledgeDomainService.java @@ -1,10 +1,7 @@ package org.mifosng.platform.user.domain; -import org.mifosng.platform.organisation.domain.Organisation; - - public interface UserPriviledgeDomainService { - void createAllOrganisationRolesAndPermissions(Organisation organisation); + void createAllOrganisationRolesAndPermissions(); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserReadPlatformServiceImpl.java index 420167a27..2ffbd1a3f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserReadPlatformServiceImpl.java @@ -1,7 +1,5 @@ package org.mifosng.platform.user.service; -import static org.mifosng.platform.Specifications.usersThatMatch; - import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; @@ -49,18 +47,16 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic @Override public Collection retrieveAllUsers() { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); List offices = new ArrayList(officeReadPlatformService.retrieveAllOffices()); String officeIdsList = generateOfficeIdInClause(offices); AppUserMapper mapper = new AppUserMapper(offices); String sql = "select " + mapper.schema() - + " where u.org_id = ? and u.office_id in (" + officeIdsList - + ") order by u.id"; + + " where u.office_id in (" + officeIdsList + ") order by u.id"; - return this.jdbcTemplate.query(sql, mapper, new Object[] { currentUser - .getOrganisation().getId() }); + return this.jdbcTemplate.query(sql, mapper, new Object[] {}); } private String generateOfficeIdInClause(List offices) { @@ -91,15 +87,15 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic } @Override - public AppUserData retrieveUser(Long userId) { + public AppUserData retrieveUser(final Long userId) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); List offices = new ArrayList(officeReadPlatformService.retrieveAllOfficesForLookup()); List availableRoles = new ArrayList(this.roleReadPlatformService.retrieveAllRoles()); - AppUser user = this.appUserRepository.findOne(usersThatMatch(currentUser.getOrganisation(), userId)); + AppUser user = this.appUserRepository.findOne(userId); if (user == null) { throw new UserNotFoundException(userId); } @@ -111,8 +107,7 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic } AppUserData userData = new AppUserData(user.getId(), - user.getUsername(), user.getEmail(), user.getOrganisation() - .getId(), user.getOffice().getId(), user.getOffice() + user.getUsername(), user.getEmail(), user.getOffice().getId(), user.getOffice() .getName()); userData.setFirstname(user.getFirstname()); userData.setLastname(user.getLastname()); @@ -143,13 +138,12 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic String firstname = rs.getString("firstname"); String lastname = rs.getString("lastname"); String email = rs.getString("email"); - Long orgId = JdbcSupport.getLong(rs, "orgId"); Long officeId = JdbcSupport.getLong(rs, "officeId"); // FIXME - change sql query to join to get office id and name information. String officeName = fromOfficeList(this.offices, officeId); - AppUserData user = new AppUserData(id, username, email, orgId, officeId, officeName); + AppUserData user = new AppUserData(id, username, email, officeId, officeName); user.setLastname(lastname); user.setFirstname(firstname); @@ -157,7 +151,7 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic } public String schema() { - return " u.id as id, u.username as username, u.firstname as firstname, u.lastname as lastname, u.email as email, u.org_id as orgId, u.office_id as officeId from admin_appuser u "; + return " u.id as id, u.username as username, u.firstname as firstname, u.lastname as lastname, u.email as email, u.office_id as officeId from admin_appuser u "; } private String fromOfficeList(final List officeList, final Long officeId) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserWritePlatformServiceJpaRepositoryImpl.java index 2c812f6c4..4bbbf37f7 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/AppUserWritePlatformServiceJpaRepositoryImpl.java @@ -1,7 +1,5 @@ package org.mifosng.platform.user.service; -import static org.mifosng.platform.Specifications.usersThatMatch; - import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -64,7 +62,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit public Long createUser(final UserCommand command) { try { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); UserCommandValidator validator = new UserCommandValidator(command); validator.validateForCreate(); @@ -81,7 +79,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit password = "autogenerate"; } - AppUser appUser = AppUser.createNew(currentUser.getOrganisation(), office, + AppUser appUser = AppUser.createNew(office, allRoles, command.getUsername(), command.getEmail(), command.getFirstname(), command.getLastname(), password); @@ -106,7 +104,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit public Long updateUser(UserCommand command) { try { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); UserCommandValidator validator = new UserCommandValidator(command); validator.validateForUpdate(); @@ -121,7 +119,7 @@ public class AppUserWritePlatformServiceJpaRepositoryImpl implements AppUserWrit } } - AppUser userToUpdate = this.appUserRepository.findOne(usersThatMatch(currentUser.getOrganisation(), command.getId())); + AppUser userToUpdate = this.appUserRepository.findOne(command.getId()); if (userToUpdate == null) { throw new UserNotFoundException(command.getId()); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java index 2002c60af..2adf02175 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java @@ -8,7 +8,6 @@ import org.mifosng.platform.api.data.PermissionData; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -29,13 +28,12 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform @Override public Collection retrieveAllPermissions() { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); PermissionMapper mapper = new PermissionMapper(); - String sql = "select " + mapper.schema() + " where p.org_id = ? order by p.id"; + String sql = "select " + mapper.schema() + " order by p.id"; - return this.jdbcTemplate.query(sql, mapper, new Object[] { currentUser - .getOrganisation().getId() }); + return this.jdbcTemplate.query(sql, mapper, new Object[] {}); } private static final class PermissionMapper implements RowMapper { @@ -44,17 +42,16 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform public PermissionData mapRow(final ResultSet rs, final int rowNum) throws SQLException { Long id = JdbcSupport.getLong(rs, "id"); - Long orgId = JdbcSupport.getLong(rs, "orgId"); String name = rs.getString("name"); String description = rs.getString("description"); String code = rs.getString("code"); Integer groupType = JdbcSupport.getInteger(rs, "groupType"); - return new PermissionData(id, orgId, name, description, code, groupType); + return new PermissionData(id, name, description, code, groupType); } public String schema() { - return " p.id as id, p.org_id as orgId, p.default_name as name, p.default_description as description, p.code as code, p.group_enum as groupType from admin_permission p "; + return " p.id as id, p.default_name as name, p.default_description as description, p.code as code, p.group_enum as groupType from admin_permission p "; } } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleReadPlatformServiceImpl.java index 5e600fb51..c7593c2cb 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleReadPlatformServiceImpl.java @@ -1,7 +1,5 @@ package org.mifosng.platform.user.service; -import static org.mifosng.platform.Specifications.rolesThatMatch; - import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; @@ -11,7 +9,6 @@ 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.AppUser; import org.mifosng.platform.user.domain.Role; import org.mifosng.platform.user.domain.RoleRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -35,19 +32,19 @@ public class RoleReadPlatformServiceImpl implements RoleReadPlatformService { @Override public Collection retrieveAllRoles() { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); RoleMapper mapper = new RoleMapper(); - String sql = "select " + mapper.schema() + " where r.org_id = ? order by r.id"; + String sql = "select " + mapper.schema() + " order by r.id"; - return this.jdbcTemplate.query(sql, mapper, new Object[] {currentUser.getOrganisation().getId() }); + return this.jdbcTemplate.query(sql, mapper, new Object[] {}); } @Override public RoleData retrieveRole(final Long id) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); - Role role = this.roleRepository.findOne(rolesThatMatch(currentUser.getOrganisation(), id)); + Role role = this.roleRepository.findOne(id); if (role == null) { throw new RoleNotFoundException(id); } @@ -61,15 +58,14 @@ public class RoleReadPlatformServiceImpl implements RoleReadPlatformService { throws SQLException { Long id = JdbcSupport.getLong(rs, "id"); - Long orgId = JdbcSupport.getLong(rs, "orgId"); String name = rs.getString("name"); String description = rs.getString("description"); - return new RoleData(id, orgId, name, description); + return new RoleData(id, name, description); } public String schema() { - return " r.id as id, r.org_id as orgId, r.name as name, r.description as description from admin_role r"; + return " r.id as id, r.name as name, r.description as description from admin_role r"; } } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleWritePlatformServiceJpaRepositoryImpl.java index 96a12e8a6..c24bf1d62 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/RoleWritePlatformServiceJpaRepositoryImpl.java @@ -1,7 +1,5 @@ package org.mifosng.platform.user.service; -import static org.mifosng.platform.Specifications.rolesThatMatch; - import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -9,7 +7,6 @@ import java.util.List; import org.mifosng.platform.api.commands.RoleCommand; import org.mifosng.platform.exceptions.RoleNotFoundException; import org.mifosng.platform.security.PlatformSecurityContext; -import org.mifosng.platform.user.domain.AppUser; import org.mifosng.platform.user.domain.Permission; import org.mifosng.platform.user.domain.PermissionRepository; import org.mifosng.platform.user.domain.Role; @@ -38,14 +35,14 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf @Override public Long createRole(final RoleCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); RoleCommandValidator validator = new RoleCommandValidator(command); validator.validateForCreate(); List selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions()); - Role entity = new Role(currentUser.getOrganisation(), command.getName(), command.getDescription(), selectedPermissions); + Role entity = new Role(command.getName(), command.getDescription(), selectedPermissions); this.roleRepository.save(entity); @@ -56,14 +53,14 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements RoleWritePlatf @Override public Long updateRole(RoleCommand command) { - AppUser currentUser = context.authenticatedUser(); + context.authenticatedUser(); RoleCommandValidator validator = new RoleCommandValidator(command); validator.validateForUpdate(); List selectedPermissions = assembleListOfSelectedPermissions(command.getPermissions()); - Role role = this.roleRepository.findOne(rolesThatMatch(currentUser.getOrganisation(), command.getId())); + Role role = this.roleRepository.findOne(command.getId()); if (role == null) { throw new RoleNotFoundException(command.getId()); }