@Override public AbstractTN getChildAt(int index) { final MetadataElement elem = metadataElement.getElementAt(index); return new IdentificationTN(elem.getName(), elem, this); }
@Override public AbstractTN getChildAt(int index) { return new MetadataTN(metadataElement.getName(), metadataElement.getElementAt(index), this); }
private static MetadataElement getProcessingGraphElement(int index, MetadataElement metadataElement) { final MetadataElement productElement = metadataElement.getElementAt(index); return productElement.getElement("Processing_Graph"); } }
private ExpectedMetadata[] createExpectedMetadata(Product product, Random random) { final MetadataElement metadataRoot = product.getMetadataRoot(); final List<ExpectedMetadata> expectedMetadata = new ArrayList<ExpectedMetadata>(); if (metadataRoot.getNumElements() > 0 || metadataRoot.getNumAttributes() > 0) { while(expectedMetadata.size() < 2) { MetadataElement currentElem = metadataRoot; while (currentElem != null && currentElem.getNumElements() > 0) { currentElem = currentElem.getElementAt((int) (currentElem.getNumElements() * random.nextFloat())); } if (currentElem != null && currentElem.getNumAttributes() > 0) { final MetadataAttribute attributeAt = currentElem.getAttributeAt((int) (currentElem.getNumAttributes() * random.nextFloat())); expectedMetadata.add(new ExpectedMetadata(attributeAt)); } } } return expectedMetadata.toArray(new ExpectedMetadata[expectedMetadata.size()]); }
public static List<Row> createRowList(MetadataElement rootElement) { List<Row> rowList = new ArrayList<Row>(10); for (int i = 0; i < rootElement.getNumAttributes(); i++) { MetadataAttribute attribute = rootElement.getAttributeAt(i); if (!isNumericAttribute(attribute) || attribute.getData().isScalar()) { rowList.add(new MDAttributeRow(attribute, -1)); } else { for (int j = 0; j < attribute.getNumDataElems(); j++) { rowList.add(new MDAttributeRow(attribute, j)); } } } for (int i = 0; i < rootElement.getNumElements(); i++) { MetadataElement element = rootElement.getElementAt(i); rowList.add(new MDElementRow(element)); } return rowList; }
private void writeMetadataElement(NFileWriteable ncFile, MetadataElement element, NVariable ncVariable, String prefix) throws IOException { for (int i = 0; i < element.getNumAttributes(); i++) { MetadataAttribute attribute = element.getAttributeAt(i); writeMetadataAttribute(ncFile, attribute, ncVariable, prefix); } for (int i = 0; i < element.getNumElements(); i++) { MetadataElement subElement = element.getElementAt(i); final String subElementName = subElement.getName(); if (!isGlobalAttributesElement(subElementName)) { final String name; if (prefix.isEmpty()) { name = subElementName; } else { name = prefix + SPLITTER + subElementName; } writeMetadataElement(ncFile, subElement, ncVariable, name); } } }
public static void addEMInfoToMetadata(MetadataElement clusterAnalysis, double[][][] covariances, double[] priorProbabilities) { int numElements = clusterAnalysis.getNumElements(); for (int i = 0; i < numElements; i++) { MetadataElement element = clusterAnalysis.getElementAt(i); double[][] covariance = covariances[i]; for (int k = 0; k < covariance.length; k++) { ProductData cData = ProductData.createInstance(covariance[k]); MetadataAttribute cAttribute = new MetadataAttribute("covariance." + k, cData, true); element.addAttribute(cAttribute); } ProductData pData = ProductData.createInstance(new double[]{priorProbabilities[i]}); MetadataAttribute pAttribute = new MetadataAttribute("prior_probability", pData, true); element.addAttribute(pAttribute); } }
protected void cloneMetadataElements(MetadataElement sourceRoot, MetadataElement destRoot, int level) { for (int i = 0; i < sourceRoot.getNumElements(); i++) { MetadataElement sourceElement = sourceRoot.getElementAt(i); if (level > 0 || isNodeAccepted(sourceElement.getName())) { MetadataElement element = new MetadataElement(sourceElement.getName()); element.setDescription(sourceElement.getDescription()); destRoot.addElement(element); cloneMetadataElementsAndAttributes(sourceElement, element, level + 1); } } }
/** * Gets an estimated, raw storage size in bytes of this product node. * * @param subsetDef if not <code>null</code> the subset may limit the size returned * * @return the size in bytes. */ @Override public long getRawStorageSize(ProductSubsetDef subsetDef) { if (subsetDef != null && !subsetDef.containsNodeName(getName())) { return 0L; } long size = 0; for (int i = 0; i < getNumElements(); i++) { size += getElementAt(i).getRawStorageSize(subsetDef); } for (int i = 0; i < getNumAttributes(); i++) { size += getAttributeAt(i).getRawStorageSize(subsetDef); } return size; }
/** * Accepts the given visitor. This method implements the well known 'Visitor' design pattern of the gang-of-four. * The visitor pattern allows to define new operations on the product data model without the need to add more code * to it. The new operation is implemented by the visitor. * <p/> * <p>The method first visits (calls <code>acceptVisitor</code> for) all elements contained in this element and then * visits all attributes. Finally the method calls <code>visitor.visit(this)</code>. * * @param visitor the visitor */ @Override public void acceptVisitor(ProductVisitor visitor) { Guardian.assertNotNull("visitor", visitor); for (int i = 0; i < getNumElements(); i++) { getElementAt(i).acceptVisitor(visitor); } for (int i = 0; i < getNumAttributes(); i++) { getAttributeAt(i).acceptVisitor(visitor); } visitor.visit(this); }
private void writeMetadataElement(int locationID, MetadataElement element) throws IOException { int groupID = createH5G(locationID, element.getName()); try { for (int i = 0; i < element.getNumAttributes(); i++) { MetadataAttribute attribute = element.getAttributeAt(i); writeMetadataAttribute(groupID, attribute); } for (int i = 0; i < element.getNumElements(); i++) { MetadataElement subElement = element.getElementAt(i); writeMetadataElement(groupID, subElement); } } catch (IOException e) { throw e; } finally { closeH5G(groupID); } }
static void assertInputElementAt(int index, String inputName, MetadataElement metadataElement) { final MetadataElement productElement = metadataElement.getElementAt(index); assertEquals("source." + Integer.toString(index), productElement.getName()); final MetadataAttribute nameAttribute = productElement.getAttribute("name"); assertNotNull(nameAttribute); assertEquals(inputName, nameAttribute.getData().getElemString()); }
@Test public void testMetadata() throws IOException { final String headerContent = createHeaderFileContent(""); final File headerFile = createHeaderAndImageFile(headerContent, PRODUCT_NAME); final EnviProductReaderPlugIn plugIn = new EnviProductReaderPlugIn(); final ProductReader reader = plugIn.createReaderInstance(); product = reader.readProductNodes(headerFile, null); assertNotNull(product); MetadataElement metadataRoot = product.getMetadataRoot(); assertEquals(1, metadataRoot.getNumElements()); MetadataElement headerElem = metadataRoot.getElementAt(0); assertNotNull(headerElem); assertEquals("Header", headerElem.getName()); String[] attributeNames = headerElem.getAttributeNames(); String[] expected = new String[]{ "description", "samples", "lines", "bands", "header offset", "file type", "data type", "interleave", "sensor type", "byte order", "data ignore value", "map info", "projection info", "wavelength", "fwhm", "wavelength units", "band names", "classes", "class lookup", "class names" }; assertArrayEquals(expected, attributeNames); }