Revision 2348 org.gvsig.raster/branches/org.gvsig.raster_dataaccess_refactoring/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/util/DefaultProviderServices.java
DefaultProviderServices.java | ||
---|---|---|
27 | 27 |
import java.lang.reflect.Constructor; |
28 | 28 |
import java.lang.reflect.InvocationTargetException; |
29 | 29 |
import java.util.ArrayList; |
30 |
import java.util.HashMap; |
|
30 | 31 |
import java.util.Iterator; |
31 | 32 |
import java.util.List; |
32 | 33 |
import java.util.Map; |
... | ... | |
70 | 71 |
import org.gvsig.raster.impl.DefaultRasterManager; |
71 | 72 |
import org.gvsig.raster.impl.provider.AbstractRasterProvider; |
72 | 73 |
import org.gvsig.raster.impl.provider.RasterProvider; |
74 |
import org.gvsig.raster.impl.store.AbstractRasterDataParameters; |
|
75 |
import org.gvsig.raster.impl.store.DefaultRasterStore; |
|
73 | 76 |
import org.gvsig.raster.impl.store.WriteFileFormatFeatures; |
74 | 77 |
import org.gvsig.raster.impl.store.rmf.ClassSerializer; |
75 | 78 |
import org.gvsig.raster.impl.store.rmf.RmfBlocksManager; |
... | ... | |
87 | 90 |
*/ |
88 | 91 |
public class DefaultProviderServices implements ProviderServices { |
89 | 92 |
public TreeMap<String, WriteFileFormatFeatures> |
90 |
fileFeature = new TreeMap<String, WriteFileFormatFeatures>(); |
|
91 |
private Logger log = LoggerFactory.getLogger(DefaultProviderServices.class); |
|
93 |
fileFeature = new TreeMap<String, WriteFileFormatFeatures>(); |
|
94 |
private Logger log = LoggerFactory.getLogger(DefaultProviderServices.class); |
|
95 |
private static List<Class<?>> tiledProviders = new ArrayList<Class<?>>(); |
|
96 |
private static Class<?> tileclass = null; |
|
97 |
private static HashMap<String, ArrayList<Class<?>>> |
|
98 |
formatsRegistry = new HashMap<String, ArrayList<Class<?>>>(); |
|
92 | 99 |
|
93 | 100 |
public DefaultRasterManager getManager() { |
94 | 101 |
return (DefaultRasterManager)RasterLocator.getManager(); |
... | ... | |
98 | 105 |
return fileFeature; |
99 | 106 |
} |
100 | 107 |
|
108 |
public RasterDataStore open(CoverageStoreProvider prov, DataStoreParameters params) throws NotSupportedExtensionException, RasterDriverException { |
|
109 |
if(prov instanceof RasterProvider) { |
|
110 |
DefaultRasterStore store = new DefaultRasterStore(); |
|
111 |
store.setProvider((RasterProvider)prov); |
|
112 |
try { |
|
113 |
store.intializePhase1(null, params); |
|
114 |
} catch (InitializeException e) { |
|
115 |
throw new RasterDriverException(e.getMessage()); |
|
116 |
} |
|
117 |
return store; |
|
118 |
} |
|
119 |
return null; |
|
120 |
} |
|
121 |
|
|
101 | 122 |
/** |
102 | 123 |
* Abre un dataset pasando como par�metros la proyecci�n y un objeto identificador del dataset. Este |
103 | 124 |
* objeto puede ser una ruta a un fichero en disco. En este caso la extensi�n del fichero servir� para |
... | ... | |
109 | 130 |
* @throws NotSupportedExtensionException |
110 | 131 |
* @throws RasterDriverException |
111 | 132 |
*/ |
112 |
public RasterDataStore open(DataStoreParameters param) throws NotSupportedExtensionException, RasterDriverException { |
|
113 |
return getManager().open(param); |
|
133 |
public RasterDataStore open(DataStoreParameters params) throws NotSupportedExtensionException, RasterDriverException { |
|
134 |
if(params == null || !(params instanceof AbstractRasterDataParameters)) |
|
135 |
return null; |
|
136 |
DefaultRasterStore dSet = new DefaultRasterStore(); |
|
137 |
DataManagerProviderServices dataManager = (DataManagerProviderServices)DALLocator.getDataManager(); |
|
138 |
try { |
|
139 |
AbstractRasterProvider provider = (AbstractRasterProvider)dataManager.createProvider(dSet, (AbstractRasterDataParameters)params); |
|
140 |
dSet.setProvider(provider); |
|
141 |
} catch (InitializeException e) { |
|
142 |
throw new RasterDriverException("Error initializing provider", e); |
|
143 |
} catch (ProviderNotRegisteredException e) { |
|
144 |
throw new RasterDriverException("Provider not register error", e); |
|
145 |
} |
|
146 |
return dSet; |
|
114 | 147 |
} |
115 | 148 |
|
116 |
public RasterDataStore open(CoverageStoreProvider prov, DataStoreParameters params) throws NotSupportedExtensionException, RasterDriverException { |
|
117 |
return getManager().open(prov, params); |
|
149 |
public RasterDataStore open(Object datasetOpenParam) throws NotSupportedExtensionException, RasterDriverException { |
|
150 |
DefaultRasterStore dSet = new DefaultRasterStore(); |
|
151 |
|
|
152 |
if (datasetOpenParam instanceof String) { |
|
153 |
AbstractRasterProvider provider = AbstractRasterProvider.singleDatasetInstance(dSet, (String)datasetOpenParam); |
|
154 |
dSet.setProvider(provider); |
|
155 |
return dSet; |
|
156 |
} |
|
157 |
|
|
158 |
/*if (datasetOpenParam instanceof String[]) { |
|
159 |
String[] param = (String[]) datasetOpenParam; |
|
160 |
try { |
|
161 |
for (int dataset = 0; dataset < param.length; dataset++) { |
|
162 |
dSet.addDataStore(DefaultRasterProvider.singleDatasetInstance(dSet, param[dataset]) ); |
|
163 |
} |
|
164 |
} catch (OperationNotSupportedException e) { |
|
165 |
return open(param[0]); |
|
166 |
} |
|
167 |
return dSet; |
|
168 |
} |
|
169 |
|
|
170 |
if (datasetOpenParam instanceof Buffer[]) { |
|
171 |
Buffer[] param = (Buffer[]) datasetOpenParam; |
|
172 |
for (int dataset = 0; dataset < param.length; dataset++) { |
|
173 |
dSet.addDataStore(DefaultRasterProvider.singleDatasetInstance(param[dataset])); |
|
174 |
} |
|
175 |
return dSet; |
|
176 |
} |
|
177 |
|
|
178 |
if(datasetOpenParam instanceof String[][]) { |
|
179 |
String[][] param = (String[][])datasetOpenParam; |
|
180 |
DefaultMultiRasterStore[][] mosaic = new DefaultMultiRasterStore[param.length][param[0].length]; |
|
181 |
for (int i = 0; i < param.length; i++) |
|
182 |
for (int j = 0; j < param[i].length; j++) |
|
183 |
mosaic[i][j] = (DefaultMultiRasterStore)open(param[i][j]); |
|
184 |
DefaultMosaicRasterStore cd; |
|
185 |
try { |
|
186 |
cd = new DefaultMosaicRasterStore(mosaic); |
|
187 |
} catch (MosaicNotValidException e) { |
|
188 |
return null; |
|
189 |
} |
|
190 |
return cd; |
|
191 |
}*/ |
|
192 |
|
|
193 |
return null; |
|
118 | 194 |
} |
119 | 195 |
|
120 | 196 |
public RasterDataStore open(String file) throws NotSupportedExtensionException, RasterDriverException, InitializeException, ProviderNotRegisteredException { |
... | ... | |
323 | 399 |
return result; |
324 | 400 |
} |
325 | 401 |
|
402 |
@SuppressWarnings("rawtypes") |
|
326 | 403 |
public String[] getWriteDriversType() { |
327 | 404 |
if (fileFeature.size() == 0) |
328 | 405 |
return null; |
... | ... | |
508 | 585 |
} |
509 | 586 |
|
510 | 587 |
public void addFormat(String ext, Class<?> c) { |
511 |
getManager().addFormat(ext, c); |
|
588 |
ArrayList<Class<?>> list = formatsRegistry.get(ext); |
|
589 |
if(list == null) { |
|
590 |
list = new ArrayList<Class<?>>(); |
|
591 |
list.add(c); |
|
592 |
formatsRegistry.put(ext, list); |
|
593 |
} else { |
|
594 |
if(!list.contains(c)) |
|
595 |
list.add(c); |
|
596 |
} |
|
512 | 597 |
} |
513 |
|
|
514 |
public String[] getReadOnlyFormatList() { |
|
515 |
return getManager().getReadOnlyFormatList(); |
|
516 |
} |
|
517 |
|
|
598 |
|
|
518 | 599 |
public boolean isExtensionSupported(String ext, Class<?> c) { |
519 |
return getManager().isExtensionSupported(ext, c); |
|
600 |
String extension = getManager().getFileUtils().getExtensionFromFileName(ext); |
|
601 |
|
|
602 |
ArrayList<Class<?>> list = formatsRegistry.get(extension); |
|
603 |
if(list == null) { |
|
604 |
return false; |
|
605 |
} else { |
|
606 |
for (int i = 0; i < list.size(); i++) { |
|
607 |
if(c == list.get(i)) |
|
608 |
return true; |
|
609 |
} |
|
610 |
} |
|
611 |
return false; |
|
520 | 612 |
} |
521 |
|
|
613 |
|
|
522 | 614 |
public boolean isExtensionSupported(String ext) { |
523 |
return getManager().isExtensionSupported(ext); |
|
615 |
String extension = getManager().getFileUtils().getExtensionFromFileName(ext); |
|
616 |
|
|
617 |
ArrayList<Class<?>> list = formatsRegistry.get(extension); |
|
618 |
if(list == null) { |
|
619 |
return false; |
|
620 |
} |
|
621 |
|
|
622 |
return true; |
|
524 | 623 |
} |
525 | 624 |
|
625 |
public String[] getReadOnlyFormatList() { |
|
626 |
return formatsRegistry.keySet().toArray(new String[0]); |
|
627 |
} |
|
628 |
|
|
526 | 629 |
public void registerFileProvidersTiled(Class<?> provider) { |
527 |
getManager().registerFileProvidersTiled(provider); |
|
630 |
if(!tiledProviders.contains(provider)) |
|
631 |
tiledProviders.add(provider); |
|
528 | 632 |
} |
529 | 633 |
|
530 | 634 |
public void registerTileProviderFormats(Class<?> c) { |
531 |
getManager().registerTileProviderFormats(c); |
|
635 |
if(tileclass == null) { |
|
636 |
if(RasterProvider.class.isAssignableFrom(c)) { |
|
637 |
List<Object> pList = getTiledProvidersInstance(); |
|
638 |
for (int i = 0; i < pList.size(); i++) { |
|
639 |
String[] fList = ((RasterProvider)pList.get(i)).getFormatList(); |
|
640 |
for (int j = 0; j < fList.length; j++) { |
|
641 |
String value = fList[j]; |
|
642 |
addFormat(value, c); |
|
643 |
} |
|
644 |
} |
|
645 |
} |
|
646 |
tileclass = c; |
|
647 |
} |
|
532 | 648 |
} |
533 | 649 |
|
650 |
private List<Object> getTiledProvidersInstance() { |
|
651 |
List<Object> list = new ArrayList<Object>(); |
|
652 |
for (int i = 0; i < tiledProviders.size(); i++) { |
|
653 |
Class<?> provider = tiledProviders.get(i); |
|
654 |
try { |
|
655 |
Constructor<?> c = provider.getConstructor(); |
|
656 |
list.add(c.newInstance()); |
|
657 |
} catch (SecurityException e) { |
|
658 |
log.info("Error SecurityException in open", e); |
|
659 |
} catch (NoSuchMethodException e) { |
|
660 |
log.info("Error NoSuchMethodException in open", e); |
|
661 |
} catch (IllegalArgumentException e) { |
|
662 |
log.info("Error IllegalArgumentException in open", e); |
|
663 |
} catch (InstantiationException e) { |
|
664 |
log.info("Error InstantiationException in open", e); |
|
665 |
} catch (IllegalAccessException e) { |
|
666 |
log.info("Error IllegalAccessException in open", e); |
|
667 |
} catch (InvocationTargetException e) { |
|
668 |
log.info("Error in open. Problemas con las librer?as nativas.", e); |
|
669 |
} |
|
670 |
} |
|
671 |
return list; |
|
672 |
} |
|
673 |
|
|
534 | 674 |
public void registerOverviewBuilderImplementation(String id, OverviewBuilder ovBuilder) { |
535 | 675 |
DefaultRasterManager.overviewBuilderRegistry.put(id, ovBuilder); |
536 | 676 |
} |
Also available in: Unified diff