第10章

独自のWebDAVクライアントの作成

この章では、カスタムWebDAVクライアントを開発するためのexteNd Director WebDAVサービスに付属のAPIについて説明します。WebDAVクライアントでは、exteNd Director Content Management (CM)サブシステムの特別な機能を利用し、コンテンツを作成、管理します。

この章では、次のトピックについて説明します。

 
Top of page

WebDAVクライアントAPIについて

WebDAVクライアントAPIは、Jakarta Slideコンテンツ管理フレームワークに基いており、exteNd Director CMサブシステムで機能するように設計されています。Slideは、WebDAVプロトコルを使用してさまざまなデータストアのバイナリコンテンツを操作するための一貫したインタフェースの開発に使用できる低レベルのフレームワークです。

Javaクライアントアプリケーションでは、次のような分野でWebDAVメソッドおよび低レベルのその他の論理を実装するJavaクラスのセットを使用して、Slideコンテンツ管理フレームワークに直接アクセスできます。

SlideクライアントAPIの前後にラッパクラスを指定すると、exteNd Director WebDAVクライアントAPIにより抽象レベルが追加されます。これらのクラスにはヘルパメソッドおよびユーティリティメソッドが含まれています。これらのメソッドは、低レベルのSlideメソッドをカプセル化し、exteNd Director CMサブシステムの特別な機能と密接に統合する論理を追加します。たとえば、ドキュメントにカテゴリを割り当て、カスタムメタデータをコンテンツに関連付けて、CMサブシステムで定義された「ドキュメントタイプ」と呼ばれるカスタムテンプレートを使用してコンテンツを作成するWebDAVクライアントを構築することができます。

For more informationSlideの詳細については、Jakarta SlideプロジェクトのWebサイトを参照してください。この章の発行時点では、次のURLが使用されています。

  http://jakarta.apache.org/slide/

 
Top of page

独自のWebDAVクライアントを作成する理由

市販およびオープンソースのWebDAVクライアントアプリケーションは現在多数存在しており、入手できるアプリケーションは今後さらに増えることが予想されます。それにもかかわらず、exteNd Director CMサブシステムで機能する独自のWebDAVクライアントを作成する理由について、次に説明します。

主な理由としては、exteNd Director CMサブシステムを使用して、コンテンツの作成、更新、および管理に関する固有なオーサリングニーズに合わせてアプリケーションをカスタマイズするためです。この目的を念頭に置くと、WebDAVクライアントAPIを使用することにより、次のような点で、ほとんどの市販およびオープンソースのWebDAVクライアントよりもさらに強力なアプリケーションを開発できます。

 
Top of page

動作環境の設定

「WebDAVクライアントAPIを使用する」には、次のJARファイルをプロジェクトクラスパスに追加する必要があります。

JARファイル

説明

WebDAV_slide.jar

関連するSlideクライアントAPIクラスを含みます。

WebDAVClient.jar

exteNd Director WebDAVクライアントAPIクラスを含みます。

これらのJARファイルは、exteNd Directorインストールディレクトリの次の場所に、exteNd Directorとともにインストールされます。

  eXtendDirector\utilities\Client

「WebDAVクライアントを実行する」には、ランタイム時に次のJARファイルをクライアントのクラスパスに追加する必要があります。

JARファイル

Directory

場所

WebDAVClient.jar

exteNd Director インストールディレクトリ

\utilities\Client

WebDAV_slide.jar

\utilities\Client

xerces.jar

\lib

xalan.jar

\lib

FrameworkService.jar

\lib

servlet.jar

Novell インストールディレクトリ

\lib

たとえば、次のとおりです。 getDocumentsというWebDAV Javaクライアントプログラムを実行するには、次のコマンドを入力し、独自のインストールディレクトリパスで置き換えます。

  >set classpath=D:\\Director_install\\eXtendDirector\\utilities\\Client\\WebDAVClient.jar;D:\\Director_install\\eXtendDirector\\utilities\\Client\\WebDAV_slide.jar;.;D:\\Director_install\\eXtendDirector\\lib\\xerces.jar;D:\\Director_install\\eXtendDirector\\lib\\xalan.jar;D:\\Director_install\\eXtendDirector\\lib\\FrameworkService.jar;d:\\Director_install\\eXtendServer\\lib\\servlet.jar
  
  >java -cp %classpath% getDocuments

 
Top of page

WebDAVクライアントAPIの使用

コンテンツの共同操作を管理するためにexteNd Director CMサブシステムへのWebDAVアクセスを持つカスタムオーサリングツールを設計するには、WebDAVクライアントAPIを使用します。

独自のユーザインタフェースを作成する必要がありますが、クライアントから次の重要なCM機能を呼び出す論理的基盤がAPIにより提供されます。

 
Top of section

WebDAV要求およびWebDAV応答

WebDAVクライアントAPIでは、WebDAV要求を送信することによって、CM機能を呼び出すメソッドを提供します。各要求の結果は、成功または失敗の理由を示すステータスコードを含むWebDAV応答として返されます。

WebDAV要求は、ヘッダと本文から構成されます。要求ヘッダには、メソッド、ターゲットリソース、HTTPバージョン、およびメソッドのパラメータを含むキーと値のペアのシーケンスが含まれています。要求の本文では、必要に応じて追加の(そして、さらに複雑な可能性のある)パラメータが定義されます。

同様に、WebDAV応答も、ヘッダおよびオプションの本文から構成されます。応答ヘッダには、サーバで使用されるHTTPバージョンなどの応答に関する情報が、ステータスコードおよびメッセージとともに含まれます。 通常、応答の本文には、ドキュメントなどのメソッド実行の結果が含まれます。

WebDAVクライアントAPIのクラスは、特定のWebDAV要求を簡単に作成、送信し、応答を処理するためのメソッドを提供します。

For more informationWebDAVの詳細については、Webサイトでrfc2518 (WebDAVの仕様)を検索してください。

 
Top of section

リソース、コレクション、およびプロパティの操作

分散型Webオーサリングの情報要素で説明されているように、WebDAV要求は、Webリソース、コレクション、およびプロパティで動作します。WebDAV要求を発行する場合は、目的の要素に参照を渡す必要があります。この参照は、要素のサーバに相対的な、次の形式のURIでなければなりません。

  /database name/WebDAVService/main/path relative to default (root) folder

たとえば、exteNd DirectorデータベースがDirectorだとします。MyDocumentというドキュメントがTestというデフォルト(ルート)フォルダに存在する場合、URIは次のようになります。

  /Director/WebDAVService/main/Test/MyDocument

 
Top of section

クラス

WebDAVクライアントAPIは、次の主要なクラスから構成されます。

クラス

説明

EboDAVSwitch

WebDAV要求を構成し、WebDAV応答を取得します。

EboDAVException

WebDAV例外を定義します。

EboDAVStatus

WebDAV例外に関連付けられているステータスコードを示します。

中心であるEboDAVSwitch   EboDAVSwitchオブジェクトはWebDAVクライアントAPIの中心で、CMサブシステムと通信する機能性のほとんどが含まれています。EboDAVSwitchでは、WebDAVの要求と応答を転送する場合に必要な低レベルのSlideコードの多くをカプセル化するヘルパメソッドおよびユーティリティメソッドを提供します。

 
Top of section

