All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hcl.domino.jna.dbdirectory.JNADbDirectory Maven / Gradle / Ivy

The newest version!
/*
 * ==========================================================================
 * Copyright (C) 2019-2022 HCL America, Inc. ( http://www.hcl.com/ )
 *                            All rights reserved.
 * ==========================================================================
 * 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 .
 *
 * 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 com.hcl.domino.jna.dbdirectory;

import java.lang.ref.ReferenceQueue;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;

import com.hcl.domino.commons.gc.APIObjectAllocations;
import com.hcl.domino.commons.gc.IAPIObject;
import com.hcl.domino.commons.gc.IGCDominoClient;
import com.hcl.domino.dbdirectory.DbDirectory;
import com.hcl.domino.dbdirectory.DirEntry;
import com.hcl.domino.dbdirectory.DirectorySearchQuery;
import com.hcl.domino.dbdirectory.DirectorySearchQuery.SearchFlag;
import com.hcl.domino.dbdirectory.FileType;
import com.hcl.domino.jna.BaseJNAAPIObject;
import com.hcl.domino.jna.internal.gc.allocations.JNADbDirectoryAllocations;

/**
 * This class scans a local or remote Domino data directory for subdirectories or databases (and other files) of
 * various kinds.
 * 
 * @author Tammo Riedinger
 */
public class JNADbDirectory extends BaseJNAAPIObject implements DbDirectory {
	
	public JNADbDirectory(IAPIObject parent) {
		super(parent);
	}
	
	@SuppressWarnings("rawtypes")
	@Override
	protected JNADbDirectoryAllocations createAllocations(IGCDominoClient parentDominoClient,
			APIObjectAllocations parentAllocations, ReferenceQueue queue) {
		return new JNADbDirectoryAllocations(parentDominoClient, parentAllocations, this, queue);
	}
		
	
	@Override
	public List listFiles(String server) {
		return listFiles(server, ""); //$NON-NLS-1$
	}
	
	@Override
	public List listFiles(String server, String directory) {
		return listFiles(server, directory, null);
	}
	
	@Override
	public List listFiles(String server, String directory, String formula) {
		final ArrayList lookupResult = new ArrayList<>();
		
		DirectorySearchQuery query=query().withServer(server)
				.withDirectory(directory)
				.withFormula(formula)
				.withFlags(EnumSet.of(SearchFlag.FILETYPE, SearchFlag.SUMMARY))
				.withFileTypes(EnumSet.of(FileType.DIRS));
		
		query.forEach(0, -1, (entry, l) -> lookupResult.add(entry));
			
		return lookupResult;
	}
	
	@Override
	public DirectorySearchQuery query() {
		return new JNADirectorySearchQuery(getParentDominoClient());
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy