/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.core.index; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.designer.core.index.AbstractIndexSelector; import org.teiid.designer.core.index.Index; /** * @since 8.0 */ public class TargetLocationIndexSelector extends AbstractIndexSelector { public static final Index[] EMPTY_INDEX_ARRAY = new Index[0]; private final String indexLocation; private Index[] indexes; /** * @since 4.2 */ public TargetLocationIndexSelector( final String indexLocation ) { CoreArgCheck.isNotNull(indexLocation); this.indexLocation = indexLocation; } // ================================================================================== // I N T E R F A C E M E T H O D S // ================================================================================== /* (non-Javadoc) * @See org.teiid.designer.core.index.IndexSelector#getIndexes() */ @Override public Index[] getIndexes() throws IOException { if (this.indexes == null) { File indexDir = new File(indexLocation); FilenameFilter fileFilter = getIndexFileFilter(); File[] files = null; if (fileFilter != null) { files = indexDir.listFiles(fileFilter); } else { files = indexDir.listFiles(); } ArrayList tmp = new ArrayList(); for (int i = 0; i < files.length; i++) { final File indexFile = files[i]; if (IndexUtil.indexFileExists(indexFile)) { tmp.add(new Index(indexFile.getAbsolutePath(), true)); } } this.indexes = new Index[tmp.size()]; tmp.toArray(this.indexes); } return this.indexes; } // ================================================================================== // P U B L I C M E T H O D S // ================================================================================== @Override public String toString() { final StringBuffer sb = new StringBuffer(100); sb.append("TargetLocationIndexSelector ["); //$NON-NLS-1$ Index[] indexes = EMPTY_INDEX_ARRAY; try { indexes = getIndexes(); } catch (IOException e) { // do nothing } for (int i = 0; i < indexes.length; i++) { if (i > 0) { sb.append(", "); //$NON-NLS-1$ } sb.append(indexes[i].getIndexFile()); } sb.append("]"); //$NON-NLS-1$ return sb.toString(); } // ================================================================================== // P R O T E C T E D M E T H O D S // ================================================================================== protected void setIndexes( final Index[] indexes ) { this.indexes = indexes; } protected FilenameFilter getIndexFileFilter() { return null; } }