Clover coverage report - JBind Project
Coverage timestamp: Fr Mai 28 2004 11:17:36 CEST
file stats: LOC: 115   Methods: 7
NCLOC: 90   Classes: 1
This license of Clover is provided to support the development of JBind only. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover.
 
 Source file Conditionals Statements Methods TOTAL
CartridgeMgr.java 87,5% 80,5% 85,7% 82,8%
 1   
 /*
 2   
  * JBind
 3   
  *
 4   
  * Copyright (c) by Stefan Wachter. All rights reserved.
 5   
  *
 6   
  * Usage, modification, and redistribution is subject to license terms that are
 7   
  * available at 'http://www.jbind.org'. The JBind license is like the
 8   
  * 'Apache Software License V 1.1'.
 9   
  */
 10   
 package org.jbind.xml.schema.compiler;
 11   
 
 12   
 import java.util.HashMap;
 13   
 import java.util.Iterator;
 14   
 import java.util.Map;
 15   
 
 16   
 import org.jbind.base.Console;
 17   
 import org.jbind.xml.Config;
 18   
 import org.jbind.xml.base.INamespaces;
 19   
 import org.jbind.xml.base.ISymbolspaces;
 20   
 import org.jbind.xml.core.cmp.IBinding;
 21   
 import org.jbind.xml.core.cmp.ISchema;
 22   
 import org.jbind.xml.core.type.IAnyType;
 23   
 import org.jbind.xml.schema.cmp.Schemas;
 24   
 
 25   
 public class CartridgeMgr implements ICartridgeMgr {
 26   
 
 27   
   public static final ICartridgeMgr instance = new CartridgeMgr();
 28   
 
 29   
   static {
 30  3
     ((CartridgeMgr)instance).init();
 31   
   }
 32   
 
 33   
   private Map myCartridges = new HashMap();
 34   
   private ICartridge myDataInterfaceCartridge = null;
 35   
   private ICartridge myDataClassCartridge = null;
 36   
 
 37  3
   private CartridgeMgr() {
 38  3
     String[] cartridgeNames = null;
 39  3
     try {
 40  3
       cartridgeNames = Config.instance.getCartridgeClasses();
 41   
     } catch (Exception e) {
 42  0
       e.printStackTrace();
 43  0
       Console.err("preferences not available - using default");
 44   
     }
 45   
 
 46  3
     if ((cartridgeNames == null) || (cartridgeNames.length == 0)) {
 47  0
       cartridgeNames = new String[]{ DataClassCartridge.class.getName(),
 48   
                                      DataInterfaceCartridge.class.getName(),
 49   
                                      BehaviourClassCartridge.class.getName(),
 50   
                                      BehaviourInterfaceCartridge.class.getName() };
 51   
     }
 52  3
     boolean ok = true;
 53  3
     for (int i = 0; i < cartridgeNames.length; i++) {
 54  12
       try {
 55  12
         Class clazz = Class.forName(cartridgeNames[i]);
 56  12
         ICartridge cartridge = (ICartridge)clazz.newInstance();
 57  12
         cartridge.setCartridgeNo(i);
 58  12
         myCartridges.put(cartridgeNames[i], cartridge);
 59   
         // Console.out.println("loaded cartridge: " + cartridge);
 60  12
         if (clazz.equals(DataInterfaceCartridge.class)) {
 61  3
           myDataInterfaceCartridge = cartridge;
 62  9
         } else if (clazz.equals(DataClassCartridge.class)) {
 63  3
           myDataClassCartridge = cartridge;
 64   
         }
 65   
 
 66   
       } catch (Exception e) {
 67  0
         Console.err("could not load cartridge: " + cartridgeNames[i]);
 68  0
         ok = false;
 69   
       }
 70   
     }
 71  3
     if (!ok) {
 72  0
       Console.err("Configure the cartridges with the configuation tool: java " + Config.class.getName());
 73  0
       System.exit(-1);
 74   
     }
 75   
   }
 76   
 
 77  3
   private void init() {
 78  3
     for (Iterator i = iterCartridges(); i.hasNext(); ) {
 79  12
       ICartridge c = (ICartridge)i.next();
 80  12
       c.initCartridge(this);
 81   
     }
 82  3
     ISchema w3cSchema = Schemas.getInstance().getSchema(INamespaces.XML_SCHEMA);
 83  3
     for (Iterator i = w3cSchema.iterComponents(ISymbolspaces.TYPE);
 84  144
             i.hasNext(); ) {
 85  141
       IAnyType type = (IAnyType)i.next();
 86  141
       IBinding[] bindings = new IBinding[CartridgeMgr.instance.getNbCartridges()];
 87  141
       for (Iterator j = iterCartridges(); j.hasNext(); ) {
 88  564
         ICartridge cartridge = (ICartridge)j.next();
 89  564
         IBinding b = cartridge.createBuiltInBinding(type);
 90  564
         bindings[cartridge.getCartridgeNo()] = b;
 91   
       }
 92  141
       type.setBindings(bindings);
 93   
     }
 94   
   }
 95   
 
 96  48
   public ICartridge getCartridge(Class aClass) {
 97  48
     return (ICartridge)myCartridges.get(aClass.getName());
 98   
   }
 99   
 
 100  3521
   public Iterator iterCartridges() {
 101  3521
     return myCartridges.values().iterator();
 102   
   }
 103   
 
 104  3413
   public int getNbCartridges() {
 105  3413
     return myCartridges.size();
 106   
   }
 107  68
   public ICartridge getDataInterfaceCartridge() {
 108  68
     return myDataInterfaceCartridge;
 109   
   }
 110  0
   public ICartridge getDataClassCartridge() {
 111  0
     return myDataClassCartridge;
 112   
   }
 113   
 
 114   
 }
 115