package com.vistatec.ocelot.xliff.freme.helper; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class FremeXliff2_0Helper extends FremeXliffHelper { private static final String UNIT_NODE_NAME = "unit"; private static final String SEGMENT_NODE_NAME = "segment"; private static final String TARGET_NODE_NAME = "target"; private static final String SOURCE_NODE_NAME = "source"; private static final String UNIT_ID_ATTR_NAME = "id"; private static final String TYPE_ATTRIBUTE = "type"; @Override public String getUnitNodeName() { return UNIT_NODE_NAME; } // @Override // public int getSegmentNumber(String unitId) { // return Integer.parseInt(unitId); // } // // @Override // public String getUnitId(String segmentNumber) { // return segmentNumber; // } private Element getSegmentElement(Element unitElement) { NodeList nodes = unitElement.getChildNodes(); Element segment = null; int i = 0; while (i < nodes.getLength() && segment == null) { if (nodes.item(i).getNodeName().equals(SEGMENT_NODE_NAME)) { segment = (Element) nodes.item(i); } else { i++; } } return segment; } @Override public Element getSourceElement(Element unitElement) { Element source = null; Element segmentElement = getSegmentElement(unitElement); if (segmentElement != null) { NodeList nodes = segmentElement.getChildNodes(); int i = 0; while (i < nodes.getLength() && source == null) { if (nodes.item(i).getNodeName().equals(SOURCE_NODE_NAME)) { source = (Element) nodes.item(i); } else { i++; } } } return source; } @Override public Element getTargetElement(Element unitElement) { Element targetElement = null; Element segmentElement = getSegmentElement(unitElement); if (segmentElement != null) { NodeList nodes = segmentElement.getChildNodes(); int i = 0; while (i < nodes.getLength() && targetElement == null) { if (nodes.item(i).getNodeName().equals(TARGET_NODE_NAME)) { targetElement = (Element) nodes.item(i); } else { i++; } } } return targetElement; } @Override public String getUnitId(Element unitElement) { return unitElement.getAttribute(UNIT_ID_ATTR_NAME); } @Override public void insertLinkNode(Element unitElement, Node linkNode) { if (unitElement != null && linkNode != null) { // unitElement.appendChild(linkNode); unitElement.insertBefore(linkNode, unitElement.getFirstChild()); } } @Override public String getTypeAttribute() { return TYPE_ATTRIBUTE; } }