ヘルパメソッド

EboDAVSwitchオブジェクトでは、WebDAV要求を構成するヘルパメソッドのセットを提供します。各ヘルパメソッドを使用すると、1行のコードで完全な要求を送信できます。

サポートされているWebDAV要求で、ヘルパメソッドが関連付けられているものは、次のとおりです。表のリンクをクリックすると、Javaクライアントプログラムで特定のWebDAV要求をコード化する方法の詳細が表示されます。

要求

ヘルパメソッド

ドキュメントへのカテゴリ参照の追加

addCategoryToDocument

ドキュメントの削除

copyElement

新しいコレクションの作成

makeCollection

カスタムテンプレートからの新しいドキュメントの作成

createNewDocument

ドキュメントの削除

deleteDocument

ドキュメントのロック

lockDocument

リソースまたはコレクションの移動

moveElement

ドキュメントからのカテゴリ参照の削除

removeCategoryFromDocument

ドキュメントからのすべてのカテゴリ参照の削除

removeAllCategoriesFromDocument

リソースまたはコレクションの名前変更

moveElement

ドキュメントでのカスタムフィールド値の設定

setFieldValueForDocument

ドキュメントのロック解除

unlockDocument

ドキュメントの更新

putDocument

WebDAV要求の一部は、ヘルプメソッドが関連付けられていないため、Slideクラスおよび\x83 \x86 \x81 [\x83 e\x83 B\x83 \x8a \x83 e\x83 B\x83 \x81 \x83 \\x83 b\x83 hを使用することによってのみ発行されます(次で説明します)。

For more informationWebDAVクライアントアプリケーションでこれらのヘルパメソッドを使用する方法については、ヘルパメソッドを使用したプログラミング練習を参照してください。

 
Top of section

ユーティリティメソッド

すべてのWebDAV要求は、ユーティリティメソッドを使用して呼び出すことができます。ヘルパメソッドに比べると、ユーティリティメソッドでは、より多くのSlide APIを発行しています。Slide APIにより提供される追加の機能性にアクセスできる一方、WebDAV要求を送信するためにより多くのコード行を記述しなければならないというマイナス面があります。

また、ユーティリティメソッドにより、ヘルパメソッドが関連付けられていないWebDAV要求を発行するメカニズムも提供されます。

Slide機能をラップするユーティリティメソッド

WebDAV要求を作成、発行するためのSlide機能をラップするユーティリティメソッドで、一般的に使用されるものは次のとおりです。

ユーティリティメソッド

機能

createCredentials

資格情報を作成します。

注記:   credentialsオブジェクトは、ユーザの認証に使用されるSlideオブジェクトです。

createWebDAVmethod

WebDAV要求の一部として実行するメソッドを作成します。

endSession

WebDAVクライアントセッションを終了します。

executeCommand

WebDAV要求を発行します。

getState

状態を取得します。

注記:   「状態」オブジェクトは、Slideオブジェクトです。状態オブジェクトでSlide method setAuthenticateTokenを呼び出し、ユーザを認証する方法を示します。

setCredentials

EboDAVSwitchオブジェクトで資格情報を設定します。

setState

認証トークンを使用して状態を設定します。

startSession

WebDAVクライアントセッションを開始します。

For more informationWebDAVクライアントアプリケーションでこれらのユーティリティメソッドを使用する方法の詳細については、ユーティリティメソッドを使用したプログラミング練習を参照してください。

関連付けられているSlide APIクラス

ユーティリティメソッドを操作する場合は、複数のSlide APIクラスを使用する必要があります。

For more informationこれらのクラスの詳細については、Slide WebDAVクライアントJavaDOCを次のURLで参照してください(この章の発行時点では、次のURLが使用されています)。

  http://jakarta.apache.org/slide/clientjavadoc/index.html

ヘルパメソッドのないWebDAV要求

exteNd Directorヘルパメソッドが関連付けられていないWebDAV要求のリストは、次のとおりです。これらは、SlideクラスおよびexteNd Directorユーティリティメソッドを使用することによってのみ実装できます。表のリンクをクリックすると、JavaクライアントプログラムでこれらのWebDAV要求をコード化する方法の詳細が表示されます。

WebDAV要求

関連付けられているWebDAVメソッド

リソースまたはコレクションの取得

GET

リソースまたはコレクションからのヘッダ情報の取得

HEAD

リソースまたはコレクションで呼び出すことができるメソッドの取得

OPTIONS

リソースまたはコレクションで定義されたプロパティの取得

PROPFIND

 
Top of page

プログラムを使用した例

この節では、カスタムJavaクライアントプログラムでWebDAV要求を発行してWebDAV応答を処理するためにクライアントAPIを使用する場合の最適な練習について説明します。論理は、ヘルパメソッドまたはユーティリティメソッドのどちらを使用するかによって異なります。

 
Top of section

ヘルパメソッドを使用したプログラミング練習

推奨される手順

WebDAV要求を発行するためにヘルパメソッドを使用する場合の手順は次のとおりです。

  1. EboDAVSwitchオブジェクトをインスタンス化します。

  2. EboDAVSwitchオブジェクトでセッションを開始します。

  3. try/catchブロックで、EboDAVSwitchオブジェクトのヘルパメソッドを呼び出します。

  4. 応答を取得し、必要に応じて結果を処理します。

  5. セッションを終了します。

コード例:ヘルパメソッドを使用したドキュメントの削除

次は、ヘルプメソッドdeleteDocument()をWebDAVクライアントで使用する方法を示すサンプルコードです。この例では、サーバURL=localhost、ポート=80です。削除するドキュメントは、引数としてメソッドに渡されます。

EboDAVStatusオブジェクトはインスタンス化されることにも注意してください。このオブジェクトは、要求のステータスを確認し、ユーザに成功または失敗したことを通知するために使用されます。

  /**
      deleteADocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class deleteADocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void deleteADocument (String document)
  	 {
  	  
          //Define variables
          int statuscode = 0;
          String user = "contentadmin";
          String password = "contentadmin";
          String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
  
          //Instantiate an EboDAVSwitch object
          EboDAVSwitch dav = new EboDAVSwitch();
  
          //Instantiate an EboDAVStatus object
          EboDAVStatus status = new EboDAVStatus();
  
          //Start a session
          dav.startSession("localhost", 80);
  
        
          try
         {
              //Lock document before trying to delete
              statuscode = dav.lockDocument(user, password, realm, document);
              if (statuscode==EboDAVStatus.SC_NO_CONTENT)
                 System.out.println(迭equest succeeded:The document is now locked・;
              else
                 System.out.println(迭equest failed:・+ status.getStatusText(statuscode));
  
              //Send the WebDAV request to delete document 
              statuscode = dav.deleteDocument(user, password, realm, document);
              if (statuscode==EboDAVStatus.SC_OK)
                 System.out.println("Request succeeded:The document was deleted.");
              else
                 System.out.println("Request failed:" + status.getStatusText(statuscode));
        
         }
          catch (EboDAVException e) {
              if (m_debug)
                 e.printStackTrace();
              else
                 System.out.println(e.getMessage());
         }
     
          //End session
          dav.endSession();
     }
  }

For more information    ユーティリティメソッドを使用して同じWebDAV要求を発行する方法を学習するには、コード例:ユーティリティメソッドを使用したドキュメントの削除を参照してください。

 
Top of section

ユーティリティメソッドを使用したプログラミング練習

推奨される手順

WebDAV要求を発行するためにユーティリティメソッドを使用する場合の手順は次のとおりです。

  1. EboDAVSwitchオブジェクトをインスタンス化します。

  2. EboDAVSwitchオブジェクトでセッションを開始します。

  3. EboDAVSwitchオブジェクトで資格情報を作成および設定します。

  4. EboDAVSwitchオブジェクトの状態および認証領域を取得および設定します。

  5. WebDAVのメソッドを作成します。

  6. WebDAVのメソッドを実行します。

  7. セッションを終了します。

Proppatchを使用するWebDAV要求の作成

WebDAV Proppatchメソッドは、次のようなさまざまなWebDAV要求を発行するために、exteNd Directorユーティリティメソッドとともに使用されます。

これらの各要求に対しては、SlideのPropPatchMethodオブジェクトをインスタンス化し、次の署名を使用してPropPatchMethodオブジェクトでaddPropertyToSet()メソッドを呼び出す必要があります。

  addPropertyToSet( String property name, String property value, String namespace-abbr, String namespace )

addPropertyToSet()に対する引数の説明は次のとおりです。

引数

説明

property name

更新するプロパティの名前またはUUID。

property value

更新するプロパティの値。

property nameがUUIDの場合、property valueはnullでなければなりません。

namespace-abbr

PropPatchメソッド要求内で固有でなければならない任意の文字列。

namespace

PropPatchメソッドを使用して発行される要求のタイプ。

このような要求は、次のEboWebdavConstantsクラスのフィールドとして定義されます。

  • EboWebdavConstants.PROPPATCH_SETFIELDVALUE

  • EboWebdavConstants.PROPPATCH_ADDCATEGORY

  • EboWebdavConstants.PROPPATCH_REMOVECATEGORY

  • EboWebdavConstants.PROPPATCH_REMOVEALLCATEGORIES

標準フィールドの値の設定   WebDAV Proppatchメソッドを使用すると、タイトルや作成者などのドキュメントの標準フィールドの値を設定することもできます。このような場合は、namespace-abbr引数やnamespace引数なしでaddPropertyToSet()を呼び出します。

コード例:ユーティリティメソッドを使用したドキュメントの削除

次は、ドキュメントを削除する要求を送信するために、WebDAVクライアントでSlideクラスのあるユーティリティメソッドを使用する方法を示したサンプルコードです。この例では、サーバURL=localhost、ポート=80です。この例では、次のSlideクラスが使用されています。

For more information    ヘルパメソッドを使用して同じWebDAV要求を発行する方法を学習するには、コード例:ヘルパメソッドを使用したドキュメントの削除を参照してください。

 
Top of page

JavaクライアントからのWebDAV要求の発行

この節では、JavaクライアントアプリケーションからWebDAV要求を発行する方法について説明します。説明されている機能は、次のとおりです。

 
Top of section

ドキュメントへのカテゴリ参照の追加

次のコード例では、ドキュメントにカテゴリ参照を追加する方法を示します。カテゴリは、CMサブシステムで論理的にドキュメントをグループ化する場合に使用される、わかりやすい名前です。

コード例:ヘルパメソッドを使用したカテゴリ参照の追加

この例では、ヘルパメソッドaddCategoryToDocument()を使用します。

  /**
      addCategoryReferenceToDocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class addCategoryReferenceToDocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void addCategoryReferenceToDocument (String document, String categoryUUID)
  	 {
  	  
        //Define variables
        int statuscode = 0;
        String user = "contentadmin";
        String password = "contentadmin";
        String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     
        //Instantiate an EboDAVSwitch object
        EboDAVSwitch dav = new EboDAVSwitch();
  
        //Instantiate an EboDAVStatus object
        EboDAVStatus status = new EboDAVStatus();
  
        //Start a session
        dav.startSession("localhost", 80);
  
  
        try
        {
  
           //Lock the document
           statuscode = dav.lockDocument(user, password, realm, document);
           if (statuscode == EboDAVStatus.SC_NO_CONTENT)
              System.out.println(迭equest succeeded:The category was added to ・+ document);
           else
              System.out.println(迭equest failed:・+ status.getStatusText(statuscode));
  
           //Send the WebDAV request to add a category reference      
           statuscode = dav.addCategoryToDocument(user, password, realm, document, categoryUUID);
           if (statuscode==EboDAVStatus.SC_MULTI_STATUS)
              System.out.println("Request succeeded:The category was added to " + document);
           else
              System.out.println("Request failed:" + status.getStatusText(statuscode));
  
           //Unlock the document
           statuscode = dav.unlockDocument(user, password, realm, document);
           if (statuscode == EboDAVStatus.SC_NO_CONTENT)
              System.out.println(迭equest succeeded:The document was unlocked.・;
           else
              System.out.println(迭equest failed:・+ status.getStatusText(statuscode));
        }
        catch (EboDAVException e)
        {
           if (m_debug)
              e.printStackTrace();
           else
              System.out.println(e.getMessage());
        }
     
       //End session
        dav.endSession();
     }
  }

コード例:ユーティリティメソッドを使用したカテゴリ参照の追加

この例では、SlideのPropPatchMethodクラスと、exteNd DirectorユーティリティメソッドのstartSession()、createCredentials()、setCredentials()、getState()、setState()、およびcreateWebDAVMethod()を使用します。

カテゴリ参照を追加するメソッドはaddPropertyToSet()で、PropPatchMethodオブジェクトで呼び出されます。カテゴリUUIDは、最初の引数であるproperty nameとして渡されるため、2番目の引数であるproperty valueはnullです。addPropertyToSet()およびその引数の詳細については、Proppatchを使用するWebDAV要求の作成を参照してください。

  /**
      addCategoryReference
  
  */
  import com.sssw.webdav.client.*;
  import com.sssw.webdav.common.EboWebdavConstants;
  import org.apache.webdav.lib.*;
  import org.apache.webdav.lib.methods.*;
  
  public class addCategoryReference
  {
     private static boolean m_debug = false;
  	 
     public void addCategoryReference (String document, String categoryUUID)
     {
        //Define variables
        int statuscode = 0;
        String user = "contentadmin";
        String password = "contentadmin";
        String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
        String namespace-abbr = "AC";
  
        //Instantiate an EboDAVSwitch object
        EboDAVSwitch dav = new EboDAVSwitch();
  
        //Instantiate an EboDAVStatus object
        EboDAVStatus status = new EboDAVStatus();
  
        //Start a session
        dav.startSession("localhost", 80);
  
        //Get and set credentials
        Credentials credentials = dav.createCredentials(user, password);
        dav.setCredentials(credentials);
  
        //Get and set state and authentication realm
        State state = dav.getState();
        state.setAuthenticateToken(realm);
        dav.setState(state);
  
        try
        {
  
           //Lock the document
           //Create the WebDAV method object LockMethod
           LockMethod lm = (LockMethod)dav.createWebdavMethod(dav.LOCK_METHOD,document);
  
           //Set the owner
           lm.setOwner(user);
  
           //Execute the command
           dav.executeCommand(lm);
           statuscode = lm.getStatusCode();
           if (statuscode == (EboDAVStatus.SC_NO_CONTENT))
              System.out.println(迭equest succeeded:The document was locked.・;
           else
              System.out.println(迭equest failed:・+ status.getStatusText(statuscode));
  
           //Create the WebDAV method object PropPatchMethod
           PropPatchMethod ppm = (PropPatchMethod)dav.createWebdavMethod(dav.PROPPATCH_METHOD,document);
           ppm.addPropertyToSet( categoryUUID, null, namespace-abbr, EboWebdavConstants.PROPPATCH_ADDCATEGORY);
  
           //Execute PropPatchMethod (send the WebDAV request to add category reference)
           dav.executeCommand(ppm);
           statuscode = ppm.getStatusCode();
           if (statuscode == (EboDAVStatus.SC_MULTI_STATUS))
              System.out.println("Request succeeded:The category was added to " + document + ".");
           else
              System.out.println("Request failed:" + status.getStatusText(statuscode));
        
           //Create the WebDAV method object UnlockMethod
           UnlockMethod ulm = (UnlockMethod)dav.createWebdavMethod(dav.UNLOCK_METHOD,document);
  
           //Execute UnlockMethod
           dav.executeCommand(ulm);
           statuscode = ulm.getStatusCode();
           if (statuscode == (EboDAVStatus.SC_NO_CONTENT))
              System.out.println(迭equest succeeded:The document was unlocked.・;
           else
              System.out.println(迭equest failed:・+ status.getStatusText(statuscode));
        }
        catch (EboDAVException e)
        {
           if (m_debug)
              e.printStackTrace();
           else
              System.out.println(e.getMessage());
        }
        catch (java.net.MalformedURLException murle)
        {
          if (m_debug)
              murle.printStackTrace();
           else
              System.out.println(murle.getMessage());
        }
        catch (java.io.IOException ioe)
        {
           if (m_debug)
              ioe.printStackTrace();
           else
              System.out.println(ioe.getMessage());
        }
  
  
        //End session
        dav.endSession();
     }
  }

 
Top of section

リソースまたはコレクションのコピー

次のコードでは、ソースパスからコピー先のパスへドキュメントをコピーする方法を示します。この場合、ソースパスはドキュメントを指します。他のタイプのリソースまたはコレクションをコピーするには、ソースパスが目的の要素を指していることを確認します。

コード例:ヘルパメソッドを使用したドキュメントのコピー

この例では、ヘルパメソッドcopyElement()を使用します。

  /**
      copyADocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class copyADocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void copyADocument (String docsourcepath, String docdestinationpath)
  	 {
  	  
         //Define variables
         int statuscode = 0;
         String user = "contentadmin";
         String password = "contentadmin";
         String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
         boolean overwrite = true; //Overwrite an existing document of the same name in the docdestinationpath
         boolean autogen = true; //Generate folders in the docdestinationpath if they don\qt exist
     
         //Instantiate an EboDAVSwitch object
         EboDAVSwitch dav = new EboDAVSwitch();
  
         //Instantiate an EboDAVStatus object
         EboDAVStatus status = new EboDAVStatus();
  
         //Start a session
         dav.startSession("localhost", 80);
  
         //Send the WebDAV request to copy document
         try
         {
            statuscode = dav.copyElement(user, password, realm, docsourcepath, docdestinationpath, overwrite, autogen);
            if (statuscode==EboDAVStatus.SC_CREATED)
               System.out.println("Request succeeded:The document " + docsourcepath + "was copied to " + docdestinationpath);
            else
               System.out.println("Request failed:" + status.getStatusText(statuscode));
         }
         catch (EboDAVException e)
         {
            if (m_debug)
               e.printStackTrace();
            else
               System.out.println(e.getMessage());
         }
     
         //End session
         dav.endSession();
     }
  }

For more information    SlideのCopyMethodクラスとexteNd Directorユーティリティメソッドを使用して、リソースまたはコレクションをコピーすることもできます。ユーティリティメソッドを使用したプログラミング練習を参照してください。

 
Top of section

新しいコレクションの作成

次のコードでは、新しいコレクションの作成方法を示します。コレクションとは、他のリソースやコレクションのコンテナです。フォルダは、コレクションの一例です。

コード例:ヘルパメソッドを使用したコレクションの作成

この例では、ヘルパメソッドmakeCollection()を使用します。

  /**
      makeACollection
  
  */
  import com.sssw.webdav.client.*;
  
  public class makeACollection {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void makeACollection (String parent_folder, String folder_name)
  	 {
  	  
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
       
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Send the WebDAV request to make a collection
     try 
     {
        statuscode = dav.makeCollection(user, password, realm, parent_folder, folder_name, true);
        if (statuscode==EboDAVStatus.SC_CREATED)
           System.out.println("Request succeeded:The collection " + parent_folder + "/" + folder_name + "was created.");
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     
     //End session
     dav.endSession();
     }
  }

SlideのMkcolMethodクラスとexteNd Directorユーティリティメソッドを使用して、新しいコレクションを作成することもできます。ユーティリティメソッドを使用したプログラミング練習を参照してください。

 
Top of section

カスタムテンプレートからの新しいドキュメントの作成

次のコードでは、カスタムテンプレートから新しいドキュメントを作成する方法を示します。カスタムテンプレートとは、CM APIまたはCMS管理コンソールを使用してexteNd Director CMサブシステムで定義するドキュメントタイプです。

作成されるドキュメントには、このドキュメントタイプで定義されたカスタムフィールドの他に、コンテンツ「Hello world!」が含まれます。

コード例:ヘルパメソッドを使用したドキュメントの作成

この例では、ヘルパメソッドcreateNewDocument()を使用します。ドキュメントタイプは、ユーザ名、パスワード、領域、格納フォルダ、およびコンテンツとともに、createNewDocumentに引数として渡されます。

  /**
      createADocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class createADocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void createADocument (String document, String folder, String documentType)
  	 {
  	  
         //Define variables
         int statuscode = 0;
         String user = "contentadmin";
         String password = "contentadmin";
         String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
         String sourcetext = "Hello world!";
         byte [] content = sourcetext.getBytes();
     
         //Instantiate an EboDAVSwitch object
         EboDAVSwitch dav = new EboDAVSwitch();
  
         //Instantiate an EboDAVStatus object
         EboDAVStatus status = new EboDAVStatus();
  
         //Start a session
         dav.startSession("localhost", 80);
  
         //Send the WebDAV request to create a document
         try
         {
            statuscode = dav.createNewDocument(user, password, realm, folder, document, documentType, content);
            if (statuscode==EboDAVStatus.SC_CREATED)
               System.out.println("Request succeeded:The document " + document + "was created.");
            else
               System.out.println("Request failed:" + status.getStatusText(statuscode));
        
         }
         catch (EboDAVException e)
         {
            if (m_debug)
               e.printStackTrace();
            else
               System.out.println(e.getMessage());
         }
     
         //End session
         dav.endSession();
     }
  }

 
Top of section

ドキュメントの削除

For more information    WebDAVクライアントからドキュメントを削除する例については、コード例:ヘルパメソッドを使用したドキュメントの削除およびコード例:ユーティリティメソッドを使用したドキュメントの削除を参照してください。

 
Top of section

リソースまたはコレクションの取得

次のコードでは、CMサブシステムに保存されているドキュメントのコンテンツを取得する方法を示します。ドキュメントは、createWebDAVMethod()ユーティリティメソッドの2番目の引数として参照されます。他のタイプのリソースまたはコレクションを取得するには、目的の要素を指すようにこの引数を変更します。

コード例:ユーティリティメソッドを使用したドキュメントの取得

この例では、SlideのGetMethodクラスと、exteNd DirectorユーティリティメソッドのstartSession()、createCredentials()、setCredentials()、getState()、setState()、およびcreateWebDAVMethod()を使用します。

GetMethodクラスでgetDataAsString()メソッドを呼び出すと、クライアントアプリケーションにより、ドキュメントのコンテンツがHTML形式で取得されます。

リソースまたはコレクションを取得するためのヘルパメソッドはありません。

  /**
      getTheDocument
  
  */
  import com.sssw.webdav.client.*;
  import org.apache.webdav.lib.*;
  import org.apache.webdav.lib.methods.*;
  
  public class getTheDocument
  {
     private static boolean m_debug = false;
  	 
     public void getTheDocument (String document)
     {
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
  
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Get and set credentials
     Credentials credentials = dav.createCredentials(user, password);
     dav.setCredentials(credentials);
  
     //Get and set state and authentication realm
     State state = dav.getState();
     state.setAuthenticateToken(realm);
     dav.setState(state);
  
     //Create the WebDAV method object GetMethod
     GetMethod gm = (GetMethod)dav.createWebdavMethod(dav.GET_METHOD,document);
  
     //Execute GetMethod (send the WebDAV request to get document)
     try 
     {
        dav.executeCommand(gm);
        statuscode = gm.getStatusCode();
        if (statuscode == (EboDAVStatus.SC_OK))
        {
           String html = gm.getDataAsString();
           System.out.println("Request succeeded:Got the document and its content as html.");
        }
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     catch (java.net.MalformedURLException murle)
     {
        if (m_debug)
           murle.printStackTrace();
        else
           System.out.println(murle.getMessage());
     }
     catch (java.io.IOException ioe)
     {
        if (m_debug)
           ioe.printStackTrace();
        else
           System.out.println(ioe.getMessage());
     }
  
  
     //End session
     dav.endSession();
     }
  }

リソースまたはコレクションを取得するためのexteNd Directorヘルパメソッドはありません。

 
Top of section

リソースまたはコレクションからのヘッダ情報の取得

次のコードでは、CMサブシステムに保存されているドキュメントのヘッダ情報を取得する方法を示します。ドキュメントは、createWebDAVMethod()ユーティリティメソッドの2番目の引数として参照されます。他のタイプのリソースまたはコレクションを取得するには、目的の要素を指すようにこの引数を変更します。

コード例:ユーティリティメソッドを使用したヘッダ情報の取得

この例では、SlideのHeadMethodクラスと、exteNd DirectorユーティリティメソッドのstartSession()、createCredentials()、setCredentials()、getState()、setState()、およびcreateWebDAVMethod()を使用します。

リソースまたはコレクションを取得するためのヘルパメソッドはありません。

  /**
      getDocumentHeader
  
  */
  import com.sssw.webdav.client.*;
  import org.apache.webdav.lib.*;
  import org.apache.webdav.lib.methods.*;
  
  public class getDocumentHeader
  {
     private static boolean m_debug = false;
  	 
     public void getDocumentHeader (String document)
     {
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     String authtype = 涛;
  
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Get and set credentials
     Credentials credentials = dav.createCredentials(user, password);
     dav.setCredentials(credentials);
  
     //Get and set state and authentication realm
     State state = dav.getState();
     state.setAuthenticateToken(realm);
     dav.setState(state);
  
     //Create the WebDAV method object HeadMethod
     HeadMethod hm = (HeadMethod)dav.createWebdavMethod(dav.HEAD_METHOD,document);
  
     //Execute HeadMethod (send the WebDAV request to get document header)
     try 
     {
        dav.executeCommand(hm);
        statuscode = hm.getStatusCode();
        if (statuscode == (EboDAVStatus.SC_OK))
        {
           //Get authorization type from header
           authtype = hm.getHeader (殿uthorization・.toString();
           System.out.println("Request succeeded:Got the document header.Authorization type is ・+ authtype);
        }
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     catch (java.net.MalformedURLException murle)
     {
        if (m_debug)
           murle.printStackTrace();
        else
           System.out.println(murle.getMessage());
     }
     catch (java.io.IOException ioe)
     {
        if (m_debug)
           ioe.printStackTrace();
        else
           System.out.println(ioe.getMessage());
     }
  
  
     //End session
     dav.endSession();
     }
  }

リソースまたはコレクションからヘッダ情報を取得するためのexteNd Directorヘルパメソッドはありません。

 
Top of section

リソースまたはコレクションで呼び出すことができるメソッドの取得

次のコードでは、CMサブシステムに保存されているドキュメントで呼び出すことができるメソッドを取得する方法を示します。ドキュメントは、createWebDAVMethod()ユーティリティメソッドの2番目の引数として参照されます。他のタイプのリソースまたはコレクションを取得するには、目的の要素を指すようにこの引数を変更します。

コード例:ユーティリティメソッドを使用した許可メソッドの取得

この例では、SlideのOptionsMethodクラスと、exteNd DirectorユーティリティメソッドのstartSession()、createCredentials()、setCredentials()、getState()、setState()、およびcreateWebDAVMethod()を使用します。

リソースまたはコレクションで許可メソッドを取得するためのヘルパメソッドはありません。

  /**
      getAllowedMethods
  
  */
  import com.sssw.webdav.client.*;
  import org.apache.webdav.lib.*;
  import org.apache.webdav.lib.methods.*;
  import java.util.*;
  
  public class getAllowedMethods
  {
     private static boolean m_debug = false;
  	 
     public void getAllowedMethods (String document)
     {
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
  
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Get and set credentials
     Credentials credentials = dav.createCredentials(user, password);
     dav.setCredentials(credentials);
  
     //Get and set state and authentication realm
     State state = dav.getState();
     state.setAuthenticateToken(realm);
     dav.setState(state);
  
     //Create the WebDAV method object HeadMethod
     OptionsMethod om = (OptionsMethod)dav.createWebdavMethod(dav.OPTIONS,document);
  
     //Execute OptionsMethod (send the WebDAV request to get the allowed methods on 
  	 //the document)
     try 
     {
        dav.executeCommand(om);
        statuscode = om.getStatusCode();
        if (statuscode == (EboDAVStatus.SC_OK))
        {
           System.out.println("Request succeeded:Got the document header.\n");
           System.out.println("The allowed methods on " + document + " are:\n");
           Enumeration methods = om.getAllowedMethods();
           while (methods.hasMoreElements()) {
              System.out.println( methods.nextElement().toString() + "\n" );
           }
        }
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     catch (java.net.MalformedURLException murle)
     {
        if (m_debug)
           murle.printStackTrace();
        else
           System.out.println(murle.getMessage());
     }
     catch (java.io.IOException ioe)
     {
        if (m_debug)
           ioe.printStackTrace();
        else
           System.out.println(ioe.getMessage());
     }
  
  
     //End session
     dav.endSession();
     }
  }

リソースまたはコレクションで呼び出すことができるメソッドを取得するためのexteNd Directorヘルパメソッドはありません。

 
Top of section

リソースまたはコレクションで定義されたプロパティの取得

次のコードでは、CMサブシステムに保存されているドキュメントで定義されたプロパティを取得する方法を示します。ドキュメントは、createWebDAVMethod()ユーティリティメソッドの2番目の引数として参照されます。他のタイプのリソースまたはコレクションを取得するには、目的の要素を指すようにこの引数を変更します。

コード例:ユーティリティメソッドを使用したプロパティの取得

この例では、SlideのPropFindMethodクラスと、exteNd DirectorユーティリティメソッドのstartSession()、createCredentials()、setCredentials()、getState()、setState()、およびcreateWebDAVMethod()を使用します。

リソースまたはコレクションで定義されたプロパティを取得するためのヘルパメソッドはありません。

  /**
      getProperties
  
  */
  import com.sssw.webdav.client.*;
  import org.apache.webdav.lib.*;
  import org.apache.webdav.lib.methods.*;
  import java.util.*;
  
  public class getProperties
  {
     private static boolean m_debug = false;
  	 
     public void getProperties (String document)
     {
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
  
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Get and set credentials
     Credentials credentials = dav.createCredentials(user, password);
     dav.setCredentials(credentials);
  
     //Get and set state and authentication realm
     State state = dav.getState();
     state.setAuthenticateToken(realm);
     dav.setState(state);
  
     //Create the WebDAV method object PropFindMethod
     PropFindMethod pfm = (PropFindMethod)dav.createWebdavMethod(dav.PROPFIND_METHOD,document);
  
     //Execute PropFindMethod (send the WebDAV request to get the properties defined on 
  	 //the document)
     try 
     {
        dav.executeCommand(pfm);
        statuscode = pfm.getStatusCode();
        if (statuscode == (EboDAVStatus.SC_MULTI_STATUS))
        {
           System.out.println("Request succeeded:Got the properties.\n");
           System.out.println("The properties defined on " + document + " are:\n");
           Enumeration props = pfm.getResponseProperties(document);
           while (props.hasMoreElements()) {
              System.out.println( props.nextElement().toString() + "\n" );
           }
        }
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     catch (java.net.MalformedURLException murle)
     {
        if (m_debug)
           murle.printStackTrace();
        else
           System.out.println(murle.getMessage());
     }
     catch (java.io.IOException ioe)
     {
        if (m_debug)
           ioe.printStackTrace();
        else
           System.out.println(ioe.getMessage());
     }
  
  
     //End session
     dav.endSession();
     }
  }

リソースまたはコレクションで呼び出すことができるメソッドを取得するためのexteNd Directorヘルパメソッドはありません。

 
Top of section

ドキュメントのロック

次のコードでは、共同環境で排他的アクセスに対してドキュメントをロックする方法を示します。この機能は、ユーザがドキュメントをチェックアウトする際にWebDAVクライアントアプリケーションで呼び出すことができます。

コード例:ヘルパメソッドを使用したドキュメントのロック

この例では、ヘルパメソッドlockDocument()を使用します。目的のドキュメントがすでにロックされている場合は、このメソッドにより例外がスローされます。この状況をはっきりと確認するために、コードではcheckLockToken()メソッドを呼び出します。

  /**
      lockADocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class lockADocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void lockADocument (String document)
  	 {
  	  
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
     try
        {
         //If document not already locked, send the WebDAV request to lock the document
         if ( dav.checkLockToken(document) == null)
         {
             statuscode = dav.lockDocument(user, password, realm, document);
             if (statuscode==EboDAVStatus.SC_NO_CONTENT)
                System.out.println("Request succeeded:The document " + document + "was locked.");
             else
                System.out.println("Request failed:" + status.getStatusText(statuscode));
         }
          else
             System.out.println(泥ocument is already locked.・;
        
        }
        catch (EboDAVException e)
        {
           if (m_debug)
              e.printStackTrace();
           else
              System.out.println(e.getMessage());
        }
  
     //End session
     dav.endSession();
     }
  }

SlideのLockMethodクラスとexteNd Directorユーティリティメソッドを使用して、ドキュメントをロックすることもできます。ユーティリティメソッドを使用したプログラミング練習を参照してください。

 
Top of section

リソースまたはコレクションの移動

次のコードでは、ソースパスから移動先のパスへフォルダを移動する方法を示します。この場合、ソースパスはフォルダを指します。他のタイプのリソースまたはコレクションを移動するには、ソースパスが目的の要素を指定していることを確認します。

コード例:ヘルパメソッドを使用したフォルダの移動

この例では、ヘルパメソッドmoveElement()を使用します。

  /**
      moveAFolder
  
  */
  import com.sssw.webdav.client.*;
  
  public class moveAFolder {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void moveAFolder (String foldersourcepath, String folderdestinationpath)
  	 {
  	  
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     boolean autogen = true; //Generate folders in the folderdestinationpath if they don\qt exist
     
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Send the WebDAV request to move folder
     try 
     {
        statuscode = dav.moveElement(user, password, realm, foldersourcepath, folderdestinationpath, autogen);
        if (statuscode==EboDAVStatus.SC_CREATED)
           System.out.println("Request succeeded:The folder " + foldersourcepath + "was moved to " + folderdestinationpath);
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     
     //End session
     dav.endSession();
     }
  }

SlideのMoveMethodクラスとexteNd Directorユーティリティメソッドを使用して、リソースまたはコレクションを移動することもできます。ユーティリティメソッドを使用したプログラミング練習を参照してください。

 
Top of section

ドキュメントからのカテゴリ参照の削除

次のコード例では、ドキュメントからカテゴリ参照を削除する方法を示します。カテゴリは、CMサブシステムで論理的にドキュメントをグループ化する場合に使用される、わかりやすい名前です。

コード例:ヘルパメソッドを使用したカテゴリ参照の削除

この例では、ヘルパメソッドremoveCategoryFromDocument()を使用します。

  /**
      removeCategoryReferenceFromDocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class removeCategoryReferenceFromDocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void removeCategoryReferenceFromDocument (String document, String categoryUUID)
  	 {
  	  
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Send the WebDAV request to remove a category reference
     try 
     {
        statuscode = dav.removeCategoryFromDocument(user, password, realm, document, categoryUUID);
        if (statuscode==EboDAVStatus.SC_MULTI_STATUS)
           System.out.println("Request succeeded:The category was removed from " + document);
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     
     //End session
     dav.endSession();
     }
  }

コード例:ユーティリティメソッドを使用したカテゴリ参照の削除

この例では、SlideのPropPatchMethodクラスと、exteNd DirectorユーティリティメソッドのstartSession()、createCredentials()、setCredentials()、getState()、setState()、およびcreateWebDAVMethod()を使用します。

カテゴリ参照を削除するメソッドはaddPropertyToSet()で、PropPatchMethodオブジェクトで呼び出されます。カテゴリUUIDは、最初の引数であるproperty nameとして渡されるため、2番目の引数であるproperty valueはnullです。addPropertyToSet()およびその引数の詳細については、Proppatchを使用するWebDAV要求の作成を参照してください。

  /**
      removeCategoryReference
  
  */
  import com.sssw.webdav.client.*;
  import com.sssw.webdav.common.EboWebdavConstants;
  import org.apache.webdav.lib.*;
  import org.apache.webdav.lib.methods.*;
  
  public class removeCategoryReference
  {
     private static boolean m_debug = false;
  	 
     public void removeCategoryReference (String document, String categoryUUID)
     {
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     String namespace-abbr = "RC";
  
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Get and set credentials
     Credentials credentials = dav.createCredentials(user, password);
     dav.setCredentials(credentials);
  
     //Get and set state and authentication realm
     State state = dav.getState();
     state.setAuthenticateToken(realm);
     dav.setState(state);
  
     //Create the WebDAV method object PropPatchMethod
     PropPatchMethod ppm = (PropPatchMethod)dav.createWebdavMethod(dav.PROPPATCH_METHOD,document);
     ppm.addPropertyToSet( categoryUUID, null, namespace-abbr, EboWebdavConstants.PROPPATCH_REMOVECATEGORY);
  
     //Execute PropPatchMethod (send the WebDAV request to remove category reference)
     try 
     {
        dav.executeCommand(ppm);
        statuscode = ppm.getStatusCode();
        if (statuscode == (EboDAVStatus.MULTI_STATUS))
           System.out.println("Request succeeded:The category was removed from " + document + ".");
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     catch (java.net.MalformedURLException murle)
     {
        if (m_debug)
           murle.printStackTrace();
        else
           System.out.println(murle.getMessage());
     }
     catch (java.io.IOException ioe)
     {
        if (m_debug)
           ioe.printStackTrace();
        else
           System.out.println(ioe.getMessage());
     }
  
  
     //End session
     dav.endSession();
     }
  }

 
Top of section

ドキュメントからのすべてのカテゴリ参照の削除

次のコード例では、ドキュメントからすべてのカテゴリ参照を削除する方法を示します。カテゴリは、CMサブシステムで論理的にドキュメントをグループ化する場合に使用される、わかりやすい名前です。

コード例:ヘルパメソッドを使用したすべてのカテゴリ参照の削除

この例では、ヘルパメソッドremoveAllCategoriesFromDocument()を使用します。

  /**
      removeAllCategoryReferencesFromDocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class removeAllCategoryReferencesFromDocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void removeAllCategoryReferencesFromDocument (String document)
  	 {
  	  
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Send the WebDAV request to remove all category references from the document
     try 
     {
        statuscode = dav.removeAllCategoriesFromDocument(user, password, realm, document);
        if (statuscode==EboDAVStatus.MULTI_STATUS)
           System.out.println("Request succeeded:All categories were removed from " + document);
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     
     //End session
     dav.endSession();
     }
  }

コード例:ユーティリティメソッドを使用したすべてのカテゴリ参照の削除

この例では、SlideのPropPatchMethodクラスと、exteNd DirectorユーティリティメソッドのstartSession()、createCredentials()、setCredentials()、getState()、setState()、およびcreateWebDAVMethod()を使用します。

すべてのカテゴリ参照を削除するメソッドはaddPropertyToSet()で、PropPatchMethodオブジェクトで呼び出されます。ドキュメントUUIDは、最初の引数であるproperty nameとして渡されるため、2番目の引数であるproperty valueはnullです。addPropertyToSet()およびその引数の詳細については、Proppatchを使用するWebDAV要求の作成を参照してください。

  /**
      removeAllCategoryReferences
  
  */
  import com.sssw.webdav.client.*;
  import com.sssw.webdav.common.EboWebdavConstants;
  import org.apache.webdav.lib.*;
  import org.apache.webdav.lib.methods.*;
  
  public class removeAllCategoryReferences
  {
     private static boolean m_debug = false;
  	 
     public void removeAllCategoryReferences (String documentUUID)
     {
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     String namespace-abbr = "RAC";
  
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Get and set credentials
     Credentials credentials = dav.createCredentials(user, password);
     dav.setCredentials(credentials);
  
     //Get and set state and authentication realm
     State state = dav.getState();
     state.setAuthenticateToken(realm);
     dav.setState(state);
  
     //Create the WebDAV method object PropPatchMethod
     PropPatchMethod ppm = (PropPatchMethod)dav.createWebdavMethod(dav.PROPPATCH_METHOD,document);
     ppm.addPropertyToSet( documentUUID, null, namespace-abbr, EboWebdavConstants.PROPPATCH_REMOVEALLCATEGORIES);
  
     //Execute PropPatchMethod (send the WebDAV request to remove all category references)
     try 
     {
        dav.executeCommand(ppm);
        statuscode = ppm.getStatusCode();
        if (statuscode == (EboDAVStatus.SC_OK))
           System.out.println("Request succeeded:All categories were removed.");
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     catch (java.net.MalformedURLException murle)
     {
        if (m_debug)
           murle.printStackTrace();
        else
           System.out.println(murle.getMessage());
     }
     catch (java.io.IOException ioe)
     {
        if (m_debug)
           ioe.printStackTrace();
        else
           System.out.println(ioe.getMessage());
     }
  
  //End session
     dav.endSession();
     }
  }

 
Top of section

リソースまたはコレクションの名前変更

次のコードでは、ドキュメントの名前を変更する方法を示します。この場合、ソースパスはドキュメントを指します。対象のパスは、別のドキュメント名である場合を除き、ソースパスと同一です。

他のタイプのリソースまたはコレクションの名前を変更するには、ソースパスが目的の要素を指しており、対象のパスが別の名前の同じ要素を指していることを確認します。

コード例:ヘルパメソッドを使用したドキュメントの名前変更

この例では、ヘルパメソッドmoveElement()を使用します。

  //**
      renameADocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class renameADocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void renameADocument (String docsourcepath, String docdestinationpath)
  	 {
  	  
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     boolean autogen = false; //Do not generate folders in the docdestinationpath if they don\qt exist
     
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Send the WebDAV request to rename the document
     try 
     {
        statuscode = dav.moveElement(user, password, realm, docsourcepath, docdestinationpath, autogen);
        if (statuscode==EboDAVStatus.SC_CREATED)
           System.out.println("Request succeeded:The document " + docsourcepath + "was renamed to " + docdestinationpath);
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     
     //End session
     dav.endSession();
     }
  }

SlideのMoveMethodクラスとexteNd Directorユーティリティメソッドを使用して、リソースまたはコレクションの名前を変更することもできます。ユーティリティメソッドを使用したプログラミング練習を参照してください。

 
Top of section

ドキュメントでのカスタムフィールド値の設定

次のコード例では、カスタムフィールドの値を設定することによってドキュメントのカスタムメタデータを更新する方法を示します。カスタムフィールドとは、CM APIまたはCMS管理コンソールを使用してCMサブシステムで作成されるカスタムドキュメントタイプの一部として定義するフィールドです。

ドキュメントで標準のメタデータを更新するには、Proppatchを使用するWebDAV要求の作成の説明に従って、ProppatchメソッドオブジェクトでaddPropertyToSet()メソッドを使用します。

コード例:ヘルパメソッドを使用したフィールド値の設定

この例では、ヘルパメソッドsetFieldValueForDocument()を使用します。このメソッドは、カスタムフィールドの既存の値を上書きします。

  /**
      setFieldValueOfADocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class setFieldValueOfADocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void setFieldValueOfADocument (String document, String field_name, String field_value)
  	 {
  	  
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Send the WebDAV request to update the custom field
     try 
     {
        statuscode = dav.setFieldValueForDocument(user, password, realm, document, field_name, field_value);
        if (statuscode==EboDAVStatus.SC_MULTI_STATUS)
           System.out.println("Request succeeded:The field " + field_name + " of document " + document + "was changed to " + field_value);
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     
     //End session
     dav.endSession();
     }
  }

コード例:ユーティリティメソッドを使用したフィールド値の設定

この例では、SlideのPropPatchMethodクラスと、exteNd DirectorユーティリティメソッドのstartSession()、createCredentials()、setCredentials()、getState()、setState()、およびcreateWebDAVMethod()を使用します。

  /**
       setTheFieldValue
  
  */
  import com.sssw.webdav.client.*;
  import com.sssw.webdav.common.EboWebdavConstants;
  import org.apache.webdav.lib.*;
  import org.apache.webdav.lib.methods.*;
  
  public class setTheFieldValue
  {
     private static boolean m_debug = false;
  	 
     public void setTheFieldValue (String document)
     {
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     String fieldname = "Department";
     String fieldvalue = "Human Resources";
     String namespace-abbr = "SFV";
  
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Get and set credentials
     Credentials credentials = dav.createCredentials(user, password);
     dav.setCredentials(credentials);
  
     //Get and set state and authentication realm
     State state = dav.getState();
     state.setAuthenticateToken(realm);
     dav.setState(state);
  
     //Create the WebDAV method object PropPatchMethod
     PropPatchMethod ppm = (PropPatchMethod)dav.createWebdavMethod(dav.PROPPATCH_METHOD,document);
     ppm.addPropertyToSet( fieldname, fieldvalue, namespace-abbr, EboWebdavConstants.PROPPATCH_SETFIELDVALUE);
  
     //Execute PropPatchMethod (send the WebDAV request to set field value)
     try 
     {
        dav.executeCommand(ppm);
        statuscode = ppm.getStatusCode();
        if (statuscode == (EboDAVStatus.SC_MULTI_STATUS))
           System.out.println("Request succeeded:The field " + fieldname + " was set to " + fieldvalue + ".");
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     catch (java.net.MalformedURLException murle)
     {
        if (m_debug)
           murle.printStackTrace();
        else
           System.out.println(murle.getMessage());
     }
     catch (java.io.IOException ioe)
     {
        if (m_debug)
           ioe.printStackTrace();
        else
           System.out.println(ioe.getMessage());
     }
  
  
     //End session
     dav.endSession();
     }
  }

 
Top of section

ドキュメントのロック解除

次のコードでは、共同環境で他の作成者が使用できるようにドキュメントのロックを解除する方法を示します。この機能は、ユーザがドキュメントをチェックインする際にWebDAVクライアントアプリケーションで呼び出すことができます。

コード例:ヘルパメソッドを使用したドキュメントのロック解除

この例では、ヘルパメソッドunlockDocument()を使用します。目的のドキュメントがすでにロック解除されている場合は、このメソッドにより例外がスローされます。この状況をはっきりと確認するために、コードではcheckLockToken()メソッドを呼び出します。

  /**
      unlockADocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class unlockADocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void unlockADocument (String document)
  	 {
  	  
      //Define variables
      int statuscode = 0;
      String user = "contentadmin";
      String password = "contentadmin";
      String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     
      //Instantiate an EboDAVSwitch object
      EboDAVSwitch dav = new EboDAVSwitch();
  
      //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
      //Start a session
      dav.startSession("localhost", 80);
  
         try
        {
          //If document is locked, unlock it
          if (dav.checkLockToken(document) != null)
          {
              //Send the WebDAV request to unlock the document
              statuscode = dav.unlockDocument(user, password, realm, document);
              if (statuscode==EboDAVStatus.SC_NO_CONTENT)
                 System.out.println("Request succeeded:The document " + document + "was unlocked.");
              else
                 System.out.println("Request failed:" + status.getStatusText(statuscode));
          }
           else
          {
              System.out.println(典he document is already unlocked.・;
          }
        }
         catch (EboDAVException e)
        {
           if (m_debug)
              e.printStackTrace();
           else
              System.out.println(e.getMessage());
          }
        }
        //End session
        dav.endSession();
     }
  }

SlideのUnlockMethodクラスとexteNd Directorユーティリティメソッドを使用して、ドキュメントをロック解除することもできます。ユーティリティメソッドを使用したプログラミング練習を参照してください。

 
Top of section

ドキュメントの更新

次のコードでは、ドキュメントのコンテンツを更新する方法を示します。

コード例:ヘルパメソッドを使用したドキュメントの更新

この例では、ヘルパメソッドputDocument()を使用します。このメソッドは、新しいバージョンを作成して発行することにより、ドキュメントのメタデータではなくコンテンツを更新します。ドキュメントのメタデータを更新するには、ドキュメントでのカスタムフィールド値の設定を参照してください。

  /**
      updateADocument
  
  */
  import com.sssw.webdav.client.*;
  
  public class updateADocument {
  	 
  	 private static boolean m_debug = false;
  	 
  	 public void updateADocument (String document)
  	 {
  	  
     //Define variables
     int statuscode = 0;
     String user = "contentadmin";
     String password = "contentadmin";
     String realm = "Basic realm = \"SSSW_WEBDAV_AUTHENTICATION\"";
     String updatetext = "Hello earth!";
     byte [] newcontent = updatetext.getBytes();
     
     //Instantiate an EboDAVSwitch object
     EboDAVSwitch dav = new EboDAVSwitch();
  
     //Instantiate an EboDAVStatus object
     EboDAVStatus status = new EboDAVStatus();
  
     //Start a session
     dav.startSession("localhost", 80);
  
     //Send the WebDAV request to update the document
     try 
     {
        statuscode = dav.putDocument(user, password, realm, document, newcontent);
        if (statuscode==EboDAVStatus.SC_OK)
           System.out.println("Request succeeded:The document " + document + "was updated.");
        else
           System.out.println("Request failed:" + status.getStatusText(statuscode));
        
     }
     catch (EboDAVException e)
     {
        if (m_debug)
           e.printStackTrace();
        else
           System.out.println(e.getMessage());
     }
     
     //End session
     dav.endSession();
     }
  }

SlideのPutMethodクラスとexteNd Directorユーティリティメソッドを使用して、ドキュメントを更新したり、新しいドキュメントを作成したりすることもできます。ユーティリティメソッドを使用したプログラミング練習を参照してください。



Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...