Hi,
I am trying to get a list of all archived packages from the Drools
repository but I can't seem to get packages that have been archived.
Below is the query I am using to get a list of archived packages:
RulesRepository repo = createRepository();
PackageItem item = repo.createPackage( "testPackage", "A test" );
item.archiveItem( true );
item.checkin( "Archive test" );
System.out.println( "Archived=" + repo.loadPackageByUUID( item.getUUID()
).isArchived());
String sql = "SELECT "
+ PackageItem.TITLE_PROPERTY_NAME + ", "
+ PackageItem.DESCRIPTION_PROPERTY_NAME + ", "
+ PackageItem.CONTENT_PROPERTY_ARCHIVE_FLAG;
sql += " FROM " + PackageItem.RULE_PACKAGE_TYPE_NAME;
sql += " WHERE ";
sql += " jcr:path LIKE '/"
+ RulesRepository.RULES_REPOSITORY_NAME + "/"
+ RulesRepository.RULE_PACKAGE_AREA + "/%'";
//sql += " AND " + PackageItem.CONTENT_PROPERTY_ARCHIVE_FLAG + " =
'true'";
Query q =
repo.getSession().getWorkspace().getQueryManager().createQuery( sql,
Query.SQL );
QueryResult res = q.execute();
Iterator<PackageItem> it = new PackageIterator( repo, res.getNodes() );
while( it.hasNext() )
{
PackageItem pi = it.next();
System.out.println( "***** item=" +pi.getUUID() + ", name="
+pi.getName() + ", isArchived=" + pi.isArchived() );
}
If I don't archive a package then the code returns my package. I know
that the package is archived because if I do
"loadPackageByUUID( uuid ).isArchived()" it return true.
Does anyone know what I am doing wrong here?
Thanks,
Len