package tim.prune.load; import java.util.ArrayList; /** * General point data cacher */ public abstract class ContentCacher { /** Array to hold lines of file */ private String[] _contentArray = null; /** * @return Contents of the file as array of non-blank Strings */ public String[] getContents() { return _contentArray; } /** * Get the top section of the file for preview * @param inNumRows number of lines to extract * @param inMaxWidth max length of Strings (longer ones will be chopped) * @return String array containing non-blank lines from the file */ public String[] getSnippet(int inNumRows, int inMaxWidth) { final int MIN_SNIPPET_SIZE = 3; // Check size is within sensible limits int numToCopy = inNumRows; if (numToCopy > getNumLines()) numToCopy = getNumLines(); int size = numToCopy; if (size < MIN_SNIPPET_SIZE) size = MIN_SNIPPET_SIZE; String[] result = new String[size]; // Copy Strings across System.arraycopy(_contentArray, 0, result, 0, numToCopy); // Chop Strings to max width if necessary if (inMaxWidth > 10) { for (int i=0; i inMaxWidth) result[i] = result[i].trim(); if (result[i].length() > inMaxWidth) result[i] = result[i].substring(0, inMaxWidth); } } } return result; } /** * @return the number of non-blank lines in the file */ public int getNumLines() { return _contentArray.length; } /** * Clear the memory */ public void clear() { _contentArray = null; } /** * Populate the string array * @param inList list of lines */ protected void setContents(ArrayList inList) { // Convert into String array for keeps int numLines = inList.size(); _contentArray = new String[numLines]; for (int i=0; i