package org.concord.otrunk.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStreamReader; import org.concord.framework.otrunk.OTObject; import org.concord.framework.otrunk.OTObjectService; import org.concord.framework.otrunk.OTrunk; import org.concord.otrunk.view.OTMLUserSession; import org.concord.otrunk.view.OTViewerHelper; import org.concord.otrunk.xml.XMLDatabase; /** * This is intended to be extended so test round tripping various OTrunk * properties * * @author scytacki * */ public class RoundTripHelperLearner implements RoundTripHelper { private OTViewerHelper viewerHelper; private XMLDatabase authorDb; private XMLDatabase learnerDb; private OTrunk otrunk; private OTMLUserSession userSession; private OTObjectService otObjectService; public void initOTrunk(Class<? extends OTObject> otClass) throws Exception { viewerHelper = new OTViewerHelper(); // create an empty database authorDb = new XMLDatabase(); viewerHelper.loadOTrunk2(null, authorDb); otrunk = viewerHelper.getOtrunk(); OTObject root = otrunk.createObject(otClass); otrunk.setRoot(root); userSession = new OTMLUserSession(); viewerHelper.loadUserSession(userSession); viewerHelper.newUserData("roundtrip test"); learnerDb = (XMLDatabase) userSession.getUserDataDb(); } public void reload() throws Exception { ByteArrayOutputStream output = new ByteArrayOutputStream(); viewerHelper.saveOTDatabase(learnerDb, output); output.close(); InputStreamReader reader = new InputStreamReader(new ByteArrayInputStream(output.toByteArray())); BufferedReader bufReader = new BufferedReader(reader); String line; while((line = bufReader.readLine()) != null){ System.out.println(line); } viewerHelper = new OTViewerHelper(); viewerHelper.loadOTrunk2(null, authorDb); otrunk = viewerHelper.getOtrunk(); learnerDb = (XMLDatabase) viewerHelper.loadOTDatabase(new ByteArrayInputStream(output.toByteArray()), null); viewerHelper.loadUserData(learnerDb, null); otObjectService = viewerHelper.getRootObject().getOTObjectService(); } public OTObject getRootObject() throws Exception { return viewerHelper.getRootObject(); } public <T extends OTObject> T createObject(Class<T> klass) throws Exception { return otObjectService.createObject(klass); } }