WebObjects 5.2.3

com.webobjects.eocontrol
Class EOSortOrdering

java.lang.Object
  extended bycom.webobjects.eocontrol.EOSortOrdering
All Implemented Interfaces:
EOKeyValueArchiving, NSCoding, Serializable

public class EOSortOrdering
extends Object
implements Serializable, NSCoding, EOKeyValueArchiving

EOSortOrderingオブジェクトは属性値を比較するキーとメソッドセレクタによって、オブジェクト群をソートする方法を指定します。 EOSortOrderingは、データベースサーバからデータベース行をフェッチするSQL文の生成と、メモリ中のオブジェクトのソートの両方に使われます。 EOFetchSpecificationオブジェクトは、複数の属性で連続的にソートするためにEOSortOrderingの配列を使います。

SQLでのソート

EOSortOrderingは、リレーショナルデータベースからデータをフェッチするのに使われるとき、使用するアダプタに合わせたSQLのSELECT文のORDER BY句に変換されます。 詳細はEOSQLExpressionの概要を参照してください。 フレームワークは次の表にある4つの比較用メソッドをあらかじめ定義しています。 この表は比較用セレクタがどうSQLにマッピングされるかも示しています。

定義名 SQL文
CompareAscending (key) asc
CompareDescending (key) desc
CompareCaseInsensitiveAscending upper(key) asc
CompareCaseInsensitiveDescending upper(key) desc

次のコードでは上記の表のマッピングを使ってEOSortOrderingの配列 (nameOrdering) を生成しています。

   EOSortOrdering lastNameOrdering =
       EOSortOrdering.sortOrderingWithKey("lastName",
                                          EOSortOrdering.CompareAscending);
   EOSortOrdering firstNameOrdering =
       EOSortOrdering.sortOrderingWithKey("firstName",
                                          EOSortOrdering.CompareAscending);
   NSMutableArray nameOrdering = new NSMutableArray();
   nameOrdering.addObject(lastNameOrdering);
   nameOrdering.addObject(firstNameOrdering);
 

生成されるORDER BY句:

order by (lastName) asc, (firstName) asc

メモリ中のソート

sortedArrayUsingKeyOrderArraysortArrayUsingKeyOrderArray メソッドは、メモリ中でオブジェクトをソートするために使われます。 sortedArrayUsingKeyOrderArray は指定したEOSortOrderingに従ってソートしたオブジェクトの新しい配列を返します。 同様にして sortArrayUsingKeyOrderArray は配列のオブジェクトをソートします。 次のコードは、上記のコードで生成した「名字、名前」のEOSortOrderingで従業員オブジェクトの配列をソートする例です。

    EOSortOrdering.sortArrayUsingKeyOrderArray(employees,
                                               nameOrdering);

See Also:
sortArrayUsingKeyOrderArray(com.webobjects.foundation.NSMutableArray, com.webobjects.foundation.NSArray), sortedArrayUsingKeyOrderArray(com.webobjects.foundation.NSArray, com.webobjects.foundation.NSArray), Serialized Form

Nested Class Summary
static interface EOSortOrdering.Comparison
           値を比較するためのメソッドを定義したインターフェースです。
static class EOSortOrdering.ComparisonSupport
           ComparisonSupportは、EOSortOrdering.Comparisonインターフェースと(比較を)サポートするオブジェクトを登録したデフォルトの実装です。
 
Nested classes inherited from class com.webobjects.foundation.NSCoding
NSCoding.Support
 
Nested classes inherited from class com.webobjects.eocontrol.EOKeyValueArchiving
EOKeyValueArchiving.Awaking, EOKeyValueArchiving.FinishInitialization, EOKeyValueArchiving.Support
 
Field Summary
static NSSelector CompareAscending
           
static NSSelector CompareCaseInsensitiveAscending
           
static NSSelector CompareCaseInsensitiveDescending
           
static NSSelector CompareDescending
           
 
Constructor Summary
EOSortOrdering(String key, NSSelector selector)
           EOSortOrderingオブジェクトを生成します。
 
Method Summary
 Class classForCoder()
           NSCodingに準拠します。
static Object decodeObject(NSCoder coder)
           NSCodingに準拠します。
static Object decodeWithKeyValueUnarchiver(EOKeyValueUnarchiver unarchiver)
           EOKeyValueArchivingに準拠します。
 void encodeWithCoder(NSCoder coder)
           NSCodingに準拠します。
 void encodeWithKeyValueArchiver(EOKeyValueArchiver archiver)
           EOKeyValueArchivingに準拠します。
 String key()
           項目を並び替えるためのキーを返します。
 NSSelector selector()
           ソート時に値を比較するのに使用するメソッドセレクタを返します。
static void sortArrayUsingKeyOrderArray(NSMutableArray array, NSArray sortOrderings)
           EOSortOrderingの配列 sortOrderings に従って array 中のオブジェクトをソートします。
static NSArray sortedArrayUsingKeyOrderArray(NSArray array, NSArray sortOrderings)
           EOSortOrderingの配列 sortOrderings に従ってオブジェクトをソートした新しい配列を返します。
