br.usp.poli.lta.cereda.macro.Application.java Source code

Java tutorial

Introduction

Here is the source code for br.usp.poli.lta.cereda.macro.Application.java

Source

/**
* ------------------------------------------------------
*    Laboratrio de Linguagens e Tcnicas Adaptativas
*       Escola Politcnica, Universidade So Paulo
* ------------------------------------------------------
* 
* This program is free software: you can redistribute it
* and/or modify  it under the  terms of the  GNU General
* Public  License  as  published by  the  Free  Software
* Foundation, either  version 3  of the License,  or (at
* your option) any later version.
* 
* This program is  distributed in the hope  that it will
* be useful, but WITHOUT  ANY WARRANTY; without even the
* implied warranty  of MERCHANTABILITY or FITNESS  FOR A
* PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
* 
**/
package br.usp.poli.lta.cereda.macro;

import br.usp.poli.lta.cereda.macro.model.Pair;
import br.usp.poli.lta.cereda.macro.ui.Editor;
import br.usp.poli.lta.cereda.macro.util.CLIParser;
import br.usp.poli.lta.cereda.macro.util.DisplayUtils;
import java.io.File;
import java.nio.charset.Charset;
import javax.swing.SwingUtilities;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;

/**
 * Classe principal do programa de linha de comando.
 * @author Paulo Roberto Massa Cereda
 * @version 1.0
 * @since 1.0
 */
public class Application {

    /**
     * Mtodo principal.
     * @param args Argumentos de linha de comando.
     */
    public static void main(String[] args) {

        // imprime banner
        System.out.println(StringUtils.repeat("-", 50));
        System.out.println(StringUtils.center("Expansor de macros", 50));
        System.out.println(StringUtils.repeat("-", 50));
        System.out.println(StringUtils.center("Laboratrio de linguagens e tcnicas adaptativas", 50));
        System.out.println(StringUtils.center("Escola Politcnica - Universidade de So Paulo", 50));
        System.out.println();

        try {

            // faz o parsing dos argumentos de linha de comando
            CLIParser parser = new CLIParser(args);
            Pair<String, File> pair = parser.parse();

            // se o par no  nulo,  possvel prosseguir com a expanso
            if (pair != null) {

                // obtm a expanso do texto fornecido na entrada
                String output = MacroExpander.parse(pair.getFirst());

                // se foi definido um arquivo de sada, grava a expanso do
                // texto nele, ou imprime o resultado no terminal, caso
                // contrrio
                if (pair.getSecond() != null) {
                    FileUtils.writeStringToFile(pair.getSecond(), output, Charset.forName("UTF-8"));
                    System.out.println("Arquivo gerado com sucesso.");
                } else {
                    System.out.println(output);
                }

            } else {

                // verifica se a execuo corresponde a uma chamada ao editor
                // embutido de macros
                if (parser.isEditor()) {

                    // cria o editor e exibe
                    SwingUtilities.invokeLater(new Runnable() {
                        @Override
                        public void run() {
                            DisplayUtils.init();
                            Editor editor = new Editor();
                            editor.setVisible(true);
                        }
                    });
                }
            }
        } catch (Exception exception) {

            // ocorreu uma exceo, imprime a mensagem de erro
            System.out.println(StringUtils.rightPad("ERRO: ", 50, "-"));
            System.out.println(WordUtils.wrap(exception.getMessage(), 50));
            System.out.println(StringUtils.repeat(".", 50));
        }
    }

    // that's all, folks

}