Java tutorial
/** * ------------------------------------------------------ * 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 }