static EOSortOrdering sortOrderingWithKey(String key, NSSelector selector)
           キーとセレクタからEOSortOrderingオブジェクトを生成します。
 String toString()
           オブジェクトを文字列にして返します。
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

CompareAscending

public static final NSSelector CompareAscending

CompareCaseInsensitiveAscending

public static final NSSelector CompareCaseInsensitiveAscending

CompareCaseInsensitiveDescending

public static final NSSelector CompareCaseInsensitiveDescending

CompareDescending

public static final NSSelector CompareDescending
Constructor Detail

EOSortOrdering

public EOSortOrdering(String key,
                      NSSelector selector)
EOSortOrderingオブジェクトを生成します。 指定したキーとセレクタでオブジェクトを初期化します。

Parameters:
key - オブジェクトをソートする属性のキー
selector - キーに対するオブジェクトの値を比較するのに使用するセレクタ
See Also:
sortOrderingWithKey(java.lang.String, com.webobjects.foundation.NSSelector)
Method Detail

classForCoder

public Class classForCoder()
NSCodingに準拠します。

Specified by:
classForCoder in interface NSCoding
Returns:
オブジェクトのクラス
See Also:
NSCoding.classForCoder()

decodeObject

public static Object decodeObject(NSCoder coder)
NSCodingに準拠します。

Parameters:
coder - EOSortOrderingを生成するためのNSCoderオブジェクト
Returns:
coder のデータから復元されたEOSortOrderingオブジェクト

decodeWithKeyValueUnarchiver

public static Object decodeWithKeyValueUnarchiver(EOKeyValueUnarchiver unarchiver)
EOKeyValueArchivingに準拠します。

Parameters:
unarchiver - オブジェクトをデコードするための key-value アーカイバ
Returns:
unarchiver からデコードされたEOSortOrderingオブジェクト
See Also:
EOKeyValueArchiver

encodeWithCoder

public void encodeWithCoder(NSCoder coder)
NSCodingに準拠します。

Specified by:
encodeWithCoder in interface NSCoding
Parameters:
coder - クラス情報とオブジェクトをエンコードした情報を持つNSCoder
See Also:
NSCoder

encodeWithKeyValueArchiver

public void encodeWithKeyValueArchiver(EOKeyValueArchiver archiver)
EOKeyValueArchivingに準拠します。

Specified by:
encodeWithKeyValueArchiver in interface EOKeyValueArchiving
Parameters:
archiver - オブジェクトの状態を書き込むEOKeyValueArchiverオブジェクト
See Also:
EOKeyValueArchiver

key

public String key()
項目を並び替えるためのキーを返します。

Returns:
項目を並び替えるためのキー
See Also:
selector()

selector

public NSSelector selector()
ソート時に値を比較するのに使用するメソッドセレクタを返します。

Returns:
ソート時に値を比較するのに使用するメソッドセレクタ
See Also:
key()

sortArrayUsingKeyOrderArray

public static void sortArrayUsingKeyOrderArray(NSMutableArray array,
                                               NSArray sortOrderings)
EOSortOrderingの配列 sortOrderings に従って array 中のオブジェクトをソートします。 オブジェクトの比較には、EOKeyValueCodingの valueForKey メソッドで取得するソート用の属性と、 compare... メソッドが使われます。 詳細は "SQLでのソート" の比較用メソッドの表を参照してください。

Parameters:
array - ソートするオブジェクトの配列
sortOrderings - array をソートするためのEOSortOrderingの配列
See Also:
sortedArrayUsingKeyOrderArray(com.webobjects.foundation.NSArray, com.webobjects.foundation.NSArray)

sortOrderingWithKey

public static EOSortOrdering sortOrderingWithKey(String key,
                                                 NSSelector selector)
キーとセレクタからEOSortOrderingオブジェクトを生成します。

Parameters:
key - オブジェクトをソートする属性のキー
selector - オブジェクトの key に対する値を比較するのに使用するセレクタ
Returns:
keyselector を持つEOSortOrderingオブジェクト

sortedArrayUsingKeyOrderArray

public static NSArray sortedArrayUsingKeyOrderArray(NSArray array,
                                                    NSArray sortOrderings)
EOSortOrderingの配列 sortOrderings に従ってオブジェクトをソートした新しい配列を返します。 オブジェクトの比較には、EOKeyValueCodingの valueForKey メソッドで取得するソート用の属性と、 compare... メソッドが使われます。 詳細は "SQLでのソート" の比較用メソッドの表を参照してください。

Parameters:
array - ソートするオブジェクトの配列
sortOrderings - array をソートするためのEOSortOrderingの配列
Returns:
arraysortOrderings に従ってソートした配列
See Also:
sortArrayUsingKeyOrderArray(com.webobjects.foundation.NSMutableArray, com.webobjects.foundation.NSArray)

toString

public String toString()
オブジェクトを文字列にして返します。

Returns:
文字列にしたオブジェクト

Last updated Thu Oct 21 15:04:16 PDT 2004.

Copyright © 2004 Apple Computer, Inc.