Exemple #1
0
        /// <summary>
        /// Restituisce un DataObject con tutte le proprietà di un oggetto DCTM e
        /// l'insieme dei folder a cui è linkato (quest'ultimi solo come identity però)
        /// </summary>
        /// <param name="objSrvc"></param>
        /// <param name="documentIdentity"></param>
        /// <param name="propertyNames">null == TUTTE; altrimenti quelle indicate. OKKIO: in nessun caso restituisce r_object_id !!</param>
        /// <returns></returns>
        public static DataObject getAllPropsAndFolders(IObjectService objSrvc,
                                                       ObjectIdentity objectIdentity,
                                                       List <string> propertyNames,
                                                       bool includeFolders)
        {
            DataPackage pkg = new DataPackage();

            ObjectIdentitySet objectIdSet = new ObjectIdentitySet(objectIdentity);

            PropertyProfile propertyProfile = null;

            //propertyProfile.filterModeSpecified = true;
            if (propertyNames == null)
            {
                propertyProfile = new PropertyProfile(PropertyFilterMode.ALL);
            }
            else
            {
                propertyProfile = new PropertyProfile(PropertyFilterMode.SPECIFIED_BY_INCLUDE);
                propertyProfile.IncludeProperties = propertyNames;
            }

            RelationshipProfile relationProfile = new RelationshipProfile();

            if (includeFolders)
            {
                //TODO: bug di DFS60sp1:
                // se specifico che voglio solo le relazioni parent non funziona
                // devo chiedere tutte le relazioni

                //relationProfile.ResultDataMode = ResultDataMode.REFERENCE;
                //relationProfile.TargetRoleFilter = TargetRoleFilter.ANY;
                //relationProfile.NameFilter = RelationshipNameFilter.ANY;
                //relationProfile.DepthFilter = DepthFilter.UNLIMITED;

                // proposta di Azzalini per velocizzare eliminazione documento in Fascicolo con DCTM 6.7
                relationProfile.ResultDataMode   = ResultDataMode.REFERENCE;
                relationProfile.TargetRoleFilter = TargetRoleFilter.SPECIFIED;
                relationProfile.TargetRole       = Relationship.ROLE_PARENT;
                relationProfile.NameFilter       = RelationshipNameFilter.SPECIFIED;
                relationProfile.RelationName     = Relationship.RELATIONSHIP_FOLDER;
                relationProfile.DepthFilter      = DepthFilter.SPECIFIED;
                relationProfile.Depth            = 1;
            }

            OperationOptions operationOptions = new OperationOptions();

            //operationOptions.Profiles = new Profile[profilesCount];
            operationOptions.PropertyProfile = propertyProfile;
            if (includeFolders)
            {
                operationOptions.RelationshipProfile = relationProfile;
            }

            pkg = objSrvc.Get(objectIdSet, operationOptions);
            return(pkg.DataObjects[0]);
        }
Exemple #2
0
        public DataPackage CreateFolderAndLinkedDoc()
        {
            // create a folder data object
            String      folderName              = "a-test-folder-" + System.DateTime.Now.Ticks;
            DataObject  folderDataObj           = new DataObject(new ObjectIdentity(DefaultRepository), "dm_folder");
            PropertySet folderDataObjProperties = new PropertySet();

            folderDataObjProperties.Set("object_name", folderName);
            folderDataObj.Properties = folderDataObjProperties;

            // create a contentless document DataObject
            String      doc1Name   = "a-test-doc-" + System.DateTime.Now.Ticks;
            DataObject  docDataObj = new DataObject(new ObjectIdentity(DefaultRepository), "dm_document");
            PropertySet properties = new PropertySet();

            properties.Set("object_name", doc1Name);
            docDataObj.Properties = properties;

            // add the folder as a parent of the folder
            ObjectRelationship objRelationship = new ObjectRelationship();

            objRelationship.Target     = folderDataObj;
            objRelationship.Name       = Relationship.RELATIONSHIP_FOLDER;
            objRelationship.TargetRole = Relationship.ROLE_PARENT;
            docDataObj.Relationships.Add(new ObjectRelationship(objRelationship));

            // set up the relationship filter to return the doc and folder
            RelationshipProfile relationProfile = new RelationshipProfile();

            relationProfile.ResultDataMode   = ResultDataMode.REFERENCE;
            relationProfile.TargetRoleFilter = TargetRoleFilter.ANY;
            relationProfile.NameFilter       = RelationshipNameFilter.ANY;
            relationProfile.DepthFilter      = DepthFilter.SPECIFIED;
            relationProfile.Depth            = 2;
            OperationOptions operationOptions = new OperationOptions();

            operationOptions.RelationshipProfile = relationProfile;

            // create the folder and linked document
            DataPackage dataPackage = new DataPackage();

            dataPackage.AddDataObject(docDataObj);
            return(objectService.Create(dataPackage, operationOptions));
        }
