package com.idega.business.chooser.helper; import java.util.ArrayList; import java.util.List; import com.idega.builder.bean.AdvancedProperty; import com.idega.core.builder.business.ICBuilderConstants; import com.idega.user.bean.PropertiesBean; import com.idega.util.CoreConstants; import com.idega.util.CoreUtil; public class GroupsChooserHelper { public PropertiesBean getExtractedPropertiesFromString(String value) { if (value == null) { return null; } String[] values = value.split(ICBuilderConstants.BUILDER_MODULE_PROPERTY_VALUES_SEPARATOR); if (values == null) { return null; } PropertiesBean bean = null; if (values.length >= 5) { // server, user, login, ids, connection bean = new PropertiesBean(); bean.setServer(values[0]); bean.setLogin(values[1]); bean.setPassword(CoreUtil.getDecodedValue(values[2])); bean.setUniqueIds(getValuesFromString(values[3], CoreConstants.COMMA)); bean.setRemoteMode(getBooleanValue(values[4])); } return bean; } public String[] getPropertyValue(List<AdvancedProperty> properties, boolean groupsAreRquired) { String server = null; String login = null; String password = null; String uniqueIds = null; String connection = findPropertyValue(properties, "connection"); if (connection == null) { return null; } if (connection.equals(ICBuilderConstants.GROUPS_CHOOSER_REMOTE_CONNECTION)) { // Settings for remote connection server = findPropertyValue(properties, "server"); login = findPropertyValue(properties, "login"); password = CoreUtil.getEncodedValue(findPropertyValue(properties, "password")); } else { // Settings for local connection server = connection; login = connection; password = connection; } uniqueIds = findPropertyValue(properties, "uniqueids"); if (groupsAreRquired) { if (uniqueIds == null) { return null; } } else { if (uniqueIds == null) { uniqueIds = CoreConstants.MINUS; } } if (server == null || login == null || password == null) { return null; } StringBuffer value = new StringBuffer(server).append(ICBuilderConstants.BUILDER_MODULE_PROPERTY_VALUES_SEPARATOR); value.append(login).append(ICBuilderConstants.BUILDER_MODULE_PROPERTY_VALUES_SEPARATOR).append(password); value.append(ICBuilderConstants.BUILDER_MODULE_PROPERTY_VALUES_SEPARATOR).append(uniqueIds); value.append(ICBuilderConstants.BUILDER_MODULE_PROPERTY_VALUES_SEPARATOR).append(connection); return new String[] {value.toString()}; } /** * Finds value in list * @param properties * @param id * @return */ protected String findPropertyValue(List<AdvancedProperty> properties, String id) { String value = null; boolean found = false; AdvancedProperty property = null; for (int i = 0; (i < properties.size() && !found); i++) { property = properties.get(i); if (id.equals(property.getId())) { value = property.getValue(); found = true; } } return value; } private boolean getBooleanValue(String value) { if (value == null) { return false; } return value.equals(ICBuilderConstants.GROUPS_CHOOSER_REMOTE_CONNECTION); } protected List<String> getValuesFromString(String value, String separator) { if (value == null || value.equals(CoreConstants.MINUS)) { return null; } String[] values = value.split(separator); if (values == null) { return null; } List<String> extractedValues = new ArrayList<String>(); for (int i = 0; i < values.length; i++) { extractedValues.add(values[i]); } return extractedValues; } }