Skip to content

Commit

Permalink
Add file block upload handlers and fix formatting issues
Browse files Browse the repository at this point in the history
Modified `DataHelper` to include "fileattachment" in default entities. Updated `Core.cs` with several formatting fixes and conditional compilation directives. Added new request handlers for file block uploads in `XrmMockupShared.projitems` and implemented `CommitFileBlocksUploadRequestHandler`, `InitializeFileBlocksUploadRequestHandler`, and `UploadBlockRequestHandler`.
  • Loading branch information
Magnus Gether Sørensen committed Sep 9, 2024
1 parent ff3b6bf commit 02adc2c
Show file tree
Hide file tree
Showing 6 changed files with 102 additions and 12 deletions.
2 changes: 1 addition & 1 deletion src/MetadataShared/DataHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public DataHelper(IOrganizationService service, string entitiesString, string so
this.EntityLogicalNames = GetLogicalNames(AssemblyGetter.GetAssembliesInBuildPath());

// Add default entities
var defaultEntities = new string[] { "businessunit", "systemuser", "transactioncurrency", "role", "systemuserroles", "team", "teamroles", "activitypointer", "roletemplate" };
var defaultEntities = new string[] { "businessunit", "systemuser", "transactioncurrency", "role", "systemuserroles", "team", "teamroles", "activitypointer", "roletemplate", "fileattachment" };
foreach (var logicalName in defaultEntities)
{
this.EntityLogicalNames.Add(logicalName);
Expand Down
28 changes: 17 additions & 11 deletions src/XrmMockupShared/Core.cs
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public Core(XrmMockupSettings Settings, MetadataSkeleton metadata, List<Entity>

this.db = new XrmDb(metadata.EntityMetadata, GetOnlineProxy());
this.snapshots = new Dictionary<string, Snapshot>();
this.security = new Security(this, metadata, SecurityRoles,db);
this.security = new Security(this, metadata, SecurityRoles, db);
this.TracingServiceFactory = settings.TracingServiceFactory ?? new TracingServiceFactory();
this.ServiceFactory = new MockupServiceProviderAndFactory(this);

Expand All @@ -131,7 +131,7 @@ public Core(XrmMockupSettings Settings, MetadataSkeleton metadata, List<Entity>
this.RequestHandlers = GetRequestHandlers(db);
InitializeDB();
this.security.InitializeSecurityRoles(db);

#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013)
this.orgDetail = settings.OrganizationDetail;
#endif
Expand Down Expand Up @@ -216,8 +216,8 @@ private void InitializeDB()
new CalculateRollupFieldRequestHandler(this, db, metadata, security),
#endif
#if !(XRM_MOCKUP_2011)
new AddUserToRecordTeamRequestHandler(this, db, metadata, security),
new RemoveUserFromRecordTeamRequestHandler(this, db, metadata, security),
new AddUserToRecordTeamRequestHandler(this, db, metadata, security),
new RemoveUserFromRecordTeamRequestHandler(this, db, metadata, security),
#endif

#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013)
Expand All @@ -227,10 +227,16 @@ private void InitializeDB()
#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013 || XRM_MOCKUP_2015)
new UpsertRequestHandler(this, db, metadata, security),
#endif
new RetrieveAttributeRequestHandler(this, db, metadata, security),
new WhoAmIRequestHandler(this, db, metadata, security),
new RetrievePrincipalAccessRequestHandler(this, db, metadata, security),
new RetrieveMetadataChangesRequestHandler(this, db, metadata, security)
new RetrieveAttributeRequestHandler(this, db, metadata, security),
new WhoAmIRequestHandler(this, db, metadata, security),
new RetrievePrincipalAccessRequestHandler(this, db, metadata, security),
new RetrieveMetadataChangesRequestHandler(this, db, metadata, security),

#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013 || XRM_MOCKUP_2015 || XRM_MOCKUP_2016)
new InitializeFileBlocksUploadRequestHandler(this, db, metadata, security),
new UploadBlockRequestHandler(this, db, metadata, security),
new CommitFileBlocksUploadRequestHandler(this, db, metadata, security),
#endif
};

internal void EnableProxyTypes(Assembly assembly)
Expand Down Expand Up @@ -963,7 +969,7 @@ private OrganizationResponse ExecuteAction(OrganizationRequest request)
return resp;
}

#region EntityImage helpers
#region EntityImage helpers

private Tuple<object, string, Guid> GetEntityInfo(OrganizationRequest request)
{
Expand Down Expand Up @@ -1037,7 +1043,7 @@ private EntityReference GetBusinessUnit(EntityReference owner)
{
return Utility.GetBusinessUnit(db, owner);
}
#endregion
#endregion

internal void DisabelRegisteredPlugins(bool include)
{
Expand Down Expand Up @@ -1138,7 +1144,7 @@ internal EntityMetadata GetEntityMetadata(string entityLogicalName)
return metadata.EntityMetadata[entityLogicalName];
}

#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013)
#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013)
internal void ExecuteCalculatedFields(DbRow row)
{
var attributes = row.Metadata.Attributes.Where(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013 || XRM_MOCKUP_2015 || XRM_MOCKUP_2016)

using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Sdk.Messages;
using DG.Tools.XrmMockup.Database;
using System;
using System.Linq;

namespace DG.Tools.XrmMockup
{
internal class CommitFileBlocksUploadRequestHandler : RequestHandler {
internal CommitFileBlocksUploadRequestHandler(Core core, XrmDb db, MetadataSkeleton metadata, Security security) : base(core, db, metadata, security, "CommitFileBlocksUpload") {}

internal override OrganizationResponse Execute(OrganizationRequest orgRequest, EntityReference userRef) {
var request = MakeRequest<CommitFileBlocksUploadRequest>(orgRequest);

// Document store not implemented in database yet

var resp = new UploadBlockResponse();
return resp;
}
}
}

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013 || XRM_MOCKUP_2015 || XRM_MOCKUP_2016)

using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Sdk.Messages;
using DG.Tools.XrmMockup.Database;
using System;
using System.Linq;

namespace DG.Tools.XrmMockup
{
internal class InitializeFileBlocksUploadRequestHandler : RequestHandler {
internal InitializeFileBlocksUploadRequestHandler(Core core, XrmDb db, MetadataSkeleton metadata, Security security) : base(core, db, metadata, security, "InitializeFileBlocksUpload") {}

internal override OrganizationResponse Execute(OrganizationRequest orgRequest, EntityReference userRef) {
var request = MakeRequest<InitializeFileBlocksUploadRequest>(orgRequest);

var fileAttachment = new Entity("fileattachment");
fileAttachment["filename"] = request.FileName;
fileAttachment["regardingfieldname"] = request.FileAttributeName;
fileAttachment["objectid"] = request.Target;
db.Add(fileAttachment);


var resp = new InitializeFileBlocksUploadResponse();
resp.Results["FileContinuationToken"] = Guid.NewGuid().ToString();
return resp;
}
}
}

#endif
25 changes: 25 additions & 0 deletions src/XrmMockupShared/Requests/UploadBlockRequestHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013 || XRM_MOCKUP_2015 || XRM_MOCKUP_2016)

using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Sdk.Messages;
using DG.Tools.XrmMockup.Database;
using System;
using System.Linq;

namespace DG.Tools.XrmMockup
{
internal class UploadBlockRequestHandler : RequestHandler {
internal UploadBlockRequestHandler(Core core, XrmDb db, MetadataSkeleton metadata, Security security) : base(core, db, metadata, security, "UploadBlock") {}

internal override OrganizationResponse Execute(OrganizationRequest orgRequest, EntityReference userRef) {
var request = MakeRequest<UploadBlockRequest>(orgRequest);

// Document store not implemented in database yet

var resp = new UploadBlockResponse();
return resp;
}
}
}

#endif
3 changes: 3 additions & 0 deletions src/XrmMockupShared/XrmMockupShared.projitems
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
<Compile Include="$(MSBuildThisFileDirectory)Database\DbTable.cs" />
<Compile Include="$(MSBuildThisFileDirectory)MockupServiceAsync2.cs" />
<Compile Include="$(MSBuildThisFileDirectory)MockupServiceAsync.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Requests\CommitFileBlocksUploadRequestHandler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Requests\UploadBlockRequestHandler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Requests\InitializeFileBlocksUploadRequestHandler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Serialization\DbDTO.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Serialization\OptionSetCollectionDTO.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Serialization\EntityReferenceDTO.cs" />
Expand Down

0 comments on commit 02adc2c

Please sign in to comment.