Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Extract methods for writing elements
Browse files Browse the repository at this point in the history
  • Loading branch information
seanf committed Aug 1, 2013
1 parent dec159f commit a440789
Showing 1 changed file with 37 additions and 22 deletions.
Expand Up @@ -122,44 +122,60 @@ public void write(OutputStream output) throws IOException, WebApplicationExcepti
// error instead of simply aborting the output stream.
if (iter.hasNext()) iter.peek();

StreamSerializer tmxWriter = new StreamSerializer(output);
tmxWriter.writeXMLDeclaration();
StreamSerializer stream = new StreamSerializer(output);
stream.writeXMLDeclaration();

Element tmx = new Element("tmx");
tmx.addAttribute(new Attribute("version", "1.4"));
tmxWriter.writeStartTag(tmx);
tmxWriter.writeNewLine();
startElem(stream, tmx);

Text indentText = new Text(" ");
tmxWriter.write(indentText);
Element header = exportStrategy.buildHeader();
tmxWriter.write(header);
tmxWriter.writeNewLine();
indent(stream);
writeElem(stream, exportStrategy.buildHeader());

tmxWriter.write(indentText);
indent(stream);
Element body = new Element("body");
tmxWriter.writeStartTag(body);
tmxWriter.writeNewLine();
startElem(stream, body);

while (iter.hasNext())
{
T tu = iter.next();
writeIfComplete(tmxWriter, tu);
writeIfComplete(stream, tu);
}
tmxWriter.write(indentText);
tmxWriter.writeEndTag(body);
tmxWriter.writeNewLine();
tmxWriter.writeEndTag(tmx);
tmxWriter.writeNewLine();
tmxWriter.flush();
indent(stream);
endElem(stream, body);
endElem(stream, tmx);
stream.flush();
}
finally
{
close();
}
}

private void writeIfComplete(StreamSerializer tmxWriter, T tu) throws IOException
private void indent(StreamSerializer stream) throws IOException
{
stream.write(new Text(" "));
}

private void startElem(StreamSerializer stream, Element elem) throws IOException
{
stream.writeStartTag(elem);
stream.writeNewLine();
}

private void endElem(StreamSerializer stream, Element elem) throws IOException
{
stream.writeEndTag(elem);
stream.writeNewLine();
}

private void writeElem(StreamSerializer stream, Element elem) throws IOException
{
stream.write(elem);
stream.writeNewLine();
}

private void writeIfComplete(StreamSerializer stream, T tu) throws IOException
{
Optional<Element> textUnit = exportStrategy.buildTU(tu);
// If there aren't any translations for this TU, we shouldn't include it.
Expand All @@ -168,8 +184,7 @@ private void writeIfComplete(StreamSerializer tmxWriter, T tu) throws IOExceptio
// unit."
if (textUnit.isPresent() && textUnit.get().getChildElements("tuv").size() >= 2)
{
tmxWriter.write(textUnit.get());
tmxWriter.writeNewLine();
writeElem(stream, textUnit.get());
}
}

Expand Down

0 comments on commit a440789

Please sign in to comment.