public boolean isPosixValuesEmpty() { return getGidNumber() == null; }
public boolean isValuesEmpty() { return isPosixValuesEmpty() == true; }
/** * Sets next free gid. * * @param ldapGroupValues * @param group */ public void setDefaultValues(final LdapGroupValues ldapGroupValues) { ldapGroupValues.setGidNumber(getNextFreeGidNumber()); } }
@Override public void validate(final Form<?> form) { final LdapGroupValues values = new LdapGroupValues(); values.setGidNumber(gidNumberField.getConvertedInput()); if (StringUtils.isBlank(data.getLdapValues()) == true && values.isPosixValuesEmpty() == true) { // Nothing to validate: all fields are zero and posix account wasn't set for this group before. return; } if (values.getGidNumber() == null) { gidNumberField .error(getLocalizedMessage(WebConstants.I18N_KEY_FIELD_REQUIRED, getString("ldap.gidNumber"))); } else { if (ldapPosixGroupsUtils.isGivenNumberFree(data, values.getGidNumber()) == false) { gidNumberField.error( getLocalizedMessage("ldap.gidNumber.alreadyInUse", ldapPosixGroupsUtils.getNextFreeGidNumber())); } } } });
/** * Exports the LDAP values such as posix account properties of the given ldapGroup as xml string. * * @param ldapGroup */ public String getLdapValuesAsXml(final LdapGroup ldapGroup) { final LdapConfig ldapConfig = ldapService.getLdapConfig(); final LdapPosixAccountsConfig posixAccountsConfig = ldapConfig != null ? ldapConfig.getPosixAccountsConfig() : null; LdapGroupValues values = null; if (posixAccountsConfig != null) { values = new LdapGroupValues(); if (ldapGroup.getGidNumber() != null) { values.setGidNumber(ldapGroup.getGidNumber()); } } return getLdapValuesAsXml(values); }
fs.addHelpIcon(gridBuilder.getString("ldap.gidNumber.tooltip")); dependentLdapPosixFormComponentsList.add(gidNumberField); if (ldapGroupValues.isPosixValuesEmpty() == true) { final Button createButton = newCreateButton(dependentLdapPosixFormComponentsList); fs.add(new SingleButtonPanel(fs.newChildId(), createButton, gridBuilder.getString("create"), public void validate(final Form<?> form) final LdapGroupValues values = new LdapGroupValues(); values.setGidNumber(gidNumberField.getConvertedInput()); if (StringUtils.isBlank(data.getLdapValues()) == true && values.isPosixValuesEmpty() == true) {
ldapGroupValues = groupDOConverter.readLdapGroupValues(data.getLdapValues()); if (ldapGroupValues == null) { ldapGroupValues = new LdapGroupValues();
@Override public AbstractSecuredBasePage onSaveOrUpdate() { groupDao.setAssignedUsers(getData(), form.assignUsersListHelper.getAssignedItems()); //groupDao.setNestedGroups(getData(), form.nestedGroupsListHelper.getAssignedItems()); if (form.ldapGroupValues != null && form.ldapGroupValues.isValuesEmpty() == false) { final String xml = groupDOConverter.getLdapValuesAsXml(form.ldapGroupValues); getData().setLdapValues(xml); } return super.onSaveOrUpdate(); }
/** * Get all given gid numbers of all ProjectForge groups including any deleted group and get the next highest and free * number. The number is 1000 if no gid number (with a value greater than 999) is found. */ public int getNextFreeGidNumber() { final UserGroupCache userGroupCache = TenantRegistryMap.getInstance().getTenantRegistry().getUserGroupCache(); final Collection<GroupDO> allGroups = userGroupCache.getAllGroups(); int currentMaxNumber = 999; for (final GroupDO group : allGroups) { final LdapGroupValues ldapGroupValues = groupDOConverter.readLdapGroupValues(group.getLdapValues()); if (ldapGroupValues == null) { continue; } if (ldapGroupValues.getGidNumber() != null && ldapGroupValues.getGidNumber().intValue() > currentMaxNumber) { currentMaxNumber = ldapGroupValues.getGidNumber(); } } return currentMaxNumber + 1; }
/** * Sets the LDAP values such as posix account properties of the given ldapGroup configured in the given xml string. * * @param ldapGroup * @param ldapValuesAsXml Posix account values as xml. */ public void setLdapValues(final LdapGroup ldapGroup, final String ldapValuesAsXml) { if (StringUtils.isBlank(ldapValuesAsXml) == true) { return; } final LdapConfig ldapConfig = ldapService.getLdapConfig(); final LdapPosixAccountsConfig posixAccountsConfig = ldapConfig != null ? ldapConfig.getPosixAccountsConfig() : null; if (posixAccountsConfig == null) { // No posix account default values configured return; } final LdapGroupValues values = readLdapGroupValues(ldapValuesAsXml); if (values == null) { return; } if (values.getGidNumber() != null) { ldapGroup.setGidNumber(values.getGidNumber()); } else { ldapGroup.setGidNumber(-1); } }
/** * For preventing double gidNumbers. * * @param currentGroup * @param gidNumber * @return Returns true if any group (also deleted group) other than the given group has the given gidNumber, * otherwise false. */ public boolean isGivenNumberFree(final GroupDO currentGroup, final int gidNumber) { final UserGroupCache userGroupCache = TenantRegistryMap.getInstance().getTenantRegistry().getUserGroupCache(); final Collection<GroupDO> allGroups = userGroupCache.getAllGroups(); for (final GroupDO group : allGroups) { final LdapGroupValues ldapGroupValues = groupDOConverter.readLdapGroupValues(group.getLdapValues()); if (ObjectUtils.equals(group.getId(), currentGroup.getId()) == true) { // The current group may have the given gidNumber already, so ignore this entry. continue; } if (ldapGroupValues != null && ldapGroupValues.getGidNumber() != null && ldapGroupValues.getGidNumber().intValue() == gidNumber) { // Number isn't free. log.info("The gidNumber (posix account) '" + gidNumber + "' is already occupied by group: " + group); return false; } } return true; }