/* * Copyright 2013 Robert von Burg <eitch@eitchnet.ch> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package li.strolch.xmlpers.test; import java.io.File; import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import li.strolch.utils.helper.FileHelper; import li.strolch.xmlpers.api.IoMode; import li.strolch.xmlpers.api.PersistenceConstants; import li.strolch.xmlpers.api.PersistenceManager; import li.strolch.xmlpers.api.PersistenceManagerLoader; import li.strolch.xmlpers.test.impl.BookContextFactory; import li.strolch.xmlpers.test.impl.MyModelContextFactory; import li.strolch.xmlpers.test.impl.TestConstants; import li.strolch.xmlpers.test.model.Book; import li.strolch.xmlpers.test.model.MyModel; public abstract class AbstractPersistenceTest { protected static final Logger logger = LoggerFactory.getLogger(AbstractPersistenceTest.class); protected PersistenceManager persistenceManager; @SuppressWarnings("nls") protected static void cleanPath(String path) { File file = new File(path).getAbsoluteFile(); File parent = file.getParentFile(); if (!parent.getAbsolutePath().endsWith("/target/db")) throw new RuntimeException("Bad parent! Must be /target/db/: " + parent); if (!parent.exists() && !parent.mkdirs()) throw new RuntimeException("Failed to create path " + parent); if (file.exists() && file.isDirectory()) if (!FileHelper.deleteFiles(file.listFiles(), true)) throw new RuntimeException("Could not clean up path " + file.getAbsolutePath()); if (!file.exists() && !file.mkdir()) throw new RuntimeException("Failed to create path " + file); File domFile = new File(file, IoMode.DOM.name()); if (!domFile.mkdir()) throw new RuntimeException("Failed to create path " + domFile); File saxFile = new File(file, IoMode.SAX.name()); if (!saxFile.mkdir()) throw new RuntimeException("Failed to create path " + saxFile); } protected void setup(Properties properties) { properties.setProperty(PersistenceConstants.PROP_VERBOSE, "true"); //$NON-NLS-1$ this.persistenceManager = PersistenceManagerLoader.load(properties); this.persistenceManager.getCtxFactory().registerPersistenceContextFactory(MyModel.class, TestConstants.TYPE_RES, new MyModelContextFactory()); this.persistenceManager.getCtxFactory().registerPersistenceContextFactory(Book.class, TestConstants.TYPE_BOOK, new BookContextFactory()); } }