Commit 15861cad authored by Detlef Runde's avatar Detlef Runde
Browse files

introduced some logic (check, if elements of Link (to and from) exist)

parent d628d8ae
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -93,18 +93,24 @@ namespace Org.OpenAPITools.Controllers
      string result = "ok";
      string worldlinkinfo = "";
      List<WorldLink> worldlinklistfrom = _trackableService.GetWorldLinkUUIDFrom(trackableUUID);
      List<WorldLink> worldlinklistto = _trackableService.GetWorldLinkUUIDTo(trackableUUID);
      foreach (WorldLink worldlink in worldlinklistfrom)
      {
        worldlinkinfo += worldlink.UUID.ToString() + "; ";
        worldlink.UUIDFrom = Guid.Empty;
        worldlink.TypeFrom = ObjectType.NotIdentifiedEnum;
        _trackableService.UpdateWorldLink(worldlink.UUID, worldlink);
      }
      List<WorldLink> worldlinklistto = _trackableService.GetWorldLinkUUIDTo(trackableUUID);
      foreach (WorldLink worldlink in worldlinklistto)
      {
        worldlinkinfo += worldlink.UUID.ToString() + "; ";
        worldlink.UUIDTo = Guid.Empty;
        worldlink.TypeTo = ObjectType.NotIdentifiedEnum;
        _trackableService.UpdateWorldLink(worldlink.UUID, worldlink);
      }
      if (worldlinkinfo.Length > 1)
      {
        result += ", but removed object is still referenced in " + worldlinkinfo;
        result += ", removed object was referenced in " + worldlinkinfo + " and removed there as well";
      }
      return (answer.IsAcknowledged && answer.DeletedCount > 0) ? new ObjectResult(result) : StatusCode(404, "Not found, could not find UUID in database.");
    }
+9 −3
Original line number Diff line number Diff line
@@ -93,18 +93,24 @@ namespace Org.OpenAPITools.Controllers
      string result = "ok";
      string worldlinkinfo = "";
      List<WorldLink> worldlinklistfrom = _worldAnchorService.GetWorldLinkUUIDFrom(worldAnchorUUID);
      List<WorldLink> worldlinklistto = _worldAnchorService.GetWorldLinkUUIDTo(worldAnchorUUID);
      foreach (WorldLink worldlink in worldlinklistfrom)
      {
        worldlinkinfo += worldlink.UUID.ToString() + "; ";
        worldlink.UUIDFrom = Guid.Empty;
        worldlink.TypeFrom = ObjectType.NotIdentifiedEnum;
        _worldAnchorService.UpdateWorldLink(worldlink.UUID, worldlink);
      }
      List<WorldLink> worldlinklistto = _worldAnchorService.GetWorldLinkUUIDTo(worldAnchorUUID);
      foreach (WorldLink worldlink in worldlinklistto)
      {
        worldlinkinfo += worldlink.UUID.ToString() + "; ";
        worldlink.UUIDTo = Guid.Empty;
        worldlink.TypeTo = ObjectType.NotIdentifiedEnum;
        _worldAnchorService.UpdateWorldLink(worldlink.UUID, worldlink);
      }
      if (worldlinkinfo.Length > 1)
      {
        result += ", but removed object is still referenced in " + worldlinkinfo;
        result += ", but removed object was referenced in " + worldlinkinfo + " and removed there as well";
      }
      return (answer.IsAcknowledged && answer.DeletedCount > 0) ? new ObjectResult(result) : StatusCode(404, "Not found, could not find UUID in database.");
    }
