/*
* ome.util.RdfPrinter
*
* Copyright 2006 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.util;
import java.util.Collection;
import java.util.Iterator;
/**
* walks an object graph producing RDF-like output.
*/
public class RdfPrinter extends ContextFilter {
StringBuilder sb = new StringBuilder();
public String getRdf() {
return sb.toString();
}
void space() {
sb.append(" ");
}
void newline() {
sb.append("\n");
}
protected void entry(String field, Object o) {
if (!Collection.class.isAssignableFrom(currentContext().getClass())) {
sb.append(currentContext());
space();
sb.append(field);
space();
sb.append(o);
newline();
}
}
@Override
public Object filter(String fieldId, Object o) {
entry(fieldId, o);
return super.filter(fieldId, o);
}
@Override
public Filterable filter(String fieldId, Filterable f) {
entry(fieldId, f);
return super.filter(fieldId, f);
}
@Override
public Collection filter(String fieldId, Collection c) {
sb.append(currentContext() == null ? "" : currentContext());
space();
sb.append(fieldId);
space();
sb.append(" [ ");
Collection result;
if (c != null && c.size() > 0) {
for (Iterator it = c.iterator(); it.hasNext();) {
sb.append(it.next());
}
} else {
}
sb.append(" ] \n");
return super.filter(fieldId, c);
}
}