first cut of merge of STABLE-pre1_0 into HEAD. I won't even guarantee that it
[mir.git] / source / mir / media / MediaHelper.java
1 package mir.media;
2
3 import java.lang.reflect.*;
4 import java.lang.*;
5
6 import mir.entity.Entity;
7 import mir.storage.Database;
8
9
10 /**
11  * helper class to resolve media handlers using reflection
12  *
13  * @author mh
14  * @version 2002
15  */
16
17 public final class MediaHelper {
18  
19   static String _classPrefix = "mircoders.media.MediaHandler";
20
21   public static MirMedia getHandler( Entity mediaType )
22     throws MirMediaException {
23
24     MirMedia mediaHandler;
25     String handlerName = mediaType.getValue("classname");
26     try {
27       Class handlerClass = Class.forName(_classPrefix+handlerName);
28       return mediaHandler = (MirMedia)handlerClass.newInstance();
29     } catch (Exception e) {
30       throw new MirMediaException ("getHandler -- error in reflection "
31                                     +e.toString());
32     }
33   } 
34
35   public static Database getStorage(Entity mediaType, String classPrefix)
36     throws MirMediaException {
37
38     Database mediaStorage;
39     String storageName =  mediaType.getValue("tablename");
40     try {
41       Class storageClass = Class.forName(classPrefix+storageName);
42       Method m = storageClass.getMethod("getInstance", null);
43       return mediaStorage = (Database)m.invoke(null, null);
44     } catch (Exception e) {
45       throw new MirMediaException ("getStorage -- error in reflection "
46                                     +e.toString());
47     }
48   }
49
50 }
51
52     
53