package eu.svjatoslav.meviz.texttruncate;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-
import eu.svjatoslav.commons.file.FilePathParser;
import eu.svjatoslav.commons.string.String2;
import eu.svjatoslav.commons.string.WildCardMatcher;
import eu.svjatoslav.meviz.Module;
+import java.io.*;
+
public class Main implements Module {
- public static final int targetLineLength = 200;
+ public static final int targetLineLength = 200;
- public static final int maxSplittedLines = 3;
+ public static final int maxSplittedLines = 3;
- public static final String splitLinePrefix = " ";
+ public static final String splitLinePrefix = " ";
- CommandlineHandler commandlineHandler = new CommandlineHandler();
+ CommandlineHandler commandlineHandler = new CommandlineHandler();
- TextTruncatingOptions options;
+ TextTruncatingOptions options;
- public boolean fileMatchesInputPattern(final File file) {
- final String fileName = file.getName().toLowerCase();
+ public boolean fileMatchesInputPattern(final File file) {
+ final String fileName = file.getName().toLowerCase();
- for (final String inputPattern : options.inputPatterns)
- if (WildCardMatcher.match(fileName, inputPattern.toLowerCase()))
- return true;
+ for (final String inputPattern : options.inputPatterns)
+ if (WildCardMatcher.match(fileName, inputPattern.toLowerCase()))
+ return true;
- return false;
- }
+ return false;
+ }
- @Override
- public String getDescription() {
- return "Truncate text with long lines into multiple shorter lines.";
- }
+ @Override
+ public String getDescription() {
+ return "Truncate text with long lines into multiple shorter lines.";
+ }
- @Override
- public String getModuleCommand() {
- return "trunctext";
- }
+ @Override
+ public String getModuleCommand() {
+ return "trunctext";
+ }
- private File getTargetFile(final File sourceFile) {
- final StringBuffer targetFilePath = new StringBuffer();
- targetFilePath.append(sourceFile.getParent());
- targetFilePath.append("/");
- targetFilePath.append(FilePathParser
- .getFileNameWithoutExtension(sourceFile));
+ private File getTargetFile(final File sourceFile) {
+ final StringBuilder targetFilePath = new StringBuilder();
+ targetFilePath.append(sourceFile.getParent());
+ targetFilePath.append("/");
+ targetFilePath.append(FilePathParser
+ .getFileNameWithoutExtension(sourceFile));
- targetFilePath.append(".truncated");
+ targetFilePath.append(".truncated");
- // add file extension
- {
- final String fileExtension = FilePathParser
- .getFileExtension(sourceFile);
+ // add file extension
+ {
+ final String fileExtension = FilePathParser
+ .getFileExtension(sourceFile);
- if (fileExtension.length() > 0)
- targetFilePath.append("." + fileExtension);
- }
- return new File(targetFilePath.toString());
- }
+ if (fileExtension.length() > 0)
+ targetFilePath.append("." + fileExtension);
+ }
+ return new File(targetFilePath.toString());
+ }
- public void processDirectory(final File directory) {
+ public void processDirectory(final File directory) {
- for (final File subFile : directory.listFiles())
- if (subFile.isDirectory()) {
- if (options.recursive)
- processDirectory(subFile);
- } else if (fileMatchesInputPattern(subFile))
- try {
- processFile(subFile);
- } catch (final IOException exception) {
- System.out.println("Error processing file: "
- + subFile.getAbsolutePath());
- System.out.println(" exception: "
- + exception.getMessage());
- }
+ for (final File subFile : directory.listFiles())
+ if (subFile.isDirectory()) {
+ if (options.recursive)
+ processDirectory(subFile);
+ } else if (fileMatchesInputPattern(subFile))
+ try {
+ processFile(subFile);
+ } catch (final IOException exception) {
+ System.out.println("Error processing file: "
+ + subFile.getAbsolutePath());
+ System.out.println(" exception: "
+ + exception.getMessage());
+ }
- }
+ }
- public void processFile(final File file) throws IOException {
- final File targetFile = getTargetFile(file);
+ public void processFile(final File file) throws IOException {
+ final File targetFile = getTargetFile(file);
- final BufferedReader bufferedReader = new BufferedReader(
- new FileReader(file));
+ final BufferedReader bufferedReader = new BufferedReader(
+ new FileReader(file));
- final BufferedWriter bufferedWriter = new BufferedWriter(
- new FileWriter(targetFile));
+ final BufferedWriter bufferedWriter = new BufferedWriter(
+ new FileWriter(targetFile));
- while (true) {
- final String readLine = bufferedReader.readLine();
- if (readLine == null)
- break;
+ while (true) {
+ final String readLine = bufferedReader.readLine();
+ if (readLine == null)
+ break;
- if (readLine.length() <= targetLineLength)
- bufferedWriter.write(readLine + "\n");
- else {
+ if (readLine.length() <= targetLineLength)
+ bufferedWriter.write(readLine + "\n");
+ else {
- final String2 cuttableString = new String2(readLine);
+ final String2 cuttableString = new String2(readLine);
- bufferedWriter.write(cuttableString.cutLeft(targetLineLength)
- + "\n");
+ bufferedWriter.write(cuttableString.cutLeft(targetLineLength)
+ + "\n");
- int splittedLinesCount = 0;
+ int splittedLinesCount = 0;
- while (!cuttableString.isEmpty()) {
- splittedLinesCount++;
- if (splittedLinesCount >= maxSplittedLines)
- break;
+ while (!cuttableString.isEmpty()) {
+ splittedLinesCount++;
+ if (splittedLinesCount >= maxSplittedLines)
+ break;
- bufferedWriter.write(splitLinePrefix
- + cuttableString.cutLeft(targetLineLength
- - splitLinePrefix.length()) + "\n");
- }
- }
+ bufferedWriter.write(splitLinePrefix
+ + cuttableString.cutLeft(targetLineLength
+ - splitLinePrefix.length()) + "\n");
+ }
+ }
- }
+ }
- bufferedReader.close();
- bufferedWriter.close();
- }
+ bufferedReader.close();
+ bufferedWriter.close();
+ }
- @Override
- public void run(final String[] args) throws IOException {
+ @Override
+ public void run(final String[] args) throws IOException {
- options = commandlineHandler.parseCommandlineArguments(args);
+ options = commandlineHandler.parseCommandlineArguments(args);
- if (options == null) {
- showCommandlineHelp();
- return;
- }
+ if (options == null) {
+ showCommandlineHelp();
+ return;
+ }
- processDirectory(options.targetDirectory);
+ processDirectory(options.targetDirectory);
- }
+ }
- @Override
- public void showCommandlineHelp() {
- commandlineHandler.parser.showHelp();
- }
+ @Override
+ public void showCommandlineHelp() {
+ commandlineHandler.parser.showHelp();
+ }
}