From: Anjo K. <an...@us...> - 2006-09-26 14:08:37
|
Update of /cvsroot/wonder/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv13584/Sources/er/extensions Modified Files: ERXConfigurationManager.java ERXModelGroup.java Log Message: moved loalized attributes over to config manager Index: ERXConfigurationManager.java =================================================================== RCS file: /cvsroot/wonder/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions/ERXConfigurationManager.java,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** ERXConfigurationManager.java 20 Sep 2006 22:15:49 -0000 1.57 --- ERXConfigurationManager.java 26 Sep 2006 14:08:32 -0000 1.58 *************** *** 376,382 **** */ public void modelAddedHandler(NSNotification n) { ! resetConnectionDictionaryInModel((EOModel)n.object()); } private String getProperty(String key, String alternateKey, String defaultValue) { String value = ERXSystem.getProperty(key); --- 376,451 ---- */ public void modelAddedHandler(NSNotification n) { ! EOModel model = (EOModel)n.object(); ! for (Enumeration enumerator = model.entities().objectEnumerator(); enumerator.hasMoreElements();) { ! EOEntity entity = (EOEntity) enumerator.nextElement(); ! adjustLocalizedAttributes(entity); ! } ! resetConnectionDictionaryInModel(model); } + + protected void adjustLocalizedAttributes(EOEntity entity) { + NSArray attributes = entity.attributes().immutableClone(); + NSArray classProperties = entity.classProperties().immutableClone(); + NSArray attributesUsedForLocking = entity.attributesUsedForLocking().immutableClone(); + if(attributes == null) attributes = NSArray.EmptyArray; + if(classProperties == null) classProperties = NSArray.EmptyArray; + if(attributesUsedForLocking == null) attributesUsedForLocking = NSArray.EmptyArray; + NSMutableArray mutableAttributes = new NSMutableArray(); + NSMutableArray mutableClassProperties = new NSMutableArray(); + NSMutableArray mutableAttributesUsedForLocking = new NSMutableArray(); + 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); + NSArray languages = (NSArray)(attribute.userInfo() != null ? attribute.userInfo().objectForKey("ERXLanguages") : null); + if(languages != null && languages.count() > 0) { + String name = attribute.name(); + String columnName = attribute.columnName(); + for (int i = 0; i < languages.count(); i++) { + EOAttribute copy = new EOAttribute(); + String language = (String) languages.objectAtIndex(i); + String newName = name + "_" +language; + String newColumnName = columnName + "_" +language; + //columnName = columnName.replaceAll("_(\\w)$", "_" + language); + // NOTE: order is important here. To add the prototype, + // we need it in the entity and we need a name to add it there + copy.setName(newName); + entity.addAttribute(copy); + copy.setPrototype(attribute.prototype()); + + copy.setColumnName(newColumnName); + copy.setExternalType(attribute.externalType()); + copy.setValueType(attribute.valueType()); + copy.setPrecision(attribute.precision()); + copy.setAllowsNull(attribute.allowsNull()); + copy.setClassName(attribute.className()); + copy.setWidth(attribute.width()); + copy.setScale(attribute.scale()); + copy.setExternalType(attribute.externalType()); + if(isClassProperty) { + mutableClassProperties.addObject(copy); + } + if(isUsedForLocking) { + mutableAttributesUsedForLocking.addObject(copy); + } + } + entity.removeAttribute(attribute); + } else { + if(isClassProperty) { + mutableClassProperties.addObject(attribute); + } + if(isUsedForLocking) { + mutableAttributesUsedForLocking.addObject(attribute); + } + } + } + entity.setAttributesUsedForLocking(mutableAttributesUsedForLocking); + entity.setClassProperties(mutableClassProperties); + } + } + + private String getProperty(String key, String alternateKey, String defaultValue) { String value = ERXSystem.getProperty(key); Index: ERXModelGroup.java =================================================================== RCS file: /cvsroot/wonder/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions/ERXModelGroup.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** ERXModelGroup.java 20 Sep 2006 22:15:50 -0000 1.17 --- ERXModelGroup.java 26 Sep 2006 14:08:32 -0000 1.18 *************** *** 162,226 **** } - public Object _addEntityWithPropertyList(Object plist) throws InstantiationException, IllegalAccessException { - NSMutableDictionary mutableDefinition = processDefinition((NSDictionary)plist); - return super._addEntityWithPropertyList(mutableDefinition); - } - - private NSMutableDictionary processDefinition(NSDictionary definition) { - NSMutableDictionary mutableDefinition = createLocalizedAttributes(definition); - return mutableDefinition; - } - - private NSMutableDictionary createLocalizedAttributes(NSDictionary definition) { - NSMutableDictionary mutableDefinition = definition.mutableClone(); - NSArray attributes = (NSArray)definition.objectForKey("attributes"); - NSArray classProperties = (NSArray)definition.objectForKey("classProperties"); - NSArray attributesUsedForLocking = (NSArray)definition.objectForKey("attributesUsedForLocking"); - if(attributes == null) attributes = NSArray.EmptyArray; - if(classProperties == null) classProperties = NSArray.EmptyArray; - if(attributesUsedForLocking == null) attributesUsedForLocking = NSArray.EmptyArray; - NSMutableArray mutableAttributes = new NSMutableArray(); - NSMutableArray mutableClassProperties = new NSMutableArray(); - NSMutableArray mutableAttributesUsedForLocking = new NSMutableArray(); - if(attributes != null) { - for(Enumeration e = attributes.objectEnumerator(); e.hasMoreElements(); ) { - NSDictionary attributeDefinition = (NSDictionary)e.nextElement(); - NSArray languages = (NSArray) attributeDefinition.valueForKeyPath("userInfo.ERXLanguages"); - String name = (String) attributeDefinition.objectForKey("name"); - if(languages != null && languages.count() > 0) { - String columnName = (String) attributeDefinition.objectForKey("columnName"); - for (int i = 0; i < languages.count(); i++) { - NSMutableDictionary mutableAttributeDefinition = attributeDefinition.mutableClone(); - String language = (String) languages.objectAtIndex(i); - String newName = name + "_" +language; - String newColumnName = columnName + "_" +language; - //columnName = columnName.replaceAll("_(\\w)$", "_" + language); - mutableAttributeDefinition.setObjectForKey(newName, "name"); - mutableAttributeDefinition.setObjectForKey(newColumnName, "columnName"); - mutableAttributes.addObject(mutableAttributeDefinition); - if(classProperties.containsObject(name)) { - mutableClassProperties.addObject(newName); - } - if(attributesUsedForLocking.containsObject(name)) { - mutableAttributesUsedForLocking.addObject(newName); - } - } - } else { - mutableAttributes.addObject(attributeDefinition); - if(classProperties.containsObject(name)) { - mutableClassProperties.addObject(name); - } - if(attributesUsedForLocking.containsObject(name)) { - mutableAttributesUsedForLocking.addObject(name); - } - } - } - mutableDefinition.setObjectForKey(mutableClassProperties, "classProperties"); - mutableDefinition.setObjectForKey(mutableAttributesUsedForLocking, "attributesUsedForLocking"); - mutableDefinition.setObjectForKey(mutableAttributes, "attributes"); - } - return mutableDefinition; - } - /** * Utility for getting all names from an array of attributes. --- 162,165 ---- |