It's all about the answers!

Ask a question

Obtain file given stream and itemID (API)

Mark Richardson (2858) | asked Jun 10 '14, 8:52 a.m.
 Given a stream and an itemID uuid, how can I obtain a file item handle efficiently using the API? I know I could always traverse every file in the stream and compare id's but that takes too long to do.

2 answers

permanent link
sam detweiler (12.5k6189201) | answered Jun 10 '14, 9:22 a.m.
if you have the item (file/versionable) UUID you can get is item handle via (for example)
IItemHandle handle = IComponent.ITEM_TYPE.createHandle(uuid, null);

see accepted answer here

as for which stream (or workspace) that versionable might be in? yeesh..

permanent link
Tim Mok (6.6k38) | answered Jun 10 '14, 9:36 a.m.
From your stream, get your IWorkspaceConnection.

Using connection.configuration(IComponentHandle) will get you your configuration based on the component where your file resides.

Then call #fetchCompleteItem on your configuration. Give it the handle that you've obtained with the method Sam described. That will give you a versionable with state that represents the file in the stream. If you get just the handle, it has no state and refers to the item in a general sense.

sam detweiler commented Jun 10 '14, 10:13 a.m.

>how can I obtain a file item handle efficiently using the API

I think all he has is the file uuid.

how can u find what component that would be in? (in the stream he has)

Tim Mok commented Jun 10 '14, 11:15 a.m.

It's more computation if the component isn't known. The IWorkspaceConfiguration can be retrieved to get all the component configurations in the stream. Then see if #fetchCompleteItem returns anything.

Mark Richardson commented Jun 10 '14, 4:11 p.m.

The fetchCompleteItem method expects a IVersionableHandle.  IComponent.ITEM_TYPE.createHandle is creating an IItemHandle where itemHandle.isAuditable() is true (IAuditableItemHandle). How do I create one of the type IVersionableHandle?

sam detweiler commented Jun 10 '14, 4:24 p.m.

it was a sample

uuid to ANY type handle is

type.ITEM_TYPE.createHandle(uuid, null);

IVersionable.ITEM_TYPE.createHandle(uuid, null);

IWorkItem.ITEM_TYPE.createHandle(uuid, null);

Your answer

Register or to post your answer.