public static void CopyAttributesAE(OM2MAEEntity entity, OM2MAE resource) { resource.AppName = entity.AppName; resource.AppID = entity.AppId; resource.AEID = entity.AEId; resource.PointOfAccess = entity.PointOfAccess; resource.OntologyRef = entity.OntologyRef; resource.NodeLink = entity.NodeLink; resource.RequestReachability = entity.RequestReachability; }
// ToDo: public static OM2MAE ToResource(this OM2MAEEntity entity, OM2MResultContent resultContent) { var resource = new OM2MAE(); MapEntityToResourceCommonProcudure(entity, resource, resultContent); if (resultContent.HasAttributes()) { resource.AppName = entity.AppName; resource.AppID = entity.AppId; resource.AEID = entity.AEId; resource.PointOfAccess = entity.PointOfAccess; resource.OntologyRef = entity.OntologyRef; resource.NodeLink = entity.NodeLink; resource.RequestReachability = entity.RequestReachability; } return(resource); }
static void MapChildResources(OM2MAEEntity entity, OM2MAE resource) { }
public override OM2MResponsePrimitive DoUpdate(OM2MRequestPrimitive request) { using (var db = CreateDbContext()) { var entity = db.Resources.Find(request.TargetId) as OM2MAEEntity; if (entity == null) { throw new OM2MNotFoundException("Resource not found."); } var acpList = new List <OM2MAccessControlPolicyEntity>(); foreach (var i in entity.AccessControlPolicyIds) { var queryAcp = db.Resources.Where(x => x.ResourceId == i) .OfType <OM2MAccessControlPolicyEntity>() .Include(x => x.PrivilegesCore); if (queryAcp.Count() == 0) { // Damaged continue; } acpList.Add(queryAcp.First()); } CheckACP(acpList, request.From, OM2MOperation.Update); if (request.Content == null) { throw new OM2MBadRequestException("A content is required for creation."); } var resource = request.Content as OM2MAE; if (resource == null) { throw new OM2MBadRequestException("Incorrect resource in primitive content."); } if (resource.AppID != null) { throw new OM2MBadRequestException("AppID is not permitted."); } if (resource.AEID != null) { throw new OM2MBadRequestException("AE-ID is not permitted."); } if (resource.NodeLink != null) { throw new OM2MBadRequestException("NodeLink is not permitted."); } var modifiedAttrs = new OM2MAE(); if (resource.AccessControlPolicyIDs != null && resource.AccessControlPolicyIDs.Count > 0) { foreach (var acp in acpList) { CheckSelfACP(acp, request.From, OM2MOperation.Update); } entity.AccessControlPolicyIds.Clear(); entity.AccessControlPolicyIds.AddRange(resource.AccessControlPolicyIDs); modifiedAttrs.AccessControlPolicyIDs = resource.AccessControlPolicyIDs; } if (resource.Labels != null) { entity.Labels.Clear(); entity.Labels.AddRange(resource.Labels); modifiedAttrs.Labels = resource.Labels; } if (resource.ExpirationTime != null) { entity.ExpirationTime = resource.ExpirationTime; modifiedAttrs.ExpirationTime = resource.ExpirationTime; } if (resource.AnnounceTo != null) { entity.AnnounceTo.Clear(); entity.AnnounceTo.AddRange(resource.AnnounceTo); modifiedAttrs.AnnounceTo = resource.AnnounceTo; } if (resource.AnnouncedAttribute != null) { entity.AnnouncedAttribute.Clear(); entity.AnnouncedAttribute.AddRange(resource.AnnouncedAttribute); modifiedAttrs.AnnouncedAttribute = resource.AnnouncedAttribute; } if (resource.AppName != null) { entity.AppName = resource.AppName; modifiedAttrs.AppName = resource.AppName; } if (resource.PointOfAccess != null) { entity.PointOfAccess.Clear(); entity.PointOfAccess.AddRange(resource.PointOfAccess); modifiedAttrs.PointOfAccess = resource.PointOfAccess; } if (resource.OntologyRef != null) { entity.OntologyRef = resource.OntologyRef; modifiedAttrs.OntologyRef = resource.OntologyRef; } if (resource.RequestReachability != null) { entity.RequestReachability = resource.RequestReachability.Value; modifiedAttrs.RequestReachability = resource.RequestReachability; } entity.LastModifiedTime = OM2MTimeStamp.NowTimeStamp; modifiedAttrs.LastModifiedTime = entity.LastModifiedTime; db.SaveChanges(); db.Entry(entity).Collection(x => x.Resources).Load(); var subs = entity.Resources.OfType <OM2MSubscriptionEntity>().ToList(); CseService.Notify(subs, entity, OM2MResourceStatus.Updated); var response = new OM2MResponsePrimitive(CseConfig, request); response.Content = modifiedAttrs; response.ResponseStatusCode = OM2MResponseStatusCode.Updated; return(response); } }