/* * 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 2006 - 2013 Pentaho Corporation. All rights reserved. */ package org.pentaho.test.platform.repository.runtime; 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; import java.io.File; 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 java.io.OutputStream; @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 = "src/test/resources/solution"; private static final String ALT_SOLUTION_PATH = "src/test/resources/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" ), //$NON-NLS-1$ Messages.getInstance().getString( "RUNTIMEREPOTEST.MODIFY_STRING_VALUE" ) ); //$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" ), //$NON-NLS-1$ caughtException ); 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" ), //$NON-NLS-1$ caughtException ); } 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" ), //$NON-NLS-1$ Messages.getInstance().getString( "RUNTIMEREPOTEST.MODIFY_STRING_VALUE" ) ); //$NON-NLS-1$ } 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" ), //$NON-NLS-1$ Messages.getInstance().getString( "RUNTIMEREPOTEST.CREATE_PARENT_TYPE" ), false ); //$NON-NLS-1$ 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 //$NON-NLS-1$ .getInstance().getString( "RUNTIMEREPOTEST.SHORT_STRING_VALUE" ) ); //$NON-NLS-1$ // Get a Long String to Store... ele.setStringProperty( Messages.getInstance().getString( "RUNTIMEREPOTEST.LONG_STRING_KEY" ), longString //$NON-NLS-1$ .toString() ); 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 //$NON-NLS-1$ .getInstance().getString( "RUNTIMEREPOTEST.SHORT_STRING_KEY" ) ) ); //$NON-NLS-1$ 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 ); } }