attributesUsedForLocking = NSArray.EmptyArray;
NSMutableArray mutableClassProperties = classProperties.mutableClone();
NSMutableArray mutableAttributesUsedForLocking = attributesUsedForLocking.mutableClone();
if (attributes != null) {
for (Enumeration e = attributes.objectEnumerator(); e.hasMoreElements();) {
EOAttribute attribute = (EOAttribute) e.nextElement();
boolean isClassProperty = classProperties.containsObject(attribute);
boolean isUsedForLocking = attributesUsedForLocking.containsObject(attribute);
Object languagesObject = attribute.userInfo() != null ? attribute.userInfo().objectForKey(LANGUAGES_KEY) : null;
if (languagesObject != null && !(languagesObject instanceof NSArray)) {
languagesObject = entity.model().userInfo() != null ? entity.model().userInfo().objectForKey(LANGUAGES_KEY) : null;
if(languagesObject == null) {
languagesObject = ERXProperties.arrayForKey(LANGUAGES_KEY);
}
}
NSArray languages = (languagesObject != null ? (NSArray) languagesObject : NSArray.EmptyArray);
if (languages.count() > 0) {
String name = attribute.name();
String columnName = attribute.columnName();
NSMutableDictionary attributeUserInfo = new NSMutableDictionary();
if(attribute.userInfo() != null) {
attributeUserInfo.addEntriesFromDictionary(attribute.userInfo());
}
attributeUserInfo.setObjectForKey(languages, LANGUAGES_KEY);
for (int i = 0; i < languages.count(); i++) {
String language = (String) languages.objectAtIndex(i);
String newName = name + "_" + language;
// columnName = columnName.replaceAll("_(\\w)$", "_" + language);
EOAttribute copy = cloneAttribute(entity, attribute, newName);
String newColumnName = columnName + "_" + language;
copy.setColumnName(newColumnName);
if (isClassProperty) {
mutableClassProperties.addObject(copy);
}
if (isUsedForLocking) {
mutableAttributesUsedForLocking.addObject(copy);
}
copy.setUserInfo(attributeUserInfo.mutableClone());
}
entity.removeAttribute(attribute);
mutableClassProperties.removeObject(attribute);
mutableAttributesUsedForLocking.removeObject(attribute);
}