+ protected void writeMediaFile(OutputStream out, Node target, EntityMimeType mimeType, Charset charset)
+ throws RepositoryException, IOException {
+ if (target.isNodeType(NodeType.NT_QUERY)) {
+ Query query = target.getSession().getWorkspace().getQueryManager().getQuery(target);
+ QueryResult queryResult = query.execute();
+ String[] columnNames = queryResult.getColumnNames();
+ if (EntityMimeType.XML.equals(mimeType)) {
+ } else if (EntityMimeType.CSV.equals(mimeType)) {
+ CsvWriter csvWriter = new CsvWriter(out, charset);
+ csvWriter.writeLine(columnNames);
+ RowIterator rit = queryResult.getRows();
+ while (rit.hasNext()) {
+ Row row = rit.nextRow();
+ Value[] values = row.getValues();
+ List<String> lst = new ArrayList<>();
+ for (Value value : values) {
+ lst.add(value.getString());
+ }
+ csvWriter.writeLine(lst);
+ }
+ }
+ } else {
+ if (EntityMimeType.XML.equals(mimeType)) {
+ target.getSession().exportDocumentView(target.getPath(), out, true, false);
+ } else if (EntityMimeType.CSV.equals(mimeType)) {
+ CsvWriter csvWriter = new CsvWriter(out, charset);
+ csvWriter.writeLine(new String[] { "name", "label" });
+ NodeIterator children = target.getNodes();
+ while (children.hasNext()) {
+ Node child = children.nextNode();
+ String label = Jcr.getTitle(child);
+ csvWriter.writeLine(new String[] { child.getIdentifier(), label });
+ }
+ }
+
+ }
+
+ }
+