/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License, version 2 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/gpl-2.0.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
*
* Copyright 2005-2008 Pentaho Corporation. All rights reserved.
*
* @created Jul 8, 2005
* @author Marc Batchelor
*
*/
package org.pentaho.test.platform.repository.runtime;
import java.io.File;
//import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.pentaho.platform.api.repository.IRuntimeRepository;
import org.pentaho.platform.repository.hibernate.HibernateUtil;
import org.pentaho.platform.repository.messages.Messages;
import org.pentaho.platform.repository.runtime.RuntimeElement;
import org.pentaho.platform.repository.runtime.RuntimeRepository;
import org.pentaho.test.platform.repository.RepositoryTestCase;
@SuppressWarnings("nls")
public class RuntimeRepositoryTest extends RepositoryTestCase {
private StringBuffer longString = new StringBuffer();
private BigDecimal bdProperty = new BigDecimal("1128347.34873484738"); //$NON-NLS-1$
public static final String SOLUTION_PATH = "test-src/solution";
private static final String ALT_SOLUTION_PATH = "test-src/solution";
private static final String PENTAHO_XML_PATH = "/system/pentaho.xml";
final String SYSTEM_FOLDER = "/system";
// private static final String DEFAULT_SPRING_CONFIG_FILE_NAME = "pentahoObjects.spring.xml";
public String getSolutionPath() {
File file = new File(SOLUTION_PATH + PENTAHO_XML_PATH);
if(file.exists()) {
System.out.println("File exist returning " + SOLUTION_PATH);
return SOLUTION_PATH;
} else {
System.out.println("File does not exist returning " + ALT_SOLUTION_PATH);
return ALT_SOLUTION_PATH;
}
}
/**
* @param arg0
*/
public RuntimeRepositoryTest(String arg0) {
super(arg0);
Properties props = System.getProperties();
longString.append(props.getProperty("java.home")).append(props.getProperty("sun.cpu.isalist")). //$NON-NLS-1$ //$NON-NLS-2$
append(props.getProperty("java.vm.version")).append(props.getProperty("user.home")). //$NON-NLS-1$ //$NON-NLS-2$
append(props.getProperty("java.class.path")); //$NON-NLS-1$
}
public static void main(String[] args) {
RuntimeRepositoryTest test = new RuntimeRepositoryTest("testRuntimeRepository"); //$NON-NLS-1$
junit.textui.TestRunner.run(test);
System.exit(0);
}
@SuppressWarnings("unused")
private String getMessagesText() {
List messages = this.getMessages();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < messages.size(); i++) {
sb.append(messages.get(i)).append("\n"); //$NON-NLS-1$
}
return sb.toString();
}
// public void testRuntimeRepository() {
// RuntimeElement baseElement = createRuntimeElement();
// HibernateUtil.flushSession();
// modifyAdd(baseElement);
// HibernateUtil.flushSession();
// readElementTest(baseElement.getInstanceId());
// doReadOnlyTest(baseElement.getInstanceId());
// cleanupElement(baseElement.getInstanceId());
// OutputStream output = getOutputStream("RuntimeRepositoryTest.testRuntimeRepository", ".txt"); //$NON-NLS-1$ //$NON-NLS-2$
// try {
// output.write(getMessagesText().getBytes());
// } catch (Exception e) {
// }
// }
public void testDummyTest() {
// do nothing, get the above test to pass!
}
public void setUp() {
// TODO: remove once tests are passing
}
public void tearDown() {
// TODO: remove once tests are passing
}
@SuppressWarnings("unused")
private void doReadOnlyTest(String elementId) {
info(Messages.getInstance().getString("RUNTIMEREPOTEST.USER_TESTINGREADONLY")); //$NON-NLS-1$
HibernateUtil.beginTransaction();
try {
IRuntimeRepository repo = new RuntimeRepository();
repo.setSession(getPentahoSession());
RuntimeElement baseElement = (RuntimeElement) repo.loadElementById(elementId, null);
info(Messages.getInstance().getString("RUNTIMEREPOTEST.USER_SETTINGELEMENTTOREADONLY")); //$NON-NLS-1$
baseElement.setReadOnly(true);
} finally {
HibernateUtil.commitTransaction();
}
// Now, the element is read-only.
// Flush the session and re-load the element to
// test the "loaded" methods.
HibernateUtil.flushSession();
HibernateUtil.clear();
// Now, reload the element.
HibernateUtil.beginTransaction();
try {
info(Messages.getInstance().getString("RUNTIMEREPOTEST.USER_LOADINGREADONLY")); //$NON-NLS-1$
IRuntimeRepository repo = new RuntimeRepository();
repo.setSession(getPentahoSession());
RuntimeElement baseElement = (RuntimeElement) repo.loadElementById(elementId, null);
boolean caughtException = false;
try {
info(Messages.getInstance().getString("RUNTIMEREPOTEST.USER_TRYINGSETSTRINGPROPERTY")); //$NON-NLS-1$
baseElement
.setStringProperty(
Messages.getInstance().getString("RUNTIMEREPOTEST.MODIFY_NEW_STRING_KEY"), Messages.getInstance().getString("RUNTIMEREPOTEST.MODIFY_STRING_VALUE")); //$NON-NLS-1$ //$NON-NLS-2$
} catch (IllegalStateException ex) {
caughtException = true;
info(Messages.getInstance().getString("RUNTIMEREPOTEST.USER_EXCEPTIONTRIPPED")); //$NON-NLS-1$
}
assertTrue(Messages.getInstance().getErrorString("RUNTIMEREPOTEST.ERROR_0001_EXCEPTIONNOTTRIPPED"), caughtException); //$NON-NLS-1$
caughtException = false;
try {
info(Messages.getInstance().getString("RUNTIMEREPOTEST.USER_TRYINGSETPARENTTYPE")); //$NON-NLS-1$
baseElement.setParentType(Messages.getInstance().getString("RUNTIMEREPOTEST.CREATE_PARENT_TYPE")); //$NON-NLS-1$
} catch (IllegalStateException ex) {
caughtException = true;
info(Messages.getInstance().getString("RUNTIMEREPOTEST.USER_EXCEPTIONTRIPPED")); //$NON-NLS-1$
}
assertTrue(Messages.getInstance().getErrorString("RUNTIMEREPOTEST.ERROR_0001_EXCEPTIONNOTTRIPPED"), caughtException); //$NON-NLS-1$
} finally {
HibernateUtil.commitTransaction();
}
}
@SuppressWarnings("unused")
private void cleanupElement(String elementId) {
HibernateUtil.beginTransaction();
IRuntimeRepository repo = new RuntimeRepository();
repo.setSession(getPentahoSession());
RuntimeElement re = (RuntimeElement) repo.loadElementById(elementId, null);
HibernateUtil.makeTransient(re);
HibernateUtil.commitTransaction();
HibernateUtil.flushSession();
HibernateUtil.clear();
}
@SuppressWarnings("unused")
private void modifyAdd(RuntimeElement baseElement) {
HibernateUtil.beginTransaction();
try {
IRuntimeRepository repo = new RuntimeRepository();
repo.setSession(getPentahoSession());
baseElement
.setStringProperty(
Messages.getInstance().getString("RUNTIMEREPOTEST.MODIFY_NEW_STRING_KEY"), Messages.getInstance().getString("RUNTIMEREPOTEST.MODIFY_STRING_VALUE")); //$NON-NLS-1$ //$NON-NLS-2$
} finally {
HibernateUtil.commitTransaction();
}
}
@SuppressWarnings("unused")
private RuntimeElement createRuntimeElement() {
IRuntimeRepository repo = new RuntimeRepository();
repo.setSession(getPentahoSession());
RuntimeElement ele = null;
ele = (RuntimeElement) repo
.newRuntimeElement(
Messages.getInstance().getString("RUNTIMEREPOTEST.CREATE_PARENT"), Messages.getInstance().getString("RUNTIMEREPOTEST.CREATE_PARENT_TYPE"), false); //$NON-NLS-1$ //$NON-NLS-2$
try {
assertNotNull(ele);
info(Messages.getInstance().getString("RUNTIMEREPOTEST.DEBUG_INSTANCE_ID") + ele.getInstanceId()); //$NON-NLS-1$
ele.setSolutionId(Messages.getInstance().getString("RUNTIMEREPOTEST.SALES_SOLUTION")); //$NON-NLS-1$
ele
.setStringProperty(
Messages.getInstance().getString("RUNTIMEREPOTEST.SHORT_STRING_KEY"), Messages.getInstance().getString("RUNTIMEREPOTEST.SHORT_STRING_VALUE")); //$NON-NLS-1$ //$NON-NLS-2$
// Get a Long String to Store...
ele.setStringProperty(Messages.getInstance().getString("RUNTIMEREPOTEST.LONG_STRING_KEY"), longString.toString()); //$NON-NLS-1$
ele.setDateProperty(Messages.getInstance().getString("RUNTIMEREPOTEST.DATE_KEY"), new Date()); //$NON-NLS-1$
ele.setBigDecimalProperty(Messages.getInstance().getString("RUNTIMEREPOTEST.DECIMAL_KEY"), bdProperty); //$NON-NLS-1$
List myList = new ArrayList();
myList.add(Messages.getInstance().getString("RUNTIMEREPOTEST.LIST_ELEMENT_STRING")); //$NON-NLS-1$
myList.add(new BigDecimal("1283764.1294839483")); //$NON-NLS-1$
myList.add(new Date());
ele.setListProperty(Messages.getInstance().getString("RUNTIMEREPOTEST.LIST_ELEMENT_KEY"), myList); //$NON-NLS-1$
} finally {
HibernateUtil.commitTransaction();
}
return ele;
}
private void checkValue(String expected, String value) {
assertEquals(Messages.getInstance().getErrorString("RUNTIMEREPOTEST.ERROR_0002_VALUEREADNOTWHATWASEXPECTED", //$NON-NLS-1$
expected, value), expected, value);
}
private void checkValue(BigDecimal expected, BigDecimal value) {
assertEquals(Messages.getInstance().getErrorString("RUNTIMEREPOTEST.ERROR_0002_VALUEREADNOTWHATWASEXPECTED", //$NON-NLS-1$
expected.toString(), value.toString()), expected, value);
}
@SuppressWarnings("unused")
private void readElementTest(String instanceId) {
HibernateUtil.beginTransaction();
IRuntimeRepository repo = new RuntimeRepository();
repo.setSession(getPentahoSession());
RuntimeElement re = (RuntimeElement) repo.loadElementById(instanceId, null);
checkValue(Messages.getInstance().getString("RUNTIMEREPOTEST.SALES_SOLUTION"), re.getSolutionId()); //$NON-NLS-1$
checkValue(longString.toString(), re.getStringProperty(Messages.getInstance().getString("RUNTIMEREPOTEST.LONG_STRING_KEY"))); //$NON-NLS-1$
checkValue(
Messages.getInstance().getString("RUNTIMEREPOTEST.SHORT_STRING_VALUE"), re.getStringProperty(Messages.getInstance().getString("RUNTIMEREPOTEST.SHORT_STRING_KEY"))); //$NON-NLS-1$ //$NON-NLS-2$
checkValue(bdProperty, re.getBigDecimalProperty(Messages.getInstance().getString("RUNTIMEREPOTEST.DECIMAL_KEY"))); //$NON-NLS-1$
String xml = re.toXML();
info(xml);
Set namesSet = re.getParameterNames();
Iterator it = namesSet.iterator();
String pName, pType;
while (it.hasNext()) {
pName = (String) it.next();
pType = re.getParameterType(pName);
info(Messages.getInstance().getString("RUNTIMEREPOTEST.DEBUG_NAME_TYPE", pName, pType)); //$NON-NLS-1$
}
}
public static Test suite() {
return new TestSuite(RuntimeRepositoryTest.class);
}
}