package com.bagri.core.test; import static com.bagri.support.util.FileUtils.readTextFile; import static org.junit.Assert.assertNotNull; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.util.Set; import com.bagri.core.api.DocumentManagement; import com.bagri.core.api.QueryManagement; import com.bagri.core.api.ResultCursor; import com.bagri.core.api.SchemaRepository; import com.bagri.core.api.TransactionManagement; import com.bagri.core.api.BagriException; import com.bagri.core.model.Document; import com.bagri.core.server.api.df.json.JsonpParser; import com.bagri.core.server.api.df.map.MapBuilder; import com.bagri.core.server.api.df.map.MapHandler; import com.bagri.core.server.api.df.map.MapParser; import com.bagri.core.server.api.df.json.JsonpModeler; import com.bagri.core.server.api.df.json.JsonpBuilder; import com.bagri.core.server.api.df.json.JsonpHandler; import com.bagri.core.server.api.df.xml.XmlBuilder; import com.bagri.core.server.api.df.xml.XmlHandler; import com.bagri.core.server.api.df.xml.XmlModeler; import com.bagri.core.server.api.df.xml.XmlStaxParser; import com.bagri.core.system.DataFormat; import com.bagri.core.system.Library; import com.bagri.core.system.Module; import com.bagri.core.system.Schema; import com.bagri.support.util.PropUtils; public abstract class BagriManagementTest { protected static String sampleRoot; protected SchemaRepository xRepo; protected Set<String> uris = new HashSet<>(); protected String getFileName(String original) { return original; } //protected String getUri(String fileName) { // return Paths.get(fileName).getFileName().toString(); //} protected Properties getDocumentProperties() { return null; } protected DocumentManagement getDocManagement() { return xRepo.getDocumentManagement(); } protected QueryManagement getQueryManagement() { return xRepo.getQueryManagement(); } protected TransactionManagement getTxManagement() { return xRepo.getTxManagement(); } protected Collection<DataFormat> getBasicDataFormats() { ArrayList<DataFormat> cFormats = new ArrayList<>(2); ArrayList<String> cExt = new ArrayList<>(1); cExt.add("xml"); DataFormat df = new DataFormat(1, new java.util.Date(), "", "XML", null, "application/xml", cExt, XmlHandler.class.getName(), true, null); cFormats.add(df); cExt = new ArrayList<>(1); cExt.add("json"); df = new DataFormat(1, new java.util.Date(), "", "JSON", null, "application/json", cExt, JsonpHandler.class.getName(), true, null); cFormats.add(df); df = new DataFormat(1, new java.util.Date(), "", "MAP", null, null, null, MapHandler.class.getName(), true, null); cFormats.add(df); return cFormats; } protected Schema initSchema() { com.bagri.core.server.api.SchemaRepository xdmRepo = (com.bagri.core.server.api.SchemaRepository) xRepo; Schema schema = xdmRepo.getSchema(); if (schema == null) { schema = new Schema(1, new java.util.Date(), "test", "test", "test schema", true, null); //xdmRepo.setSchema(schema); //xdmRepo.setDataFormats(getBasicDataFormats()); } return schema; } protected ResultCursor query(String query, Map<String, Object> params, Properties props) throws Exception { if (props == null) { props = new Properties(); } ResultCursor result = getQueryManagement().executeQuery(query, params, props); assertNotNull(result); return result; } protected int exploreCursor(ResultCursor cursor) throws Exception { int cnt = 0; while (cursor.next()) { String text = cursor.getItemAsString(null); System.out.println("" + cnt + ": " + text); cnt++; } return cnt; } protected void removeDocumentsTest() throws Exception { if (getTxManagement().isInTransaction()) { getTxManagement().finishCurrentTransaction(true); } long txId = getTxManagement().beginTransaction(); for (String uri: uris) { getDocManagement().removeDocument(uri); } uris.clear(); getTxManagement().commitTransaction(txId); } public Document createDocumentTest(String fileName) throws Exception { Properties props = getDocumentProperties(); return getDocManagement().storeDocumentFromFile(fileName, props); } public Document updateDocumentTest(String uri, String fileName) throws Exception { String content = readTextFile(fileName); Properties props = getDocumentProperties(); return getDocManagement().storeDocumentFromString(uri, content, props); } public void removeDocumentTest(String uri) throws Exception { getDocManagement().removeDocument(uri); } public void storeSecurityTest() throws Exception { long txId = 0; try { txId = getTxManagement().beginTransaction(); } catch (BagriException ex) { if (ex.getErrorCode() != BagriException.ecTransNoNested) { throw ex; } } uris.add(createDocumentTest(sampleRoot + getFileName("security1500.xml")).getUri()); uris.add(createDocumentTest(sampleRoot + getFileName("security5621.xml")).getUri()); uris.add(createDocumentTest(sampleRoot + getFileName("security9012.xml")).getUri()); uris.add(createDocumentTest(sampleRoot + getFileName("security29674.xml")).getUri()); if (txId > 0) { getTxManagement().commitTransaction(txId); } } public void storeOrderTest() throws Exception { long txId = 0; try { txId = getTxManagement().beginTransaction(); } catch (BagriException ex) { if (ex.getErrorCode() != BagriException.ecTransNoNested) { throw ex; } } uris.add(createDocumentTest(sampleRoot + getFileName("order123.xml")).getUri()); uris.add(createDocumentTest(sampleRoot + getFileName("order654.xml")).getUri()); if (txId > 0) { getTxManagement().commitTransaction(txId); } } public void storeCustomerTest() throws Exception { long txId = 0; try { txId = getTxManagement().beginTransaction(); } catch (BagriException ex) { if (ex.getErrorCode() != BagriException.ecTransNoNested) { throw ex; } } uris.add(createDocumentTest(sampleRoot + getFileName("custacc.xml")).getUri()); if (txId > 0) { getTxManagement().commitTransaction(txId); } } }