/* This file is part of Cyclos (www.cyclos.org). A project of the Social Trade Organisation (www.socialtrade.org). Cyclos is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Cyclos is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Cyclos; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package nl.strohalm.cyclos.services.groups; import java.util.ArrayList; import java.util.Collection; import nl.strohalm.cyclos.access.AdminAdminPermission; import nl.strohalm.cyclos.access.AdminMemberPermission; import nl.strohalm.cyclos.access.AdminSystemPermission; import nl.strohalm.cyclos.entities.accounts.SystemAccountType; import nl.strohalm.cyclos.entities.accounts.transactions.TransferType; import nl.strohalm.cyclos.entities.groups.AdminGroup; import nl.strohalm.cyclos.entities.groups.MemberGroup; import nl.strohalm.cyclos.entities.members.messages.MessageCategory; import nl.strohalm.cyclos.entities.members.records.MemberRecordType; /** * Permissions for an admin group * @author luis */ public class AdminGroupPermissionsDTO extends SystemGroupPermissionsDTO<AdminGroup> { private static final long serialVersionUID = -7880633748381076158L; private Collection<TransferType> grantLoanTTs; private Collection<TransferType> systemChargebackTTs; private Collection<TransferType> memberChargebackTTs; private Collection<TransferType> asMemberToMemberTTs; private Collection<TransferType> asMemberToSelfTTs; private Collection<TransferType> asMemberToSystemTTs; private Collection<TransferType> systemToMemberTTs; private Collection<TransferType> systemToSystemTTs; private Collection<MemberGroup> managesGroups; private Collection<SystemAccountType> viewInformationOf; private Collection<AdminGroup> viewConnectedAdminsOf; private Collection<MessageCategory> messageCategories; private Collection<MemberRecordType> viewAdminRecordTypes; private Collection<MemberRecordType> createAdminRecordTypes; private Collection<MemberRecordType> modifyAdminRecordTypes; private Collection<MemberRecordType> deleteAdminRecordTypes; private Collection<MemberRecordType> viewMemberRecordTypes; private Collection<MemberRecordType> createMemberRecordTypes; private Collection<MemberRecordType> modifyMemberRecordTypes; private Collection<MemberRecordType> deleteMemberRecordTypes; public Collection<TransferType> getAsMemberToMemberTTs() { return asMemberToMemberTTs; } public Collection<TransferType> getAsMemberToSelfTTs() { return asMemberToSelfTTs; } public Collection<TransferType> getAsMemberToSystemTTs() { return asMemberToSystemTTs; } public Collection<MemberRecordType> getCreateAdminRecordTypes() { return createAdminRecordTypes; } public Collection<MemberRecordType> getCreateMemberRecordTypes() { return createMemberRecordTypes; } public Collection<MemberRecordType> getDeleteAdminRecordTypes() { return deleteAdminRecordTypes; } public Collection<MemberRecordType> getDeleteMemberRecordTypes() { return deleteMemberRecordTypes; } public Collection<TransferType> getGrantLoanTTs() { return grantLoanTTs; } public Collection<MemberGroup> getManagesGroups() { return managesGroups; } public Collection<TransferType> getMemberChargebackTTs() { return memberChargebackTTs; } @Override public Collection<MessageCategory> getMessageCategories() { return messageCategories; } public Collection<MemberRecordType> getModifyAdminRecordTypes() { return modifyAdminRecordTypes; } public Collection<MemberRecordType> getModifyMemberRecordTypes() { return modifyMemberRecordTypes; } public Collection<TransferType> getSystemChargebackTTs() { return systemChargebackTTs; } public Collection<TransferType> getSystemToMemberTTs() { return systemToMemberTTs; } public Collection<TransferType> getSystemToSystemTTs() { return systemToSystemTTs; } public Collection<MemberRecordType> getViewAdminRecordTypes() { return viewAdminRecordTypes; } public Collection<AdminGroup> getViewConnectedAdminsOf() { return viewConnectedAdminsOf; } public Collection<SystemAccountType> getViewInformationOf() { return viewInformationOf; } public Collection<MemberRecordType> getViewMemberRecordTypes() { return viewMemberRecordTypes; } public void setAsMemberToMemberTTs(final Collection<TransferType> asMemberToMemberTTs) { this.asMemberToMemberTTs = asMemberToMemberTTs; } public void setAsMemberToSelfTTs(final Collection<TransferType> asMemberToSelfTTs) { this.asMemberToSelfTTs = asMemberToSelfTTs; } public void setAsMemberToSystemTTs(final Collection<TransferType> asMemberToSystemTTs) { this.asMemberToSystemTTs = asMemberToSystemTTs; } public void setCreateAdminRecordTypes(final Collection<MemberRecordType> createAdminRecordTypes) { this.createAdminRecordTypes = createAdminRecordTypes; } public void setCreateMemberRecordTypes(final Collection<MemberRecordType> createMemberRecordTypes) { this.createMemberRecordTypes = createMemberRecordTypes; } public void setDeleteAdminRecordTypes(final Collection<MemberRecordType> deleteAdminRecordTypes) { this.deleteAdminRecordTypes = deleteAdminRecordTypes; } public void setDeleteMemberRecordTypes(final Collection<MemberRecordType> deleteMemberRecordTypes) { this.deleteMemberRecordTypes = deleteMemberRecordTypes; } public void setGrantLoanTTs(final Collection<TransferType> grantLoanTTs) { this.grantLoanTTs = grantLoanTTs; } public void setManagesGroups(final Collection<MemberGroup> managesGroups) { this.managesGroups = managesGroups; } public void setMemberChargebackTTs(final Collection<TransferType> memberChargebackTTs) { this.memberChargebackTTs = memberChargebackTTs; } @Override public void setMessageCategories(final Collection<MessageCategory> messageCategories) { this.messageCategories = messageCategories; } public void setModifyAdminRecordTypes(final Collection<MemberRecordType> modifyAdminRecordTypes) { this.modifyAdminRecordTypes = modifyAdminRecordTypes; } public void setModifyMemberRecordTypes(final Collection<MemberRecordType> modifyMemberRecordTypes) { this.modifyMemberRecordTypes = modifyMemberRecordTypes; } public void setSystemChargebackTTs(final Collection<TransferType> systemChargebackTTs) { this.systemChargebackTTs = systemChargebackTTs; } public void setSystemToMemberTTs(final Collection<TransferType> systemToMemberTTs) { this.systemToMemberTTs = systemToMemberTTs; } public void setSystemToSystemTTs(final Collection<TransferType> systemToSystemTTs) { this.systemToSystemTTs = systemToSystemTTs; } public void setViewAdminRecordTypes(final Collection<MemberRecordType> viewAdminRecordTypes) { this.viewAdminRecordTypes = viewAdminRecordTypes; } public void setViewConnectedAdminsOf(final Collection<AdminGroup> viewConnectedAdminsOf) { this.viewConnectedAdminsOf = viewConnectedAdminsOf; } public void setViewInformationOf(final Collection<SystemAccountType> viewInformationOf) { this.viewInformationOf = viewInformationOf; } public void setViewMemberRecordTypes(final Collection<MemberRecordType> viewMemberRecordTypes) { this.viewMemberRecordTypes = viewMemberRecordTypes; } @Override public void updateOperations() { // Check member view update(AdminMemberPermission.MEMBERS_VIEW, getManagesGroups()); update(AdminMemberPermission.GUARANTEES_REGISTER_GUARANTEES, getGuaranteeTypes()); update(AdminMemberPermission.DOCUMENTS_DETAILS, getDocuments()); update(AdminMemberPermission.MESSAGES_VIEW, getMessageCategories()); // Check view account information update(AdminSystemPermission.ACCOUNTS_INFORMATION, getViewInformationOf()); // Check view connected admins of update(AdminSystemPermission.STATUS_VIEW_CONNECTED_ADMINS, getViewConnectedAdminsOf()); // Check make payments update(AdminSystemPermission.PAYMENTS_PAYMENT, getSystemToSystemTTs()); update(AdminMemberPermission.PAYMENTS_PAYMENT, getSystemToMemberTTs()); update(AdminMemberPermission.LOANS_GRANT, getGrantLoanTTs()); // Check make payments as member update(AdminMemberPermission.PAYMENTS_PAYMENT_AS_MEMBER_TO_MEMBER, getAsMemberToMemberTTs()); update(AdminMemberPermission.PAYMENTS_PAYMENT_AS_MEMBER_TO_SELF, getAsMemberToSelfTTs()); update(AdminMemberPermission.PAYMENTS_PAYMENT_AS_MEMBER_TO_SYSTEM, getAsMemberToSystemTTs()); // Check chargebacks update(AdminSystemPermission.PAYMENTS_CHARGEBACK, getSystemChargebackTTs()); update(AdminMemberPermission.PAYMENTS_CHARGEBACK, getMemberChargebackTTs()); // Check view member records update(AdminMemberPermission.RECORDS_VIEW, getViewMemberRecordTypes()); // Check create member records update(AdminMemberPermission.RECORDS_CREATE, getCreateMemberRecordTypes()); // Check modify member records update(AdminMemberPermission.RECORDS_MODIFY, getModifyMemberRecordTypes()); // Check delete member records update(AdminMemberPermission.RECORDS_DELETE, getDeleteMemberRecordTypes()); // Check view member records update(AdminAdminPermission.RECORDS_VIEW, getViewAdminRecordTypes()); // Check create member records update(AdminAdminPermission.RECORDS_CREATE, getCreateAdminRecordTypes()); // Check modify member records update(AdminAdminPermission.RECORDS_MODIFY, getModifyAdminRecordTypes()); // Check delete member records update(AdminAdminPermission.RECORDS_DELETE, getDeleteAdminRecordTypes()); } @Override protected void updateCollections(final AdminGroup adminGroup) { super.updateCollections(adminGroup); final Collection<TransferType> grantLoanTTs = getGrantLoanTTs(); final Collection<TransferType> systemToMemberTTs = getSystemToMemberTTs(); final Collection<TransferType> systemToSystemTTs = getSystemToSystemTTs(); final Collection<TransferType> transferTypes = new ArrayList<TransferType>(); if (grantLoanTTs != null) { transferTypes.addAll(grantLoanTTs); } if (systemToMemberTTs != null) { transferTypes.addAll(systemToMemberTTs); } if (systemToSystemTTs != null) { transferTypes.addAll(systemToSystemTTs); } adminGroup.setTransferTypes(transferTypes); final Collection<TransferType> asMemberToMemberTTs = getAsMemberToMemberTTs(); final Collection<TransferType> asMemberToSelfTTs = getAsMemberToSelfTTs(); final Collection<TransferType> asMemberToSystemTTs = getAsMemberToSystemTTs(); final Collection<TransferType> transferTypesAsMember = new ArrayList<TransferType>(); if (asMemberToMemberTTs != null) { transferTypesAsMember.addAll(asMemberToMemberTTs); } if (asMemberToSelfTTs != null) { transferTypesAsMember.addAll(asMemberToSelfTTs); } if (asMemberToSystemTTs != null) { transferTypesAsMember.addAll(asMemberToSystemTTs); } adminGroup.setTransferTypesAsMember(transferTypesAsMember); final Collection<TransferType> chargebacks = new ArrayList<TransferType>(); if (getSystemChargebackTTs() != null) { chargebacks.addAll(getSystemChargebackTTs()); } if (getMemberChargebackTTs() != null) { chargebacks.addAll(getMemberChargebackTTs()); } adminGroup.setChargebackTransferTypes(chargebacks); adminGroup.setViewInformationOf(getViewInformationOf()); adminGroup.setManagesGroups(getManagesGroups()); adminGroup.setViewConnectedAdminsOf(getViewConnectedAdminsOf()); adminGroup.setViewAdminRecordTypes(getViewAdminRecordTypes()); adminGroup.setCreateAdminRecordTypes(getCreateAdminRecordTypes()); adminGroup.setModifyAdminRecordTypes(getModifyAdminRecordTypes()); adminGroup.setDeleteAdminRecordTypes(getDeleteAdminRecordTypes()); adminGroup.setViewMemberRecordTypes(getViewMemberRecordTypes()); adminGroup.setCreateMemberRecordTypes(getCreateMemberRecordTypes()); adminGroup.setModifyMemberRecordTypes(getModifyMemberRecordTypes()); adminGroup.setDeleteMemberRecordTypes(getDeleteMemberRecordTypes()); } }