public NSArray statementsToDropPrimaryKeyConstraintsOnEntityGroups( NSArray entityGroups, EOSchemaSynchronizationModelChanges changes, EOSchemaGenerationOptions options) { if (entityGroups == null) return NSArray.EmptyArray; if (changes == null) changes = newChanges(); NSMutableArray expressions = new NSMutableArray(); for (Enumeration enumerator = entityGroups.objectEnumerator(); enumerator.hasMoreElements(); ) { NSArray entities = (NSArray) enumerator.nextElement(); EOEntity _last = (EOEntity) entities.lastObject(); // only need entity to get the table name for the group String nameInObjectStore = _nameInObjectStoreForEntityGroupWithChangeDictionary( entities, changes.changesForTableNamed(_last.externalName())); if ((nameInObjectStore != null) && (!"".equals(nameInObjectStore))) { expressions.addObject( this._expressionForString( "delete from _SYS_RELATIONSHIP where source_table = '" + nameInObjectStore + "' or dest_table = '" + nameInObjectStore + "'")); } } return expressions.immutableClone(); }
/* * [PJYF Oct 19 2004] * This is a bad hack to get WO to create indes for external keys. * We use the primary key constrain generation to create our indexes. * But we need to be carefull not to overwrite previous constrains * */ protected boolean isSinglePrimaryKeyAttribute(EOAttribute attribute) { if (attribute == null) return false; EOEntity entity = (EOEntity) attribute.entity(); if ((entity == null) || entity.isAbstractEntity() || (entity.externalName() == null)) return false; NSArray primaryKeyAttributes = entity.primaryKeyAttributes(); if (primaryKeyAttributes.count() != 1) return false; return attribute.name().equals(((EOAttribute) primaryKeyAttributes.lastObject()).name()); }
public boolean listIsEmpty() { NSArray list = found; if (list != null && list.count() > 0) return false; list = (NSArray) valueForBinding("forcedList"); if (list != null && list.count() > 0) return false; list = personList(); if (list != null && list.count() > 0) return false; return true; }
/** * Look up an object by id number. Assumes the editing context is appropriately locked. * * @param ec The editing context to use * @param id The id to look up * @return The object, or null if no such id exists */ public static UserMessageSubscription forId(EOEditingContext ec, int id) { UserMessageSubscription obj = null; if (id > 0) { NSArray<UserMessageSubscription> objects = objectsMatchingValues(ec, "id", new Integer(id)); if (objects != null && objects.count() > 0) { obj = objects.objectAtIndex(0); } } return obj; }
public WOActionResults submit() { if (selection == null) { search(); if (found != null && found.count() > 0) { selection = (PersonLink) found.objectAtIndex(0); } else { selection = defaultSelectionValue(); } } setValueForBinding(selection, "selection"); return (WOActionResults) valueForBinding("selectAction"); }
/** * Renvoie le premier objet simple trouve dans la liste triee. Pour recuperer un tableau, utiliser * fetchAll(EOEditingContext, EOQualifier, NSArray). * * @param editingContext * @param qualifier * @param sortOrderings * @return Renvoie le premier objet trouve correspondant au qualifier, null si aucun trouve */ public static EOTypeGroupe fetchFirstByQualifier( EOEditingContext editingContext, EOQualifier qualifier, NSArray sortOrderings) { NSArray eoObjects = fetchAll(editingContext, qualifier, sortOrderings); EOTypeGroupe eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else { eoObject = (EOTypeGroupe) eoObjects.objectAtIndex(0); } return eoObject; }
public void initCustomerIssues() { EOFetchSpecification fs; NSDictionary bindings = null; Session s = (Session) session(); NSMutableArray qual = new NSMutableArray(); NSMutableArray qual1 = new NSMutableArray(); EOQualifier qualifier; // 'Open items' // qual.addObject(EOQualifier.qualifierWithQualifierFormat("bugStatus !='CLOSED'", null)); // qual.addObject(EOQualifier.qualifierWithQualifierFormat("bugStatus !='RESOLVED'", null)); // qual.addObject(EOQualifier.qualifierWithQualifierFormat("bugStatus !='VERIFIED'", null)); // Taser qual1.addObject(EOQualifier.qualifierWithQualifierFormat("type = 'Prospect'", null)); qual1.addObject(EOQualifier.qualifierWithQualifierFormat("type = 'Customer'", null)); qual.addObject(new EOOrQualifier(qual1)); // Single Customer if (customerId() != null) { qual.addObject(EOQualifier.qualifierWithQualifierFormat("bugId=" + customerId(), null)); showProductSelector = true; } else { // Products if (selectedProducts.count() == 1) { if (selectedProducts.contains("Trusted Access")) { qual.addObject( EOQualifier.qualifierWithQualifierFormat( "product.productName = 'Device: Trusted Access'", null)); } else if (selectedProducts.contains("Secure Storage")) { qual.addObject( EOQualifier.qualifierWithQualifierFormat( "product.productName = 'Device: Secure Storage'", null)); } } } Object orderings[] = { EOSortOrdering.sortOrderingWithKey("version", EOSortOrdering.CompareAscending), EOSortOrdering.sortOrderingWithKey("targetMilestone", EOSortOrdering.CompareAscending), EOSortOrdering.sortOrderingWithKey( "priority", EOSortOrdering.CompareCaseInsensitiveAscending), EOSortOrdering.sortOrderingWithKey( "bugSeverity", EOSortOrdering.CompareCaseInsensitiveAscending), }; fs = new EOFetchSpecification("Item", new EOAndQualifier(qual), new NSArray(orderings)); fs.setRefreshesRefetchedObjects(true); ((EODatabaseDataSource) customerIssueDisplayGroup.dataSource()).setFetchSpecification(fs); customerIssueDisplayGroup.fetch(); }
public String _alterPhraseDeletingColumnsWithNames( NSArray columnNames, NSArray entityGroup, EOSchemaGenerationOptions options) { StringBuffer phrase = new StringBuffer(); int j = columnNames.count(); for (int i = 0; i < j; i++) { phrase.append( "" + (i == 0 ? "" : this._alterPhraseJoinString()) + "remove column " + columnNames.objectAtIndex(i)); } return phrase.toString(); }
public static Category fetchCategory(EOEditingContext editingContext, EOQualifier qualifier) { NSArray<Category> eoObjects = _Category.fetchCategories(editingContext, qualifier, null); Category eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (Category) eoObjects.objectAtIndex(0); } else { throw new IllegalStateException( "There was more than one Category that matched the qualifier '" + qualifier + "'."); } return eoObject; }
public static MovieRole fetchMovieRole(EOEditingContext editingContext, EOQualifier qualifier) { NSArray<MovieRole> eoObjects = _MovieRole.fetchMovieRoles(editingContext, qualifier, null); MovieRole eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (MovieRole) eoObjects.objectAtIndex(0); } else { throw new IllegalStateException( "There was more than one MovieRole that matched the qualifier '" + qualifier + "'."); } return eoObject; }
public static Group fetchGroup(EOEditingContext editingContext, EOQualifier qualifier) { NSArray<Group> eoObjects = _Group.fetchGroups(editingContext, qualifier, null); Group eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (Group) eoObjects.objectAtIndex(0); } else { throw new IllegalStateException( "There was more than one Group that matched the qualifier '" + qualifier + "'."); } return eoObject; }
public static Employee fetchEmployee(EOEditingContext editingContext, EOQualifier qualifier) { NSArray<Employee> eoObjects = _Employee.fetchEmployees(editingContext, qualifier, null); Employee eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (Employee) eoObjects.objectAtIndex(0); } else { throw new IllegalStateException( "There was more than one Employee that matched the qualifier '" + qualifier + "'."); } return eoObject; }
public NSArray customerIssues() { NSMutableArray allChildren = new NSMutableArray(); NSMutableArray qual = new NSMutableArray(); Item customer; Item child; if (customerIssues == null) { if (bugId() != null) { qual.addObject(EOQualifier.qualifierWithQualifierFormat("bugId=" + bugId(), null)); EOFetchSpecification spec = new EOFetchSpecification("Item", new EOAndQualifier(qual), null); // Perform actual fetch customerIssues = (NSArray) session().defaultEditingContext().objectsWithFetchSpecification(spec); } else { Enumeration enumer = ((NSArray) customerIssueDisplayGroup.allObjects()).objectEnumerator(); // For each Customer while (enumer.hasMoreElements()) { customer = (Item) enumer.nextElement(); NSArray children = (NSArray) customer.valueForKey("allChildren"); // Add all of their issues (if they haven't been added already Enumeration enumer2 = children.objectEnumerator(); while (enumer2.hasMoreElements()) { child = (Item) enumer2.nextElement(); if (!allChildren.contains(child)) { allChildren.addObject(child); } } } Object orderings[] = { EOSortOrdering.sortOrderingWithKey("version", EOSortOrdering.CompareAscending), EOSortOrdering.sortOrderingWithKey("targetMilestone", EOSortOrdering.CompareAscending), EOSortOrdering.sortOrderingWithKey( "priority", EOSortOrdering.CompareCaseInsensitiveAscending), EOSortOrdering.sortOrderingWithKey( "bugSeverity", EOSortOrdering.CompareCaseInsensitiveAscending), }; // Sort the issues customerIssues = EOSortOrdering.sortedArrayUsingKeyOrderArray(allChildren, new NSArray(orderings)); } } return customerIssues; }
/** * Renvoie l'objet correspondant au qualifier. Si plusieurs objets sont susceptibles d'etre * trouves, utiliser fetchFirstByQualifier(EOEditingContext, EOQualifier). Une exception est * declenchee si plusieurs objets sont trouves. * * @param editingContext * @param qualifier * @return L'objet qui correspond au qualifier passé en parametre. Si plusieurs objets sont * trouves, une exception est declenchee. Si aucun objet n'est trouve, null est renvoye. * @throws IllegalStateException */ public static EOTypeGroupe fetchByQualifier( EOEditingContext editingContext, EOQualifier qualifier) throws IllegalStateException { NSArray eoObjects = fetchAll(editingContext, qualifier, null); EOTypeGroupe eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (EOTypeGroupe) eoObjects.objectAtIndex(0); } else { throw new IllegalStateException( "Il y a plus d'un objet qui correspond au qualifier '" + qualifier + "'."); } return eoObject; }
public static EOTypeUniteTemps fetchTypeUniteTemps( EOEditingContext editingContext, EOQualifier qualifier) { NSArray eoObjects = _EOTypeUniteTemps.fetchTypeUniteTempses(editingContext, qualifier, null); EOTypeUniteTemps eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = (EOTypeUniteTemps) eoObjects.objectAtIndex(0); } else { throw new IllegalStateException( "There was more than one TypeUniteTemps that matched the qualifier '" + qualifier + "'."); } return eoObject; }
public NSArray itemsWithMultipleParents() { if (itemsWithMultipleParents == null) { NSMutableArray temp = new NSMutableArray(); Enumeration enumer = customerIssues().objectEnumerator(); while (enumer.hasMoreElements()) { Item taserIssue = (Item) enumer.nextElement(); NSArray parents = (NSArray) taserIssue.topMostParents(); // will get some non-taser parents. if ((parents != null) && (parents.count() > 1)) { temp.addObject(taserIssue); } } itemsWithMultipleParents = new NSArray(temp); } return itemsWithMultipleParents; }
public static PDBPresentation fetchPDBPresentation( EOEditingContext editingContext, EOQualifier qualifier) { NSArray<PDBPresentation> eoObjects = _PDBPresentation.fetchPDBPresentations(editingContext, qualifier, null); PDBPresentation eoObject; int count = eoObjects.count(); if (count == 0) { eoObject = null; } else if (count == 1) { eoObject = eoObjects.objectAtIndex(0); } else { throw new IllegalStateException( "There was more than one PDBPresentation that matched the qualifier '" + qualifier + "'."); } return eoObject; }
protected PersonLink defaultSelectionValue() { NSArray list = (NSArray) valueForBinding("forcedList"); if (list != null && list.count() > 0) { return (PersonLink) EOUtilities.localInstanceOfObject(ec, (EOEnterpriseObject) list.objectAtIndex(0)); } list = (NSArray) session().valueForKey("personList"); if (list != null && list.count() > 0) { Enumeration enu = list.objectEnumerator(); while (enu.hasMoreElements()) { EOEnterpriseObject pers = (EOEnterpriseObject) enu.nextElement(); if (entity().equals(pers.entityName())) { return (PersonLink) pers; } } } return null; }
/** * Retrieves the first object that matches a set of keys and values, when sorted with the * specified sort orderings. * * @param context The editing context to use * @param sortOrderings the sort orderings * @param keysAndValues a dictionary of keys and values to match * @return the first entity that was retrieved, or null if there was none */ public static UserMessageSubscription firstObjectMatchingValues( EOEditingContext context, NSArray<EOSortOrdering> sortOrderings, NSDictionary<String, Object> keysAndValues) { @SuppressWarnings("unchecked") EOFetchSpecification fspec = new WCFetchSpecification( ENTITY_NAME, EOQualifier.qualifierToMatchAllValues(keysAndValues), sortOrderings); fspec.setFetchLimit(1); NSArray<UserMessageSubscription> objects = objectsWithFetchSpecification(context, fspec); if (objects.count() == 0) { return null; } else { return objects.objectAtIndex(0); } }
public NSArray personList() { NSArray forcedList = (NSArray) valueForBinding("forcedList"); NSMutableArray result = (forcedList == null) ? new NSMutableArray() : EOUtilities.localInstancesOfObjects(ec, forcedList).mutableClone(); NSArray personList = (NSArray) session().valueForKey("personList"); if (personList != null && personList.count() > 0) { Enumeration enu = personList.objectEnumerator(); while (enu.hasMoreElements()) { EOEnterpriseObject pers = (EOEnterpriseObject) enu.nextElement(); if (!result.contains(pers) && (entity().equals(pers.entityName()) || pers.entityName().equals(alterEntity()))) result.addObject(pers); } } return result; }
/** * Retrieve a single object using a list of keys and values to match. * * @param context The editing context to use * @param qualifier The qualifier to use * @return the single entity that was retrieved * @throws EOUtilities.MoreThanOneException if there is more than one matching object */ public static UserMessageSubscription uniqueObjectMatchingQualifier( EOEditingContext context, EOQualifier qualifier) throws EOUtilities.MoreThanOneException { NSArray<UserMessageSubscription> objects = objectsMatchingQualifier(context, qualifier); if (objects.size() > 1) { String msg = "fetching UserMessageSubscription"; try { if (qualifier != null) { msg += " where " + qualifier; } msg += ", result = " + objects; } catch (Exception e) { log.error( "Exception building MoreThanOneException message, " + "contents so far: " + msg, e); } throw new EOUtilities.MoreThanOneException(msg); } return (objects.size() > 0) ? objects.get(0) : null; }
protected void performSearchRequest(String request) { searchString = request; canCreate = false; search(); while (found == null || found.count() == 0) { searchString = searchString.substring(0, searchString.length() - 1); if (searchString.length() < 2) { searchString = request; setValueForBinding(null, "searchRequest"); return; } search(); } selection = (PersonLink) found.objectAtIndex(0); setValueForBinding(selection, "selection"); setValueForBinding(Person.Utility.fullName(selection, true, 2, 2, 2), "searchRequest"); valueForBinding("selectAction"); }
public NSArray statementsToImplementPrimaryKeyConstraintsOnEntityGroups( NSArray entityGroups, EOSchemaSynchronizationModelChanges changes, EOSchemaGenerationOptions options) { NSArray primaryKeyExpressions = this.primaryKeyConstraintStatementsForEntityGroups(entityGroups); NSMutableArray createStatements = new NSMutableArray(); NSMutableArray otherStatements = new NSMutableArray(); for (Enumeration enumerator = primaryKeyExpressions.objectEnumerator(); enumerator.hasMoreElements(); ) { EOSQLExpression expression = (EOSQLExpression) enumerator.nextElement(); String statement = expression.statement(); if (statement.startsWith("create")) { createStatements.addObject(expression); } else if (!statement.startsWith("delete from _SYS_RELATIONSHIP")) { otherStatements.addObject(expression); } } return createStatements.arrayByAddingObjectsFromArray(otherStatements); }
public void search() { try { found = Person.Utility.search(ec, entity(), searchString); if ((found == null || found.count() == 0) && alterEntity() != null) found = Person.Utility.search(ec, alterEntity(), searchString); } catch (Exception e) { searchMessage = e.getMessage(); canCreate = false; return; } if (found.count() < 1) { searchMessage = (String) session().valueForKeyPath("strings.Strings.messages.nothingFound"); canCreate = Various.boolForObject(session().valueForKeyPath("readAccess.create." + entity())); return; } NSMutableArray fullList = (NSMutableArray) session().valueForKey("personList"); NSMutableArray tmp = found.mutableClone(); tmp.removeObjectsInArray(fullList); fullList.addObjectsFromArray(tmp); if (fullList.count() > 1) EOSortOrdering.sortArrayUsingKeyOrderArray(fullList, Person.sorter); searchMessage = null; }
public String style() { // Boolean useStyles = (Boolean)valueForBinding("useStyles"); if (Various.boolForObject(valueForBinding("useStyles"))) return null; // (useStyles != null && !useStyles.booleanValue()) if (selection != null && item.equals(selection.person())) return "selection"; if (item.sex() == null) return "grey"; if (found != null && found.containsObject(item)) { if (item.sex().booleanValue()) return "foundMale"; else return "foundFemale"; } else { if (item.sex().booleanValue()) return "male"; else return "female"; } }
public void invalidateObjects(NSArray pObjects) { // System.out.println("ReleasePlan.invalidateObjects()"); // Invalidate Objects if (pObjects != null) { // System.out.println("ReleasePlan.invalidateObjects() - 2"); Enumeration enumer = pObjects.objectEnumerator(); NSMutableArray temp = new NSMutableArray(); while (enumer.hasMoreElements()) { Item i = (Item) enumer.nextElement(); i.invalidateAllChildren(); EOGlobalID id = (EOGlobalID) (session().defaultEditingContext().globalIDForObject(i)); if (id != null) { temp.addObject(id); } } session().defaultEditingContext().invalidateObjectsWithGlobalIDs((NSArray) temp); } }
public NSArray primaryKeyConstraintStatementsForEntityGroup(NSArray entityGroup) { if (entityGroup == null) return NSArray.EmptyArray; NSMutableDictionary columnNameDictionary = new NSMutableDictionary(); NSMutableArray primaryKeyConstraintExpressions = new NSMutableArray(); for (Enumeration enumerator = entityGroup.objectEnumerator(); enumerator.hasMoreElements(); ) { EOEntity entity = (EOEntity) enumerator.nextElement(); String tableName = entity.externalName(); NSArray primaryKeyAttributes = entity.primaryKeyAttributes(); boolean singlePrimaryKey = primaryKeyAttributes.count() == 1; if ((tableName != null) && (!"".equals(tableName)) && (primaryKeyAttributes.count() > 0)) { NSArray expressions = super.primaryKeyConstraintStatementsForEntityGroup(entityGroup); if ((expressions != null) && (expressions.count() > 0)) primaryKeyConstraintExpressions.addObjectsFromArray(expressions); for (Enumeration attributeEnumerator = primaryKeyAttributes.objectEnumerator(); attributeEnumerator.hasMoreElements(); ) { String columnName = ((EOAttribute) attributeEnumerator.nextElement()).columnName(); columnNameDictionary.setObjectForKey( columnName, entity.externalName() + "." + columnName); EOSQLExpression expression = this._expressionForString( "create " + (singlePrimaryKey ? "unique" : "") + " index " + entity.externalName() + " " + columnName); if (expression != null) primaryKeyConstraintExpressions.addObject(expression); } } } for (Enumeration enumerator = entityGroup.objectEnumerator(); enumerator.hasMoreElements(); ) { EOEntity entity = (EOEntity) enumerator.nextElement(); String tableName = entity.externalName(); if ((tableName != null) && (!"".equals(tableName))) { for (Enumeration relationshipEnumerator = entity.relationships().objectEnumerator(); relationshipEnumerator.hasMoreElements(); ) { EORelationship relationship = (EORelationship) relationshipEnumerator.nextElement(); if (!relationship.isFlattened()) { NSArray destinationAttributes = relationship.destinationAttributes(); // First exclude all the destination entity primary keys for (Enumeration attributeEnumerator = relationship.destinationEntity().primaryKeyAttributes().objectEnumerator(); attributeEnumerator.hasMoreElements(); ) { EOAttribute attribute = (EOAttribute) attributeEnumerator.nextElement(); columnNameDictionary.setObjectForKey( attribute.columnName(), relationship.destinationEntity().externalName() + "." + attribute.columnName()); } // Then deal with our end of things for (Enumeration attributeEnumerator = relationship.sourceAttributes().objectEnumerator(); attributeEnumerator.hasMoreElements(); ) { EOAttribute attribute = (EOAttribute) attributeEnumerator.nextElement(); if ((!this.isSinglePrimaryKeyAttribute(attribute)) && (columnNameDictionary.objectForKey(tableName + "." + attribute.columnName()) != null)) { columnNameDictionary.setObjectForKey( attribute.columnName(), tableName + "." + attribute.columnName()); EOSQLExpression expression = this._expressionForString( "create index " + tableName + " " + attribute.columnName()); if (expression != null) primaryKeyConstraintExpressions.addObject(expression); } } // Then deal with the other side if (entity.model() == relationship.destinationEntity().model()) { for (Enumeration attributeEnumerator = relationship.destinationAttributes().objectEnumerator(); attributeEnumerator.hasMoreElements(); ) { EOAttribute attribute = (EOAttribute) attributeEnumerator.nextElement(); String destinationTableName = relationship.destinationEntity().externalName(); if ((destinationTableName != null) && (!"".equals(destinationTableName))) { if ((!this.isSinglePrimaryKeyAttribute(attribute)) && (columnNameDictionary.objectForKey( destinationTableName + "." + attribute.columnName()) != null)) { columnNameDictionary.setObjectForKey( attribute.columnName(), destinationTableName + "." + attribute.columnName()); EOSQLExpression expression = this._expressionForString( "create index " + destinationTableName + " " + attribute.columnName()); if (expression != null) primaryKeyConstraintExpressions.addObject(expression); } if ((!relationship.isCompound()) && (relationship.sourceAttributes().count() == 1) && (relationship.destinationAttributes().count() == 1)) { String semantics; switch (relationship.joinSemantic()) { case EORelationship.FullOuterJoin: // '\001' case EORelationship.LeftOuterJoin: // '\002' case EORelationship.RightOuterJoin: // '\003' semantics = "*"; break; default: semantics = "="; break; } String sourceColumn = ((EOAttribute) relationship.sourceAttributes().objectAtIndex(0)) .columnName(); String destinationColumn = ((EOAttribute) relationship.destinationAttributes().objectAtIndex(0)) .columnName(); EOSQLExpression expression = this._expressionForString( "delete from _SYS_RELATIONSHIP where relationshipName = '" + relationship.name() + "' and source_table = '" + tableName + "' "); if (expression != null) primaryKeyConstraintExpressions.addObject(expression); expression = this._expressionForString( "insert into _SYS_RELATIONSHIP (relationshipName, source_table, source_column, dest_table, dest_column, operator, one_to_many) values ('" + relationship.name() + "','" + tableName + "','" + sourceColumn + "','" + destinationTableName + "','" + destinationColumn + "','" + semantics + "'," + (relationship.isToMany() ? 1 : 0) + ")"); if (expression != null) primaryKeyConstraintExpressions.addObject(expression); } } } } } } } } return primaryKeyConstraintExpressions.immutableClone(); }
/** * Retrieve the first object that matches a qualifier, when sorted with the specified sort * orderings. * * @param context The editing context to use * @param qualifier The qualifier to use * @param sortOrderings the sort orderings * @return the first entity that was retrieved, or null if there was none */ public static UserMessageSubscription firstObjectMatchingQualifier( EOEditingContext context, EOQualifier qualifier, NSArray<EOSortOrdering> sortOrderings) { NSArray<UserMessageSubscription> objects = objectsMatchingQualifier(context, qualifier, sortOrderings); return (objects.size() > 0) ? objects.get(0) : null; }
// ---------------------------------------------------------- public void takeFormValues(NSDictionary<?, ?> formValues) { WCConfigurationFile configuration = Application.configurationProperties(); if (log.isDebugEnabled()) { log.debug("takeFormValues(): initial config = "); log.debug(configuration.configSettingsAsString()); } String email = storeFormValueToConfig( formValues, "coreAdminEmail", "Please specify the administrator's e-mail address."); storeFormValueToConfig(formValues, "adminNotifyAddrs", null); String authDomainName = configuration.getProperty("authenticator.default"); String username = storeFormValueToConfig( formValues, "AdminUsername", "Please specify the administrator's user name."); if (log.isDebugEnabled()) { log.debug("takeFormValues(): middle = "); log.debug(configuration.configSettingsAsString()); } if (authDomainName == null || authDomainName.equals("")) { error("Cannot identify default institution's " + "authentication configuration."); } else if (username != null && !hasMessages()) { EOEditingContext ec = WCEC.newEditingContext(); try { ec.lock(); AuthenticationDomain domain = AuthenticationDomain.authDomainByName(authDomainName); NSArray<?> users = EOUtilities.objectsMatchingValues( ec, User.ENTITY_NAME, new NSDictionary<String, Object>( new Object[] {username, domain}, new String[] {User.USER_NAME_KEY, User.AUTHENTICATION_DOMAIN_KEY})); User admin; if (users.count() > 0) { admin = (User) users.objectAtIndex(0); admin.setEmail(email); String first = extractFormValue(formValues, "AdminFirstName"); if (first != null && !first.equals("")) { admin.setFirstName(first); } String last = extractFormValue(formValues, "AdminLastName"); if (last != null && !last.equals("")) { admin.setLastName(last); } ec.saveChanges(); } else { String password = storeFormValueToConfig( formValues, "AdminPassword", "An administrator password is required."); if (authDomainName.equals(DatabaseAuthenticator.class.getName()) && (password == null || password.equals(""))) { // Don't need this anymore, since the error message is // posted by storeFormValuesToConfig() above. // errorMessage( // "An administrator password is required." ); } else { admin = User.createUser(username, password, domain, (byte) 100, ec); admin.setEmail(email); String first = extractFormValue(formValues, "AdminFirstName"); if (first != null && !first.equals("")) { admin.setFirstName(first); } String last = extractFormValue(formValues, "AdminLastName"); if (last != null && !last.equals("")) { admin.setLastName(last); } ec.saveChanges(); } } } finally { ec.unlock(); ec.dispose(); } } if (log.isDebugEnabled()) { log.debug("takeFormValues(): near end = "); log.debug(configuration.configSettingsAsString()); } if (!hasMessages()) { configuration.remove("AdminFirstName"); configuration.remove("AdminLastName"); } if (log.isDebugEnabled()) { log.debug("takeFormValues(): finals = "); log.debug(configuration.configSettingsAsString()); } }