switched out QuadsAllIterator to allow any iterator

This commit is contained in:
David Schor 2015-08-11 04:17:03 -04:00
parent f1566ba182
commit b5f0d3688b
2 changed files with 20 additions and 15 deletions

View file

@ -11,12 +11,17 @@ import (
type Exporter struct {
wr io.Writer
qstore graph.QuadStore
qi graph.Iterator
err error
count int32
}
func NewExporter(writer io.Writer, qstore graph.QuadStore) *Exporter {
return &Exporter{wr: writer, qstore: qstore}
return NewExporterForIterator(writer, qstore, qstore.QuadsAllIterator())
}
func NewExporterForIterator(writer io.Writer, qstore graph.QuadStore, qi graph.Iterator) *Exporter {
return &Exporter{wr: writer, qstore: qstore, qi: qi}
}
// number of records
@ -24,9 +29,9 @@ func (exp *Exporter) Count() int32 {
return exp.count
}
func (exp *Exporter) ExportNquad() {
it := exp.qstore.QuadsAllIterator()
for graph.Next(it) {
func (exp *Exporter) ExportQuad() {
exp.qi.Reset()
for it := exp.qi; graph.Next(it); {
exp.count++
quad := exp.qstore.Quad(it.Result())
@ -46,8 +51,8 @@ func (exp *Exporter) ExportNquad() {
func (exp *Exporter) ExportJson() {
var jstr []byte
exp.Write("[")
it := exp.qstore.QuadsAllIterator()
for graph.Next(it) {
exp.qi.Reset()
for it := exp.qi; graph.Next(it); {
exp.count++
if exp.count > 1 {
exp.Write(",")
@ -70,8 +75,8 @@ func (exp *Exporter) ExportGml() {
exp.Write("Creator Cayley\ngraph\n[\n")
seen = make(map[string]int32)
it := exp.qstore.QuadsAllIterator()
for graph.Next(it) {
exp.qi.Reset()
for it := exp.qi; graph.Next(it); {
cur := exp.qstore.Quad(it.Result())
if _, ok := seen[cur.Subject]; !ok {
exp.Write(" node\n [\n id ")
@ -94,8 +99,8 @@ func (exp *Exporter) ExportGml() {
exp.count++
}
it.Reset()
for graph.Next(it) {
exp.qi.Reset()
for it := exp.qi; graph.Next(it); {
cur := exp.qstore.Quad(it.Result())
exp.Write(" edge\n [\n source ")
exp.Write(strconv.FormatInt(int64(seen[cur.Subject]), 10))
@ -120,8 +125,8 @@ func (exp *Exporter) ExportGraphml() {
exp.Write(" <graph id=\"Caylay\" edgedefault=\"directed\">\n")
seen = make(map[string]bool)
it := exp.qstore.QuadsAllIterator()
for graph.Next(it) {
exp.qi.Reset()
for it := exp.qi; graph.Next(it); {
cur := exp.qstore.Quad(it.Result())
if found := seen[cur.Subject]; !found {
seen[cur.Subject] = true
@ -138,8 +143,8 @@ func (exp *Exporter) ExportGraphml() {
exp.count++
}
it.Reset()
for graph.Next(it) {
exp.qi.Reset()
for it := exp.qi; graph.Next(it); {
cur := exp.qstore.Quad(it.Result())
exp.Write(" <edge source=")
exp.WriteEscString(cur.Subject)