All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.jangaroo.exml.api.ExmlcException Maven / Gradle / Ivy

package net.jangaroo.exml.api;

import net.jangaroo.jooc.api.FilePosition;

import java.io.File;

/**
 * An exception that occurs while parsing EXML files.
 */
public final class ExmlcException extends RuntimeException implements FilePosition {
  private File file;
  private int line = 0;
  private int column = -1;

  public ExmlcException(String message) {
    super(message);
  }

  public ExmlcException(String message, int line) {
    this(message);
    this.line = line;
  }

  public ExmlcException(String message, int line, int column) {
    this(message, line);
    this.column = column;
  }

  public ExmlcException(String message, Throwable t) {
    super(message, t);
    if (t instanceof ExmlcException) {
      ExmlcException exmlcException = (ExmlcException) t;
      this.file = exmlcException.getFile();
      this.line = exmlcException.getLine();
      this.column = exmlcException.getColumn();
    }
  }

  public ExmlcException(String message, File file, Exception e) {
    this(message, e);
    this.file = file;
  }

  public void setFile(File file) {
    this.file = file;
  }

  public void setLine(int line) {
    this.line = line;
  }

  public void setColumn(int column) {
    this.column = column;
  }

  public File getFile() {
    return file;
  }

  @Override
  public String getFileName() {
    return file == null ? null : file.getAbsolutePath();
  }

  public int getLine() {
    return line;
  }

  public int getColumn() {
    return column;
  }

  @Override
  public String toString() {
    StringBuilder builder = new StringBuilder();
    if (file != null) {
      builder.append('[');
      builder.append(file);
      if (line > 0) {
        // Only show line number if the source is given. (They would be pretty useless otherwise.)
        builder.append(":");
        builder.append(line);
        if(column != -1) {
          builder.append(";");
          builder.append(column);
        }
      }

      builder.append("] ");
    }
    builder.append(super.toString());
    return builder.toString();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy