
// ReadParagraphs.java
// Andrew Davison, ad@coe.psu.ac.th, Nov. 2022

/* Print out the paragraphs found in the supplied Word file.
   Compare this to Extractor.java

  Usage:
    > compile ReadParagraphs.java
    > run ReadParagraphs <docx fnm>

    e.g.
    > run ReadParagraphs sample.docx
    but...
    > run ReadParagraphs file-sample.doc
    will trigger an exception since the file is DOC type

*/

import java.io.*;
import java.util.*;

import org.apache.poi.xwpf.usermodel.*;


public class ReadParagraphs
{

  public static void main(String[]  args)
  {
    if (args.length != 1) {
      System.out.println("Usage: run ReadParagraphs <docx fnm>");
      System.exit(0);
    }
    String fnm = args[0];

    if (!POIUtils.isWord(fnm)) {
      System.out.println(fnm + " is not a Word file");
      System.exit(1);
    }
    if (POIUtils.isOldWord(fnm))
      System.out.println(fnm + " is an old-style Word file");

    int numParas = 0;
    try (FileInputStream fis = new FileInputStream(fnm)) {
      System.out.println("Extracting paragraphs from " + fnm);
      XWPFDocument doc = new XWPFDocument(fis);
      List<XWPFParagraph> ps = doc.getParagraphs();
      for (XWPFParagraph para : ps) {
        String s = para.getText().trim();
        if ((s != null) && (!s.isEmpty())) {
          System.out.println("\"" + s +"\"\n");
          numParas++;
        }
      }
    }  
    catch(Exception e) 
    {  System.out.println(e); }

    System.out.println("------------------");
    System.out.println("No. of paragraphs extracted: " + numParas);
  } // end of main()

}  // end of ReadParagraphs class
