/** * <div class="ja"> マシンで設定されているIPリストを取得します。 環境設定については: A10Properties. InIpRangeOperatorを参照 * * @return IP 配列が戻ります </div> */ public static NSArray<String> machineIpList() { // この関数は WOApplication がインスタンス化される前に実行されるので、ログ出力は標準ではない if (ERXArrayUtilities.arrayIsNullOrEmpty(_machineIpList)) { // プロパティー内でどの IP を使用するかどうかを読込みます。 String machineIp = ERXProperties.stringFor2Keys( "er.erxtensions.ERXTcpIp.UseThisIp", "wodka.a10.A10TcpIp.UseThisIp"); try { // プロパティーがなければ、自動設定を行う if (ERXStringUtilities.stringIsNullOrEmpty(machineIp)) { log.debug("MachineIp Automatic Mode"); // マシンIPを得る if (ERXArrayUtilities.arrayIsNullOrEmpty(_machineIpList)) _machineIpList = _machineIpList(); // 処理不能 ?? if (ERXArrayUtilities.arrayIsNullOrEmpty(_machineIpList)) { String noIpAndNoNetwork = ERXProperties.stringFor2Keys( "er.erxtensions.ERXTcpIp.NoIpAndNoNetwork", "wodka.a10.A10TcpIp.NoIpAndNoNetwork"); // No IP と No ネットワークも設定されていなければ、ローカル IP を使用する if (ERXStringUtilities.stringIsNullOrEmpty(noIpAndNoNetwork)) noIpAndNoNetwork = LOCAL_IP_ADDRESS; // 使用する IP をセットします _machineIpList = new NSArray<String>(new String[] {noIpAndNoNetwork}); log.warn("No IpAddress --- no network! use Address : {}", noIpAndNoNetwork); } } else { // 使用する IP をセットします _machineIpList = new NSArray<String>(new String[] {machineIp}); } } catch (Exception e) { // ここでの処理失敗は致命的 log.error("getIpAddress error!!!"); _machineIpList = new NSArray<String>(new String[] {LOCAL_IP_ADDRESS}); } if (log.isInfoEnabled()) log.info("MachineIp {} is in use.", ERXArrayUtilities.arrayToLogstring(_machineIpList)); } return _machineIpList; }
/** @return the lesCapacites */ public NSArray lesCapacites() { if (lesCapacites == null) { NSMutableArray<EOCapacite> tmp = new NSMutableArray<EOCapacite>(); NSMutableArray<EOCapacite> tmp2 = new NSMutableArray<EOCapacite>(); NSArray<EODomaine> domaines = null; NSArray<EORepartDomCapacite> rdcs = null; domaines = EODomaine.fetchDomaines(ec, wocomponent().mySession().TODAY); if (!wocomponent().droitTout()) domaines = filtreDomaine(domaines).immutableClone(); domaines = ERXArrayUtilities.arrayWithoutDuplicateKeyValue( domaines, EODomaine.REPART_DOM_CAPACITES_KEY); rdcs = (NSArray<EORepartDomCapacite>) domaines.valueForKey(EODomaine.REPART_DOM_CAPACITES_KEY); rdcs = ERXArrayUtilities.arrayWithoutDuplicateKeyValue(rdcs, EORepartDomCapacite.CAPACITE_KEY); if (rdcs != null && rdcs.count() > 0 && verifCap(rdcs)) { NSArray tt = (NSArray<EOCapacite>) rdcs.valueForKey(EORepartDomCapacite.CAPACITE_KEY); for (int t = 0; t < tt.count(); t++) { Object obj = (NSMutableArray) tt.objectAtIndex(t); // Correction bug plusieur objet dans un objet if (((NSMutableArray) obj).count() > 1) { for (Object ob : (NSMutableArray) obj) { EOCapacite cp = (EOCapacite) ob; if (cp != null) tmp2.addObject(cp); } } else { EOCapacite cp = (EOCapacite) ((NSMutableArray) obj).lastObject(); if (cp != null) tmp2.addObject(cp); } } NSArray tmp3 = tmp2.immutableClone(); tmp.addObjectsFromArray(tmp3); } else { tmp.addObjectsFromArray(EOCapacite.fetchCapacites(ec, wocomponent().mySession().TODAY)); } EOCapacite capacite = selectedCapacite(); if (capacite != null && !tmp.contains(capacite)) { tmp.addObject(capacite); } if (tmp != null && tmp.count() > 0) { ERXArrayUtilities.sortArrayWithKey(tmp, EOCapacite.LBL_COURT_KEY); lesCapacites = ERXArrayUtilities.arrayWithoutDuplicates(tmp); } } return lesCapacites; }
@Override @SuppressWarnings("unchecked") public boolean evaluateWithObject(Object object) { boolean result = false; if (object != null && object instanceof NSKeyValueCoding) { Object obj = ((NSKeyValueCoding) object).valueForKey(key()); if (obj == null && object instanceof NSKeyValueCodingAdditions) { obj = ((NSKeyValueCodingAdditions) object).valueForKeyPath(key()); } if (obj instanceof NSArray) { NSArray objArray = (NSArray) obj; if (!objArray.isEmpty()) { if (_minCount == 0) { result = ERXArrayUtilities.arrayContainsArray(objArray, elements()); } else { result = ERXArrayUtilities.intersectingElements(objArray, elements()).count() >= _minCount; } } } } return result; }
// ---------------------------------------------------------- protected void beforeAppendToResponse(WOResponse response, WOContext context) { log.debug("appendToResponse()"); subStats = new HashMap<AssignmentOffering, Submission.CumulativeStats>(); offerings.setObjectArray(assignmentOfferings(courseOfferings())); if (log.isDebugEnabled()) { log.debug("assignment offerings:"); for (AssignmentOffering ao : offerings.allObjects()) { log.debug("\t" + ao); } } NSMutableArray<Submission> staffSubs = new NSMutableArray<Submission>(); NSArray<User> admins = User.administrators(localContext()); for (AssignmentOffering ao : offerings.displayedObjects()) { // Stuff the index variable into the public key so the group/stats // methods will work for us assignmentOffering = ao; NSArray<UserSubmissionPair> subs = Submission.submissionsForGrading( localContext(), ao, true, // omitPartners omitStaff, studentStats()); userGroup().setObjectArray(subs); @SuppressWarnings("unchecked") NSArray<User> staff = ERXArrayUtilities.arrayByAddingObjectsFromArrayWithoutDuplicates( ao.courseOffering().staff(), admins); staffSubs.addAll( extractSubmissions( Submission.submissionsForGrading( localContext(), ao, true, // omitPartners staff, null))); } staffSubmissionGroup.setObjectArray(staffSubs); selectedUserSubmissionForPickerDialog = null; allUserSubmissionsForNavigationForPickerDialog = null; super.beforeAppendToResponse(response, context); }
/** * Returns the enterprise objects fetched with decoded <code>formValues</code> from <code> * entityName</code>. * * @param ec the editing context to fetch the objects from * @param entityName the entity to fetch the objects from * @param formValues dictionary where the values are an encoded representation of the primary key * values in either cleartext or encrypted format. * @return the enterprise objects */ public static NSArray enterpriseObjectsForEntityNamedFromFormValues( EOEditingContext ec, String entityName, NSDictionary formValues) { NSArray formValueObjects = decodeEnterpriseObjectsFromFormValues(ec, formValues); NSDictionary groups = ERXArrayUtilities.arrayGroupedByKeyPath(formValueObjects, "entityName"); EOEntity entity = ERXEOAccessUtilities.entityNamed(ec, entityName); NSMutableArray entityGroup = new NSMutableArray(); if (entity != null && entity.isAbstractEntity()) { for (Enumeration e = ERXUtilities.allSubEntitiesForEntity(entity, false).objectEnumerator(); e.hasMoreElements(); ) { EOEntity subEntity = (EOEntity) e.nextElement(); NSArray aGroup = (NSArray) groups.objectForKey(subEntity.name()); if (aGroup != null) entityGroup.addObjectsFromArray(aGroup); } } else { entityGroup.addObjectsFromArray((NSArray) groups.objectForKey(entityName)); } return entityGroup != null ? entityGroup : NSArray.EmptyArray; }
/** * Overridden to handle case of in-memory evaluation of QualifierOperatorContains selector and a * keyPath that has multiple toMany and/or manyToMany-flattened relationships resulting in arrays * of arrays rather than an array of discrete objects. In that case the object is evaluated * against a flattened array which gives the same result as SQL evaluation. * * <p>Since legacy code may depend on workarounds to the incorrect behavior, this patch can be * disabled by setting the property <code>er.extensions.ERXKeyValueQualifier.Contains.flatten * </code> to <code>false</code> */ @Override public boolean evaluateWithObject(Object object) { Object objectValue = NSKeyValueCodingAdditions.Utility.valueForKeyPath(object, _key); if (_value instanceof EOQualifierVariable) { throw new IllegalStateException( "Error evaluating qualifier with key " + _key + ", selector " + _selector + ", value " + _value + " - value must be substitued for variable before evaluating"); } if (_selector.equals(EOQualifier.QualifierOperatorCaseInsensitiveLike)) { if (_lowercaseCache == null) { _lowercaseCache = (_value != NSKeyValueCoding.NullValue) ? (_value.toString()).toLowerCase() : ""; } return _NSStringUtilities.stringMatchesPattern( ((objectValue != null) && (objectValue != NSKeyValueCoding.NullValue)) ? objectValue.toString() : "", _lowercaseCache, true); } // Flatten in case we have array of arrays if (_selector.equals(EOQualifier.QualifierOperatorContains) && PROPERTIES.shouldFlattenValueObject && objectValue != null && objectValue instanceof NSArray) { objectValue = ERXArrayUtilities.flatten((NSArray<?>) objectValue); } return ComparisonSupport.compareValues( (objectValue != null) ? objectValue : NSKeyValueCoding.NullValue, _value, _selector); }
// DELETEME?: grouping objects is not this class' responsibility... public static NSDictionary groupedEnterpriseObjectsFromFormValues( EOEditingContext ec, NSDictionary formValues) { NSArray formValueObjects = decodeEnterpriseObjectsFromFormValues(ec, formValues); return ERXArrayUtilities.arrayGroupedByKeyPath(formValueObjects, "entityName"); }