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()]); }
protected void cloneMetadataAttributes(MetadataElement sourceRoot, MetadataElement destRoot) { for (int i = 0; i < sourceRoot.getNumAttributes(); i++) { MetadataAttribute sourceAttribute = sourceRoot.getAttributeAt(i); destRoot.addAttribute(sourceAttribute.createDeepClone()); } }
private static boolean hasMetadata(Product product) { return (product.getMetadataRoot() != null && (product.getMetadataRoot().getNumElements() > 0 || product.getMetadataRoot().getNumAttributes() > 0)); }
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); } } }
private void updateMetadata(Product product) { final MetadataElement graphElement = product.getMetadataRoot().getElement("Processing_Graph"); for (MetadataElement nodeElement : graphElement.getElements()) { if (getSpi().getOperatorAlias().equals(nodeElement.getAttributeString("operator"))) { final MetadataElement sourcesElement = nodeElement.getElement("sources"); for (int i = 0; i < sourceProducts.length; i++) { final String oldIndex = String.valueOf(i + 1); final String newIndex = String.valueOf(sourcesElement.getNumAttributes() + i + 1); final Product sourceProduct = sourceProducts[i]; final String attributeName = getSourceProductId(sourceProduct).replaceFirst(oldIndex, newIndex); final File location = sourceProduct.getFileLocation(); final ProductData attributeValue; if (location == null) { attributeValue = ProductData.createInstance(product.toString()); } else { attributeValue = ProductData.createInstance(location.getPath()); } final MetadataAttribute attribute = new MetadataAttribute(attributeName, attributeValue, true); sourcesElement.addAttribute(attribute); } } } }
/** * GuiTest_DialogAndModalDialog the functionality for getNumAttributes() */ public void testGetNumAttributes() { MetadataElement annot = new MetadataElement("yepp"); MetadataAttribute att = new MetadataAttribute("GuiTest_DialogAndModalDialog", ProductData.createInstance(ProductData.TYPE_INT32), false); // a new object should not have any attributes assertEquals(0, annot.getNumAttributes()); // add one and test again annot.addAttribute(att); assertEquals(1, annot.getNumAttributes()); }
/** * 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); }
static void assertCorrectNameAndNoAttributes(MetadataElement metadataElement) { assertNotNull(metadataElement); assertEquals("sources", metadataElement.getName()); assertEquals(0, metadataElement.getNumAttributes()); }
/** * 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; }
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); } }
public void testAssignMetadataTo() throws IOException, IllegalCeosFormatException { final BaseRecord record = new BaseRecord(_reader, _prefix.length()); final MetadataElement elem = new MetadataElement("elem"); record.assignMetadataTo(elem, null); assertMetadata(elem); assertEquals(0, elem.getNumElements()); assertEquals(6, elem.getNumAttributes()); }
public void testAssignMetadata() throws IOException, IllegalCeosFormatException { final VolumeDescriptorRecord record = new VolumeDescriptorRecord(_reader, _prefix.length()); final MetadataElement volumeMetadata = new MetadataElement("VOLUME_DESCRIPTOR"); record.assignMetadataTo(volumeMetadata, "suffix"); assertEquals(23, volumeMetadata.getNumAttributes()); assertEquals(0, volumeMetadata.getNumElements()); assertMetadata(volumeMetadata); }
public void testAssignMetadataTo() throws IOException, IllegalCeosFormatException { final FilePointerRecord record = new FilePointerRecord(_reader, _prefix.length()); final MetadataElement elem = new MetadataElement("elem"); record.assignMetadataTo(elem, "suffix"); assertEquals(0, elem.getNumAttributes()); assertEquals(1, elem.getNumElements()); final MetadataElement recordRoot = elem.getElement("FilePointerRecord suffix"); assertNotNull(recordRoot); assertMetadata(recordRoot); assertEquals(0, recordRoot.getNumElements()); assertEquals(21, recordRoot.getNumAttributes()); }
@Test public void testProductName() throws Exception { String filePath = GPFFacadeTest.class.getResource("test-product.dim").toURI().getPath(); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("file", new File(filePath)); Product p1 = GPF.createProduct("Read", parameters); Product p2 = GPF.createProduct("Foo", GPF.NO_PARAMS, new Product[]{p1}); MetadataElement metadataElement = p2.getMetadataRoot().getElement("Processing_Graph"); MetadataElement sourceElement = null; for (MetadataElement element : metadataElement.getElements()) { if (element.getAttribute("operator").getData().getElemString().equals("Foo")) { sourceElement = element.getElement("sources"); break; } } assertNotNull(sourceElement); assertEquals(1, sourceElement.getNumAttributes()); assertEquals("sourceProduct", sourceElement.getAttributeAt(0).getName()); assertTrue(sourceElement.getAttributeAt(0).getData().getElemString().endsWith("test-product.dim")); }
@Test public void testMultiProductsNames() throws Exception { String filePath = GPFFacadeTest.class.getResource("test-product.dim").toURI().getPath(); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("file", new File(filePath)); Product p1 = GPF.createProduct("Read", parameters); Product p2 = GPF.createProduct("Foo", GPF.NO_PARAMS, new Product[]{p1}); Product p3 = GPF.createProduct("Foos", GPF.NO_PARAMS, new Product[]{p1, p2}); MetadataElement metadataElement = p3.getMetadataRoot().getElement("Processing_Graph"); MetadataElement sourceElement = null; for (MetadataElement element : metadataElement.getElements()) { if (element.getAttribute("operator").getData().getElemString().equals("Foos")) { sourceElement = element.getElement("sources"); break; } } assertNotNull(sourceElement); assertEquals(2, sourceElement.getNumAttributes()); assertEquals("sourceProduct.1", sourceElement.getAttributeAt(0).getName()); assertEquals("sourceProduct.2", sourceElement.getAttributeAt(1).getName()); }
@Test public void testAsMetadataElement_noMetadataContained() { final GlobalMetadata globalMetadata = new GlobalMetadata(); final MetadataElement metadataElement = globalMetadata.asMetadataElement(); assertNotNull(metadataElement); assertEquals("Processing_Graph", metadataElement.getName()); assertEquals(0, metadataElement.getNumAttributes()); }
/** * Tests the functionality for addAttribute */ public void testAddAttribute() { MetadataElement annot = new MetadataElement("test_me"); MetadataAttribute att; // allow null argument try { annot.addAttribute(null); } catch (IllegalArgumentException e) { fail("IllegalArgumentException null argument is allowed"); } // add an attribute att = new MetadataAttribute("Test1", ProductData.createInstance(ProductData.TYPE_INT32), false); annot.addAttribute(att); assertEquals(1, annot.getNumAttributes()); assertEquals(att, annot.getAttributeAt(0)); }
@Test public void testAsMetadataElement() throws ParseException { final BinningOp binningOp = createBinningOp(); final GlobalMetadata globalMetadata = GlobalMetadata.create(binningOp); final MetadataElement processingGraphElement = globalMetadata.asMetadataElement(); assertNotNull(processingGraphElement); assertEquals("Processing_Graph", processingGraphElement.getName()); final MetadataElement node_0_Element = processingGraphElement.getElement("node.0"); assertNotNull(node_0_Element); final MetadataElement parameterElement = node_0_Element.getElement("parameters"); assertEquals(11, parameterElement.getNumAttributes()); // @todo 2 tb/tb check for other meta elements 2014-10-10 final MetadataAttribute software_qualified_name = parameterElement.getAttribute("software_qualified_name"); assertNotNull(software_qualified_name); assertEquals("org.esa.beam.binning.operator.BinningOp", software_qualified_name.getData().getElemString()); }
@Test public void testProcessingGraphInMetadata() { // using the SubsetOp here, because when using a TestOperator the module.xml is not found OperatorSpiRegistry operatorSpiRegistry = GPF.getDefaultInstance().getOperatorSpiRegistry(); if (operatorSpiRegistry.getOperatorSpi("Subset") == null) { operatorSpiRegistry.addOperatorSpi(new SubsetOp.Spi()); } final Operator testOp = operatorSpiRegistry.getOperatorSpi("Subset").createOperator(); testOp.setSourceProduct(new Product("dummy", "T", 10, 10)); Product targetProduct = testOp.getTargetProduct(); MetadataElement metadataRoot = targetProduct.getMetadataRoot(); MetadataElement elementPG = metadataRoot.getElement(OperatorContext.PROCESSING_GRAPH_ELEMENT_NAME); assertNotNull(elementPG); MetadataElement node0Element = elementPG.getElement("node.0"); assertNotNull(node0Element); assertEquals(9, node0Element.getNumAttributes()); assertNotNull(node0Element.getAttribute("id")); assertNotNull(node0Element.getAttribute("operator")); assertNotNull(node0Element.getAttribute("moduleName")); assertEquals("beam-gpf", node0Element.getAttributeString("moduleName")); assertNotNull(node0Element.getAttribute("moduleVersion")); assertNotNull(node0Element.getAttribute("processingTime")); }