Exemple #3
0
        public DataObject GetObjectFilterRelationsParentOnly(ObjectIdentity objIdentity)
        {
            // set up relation profile to return only immediate parent
            RelationshipProfile relationProfile = new RelationshipProfile();

            relationProfile.ResultDataMode   = ResultDataMode.REFERENCE;
            relationProfile.TargetRoleFilter = TargetRoleFilter.SPECIFIED;
            relationProfile.TargetRole       = Relationship.ROLE_PARENT;
            relationProfile.NameFilter       = RelationshipNameFilter.ANY;
            relationProfile.DepthFilter      = DepthFilter.SPECIFIED;
            relationProfile.Depth            = 1;
            OperationOptions operationOptions = new OperationOptions();

            operationOptions.RelationshipProfile = relationProfile;

            ObjectIdentitySet objectIdSet = new ObjectIdentitySet(objIdentity);

            DataPackage dataPackage = objectService.Get(objectIdSet, operationOptions);

            return(dataPackage.DataObjects[0]);
        }
Exemple #4
0
        /// <summary>
        /// Restituisce i folders ai quali l'oggetto è linkato (direttamente).
        /// In realtà sembra che DFS60sp1 abbia un bug: non posso imporre nessuna limitazione
        /// nella query per le relationship, quindi per il momento vengono resituite tutte
        /// TODO: cercare solo le relazioni dirette e di tipo "folder"
        /// </summary>
        /// <param name="objSrvc"></param>
        /// <param name="documentIdentity"></param>
        /// <returns></returns>
        public static DataObject getParentFolders(IObjectService objSrvc, ObjectIdentity documentIdentity)
        {
            //TODO: bug di DFS60sp1:
            // se specifico che voglio solo le relazioni parent non funziona
            // devo chiedere tutte le relazioni

            RelationshipProfile relationProfile = new RelationshipProfile();

            relationProfile.ResultDataMode   = ResultDataMode.REFERENCE;
            relationProfile.TargetRoleFilter = TargetRoleFilter.ANY;
            relationProfile.NameFilter       = RelationshipNameFilter.ANY;
            relationProfile.DepthFilter      = DepthFilter.UNLIMITED;
            OperationOptions operationOptions = new OperationOptions();

            operationOptions.RelationshipProfile = relationProfile;

            ObjectIdentitySet objectIdSet = new ObjectIdentitySet(documentIdentity);
            DataPackage       pkg         = objSrvc.Get(objectIdSet, operationOptions);

            return(pkg.DataObjects[0]);
        }
        public DataObject GetObjectFilterRelationsParentOnly(ObjectIdentity objIdentity)
        {
            // set up relation profile to return only immediate parent
            RelationshipProfile relationProfile = new RelationshipProfile();
            relationProfile.ResultDataMode = ResultDataMode.REFERENCE;
            relationProfile.TargetRoleFilter = TargetRoleFilter.SPECIFIED;
            relationProfile.TargetRole = Relationship.ROLE_PARENT;
            relationProfile.NameFilter = RelationshipNameFilter.ANY;
            relationProfile.DepthFilter = DepthFilter.SPECIFIED;
            relationProfile.Depth = 1;
            OperationOptions operationOptions = new OperationOptions();
            operationOptions.RelationshipProfile = relationProfile;

            ObjectIdentitySet objectIdSet = new ObjectIdentitySet(objIdentity);

            DataPackage dataPackage = objectService.Get(objectIdSet, operationOptions);

            return dataPackage.DataObjects[0];
        }
        public DataPackage CreateFolderAndLinkedDoc()
        {
            // create a folder data object
            String folderName = "a-test-folder-" + System.DateTime.Now.Ticks;
            DataObject folderDataObj = new DataObject(new ObjectIdentity(DefaultRepository), "dm_folder");
            PropertySet folderDataObjProperties = new PropertySet();
            folderDataObjProperties.Set("object_name", folderName);
            folderDataObj.Properties = folderDataObjProperties;

            // create a contentless document DataObject
            String doc1Name = "a-test-doc-" + System.DateTime.Now.Ticks;
            DataObject docDataObj = new DataObject(new ObjectIdentity(DefaultRepository), "dm_document");
            PropertySet properties = new PropertySet();
            properties.Set("object_name", doc1Name);
            docDataObj.Properties = properties;

            // add the folder as a parent of the folder
            ObjectRelationship objRelationship = new ObjectRelationship();
            objRelationship.Target = folderDataObj;
            objRelationship.Name = Relationship.RELATIONSHIP_FOLDER;
            objRelationship.TargetRole = Relationship.ROLE_PARENT;
            docDataObj.Relationships.Add(new ObjectRelationship(objRelationship));

            // set up the relationship filter to return the doc and folder
            RelationshipProfile relationProfile = new RelationshipProfile();
            relationProfile.ResultDataMode = ResultDataMode.REFERENCE;
            relationProfile.TargetRoleFilter = TargetRoleFilter.ANY;
            relationProfile.NameFilter = RelationshipNameFilter.ANY;
            relationProfile.DepthFilter = DepthFilter.SPECIFIED;
            relationProfile.Depth = 2;
            OperationOptions operationOptions = new OperationOptions();
            operationOptions.RelationshipProfile = relationProfile;

            // create the folder and linked document
            DataPackage dataPackage = new DataPackage();
            dataPackage.AddDataObject(docDataObj);
            return objectService.Create(dataPackage, operationOptions);
        }