44 |
44 |
import java.io.IOException;
|
45 |
45 |
import java.sql.SQLException;
|
46 |
46 |
import java.sql.Types;
|
|
47 |
import java.util.Hashtable;
|
47 |
48 |
import java.util.TreeMap;
|
48 |
49 |
|
49 |
50 |
import org.apache.log4j.Logger;
|
... | ... | |
108 |
109 |
* de datos
|
109 |
110 |
*/
|
110 |
111 |
private static TreeMap sourceAdapter;
|
|
112 |
|
|
113 |
/**
|
|
114 |
* This Hashtable allows to register an alternative LayerClass for
|
|
115 |
* an specific LayerClass than is attempting to create this factory
|
|
116 |
*/
|
|
117 |
private static Hashtable layerClassMapping = new Hashtable();
|
111 |
118 |
|
112 |
119 |
/*
|
113 |
120 |
* Crea un RandomVectorialFile con el driver que se le pasa como par?metro y
|
... | ... | |
682 |
689 |
initializeDriverManager();
|
683 |
690 |
initializeWriterManager();
|
684 |
691 |
}
|
|
692 |
|
|
693 |
/**
|
|
694 |
* Set a class to use instead of the originalLayerClassName.
|
|
695 |
*
|
|
696 |
* @param originalLayerClassName name of class to relpace
|
|
697 |
* @param layerClassToUse Class than implements FLayer interface to use
|
|
698 |
*
|
|
699 |
* @see getLayerClassForLayerClassName(String,Class)
|
|
700 |
* @see unregisterLayerClassForName(String)
|
|
701 |
*/
|
|
702 |
public static void registerLayerClassForName (String originalLayerClassName, Class layerClassToUse){
|
|
703 |
Class[] interfaces = layerClassToUse.getInterfaces();
|
|
704 |
for (int i = 0;i < interfaces.length; i++){
|
|
705 |
if (interfaces[i] == FLayer.class)
|
|
706 |
break;
|
|
707 |
}
|
|
708 |
|
|
709 |
layerClassMapping.put(originalLayerClassName,layerClassToUse);
|
|
710 |
}
|
|
711 |
|
|
712 |
/**
|
|
713 |
* Unregister the originalLayerClassName class replacement.
|
|
714 |
*
|
|
715 |
* @param originalLayerClassName name of class to relpace
|
|
716 |
* @param layerClassToUse Class than implements FLayer interface to use
|
|
717 |
* @return true if the class had been registered
|
|
718 |
*
|
|
719 |
* @see getLayerClassForLayerClassName(String,Class)
|
|
720 |
* @see unregisterLayerClassForName(String)
|
|
721 |
*/
|
|
722 |
public static boolean unregisterLayerClassForName (String originalLayerClassName){
|
|
723 |
return layerClassMapping.remove(originalLayerClassName) != null;
|
|
724 |
}
|
|
725 |
|
|
726 |
/**
|
|
727 |
* Gets the class to use for the layerClassName.
|
|
728 |
* If isn't registered an alternative class for this layerClass
|
|
729 |
* the this returns 'Class.forName(layerClassName)'
|
|
730 |
*
|
|
731 |
* @param layerClassName
|
|
732 |
* @return Class implements FLayer to use
|
|
733 |
* @throws ClassNotFoundException
|
|
734 |
*
|
|
735 |
* @see registerLayerClassForName(String,Class)
|
|
736 |
* @see unregisterLayerClassForName(String)
|
|
737 |
*/
|
|
738 |
public static Class getLayerClassForLayerClassName(String layerClassName) throws ClassNotFoundException{
|
|
739 |
Class layerClass = (Class)layerClassMapping.get(layerClassName);
|
|
740 |
if (layerClass == null)
|
|
741 |
layerClass = Class.forName(layerClassName);
|
|
742 |
return layerClass;
|
|
743 |
}
|
685 |
744 |
}
|