/* * 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.IOException; import java.util.ArrayList; import java.util.Collection; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.core.designer.util.CoreStringUtil; import org.teiid.core.designer.util.StringUtilities; import org.teiid.designer.core.index.BlocksIndexInput; import org.teiid.designer.core.index.Index; import org.teiid.designer.core.index.IndexInput; /** * IndexViewer * * @since 8.0 */ public class IndexViewer { private static final char[] FORMAT_CHARS = {'\n', '\r', '\t'}; /** * Returns the contents of the specified index file as a byte[]. Line separator characters are added after every WordEntry * found in the file. */ public static byte[] getByteContent( final File file ) throws IOException { CoreArgCheck.isNotNull(file); CoreArgCheck.isTrue(IndexUtil.isIndexFile(file), "File is not index file"); //$NON-NLS-1$ CoreArgCheck.isTrue(IndexUtil.indexFileExists(file.getAbsolutePath()), "Index File " + file.getAbsolutePath() + " does not exist"); //$NON-NLS-1$ //$NON-NLS-2$ String content = getStringContent(file); return (content != null ? content.getBytes() : new byte[0]); } /** * Returns the contents of the specified index file as a string. Line separator characters are added after every WordEntry * found in the file. */ public static String getStringContent( final File file ) throws IOException { CoreArgCheck.isNotNull(file); CoreArgCheck.isTrue(IndexUtil.isIndexFile(file), "File is not index file"); //$NON-NLS-1$ CoreArgCheck.isTrue(IndexUtil.indexFileExists(file.getAbsolutePath()), "Index File " + file.getAbsolutePath() + " does not exist"); //$NON-NLS-1$ //$NON-NLS-2$ IndexInput input = null; try { // Stringify the contents ... input = new BlocksIndexInput(file); input.open(); StringBuffer buffer = new StringBuffer(); while (input.hasMoreWords()) { final String word = String.valueOf(input.getCurrentWordEntry().getWord()); buffer.append(StringUtilities.removeChars(word, IndexViewer.FORMAT_CHARS)); buffer.append(CoreStringUtil.LINE_SEPARATOR); input.moveToNextWordEntry(); } return buffer.toString(); } catch (Throwable t) { return CoreStringUtil.getStackTrace(t); } finally { if (input != null) { input.close(); } } // return ObjectConverterUtil.convertFileToString(file); } /** * Returns the collection of {@link char[]} instances representing the contents of the specified index file. */ public static Collection getWords( final String filePath ) throws IOException { CoreArgCheck.isNotNull(filePath); CoreArgCheck.isTrue(IndexUtil.isIndexFile(filePath), "File is not index file"); //$NON-NLS-1$ CoreArgCheck.isTrue(IndexUtil.indexFileExists(filePath), "Index File " + filePath + " does not exist"); //$NON-NLS-1$ //$NON-NLS-2$ IndexInput input = null; try { // Stringify the contents ... input = new BlocksIndexInput(new File(filePath)); input.open(); Collection words = new ArrayList(); while (input.hasMoreWords()) { words.add(input.getCurrentWordEntry().getWord()); input.moveToNextWordEntry(); } return words; } finally { if (input != null) { input.close(); } } } /** * Returns the collection of {@link char[]} instances representing the contents of the specified index file. */ public static Collection getWords( final File file ) throws IOException { CoreArgCheck.isNotNull(file); CoreArgCheck.isTrue(IndexUtil.isIndexFile(file), "File is not index file"); //$NON-NLS-1$ CoreArgCheck.isTrue(IndexUtil.indexFileExists(file.getAbsolutePath()), "Index File " + file.getAbsolutePath() + " does not exist"); //$NON-NLS-1$ //$NON-NLS-2$ IndexInput input = null; try { // Stringify the contents ... input = new BlocksIndexInput(file); input.open(); Collection words = new ArrayList(); while (input.hasMoreWords()) { words.add(input.getCurrentWordEntry().getWord()); input.moveToNextWordEntry(); } return words; } finally { if (input != null) { input.close(); } } } /** * */ public static void clearIndexFileContents( final String filePath ) throws IOException { Index index = new Index(filePath, null, true); index.empty(); } /** * */ public static String getStringContent( final Index index ) throws IOException { CoreArgCheck.isNotNull(index); CoreArgCheck.isNotNull(index.getIndexFile()); CoreArgCheck.isTrue(IndexUtil.isIndexFile(index.getIndexFile()), "File is not index file"); //$NON-NLS-1$ CoreArgCheck.isTrue(IndexUtil.indexFileExists(index.getIndexFile().getAbsolutePath()), "Index File " + index.getIndexFile().getAbsolutePath() + " does not exist"); //$NON-NLS-1$ //$NON-NLS-2$ return getStringContent(index.getIndexFile()); } }