/** * Copyright 2010 JBoss Inc * * 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 org.drools.repository; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; public class ArchiveItemTest extends RepositoryTestCase { @Test public void testFindArchivedAssets() throws Exception { RulesRepository repo = RepositorySessionUtil.getRepository(); repo.loadDefaultPackage().addAsset( "testFindArchivedAssets1", "X" ); repo.loadDefaultPackage().addAsset( "testFindArchivedAssets2", "X" ); repo.loadDefaultPackage().addAsset( "testFindArchivedAssets3", "X" ); repo.loadDefaultPackage().addAsset( "testFindArchivedAssets4", "X" ); AssetItem item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets1" ); assertFalse( item.isArchived() ); item.archiveItem( true ); item.checkin( "archiving item 1" ); item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets1" ); assertTrue( item.isArchived() ); item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets2" ); assertFalse( item.isArchived() ); item.archiveItem( true ); item.checkin( "archiving item 1" ); item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets2" ); assertTrue( item.isArchived() ); item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets3" ); assertFalse( item.isArchived() ); item.archiveItem( true ); item.checkin( "archiving item 1" ); item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testFindArchivedAssets3" ); assertTrue( item.isArchived() ); } @Test public void testArchiveBooleanFlag() throws Exception { AssetItem item = RepositorySessionUtil.getRepository().loadDefaultPackage().addAsset( "testArchiveBooleanFlag", "yeah" ); assertFalse( item.isArchived() ); item.archiveItem( true ); assertFalse( item.getNode().hasProperty( AssetItem.CONTENT_PROPERTY_NAME ) ); assertTrue( item.getNode().hasProperty( AssetItem.CONTENT_PROPERTY_ARCHIVE_FLAG ) ); assertTrue( item.isArchived() ); item.checkin( "lalalala" ); } @Test public void testLoadArchivedAsset() throws Exception { AssetItem itemAdd = RepositorySessionUtil.getRepository().loadDefaultPackage().addAsset( "testArchiveBooleanFlag", "yeah" ); itemAdd.archiveItem( true ); AssetItem item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testArchiveBooleanFlag" ); System.out.println( item ); assertTrue( item.isArchived() ); } @Test public void testFindArchivedAssetsByCategory() { getRepo().loadCategory( "/" ).addCategory( "testFindRulesByCatArchive", "yeah" ); AssetItem as1 = getDefaultPackage().addAsset( "testFindRulesByCategoryArch", "ya", "testFindRulesByCatArchive", "drl" ); getDefaultPackage().addAsset( "testFindRulesByCategoryArch2", "ya", "testFindRulesByCatArchive", AssetItem.DEFAULT_CONTENT_FORMAT ).checkin( "version0" ); as1.archiveItem( true ); as1.checkin( "version0" ); assertEquals( "drl", as1.getFormat() ); List rules = getRepo().findAssetsByCategory( "testFindRulesByCatArchive", 0, -1 ).assets; assertEquals( 1, rules.size() ); List rules1 = getRepo().findAssetsByCategory( "testFindRulesByCatArchive", true, 0, -1 ).assets; assertEquals( 2, rules1.size() ); } List iteratorToList(Iterator it) { List list = new ArrayList(); while ( it.hasNext() ) { list.add( it.next() ); } return list; } @Test public void testLoadPackages() { RulesRepository repo = getRepo(); PackageItem item = repo.createPackage( "testListPackagesblah", "lalalala" ); assertNotNull( item.getCreator() ); assertFalse( item.getCreator().equals( "" ) ); List list = iteratorToList( repo.listPackages() ); int prevSize = list.size(); repo.createPackage( "testListPackages2blah", "abc" ); repo.loadPackage( "testListPackages2blah" ).archiveItem( true ); repo.createPackage( "testListPackages2blah1", "abc" ); repo.createPackage( "testListPackages2blah3", "abc" ); repo.createPackage( "testListPackages2blah7", "abc" ); PackageIterator localIterator = (PackageIterator) repo.listPackages(); list = iteratorToList( localIterator ); assertEquals( prevSize + 3, list.size() ); localIterator = (PackageIterator) repo.listPackages(); localIterator.setArchivedIterator( true ); list = iteratorToList( localIterator ); assertEquals( prevSize + 4, list.size() ); } @Test public void testFindRulesByNameArchived() throws Exception { RulesRepository repo = RepositorySessionUtil.getRepository(); repo.loadDefaultPackage().addAsset( "findRulesByNameArchived1", "X" ); repo.loadDefaultPackage().addAsset( "findRulesByNameArchived2", "X" ); repo.save(); AssetItem item2 = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "findRulesByNameArchived1" ); assertFalse( item2.isArchived() ); item2.archiveItem( true ); // not archived until repository isn't save. /* assertEquals( 1, repo.findAssetsByName( "findRulesByNameArchived1" ).getSize() );*/ List list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived1" ) ); assertEquals( 1, list.size() ); list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived1", true ) ); assertEquals( 1, list.size() ); list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived2" ) ); assertEquals( 1, list.size() ); list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived%" ) ); assertEquals( 2, list.size() ); repo.createPackageSnapshot( RulesRepository.DEFAULT_PACKAGE, "testFindRulesByName2" ); repo.save(); list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived2" ) ); AssetItem item = (AssetItem) list.get( 0 ); assertEquals( "findRulesByNameArchived2", item.getName() ); assertEquals( "X", item.getDescription() ); assertEquals( 1, list.size() ); list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived1", true ) ); assertEquals( 1, list.size() ); list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived1" ) ); assertEquals( 0, list.size() ); // return just the un-archived item list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived%" ) ); assertEquals( 1, list.size() ); // return all itens including archived list = iteratorToList( repo.findAssetsByName( "findRulesByNameArchived%", true ) ); assertEquals( 2, list.size() ); } @Test public void testlistbyformatArchived() { } }