+74 −0
Original line number Diff line number Diff line
@@ -107,6 +107,43 @@ namespace Org.OpenAPITools.Controllers
    public override IActionResult GetWorldLinkById([FromRoute(Name = "worldLinkUUID")][Required] Guid worldLinkUUID)
    {
      WorldLink myworldlink = _worldLinkService.Get(worldLinkUUID);
      if (null != myworldlink)
      {
        // check TypeFrom
        if (myworldlink.TypeFrom == ObjectType.TrackableEnum)
        {
          if (null == _worldLinkService.GetTrackable(myworldlink.UUIDFrom))
          {
            myworldlink.TypeFrom = ObjectType.NotIdentifiedEnum;
            myworldlink.UUIDFrom = Guid.Empty;
          }
        }
        else if (myworldlink.TypeFrom == ObjectType.WorldAnchorEnum)
        {
          if (null == _worldLinkService.GetAnchor(myworldlink.UUIDFrom))
          {
            myworldlink.TypeFrom = ObjectType.NotIdentifiedEnum;
            myworldlink.UUIDFrom = Guid.Empty;
          }
        }
        // check TypeTo
        if (myworldlink.TypeTo == ObjectType.TrackableEnum)
        {
          if (null == _worldLinkService.GetTrackable(myworldlink.UUIDTo))
          {
            myworldlink.TypeTo = ObjectType.NotIdentifiedEnum;
            myworldlink.UUIDTo = Guid.Empty;
          }
        }
        else if (myworldlink.TypeTo == ObjectType.WorldAnchorEnum)
        {
          if (null == _worldLinkService.GetAnchor(myworldlink.UUIDTo))
          {
            myworldlink.TypeTo = ObjectType.NotIdentifiedEnum;
            myworldlink.UUIDTo = Guid.Empty;
          }
        }
      }
      return (null != myworldlink) ? new ObjectResult(myworldlink) : StatusCode(404, "Not found, could not find UUID in database.");
    }

@@ -125,6 +162,43 @@ namespace Org.OpenAPITools.Controllers
    public override IActionResult GetWorldLinks()
    {
      List<WorldLink> worldlinklist = _worldLinkService.Get();
      foreach (WorldLink myworldlink in worldlinklist)
      {
        // check TypeFrom
        if (myworldlink.TypeFrom == ObjectType.TrackableEnum)
        {
          if (null == _worldLinkService.GetTrackable(myworldlink.UUIDFrom))
          {
            myworldlink.TypeFrom = ObjectType.NotIdentifiedEnum;
            myworldlink.UUIDFrom = Guid.Empty;
          }
        }
        else if (myworldlink.TypeFrom == ObjectType.WorldAnchorEnum)
        {
          if (null == _worldLinkService.GetAnchor(myworldlink.UUIDFrom))
          {
            myworldlink.TypeFrom = ObjectType.NotIdentifiedEnum;
            myworldlink.UUIDFrom = Guid.Empty;
          }
        }
        // check TypeTo
        if (myworldlink.TypeTo == ObjectType.TrackableEnum)
        {
          if (null == _worldLinkService.GetTrackable(myworldlink.UUIDTo))
          {
            myworldlink.TypeTo = ObjectType.NotIdentifiedEnum;
            myworldlink.UUIDTo = Guid.Empty;
          }
        }
        else if (myworldlink.TypeTo == ObjectType.WorldAnchorEnum)
        {
          if (null == _worldLinkService.GetAnchor(myworldlink.UUIDTo))
          {
            myworldlink.TypeTo = ObjectType.NotIdentifiedEnum;
            myworldlink.UUIDTo = Guid.Empty;
          }
        }
      }
      return new ObjectResult(worldlinklist);
    }
  }
+3 −0
Original line number Diff line number Diff line
@@ -57,6 +57,9 @@ namespace Org.OpenAPITools.Services
    public List<WorldLink> GetWorldLinkUUIDTo(Guid UUID) =>
        _worldlinkcollection.Find<WorldLink>(worldlink => worldlink.UUIDTo == UUID).ToList();

    public ReplaceOneResult UpdateWorldLink(Guid UUID, WorldLink worldlinkIn) =>
         _worldlinkcollection.ReplaceOne(worldlink => worldlink.UUID == UUID, worldlinkIn);

  }

}
+3 −1
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ namespace Org.OpenAPITools.Services

    public List<WorldLink> GetWorldLinkUUIDTo(Guid UUID) =>
        _worldlinkcollection.Find<WorldLink>(worldlink => worldlink.UUIDTo == UUID).ToList();
    public ReplaceOneResult UpdateWorldLink(Guid UUID, WorldLink worldlinkIn) =>
       _worldlinkcollection.ReplaceOne(worldlink => worldlink.UUID == UUID, worldlinkIn);
  }

}
+15 −15

File changed.

Contains only whitespace changes.

Loading