LibreOffice5(106)FileContentのサービスとインターフェイスの一覧

2017-12-10

旧ブログ

t f B! P L
File ContentsはUniversal Content Broker (UCB)の一つであるFile Content Provider (FCP)から取得できるローカルファイルシステムの中身です。The File Content Provider - Apache OpenOffice Wikiに解説があります。

前の関連記事:LibreOffice5(105)埋め込みマクロフォルダを取り出すスクリプト


File Contentsのサービスとインターフェイスの一覧

def macro():
 ctx = XSCRIPTCONTEXT.getComponentContext()  # コンポーネントコンテクストの取得。
 smgr = ctx.getServiceManager()  # サービスマネージャーの取得。 
 tcu = smgr.createInstanceWithContext("pq.Tcu", ctx)  # サービス名か実装名でインスタンス化。
 tempfile = smgr.createInstanceWithContext("com.sun.star.io.TempFile", ctx) # TempFile
 ucb =  smgr.createInstanceWithContext("com.sun.star.ucb.UniversalContentBroker", ctx)  # UniversalContentBroker
 content = ucb.queryContent(ucb.createContentIdentifier(tempfile.Uri))  # Tempfileのコンテントを取得。
 tcu.wtree(content)
一時ファイルのFileContentを取得しています。

content.getParent()で一時ファイルが入っているフォルダのFileContentが取得できますが、サービスとインターフェイスは同じものでした。

getContentType()の戻り値がファイルのときはapplication/vnd.sun.staroffice.fsys-fileなのに対して、フォルダの時はapplication/vnd.sun.staroffice.fsys-folderになっていました。

└─.ucb.FileContent
  ├─.beans.XPropertiesChangeNotifier
  │     void  addPropertiesChangeListener( [in]                         [string] PropertyNames,
  │                                        [in] .beans.XPropertiesChangeListener Listener)
  │     void  removePropertiesChangeListener( [in]                         [string] PropertyNames,
  │                                           [in] .beans.XPropertiesChangeListener Listener)
  ├─.beans.XPropertyContainer
  │     void  addProperty( [in] string Name,
  │                        [in]  short Attributes,
  │                        [in]    any DefaultValue
  │             ) raises ( .lang.IllegalArgumentException,
  │                        .beans.IllegalTypeException,
  │                        .beans.PropertyExistException)
  │     void  removeProperty( [in] string Name
  │                ) raises ( .beans.NotRemoveableException,
  │                           .beans.UnknownPropertyException)
  ├─.beans.XPropertySetInfoChangeNotifier
  │     void  addPropertySetInfoChangeListener( [in] .beans.XPropertySetInfoChangeListener Listener)
  │     void  removePropertySetInfoChangeListener( [in] .beans.XPropertySetInfoChangeListener Listener)
  ├─.container.XChild
  │     .uno.XInterface  getParent()
  │                void  setParent( [in] .uno.XInterface Parent
  │                      ) raises ( .lang.NoSupportException)
  ├─.lang.XComponent
  │     void  addEventListener( [in] .lang.XEventListener xListener)
  │     void  dispose()
  │     void  removeEventListener( [in] .lang.XEventListener aListener)
  ├─.ucb.XCommandInfoChangeNotifier
  │     void  addCommandInfoChangeListener( [in] .ucb.XCommandInfoChangeListener Listener)
  │     void  removeCommandInfoChangeListener( [in] .ucb.XCommandInfoChangeListener Listener)
  ├─.ucb.XCommandProcessor
  │     void  abort( [in] long CommandId)
  │     long  createCommandIdentifier()
  │      any  execute( [in]             .ucb.Command aCommand,
  │                    [in]                     long CommandId,
  │                    [in] .ucb.XCommandEnvironment Environment
  │         ) raises ( .ucb.CommandAbortedException,
  │                    .uno.Exception)
  ├─.ucb.XCommandProcessor2
  │     void  releaseCommandIdentifier( [in] long CommandId)
  ├─.ucb.XContent
  │                        void  addContentEventListener( [in] .ucb.XContentEventListener Listener)
  │                      string  getContentType()
  │     .ucb.XContentIdentifier  getIdentifier()
  │                        void  removeContentEventListener( [in] .ucb.XContentEventListener Listener)
  └─.ucb.XContentCreator
             .ucb.XContent  createNewContent( [in] .ucb.ContentInfo Info)
        [.ucb.ContentInfo]  queryCreatableContentsInfo()

XCommandProcessorのexecute()メソッドで使えるコマンド


LibreOffice: Content Service Referenceにexecute()メソッドの引数にするCommand StructのNameアトリビュートで指定できるコマンド名の解説がありました。

表CommandsのCommand NameをCommand StructのNameアトリビュートに、ParametersをArgumentアトリビュートに指定します。

同じCommand NameでもParametersによって戻り値が違うので注意が必要です。

Pythonでやってみると、getPropertyValuesとsetPropertyValuesではIllegalArgumentExceptionが発生して実行できませんでした。

Javaの例(Universal Content Broker (UCB) examplesのPropertiesComposerやPropertiesRetriever)では実行できたので、Pythonだけの問題のようです。

参考にしたサイト


The File Content Provider - Apache OpenOffice Wiki
File Contentsの解説。

LibreOffice: Content Service Reference
XCommandProcessorのexecute()メソッドで使えるコマンドの解説。

次の関連記事:LibreOffice5(107)Javaの例:Universal Content Broker (UCB)をPythonにする:その2

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