[Fix] Fixed not closing document in StrolchXmlHelper, added test
This commit is contained in:
parent
2724bb9706
commit
538ded80b8
|
@ -91,4 +91,12 @@ public class SimpleStrolchElementListener implements StrolchElementListener {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
return new ArrayList<>(this.activities.values());
|
return new ArrayList<>(this.activities.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<StrolchRootElement> getElements() {
|
||||||
|
List<StrolchRootElement> elements = new ArrayList<>();
|
||||||
|
elements.addAll(getResources());
|
||||||
|
elements.addAll(getOrders());
|
||||||
|
elements.addAll(getActivities());
|
||||||
|
return elements;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package li.strolch.model.xml;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.stream.FactoryConfigurationError;
|
import javax.xml.stream.FactoryConfigurationError;
|
||||||
|
@ -43,7 +44,13 @@ public class StrolchXmlHelper {
|
||||||
return elementListener.getActivity(id);
|
return elementListener.getActivity(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writeToFile(File file, List<StrolchRootElement> elements) {
|
public static List<StrolchRootElement> parseFile(File file) {
|
||||||
|
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
||||||
|
new XmlModelSaxFileReader(elementListener, file, false).parseFile();
|
||||||
|
return elementListener.getElements();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeToFile(File file, Collection<StrolchRootElement> elements) {
|
||||||
|
|
||||||
try (FileOutputStream out = new FileOutputStream(file)) {
|
try (FileOutputStream out = new FileOutputStream(file)) {
|
||||||
|
|
||||||
|
@ -53,6 +60,8 @@ public class StrolchXmlHelper {
|
||||||
element.accept(new StrolchElementToSaxWriterVisitor(writer));
|
element.accept(new StrolchElementToSaxWriterVisitor(writer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
writer.writeEndDocument();
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException("Failed to write elements to " + file, e);
|
throw new RuntimeException("Failed to write elements to " + file, e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
package li.strolch.model;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import li.strolch.model.activity.Activity;
|
||||||
|
import li.strolch.model.activity.TimeOrdering;
|
||||||
|
import li.strolch.model.xml.StrolchXmlHelper;
|
||||||
|
|
||||||
|
public class StrolchXmlHelperTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldWriteAndReadXml() {
|
||||||
|
|
||||||
|
File outFile = new File("target/" + getClass().getSimpleName());
|
||||||
|
|
||||||
|
Activity activity = ModelGenerator.createActivity("activity", "Activity", "Activity", TimeOrdering.SERIES);
|
||||||
|
Resource resource = ModelGenerator.createResource("res", "Res", "Res");
|
||||||
|
Order order = ModelGenerator.createOrder("order", "Order", "Order");
|
||||||
|
|
||||||
|
Set<StrolchRootElement> elements = new HashSet<>(Arrays.asList(activity, resource, order));
|
||||||
|
|
||||||
|
StrolchXmlHelper.writeToFile(outFile, elements);
|
||||||
|
Set<StrolchRootElement> result = new HashSet<>(StrolchXmlHelper.parseFile(outFile));
|
||||||
|
|
||||||
|
assertEquals(elements, result);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue