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

br.gov.frameworkdemoiselle.vaadin.util.TextUtil Maven / Gradle / Ivy

The newest version!
package br.gov.frameworkdemoiselle.vaadin.util;

public class TextUtil {

	public static String format(String texto, String formato, boolean direcao) {
		if (texto.length() > formato.length()) {
			throw new RuntimeException("Texto maior que o formato!");
		}
		String textoFormatado = "";
		int indiceFormato;
		int tamanho = texto.length() < formato.length() ? texto.length() : formato.length();
		if (direcao) {
			indiceFormato = 0;
			for (int indice = 0; indice < tamanho; indice++) {
				if (texto.charAt(indice) == formato.charAt(indiceFormato)) {
					textoFormatado = textoFormatado + texto.charAt(indice);
					indiceFormato++;
				} else if (formato.charAt(indiceFormato) == '9') {
					if ((texto.charAt(indice) >= '0' && texto.charAt(indice) <= '9')) {
						textoFormatado = textoFormatado + texto.charAt(indice);
						indiceFormato++;
					} else {
						throw new RuntimeException(
								"Texto não atende ao formato informado! Caracter literal quando deveria haver um numérico!");
					}
				} else if (formato.charAt(indiceFormato) == 'A') {
					if ((texto.charAt(indice) >= 'a' && texto.charAt(indice) <= 'z')
							|| (texto.charAt(indice) >= 'A' && texto.charAt(indice) <= 'Z')
							|| (texto.charAt(indice) >= '0' && texto.charAt(indice) <= '9')) {
						textoFormatado = textoFormatado + texto.charAt(indice);
						indiceFormato++;
					} else {
						throw new RuntimeException("Texto não atende ao formato informado! Caracter não alfanumérico!");
					}
				} else if (formato.charAt(indiceFormato) == 'D') {
					if ((texto.charAt(indice) == 'X') || (texto.charAt(indice) >= '0' && texto.charAt(indice) <= '9')) {
						textoFormatado = textoFormatado + texto.charAt(indice);
						indiceFormato++;
					} else {
						throw new RuntimeException(
								"Texto não atende ao formato informado! Caracter não atende à especificação de dígito verificador!");
					}
				} else if (formato.charAt(indiceFormato) == 'X') {
					textoFormatado = textoFormatado + texto.charAt(indice);
					indiceFormato++;
				} else {
					textoFormatado = textoFormatado + formato.charAt(indiceFormato);
					indiceFormato++;
					indice--;
				}
			}
		} else {
			indiceFormato = formato.length() - 1;
			for (int indice = texto.length() - 1; indice >= 0; indice--) {
				if (texto.charAt(indice) == formato.charAt(indiceFormato)) {
					textoFormatado = texto.charAt(indice) + textoFormatado;
					indiceFormato--;
				} else if (formato.charAt(indiceFormato) == '9') {
					if ((texto.charAt(indice) >= '0' && texto.charAt(indice) <= '9')) {
						textoFormatado = texto.charAt(indice) + textoFormatado;
						indiceFormato--;
					} else {
						throw new RuntimeException(
								"Texto não atende ao formato informado! Caracter literal quando deveria haver um numérico!");
					}
				} else if (formato.charAt(indiceFormato) == 'A') {
					if ((texto.charAt(indice) >= 'a' && texto.charAt(indice) <= 'z')
							|| (texto.charAt(indice) >= 'A' && texto.charAt(indice) <= 'Z')
							|| (texto.charAt(indice) >= '0' && texto.charAt(indice) <= '9')) {
						textoFormatado = texto.charAt(indice) + textoFormatado;
						indiceFormato--;
					} else {
						throw new RuntimeException("Texto não atende ao formato informado! Caracter não alfanumérico!");
					}
				} else if (formato.charAt(indiceFormato) == 'D') {
					if ((texto.charAt(indice) == 'X') || (texto.charAt(indice) >= '0' && texto.charAt(indice) <= '9')) {
						textoFormatado = texto.charAt(indice) + textoFormatado;
						indiceFormato--;
					} else {
						throw new RuntimeException(
								"Texto não atende ao formato informado! Caracter não atende à especificação de dígito verificador!");
					}
				} else if (formato.charAt(indiceFormato) == 'X') {
					textoFormatado = texto.charAt(indice) + textoFormatado;
					indiceFormato--;
				} else {
					textoFormatado = formato.charAt(indiceFormato) + textoFormatado;
					indiceFormato--;
					indice++;
				}
			}
		}
		return textoFormatado;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy