}
// STEP 2
// Collecting all Coverage properties to setup a MosaicConfigurationBean through
// the builder
final MosaicBeanBuilder configBuilder = new MosaicBeanBuilder();
final GeneralEnvelope envelope = (GeneralEnvelope) coverageReader
.getOriginalEnvelope(inputCoverageName);
final CoordinateReferenceSystem actualCRS = coverageReader
.getCoordinateReferenceSystem(inputCoverageName);
SampleModel sm = null;
ColorModel cm = null;
int numberOfLevels = 1;
double[][] resolutionLevels = null;
CatalogBuilderConfiguration catalogConfig;
if (mosaicConfiguration == null) {
catalogConfig = getRunConfiguration();
// We don't have a configuration for this configuration
// Get the type specifier for this image and the check that the
// image has the correct sample model and color model.
// If this is the first cycle of the loop we initialize everything.
//
ImageLayout layout = coverageReader.getImageLayout(inputCoverageName);
cm = layout.getColorModel(null);
sm = layout.getSampleModel(null);
numberOfLevels = coverageReader.getNumOverviews(inputCoverageName) + 1;
resolutionLevels = coverageReader.getResolutionLevels(inputCoverageName);
// at the first step we initialize everything that we will
// reuse afterwards starting with color models, sample
// models, crs, etc....
configBuilder.setSampleModel(sm);
configBuilder.setColorModel(cm);
ColorModel defaultCM = cm;
// Checking palette
if (defaultCM instanceof IndexColorModel) {
IndexColorModel icm = (IndexColorModel) defaultCM;
int numBands = defaultCM.getNumColorComponents();
byte[][] defaultPalette = new byte[3][icm.getMapSize()];
icm.getReds(defaultPalette[0]);
icm.getGreens(defaultPalette[0]);
icm.getBlues(defaultPalette[0]);
if (numBands == 4) {
icm.getAlphas(defaultPalette[0]);
}
configBuilder.setPalette(defaultPalette);
}
// STEP 2.A
// Preparing configuration
configBuilder.setCrs(actualCRS);
configBuilder.setLevels(resolutionLevels);
configBuilder.setLevelsNum(numberOfLevels);
configBuilder.setName(coverageName);
configBuilder.setTimeAttribute(IndexerUtils.getAttribute(coverageName,
Utils.TIME_DOMAIN, indexer));
configBuilder.setElevationAttribute(IndexerUtils.getAttribute(coverageName,
Utils.ELEVATION_DOMAIN, indexer));
configBuilder.setAdditionalDomainAttributes(IndexerUtils.getAttribute(coverageName,
Utils.ADDITIONAL_DOMAIN, indexer));
final Hints runHints = getRunConfiguration().getHints();
if (runHints != null && runHints.containsKey(Utils.AUXILIARY_FILES_PATH)) {
String auxiliaryFilePath = (String) runHints.get(Utils.AUXILIARY_FILES_PATH);
if (auxiliaryFilePath != null && auxiliaryFilePath.trim().length() > 0) {
configBuilder.setAuxiliaryFilePath(auxiliaryFilePath);
}
}
final CatalogConfigurationBean catalogConfigurationBean = new CatalogConfigurationBean();
catalogConfigurationBean.setCaching(IndexerUtils.getParameterAsBoolean(Prop.CACHING,
indexer));
catalogConfigurationBean.setAbsolutePath(IndexerUtils.getParameterAsBoolean(
Prop.ABSOLUTE_PATH, indexer));
catalogConfigurationBean.setLocationAttribute(IndexerUtils.getParameter(
Prop.LOCATION_ATTRIBUTE, indexer));
catalogConfigurationBean.setTypeName(coverageName);
configBuilder.setCatalogConfigurationBean(catalogConfigurationBean);
configBuilder.setCheckAuxiliaryMetadata(IndexerUtils.getParameterAsBoolean(Prop.CHECK_AUXILIARY_METADATA, indexer));
currentConfigurationBean = configBuilder.getMosaicConfigurationBean();
// Creating a rasterManager which will be initialized after populating the catalog
rasterManager = getParentReader().addRasterManager(currentConfigurationBean, false);
// Creating a granuleStore