List of usage examples for org.apache.poi.xdgf.usermodel XDGFShape hasParent
public boolean hasParent()
From source file:com.bbn.poi.xdgf.parsers.VisioPageParser.java
License:Apache License
protected boolean reassignTextNodeToParent(XDGFShape shape, ShapeData shapeData) { // keep looking at parents to see if they're a good match ShapeData parentMatch = null;/*from w ww .j a v a2s .c om*/ XDGFShape current = shape; ArrayList<ShapeData> duplicates = new ArrayList<>(); double x = shapeData.bounds.getMinX(); double width = shapeData.bounds.getWidth(); while (current.hasParent()) { XDGFShape parent = current.getParentShape(); ShapeData parentData = getShape(parent.getID()); if (parentData != null) { double parentWidth = parentData.bounds.getWidth(); double px = parentData.bounds.getMinX(); if (Math.abs(width - parentWidth) > 0.0001 || Math.abs(px - x) > 0.0001) break; // found a potential match if (!parentData.hasText) { // discard duplicate useless shapes if (parentMatch != null) duplicates.add(parentMatch); parentMatch = parentData; } } current = parent; } // if there's a parent match, reassign the text if (parentMatch != null) { XDGFText text = shape.getText(); parentMatch.vertex.setProperty("label", shape.getTextAsString()); parentMatch.vertex.setProperty("textRef", shape.getID()); parentMatch.vertex.setProperty("textRefWhy", "reassignToParent"); parentMatch.hasText = true; parentMatch.isInteresting = true; parentMatch.textCenter = text.getTextCenter(); helper.onReassignToParent(parentMatch, shape); for (ShapeData dup : duplicates) { removeShape(dup); } return true; } return false; }