コード例 #1
0
 private void PropertyChanged(DateTime eventTime, PropertyBE prop, UserBE user, ResourceBE.Type parentType, XUri parentUri, params string[] path) {
     try {
         string parent = string.Empty;
         switch(parentType) {
         case ResourceBE.Type.PAGE:
             parent = PAGES;
             break;
         case ResourceBE.Type.FILE:
             parent = FILES;
             break;
         case ResourceBE.Type.USER:
             parent = USERS;
             break;
         case ResourceBE.Type.SITE:
             parent = SITE;
             break;
         }
         XUri channel = _channel.At(parent).At(PROPERTY).At(path);
         XUri resource = prop.UriInfo(parentUri);
         string[] origin = new string[] { resource.ToString() };
         XDoc doc = new XDoc("deki-event")
             .Elem("channel", channel)
             .Elem("name", prop.Name)
             .Elem("uri", resource)
             .Start("content")
                 .Attr("mime-type", prop.MimeType.FullType)
                 .Attr("size", prop.Size)
                 .Attr("href", prop.UriContent(parentUri));
         if(prop.MimeType.MainType == MimeType.TEXT.MainType && prop.Size < 256) {
             doc.Value(prop.Content.ToText());
         }
         doc.End();
         if(parentType == ResourceBE.Type.PAGE) {
             doc.Elem("pageid", prop.ParentPageId ?? 0);
         } else if(parentType == ResourceBE.Type.USER) {
             doc.Elem("userid", prop.ParentUserId ?? 0);
         } else if(parentType == ResourceBE.Type.FILE) {
             AttachmentBE attachment = (AttachmentBE)prop.ParentResource;
             doc.Elem("fileid", attachment.FileId ?? 0);
             PageDependentChanged(eventTime, ((PageWrapperBE)attachment.ParentResource).Page, user, ArrayUtil.Concat(new string[] { FILES, PROPERTY }, path));
         }
         Queue(eventTime, channel, resource, origin, doc);
     } catch(Exception e) {
         _log.WarnExceptionMethodCall(e, "PropertyChanged", "event couldn't be created");
     }
 }