Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

#!/usr/bin/env python 

# -*- coding: utf-8 -*- 

 

############################################################################### 

#  Copyright 2013 Kitware Inc. 

# 

#  Licensed under the Apache License, Version 2.0 ( the "License" ); 

#  you may not use this file except in compliance with the License. 

#  You may obtain a copy of the License at 

# 

#    http://www.apache.org/licenses/LICENSE-2.0 

# 

#  Unless required by applicable law or agreed to in writing, software 

#  distributed under the License is distributed on an "AS IS" BASIS, 

#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

#  See the License for the specific language governing permissions and 

#  limitations under the License. 

############################################################################### 

 

import os 

 

from .filesystem_assetstore_adapter import FilesystemAssetstoreAdapter 

from .gridfs_assetstore_adapter import GridFsAssetstoreAdapter 

from .model_importer import ModelImporter 

from girder.constants import AssetstoreType 

from girder import events 

 

 

def getAssetstoreAdapter(assetstore): 

    """ 

    This is a factory method that will return the appropriate assetstore adapter 

    for the specified assetstore. The returned object will conform to 

    the interface of the AbstractAssetstoreAdapter. 

    :param assetstore: The assetstore document used to instantiate the adapter. 

    :type assetstore: dict 

    :returns: An adapter descending from AbstractAssetstoreAdapter 

    """ 

    if assetstore['type'] == AssetstoreType.FILESYSTEM: 

        assetstoreAdapter = FilesystemAssetstoreAdapter(assetstore) 

    elif assetstore['type'] == AssetstoreType.GRIDFS: 

        assetstoreAdapter = GridFsAssetstoreAdapter(assetstore) 

    elif assetstore['type'] == AssetstoreType.S3: 

        raise Exception('S3 assetstore adapter not implemented.') 

    else: 

        e = events.trigger('assetstore.adapter.get', assetstore) 

        if len(e.responses) > 0: 

            return e.responses[-1] 

        raise Exception('No AssetstoreAdapter for type: ' + assetstore['type']) 

 

    return assetstoreAdapter 

 

 

def fileIndexFields(): 

    """ 

    This will return a set of all required index fields from all of the 

    different assetstore types. 

    """ 

    return list(set( 

        FilesystemAssetstoreAdapter.fileIndexFields() + 

        GridFsAssetstoreAdapter.fileIndexFields() 

        ))