package se.idega.idegaweb.commune.block.importer.business; import java.util.ArrayList; import java.util.StringTokenizer; import com.idega.block.importer.business.ImportBusinessBean; import com.idega.data.IDOStoreException; import com.idega.user.data.User; /** * @author palli */ public class SKVImportBusinessBean extends ImportBusinessBean implements SKVImportBusiness { private ArrayList getNameArray(String name, String delimeter) { ArrayList nameArray = new ArrayList(); StringTokenizer tokens = new StringTokenizer(name, delimeter, true); String value = null; while (tokens.hasMoreTokens()) { value = tokens.nextToken(); if (" ".equals(value) || "-".equals(value)) { String nameAtIndex = (String) nameArray .get(nameArray.size() - 1); StringBuffer buffer = new StringBuffer(nameAtIndex); buffer.append(value); nameArray.set(nameArray.size() - 1, buffer.toString()); } else { nameArray.add(value); } } return nameArray; } public User handleNames(User user, String firstName, String middleName, String lastName, String preferredNameIndex, boolean store) { boolean updateName = false; if (firstName == null || firstName.trim().equals("")) { if (user.getFirstName() != null) { firstName = user.getFirstName(); } else { firstName = ""; } } /* * Setting middleName as "", required for the rest of the code */ if (middleName != null && !middleName.equals("")) { firstName = firstName + " " + middleName; middleName = ""; } else { middleName = ""; } if (lastName == null || lastName.trim().equals("")) { if (user.getLastName() != null) { lastName = user.getLastName(); } else { lastName = ""; } } String delimeter = " -"; if (preferredNameIndex == null) { preferredNameIndex = "10"; delimeter = " "; } StringBuffer fullname = new StringBuffer(); fullname.append(firstName).append(" ").append(middleName); int index = Integer.parseInt(preferredNameIndex); int refName1 = index / 10; int refName2 = index % 10; ArrayList nameList = getNameArray(fullname.toString(), delimeter); firstName = ""; middleName = ""; if (refName1 > 0) { firstName = (String) nameList.get(refName1 - 1); updateName = true; } if (refName2 > 0) { firstName = firstName + (String) nameList.get(refName2 - 1); updateName = true; } for (int i = 0; i < nameList.size(); i++) { if ((i + 1) != refName1 && (i + 1) != refName2) { middleName = middleName + (String) nameList.get(i); } } /* * Needed because createUser uses the method setFullName that splits the * name with it's own rules */ if (updateName) { if (firstName != null) { firstName.trim(); } if (middleName != null) { middleName.trim(); } if (lastName != null) { lastName.trim(); } user.setFirstName(firstName); user.setMiddleName(middleName); user.setLastName(lastName); } if (store) { try { user.store(); } catch (IDOStoreException e) { throw e; } } return user; } }