001    /**
002     * Copyright 2010 The Kuali Foundation Licensed under the
003     * Educational Community License, Version 2.0 (the "License"); you may
004     * not use this file except in compliance with the License. You may
005     * obtain a copy of the License at
006     *
007     * http://www.osedu.org/licenses/ECL-2.0
008     *
009     * Unless required by applicable law or agreed to in writing,
010     * software distributed under the License is distributed on an "AS IS"
011     * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
012     * or implied. See the License for the specific language governing
013     * permissions and limitations under the License.
014     */
015    
016    package org.kuali.rice.student;
017    
018    import java.io.BufferedReader;
019    import java.io.FileReader;
020    import java.util.List;
021    
022    import javax.xml.namespace.QName;
023    
024    import org.apache.commons.lang.StringUtils;
025    import org.kuali.rice.core.lifecycle.BaseLifecycle;
026    import org.kuali.rice.core.lifecycle.Lifecycle;
027    import org.kuali.rice.core.resourceloader.SpringResourceLoader;
028    import org.kuali.rice.kew.batch.KEWXmlDataLoader;
029    import org.kuali.rice.kew.exception.WorkflowRuntimeException;
030    import org.kuali.rice.kim.service.KIMServiceLocator;
031    import org.kuali.rice.test.BaselineTestCase;
032    import org.kuali.rice.test.SQLDataLoader;
033    
034    /**
035     * @author delyea
036     *
037     */
038    public class StudentStandaloneTestBase extends BaselineTestCase {
039    
040        private static final String MODULE_NAME = "standalone";
041    
042        public StudentStandaloneTestBase() {
043            super(MODULE_NAME);
044        }
045    
046        /* (non-Javadoc)
047         * @see org.kuali.rice.test.RiceTestCase#getLoadApplicationLifecycle()
048         */
049        @Override
050        protected Lifecycle getLoadApplicationLifecycle() {
051            SpringResourceLoader springResourceLoader = new SpringResourceLoader(new QName("StudentStandaloneTestResourceLoader"), "classpath:StandaloneTestSpringBeans.xml");
052            springResourceLoader.setParentSpringResourceLoader(getTestHarnessSpringResourceLoader());
053            return springResourceLoader;
054        }
055    
056            /**
057             * Override the standard per-test lifecycles to prepend ClearDatabaseLifecycle and ClearCacheLifecycle
058             * @see org.kuali.rice.test.RiceTestCase#getPerTestLifecycles()
059             */
060            @Override
061            protected List<Lifecycle> getPerTestLifecycles() {
062                    List<Lifecycle> lifecycles = super.getPerTestLifecycles();
063    //              lifecycles.add(new KEWXmlDataLoaderLifecycle("file:" + getBaseDir() + "/../src/main/config/workflowXml/searchAttributes.xml"));
064    //              lifecycles.add(new KEWXmlDataLoaderLifecycle("file:" + getBaseDir() + "/../src/main/config/workflowXml/documentType.xml"));
065                    lifecycles.add(new ClearCacheLifecycle());
066                    return lifecycles;
067            }
068            
069            public class ClearCacheLifecycle extends BaseLifecycle {
070                    public void stop() throws Exception {
071                            KIMServiceLocator.getIdentityManagementService().flushAllCaches();
072                            KIMServiceLocator.getRoleManagementService().flushRoleCaches();
073                            super.stop();
074                    }
075            }
076            
077            // below method to be removed when moving to Rice 1.0.1
078            @Override
079            protected void loadSuiteTestData() throws Exception {
080                    new SQLDataLoader(getKNSDefaultSuiteTestData(), "/").runSql();
081                    BufferedReader reader = null;
082                    try{
083                            reader = new BufferedReader(new FileReader(getKIMDataLoadOrderFile()));
084                            String line = null;
085                            while ((line = reader.readLine()) != null) {
086                                    if (!StringUtils.isBlank(line)) {
087                                            new SQLDataLoader(getKIMSqlFileBaseLocation() + "/" + line, "/").runSql();
088                                    }
089                            }
090                    }finally{
091                            if(reader!=null){
092                                    reader.close();
093                            }
094                    }
095                    
096                    new SQLDataLoader("file:" + getBaseDir() + "/src/main/config/sql/kim.sql", ";").runSql();
097            }
098            
099        protected String getKNSDefaultSuiteTestData() {
100            return "file:" + getBaseDir() + "/src/test/config/data/DefaultSuiteTestDataKNS.sql";
101        }
102    
103        protected String getKIMDataLoadOrderFile() {
104            return getBaseDir() + "/src/test/config/data/KIMDataLoadOrder.txt";
105        }
106    
107        protected String getKIMSqlFileBaseLocation() {
108            return "file:" + getBaseDir() + "/src/test/config/data";
109        }
110    
111            protected void loadXmlFile(String fileName) {
112                    try {
113                            KEWXmlDataLoader.loadXmlClassLoaderResource(getClass(), fileName);
114                    } catch (Exception e) {
115                            throw new WorkflowRuntimeException(e);
116                    }
117            }
118    
119            protected void loadXmlFileFromFileSystem(String fileName) {
120                    try {
121                            KEWXmlDataLoader.loadXmlFile(fileName);
122                    } catch (Exception e) {
123                            throw new WorkflowRuntimeException(e);
124                    }
125            }
126    
127    }