@Override public SequenceType[] getArgumentTypes() { return new SequenceType[] { SequenceType.makeSequenceType(ItemType.ANY_ITEM, OccurrenceIndicator.ONE_OR_MORE)}; }
@Override public SequenceType getResultType() { return SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ONE); }
private static ExtensionFunction createExistsFunction () { return new Function ( new QName ("file", FILE_NAMESPACE, "exists"), SequenceType.makeSequenceType(ItemType.BOOLEAN, OccurrenceIndicator.ONE), new SequenceType[] { SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ONE)}) { @Override public XdmValue call(XdmValue[] arguments) throws SaxonApiException { String path = arguments[0].itemAt(0).getStringValue(); boolean result = new File(path).exists(); return new XdmAtomicValue(result); } }; }
private static ExtensionFunction createIsDirFunction () { return new Function ( new QName ("file", FILE_NAMESPACE, "is-dir"), SequenceType.makeSequenceType(ItemType.BOOLEAN, OccurrenceIndicator.ONE), new SequenceType[] { SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ONE)}) { @Override public XdmValue call(XdmValue[] arguments) throws SaxonApiException { String path = arguments[0].itemAt(0).getStringValue(); boolean result = new File(path).isDirectory(); return new XdmAtomicValue(result); } }; }
private static ExtensionFunction createListFunction () { return new Function ( new QName ("file", FILE_NAMESPACE, "list"), SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ZERO_OR_MORE), new SequenceType[] { SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ONE)}) { @Override public XdmValue call(XdmValue[] arguments) throws SaxonApiException { String dir = arguments[0].itemAt(0).getStringValue(); String [] files = new File(dir).list(); if (files == null) { return XdmEmptySequence.getInstance(); } XdmItem[] items = new XdmItem[files.length]; for (int i = 0; i < files.length; i++) { items[i] = new XdmAtomicValue(files[i]); } return new XdmValue (Arrays.asList(items)); } }; }