Sample BDC Model: Connecting to a Custom File System Connector

Applies to: SharePoint Server 2010

The following example shows how to use a set of LobSystem and LobSystemInstance properties to configure connection to a custom file system connector. For an example of a file system connector, see Code Snippet: Implementing a Custom Connector. Steps to use this model are provided in that topic.

Example

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://schemas.microsoft.com/windows/2007/BusinessDataCatalog BDCMetadata.xsd"
       xmlns="https://schemas.microsoft.com/windows/2007/BusinessDataCatalog"
       Name="CustomShim_Model">
  <LobSystems>
    <LobSystem Name="FileSystemLOB" Type="Custom">
      <Properties>
        <Property Name="SystemUtilityTypeName" Type="System.String">MS.Internal.Motif.Office.Lobi.ShimTest.FileSystemShim, MS.Internal.Motif.Office.Lobi.ShimTest,Version=14.0.0.0,Culture=neutral,PublicKeyToken=48e046c834625a88</Property>
        <Property Name="SystemUtilityInstallDate" Type="System.DateTime">2009-08-25 00:00:00Z</Property>
      </Properties>
      <LobSystemInstances>
        <LobSystemInstance Name="TestFileSystemCustomShim">
        <Properties>
       <Property Name="ServerName" Type="System.String">localhost</Property>
       </Properties>
       </LobSystemInstance>
      </LobSystemInstances>
      <Entities>
        <Entity EstimatedInstanceCount="1000" Name="Files" Namespace="Namespace.FileSystem" Version="1.0.0.0">
          <Properties>
            <Property Name="Directory" Type="System.String">C:\TEMP</Property>
            <Property Name="OutlookItemType" Type="System.String">Contact</Property>
          </Properties>
          <Identifiers>
            <Identifier TypeName="System.String" Name="FileName"/>
          </Identifiers>
          <Methods>
            <!-- method to get single file -->
            <Method Name="ReadFile">
              <Parameters>
                <Parameter Direction="In" Name="FileName">
                  <TypeDescriptor TypeName="System.String" IdentifierName="FileName" Name="FileName" />
                </Parameter>
                <Parameter Direction="Return" Name="FileDetails">
                  <TypeDescriptor TypeName="Microsoft.BusinessData.Runtime.DynamicType"
                                  Name="FileDetails">
                    <TypeDescriptors>
                      <TypeDescriptor Name="FileName" TypeName="System.String" IdentifierName="FileName" ReadOnly="true">
 <Properties>
                          <Property Name="OfficeProperty" Type="System.String">LastName</Property>
                        </Properties>
                      </TypeDescriptor>
                      <TypeDescriptor Name="Attributes" TypeName="System.IO.FileAttributes, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                      <TypeDescriptor Name="Date Modified" TypeName="System.DateTime"/>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Type="SpecificFinder"
                                ReturnParameterName="FileDetails"
                                ReturnTypeDescriptorName="FileDetails"
                                ReturnTypeDescriptorLevel="0"
                                Name="FileSystemFinder">
                  <AccessControlList>
                    <AccessControlEntry Principal="redmond\domain users">
                      <Right BdcRight="Execute"/>
                      <Right BdcRight="Edit"/>
                      <Right BdcRight="SetPermissions"/>
                      <Right BdcRight="SelectableInClients"/>
                    </AccessControlEntry>
                  </AccessControlList>
                </MethodInstance>
              </MethodInstances>
            </Method>
            <!-- method to get multiple files -->
            <Method Name="ReadFiles">
              <FilterDescriptors>
                <FilterDescriptor Type="Wildcard" Name="FileFilter" />
              </FilterDescriptors>
              <Parameters>
                <Parameter Direction="In" Name="FileName">
                  <TypeDescriptor TypeName="System.String" IdentifierName="FileName" Name="FileName" AssociatedFilter="FileFilter">
                    <DefaultValues>
                      <DefaultValue MethodInstanceName="FileSystemFinders" Type="System.String">*</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="Return" Name="MultipleFileDetails">
                  <TypeDescriptor TypeName="Microsoft.BusinessData.Runtime.DynamicType[]" Name="FileDetailsInDirectory" IsCollection ="true">
                    <TypeDescriptors>
                      <TypeDescriptor TypeName="Microsoft.BusinessData.Runtime.DynamicType[]" Name="FileDetail">
                        <TypeDescriptors>
                          <TypeDescriptor Name="FileName" TypeName="System.String" IdentifierName="FileName" ReadOnly="true"/>
                          <TypeDescriptor Name="Attributes" TypeName="System.IO.FileAttributes, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                          <TypeDescriptor Name="Date Modified" TypeName="System.DateTime"/>
                        </TypeDescriptors>
                      </TypeDescriptor>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Type="Finder"
                                ReturnParameterName="MultipleFileDetails"
                                ReturnTypeDescriptorName="FileDetailsInDirectory"
                                ReturnTypeDescriptorLevel="0"
                                Name="FileSystemFinders">
                  <AccessControlList>
                    <AccessControlEntry Principal="redmond\domain users">
                      <Right BdcRight="Execute"/>
                      <Right BdcRight="Edit"/>
                      <Right BdcRight="SetPermissions"/>
                      <Right BdcRight="SelectableInClients"/>
                    </AccessControlEntry>
                  </AccessControlList>
                </MethodInstance>
              </MethodInstances>
            </Method>
            <!-- method to create list item -->
            <Method Name="CreateFile">
              <Parameters>
                <Parameter Name="Name" Direction="In">
                  <TypeDescriptor TypeName="System.String" IdentifierName="FileName" Name="FileName" CreatorField="true"/>
                </Parameter>
                <Parameter Name="FileName" Direction="Return">
                  <TypeDescriptor TypeName="System.String" IdentifierName="FileName" Name="FileName" />
                </Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Name="FileCreator"
                                Type="Creator"
                                ReturnParameterName="FileName"
                                ReturnTypeDescriptorName="FileName"
                                ReturnTypeDescriptorLevel="0">
                  <AccessControlList>
                    <AccessControlEntry Principal="redmond\domain users">
                      <Right BdcRight="Execute"/>
                      <Right BdcRight="Edit"/>
                      <Right BdcRight="SetPermissions"/>
                      <Right BdcRight="SelectableInClients"/>
                    </AccessControlEntry>
                  </AccessControlList>
                </MethodInstance>
              </MethodInstances>
            </Method>
            <!-- method to update list item -->
            <Method Name="UpdateFile">
              <Parameters>
                <Parameter Direction="In" Name="FileDetails">
                  <TypeDescriptor TypeName="Microsoft.BusinessData.Runtime.DynamicType"
                                  Name="FileDetails">
                    <TypeDescriptors>
                      <TypeDescriptor Name="FileName" TypeName="System.String" IdentifierName="FileName" UpdaterField="true"/>
                      <TypeDescriptor Name="Attributes" TypeName="System.IO.FileAttributes, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UpdaterField = "true" />
                      <TypeDescriptor Name="Date Modified" TypeName="System.DateTime" UpdaterField = "true"/>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Type="Updater"
                                Name="FileSystemUpdater">
                  <AccessControlList>
                    <AccessControlEntry Principal="redmond\domain users">
                      <Right BdcRight="Execute"/>
                      <Right BdcRight="Edit"/>
                      <Right BdcRight="SetPermissions"/>
                      <Right BdcRight="SelectableInClients"/>
                    </AccessControlEntry>
                  </AccessControlList>
                </MethodInstance>
              </MethodInstances>
            </Method>
            <!-- method to delete list item -->
            <Method Name="DeleteFile">
              <Parameters>
                <Parameter Direction="In" Name="FileName">
                  <TypeDescriptor TypeName="System.String" IdentifierName="FileName" Name="FileName" />
                </Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Type="Deleter"
                                Name="FileSystemDeleter">
                  <AccessControlList>
                    <AccessControlEntry Principal="redmond\domain users">
                      <Right BdcRight="Execute"/>
                      <Right BdcRight="Edit"/>
                      <Right BdcRight="SetPermissions"/>
                      <Right BdcRight="SelectableInClients"/>
                    </AccessControlEntry>
                  </AccessControlList>
                </MethodInstance>
              </MethodInstances>
            </Method>
          </Methods>
        </Entity>
      </Entities>
    </LobSystem>
  </LobSystems>
</Model>