/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2008 jOpenDocument, by ILM Informatique. All rights reserved. * * The contents of this file are subject to the terms of the GNU * General Public License Version 3 only ("GPL"). * You may not use this file except in compliance with the License. * You can obtain a copy of the License at http://www.gnu.org/licenses/gpl-3.0.html * See the License for the specific language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each file. * */ package org.jopendocument.io; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class ODTContentExtractor { private File file; private String text; public ODTContentExtractor(File f) { this.file = f; } public void load() throws IOException { ZipFile zFile = new ZipFile(this.file); ZipEntry e = zFile.getEntry("content.xml"); InputStream in = zFile.getInputStream(e); BufferedReader r = new BufferedReader(new InputStreamReader(in)); final char[] chars = new char[(int) e.getSize()]; r.read(chars); StringBuilder builder = new StringBuilder(); boolean add = false; final int length = chars.length; for (int i = 0; i < length; i++) { char c = chars[i]; if (c == '<') { add = false; } else if (c == '>') { add = true; } else if (add) { builder.append(c); } } in.close(); zFile.close(); this.text = builder.toString(); } /** * Checks if the file contains a word. This method is case insensitive. * * @param s * a word or text * @return true if the text if found */ public boolean containsIgnoreCase(String s) { String all = this.text.toLowerCase(); String string = s.toLowerCase(); return (all.indexOf(string) >= 0); } }