Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package me.yanaga.opes;
  
  /*
   * #%L
   * opes
   * %%
   * Copyright (C) 2015 Edson Yanaga
   * %%
   * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  * 
  *      http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * #L%
  */
 
 
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
 
 public class CpfCnpj implements SerializableFormattableComparable<CpfCnpj> {
 
 	private static final long serialVersionUID = 1L;
 
 	private final Optional<Cpfcpf;
 
 	private final Optional<Cnpjcnpj;
 
 	private CpfCnpj(Cpf cpf) {
 		this. = Optional.of(cpf);
 		this. = Optional.empty();
 	}
 
 	private CpfCnpj(Cnpj cnpj) {
 		this. = Optional.empty();
 		this. = Optional.of(cnpj);
 	}
 
 	public static CpfCnpj of(String value) {
 		checkNotNull(value);
 		String digits = value.replaceAll("\\D""");
 		if (digits.matches("\\d{11}")) {
 			return new CpfCnpj(Cpf.of(digits));
 		}
 		else if (digits.matches("\\d{14}")) {
 			return new CpfCnpj(Cnpj.of(digits));
 		}
 		throw new IllegalArgumentException(String.format("CPF/CNPJ inv\u00e1lido: %s."value));
 	}
 
 	public boolean equals(Object obj) {
 		if (obj instanceof CpfCnpj) {
 			CpfCnpj other = (CpfCnpjobj;
 			return Objects.equal(this.other.cpf) && Objects.equal(this.other.cnpj);
 		}
 		return false;
 	}
 
 	public int hashCode() {
 		return Objects.hashCode(this.this.);
 	}
 
 	public String toString() {
 		return .map(Cpf::toString).orElseGet(() -> .map(Cnpj::toString).get());
 	}
 
 	public void formatTo(Formatter formatterint flagsint widthint precision) {
 		.ifPresent(cpf -> cpf.formatTo(formatterflagswidthprecision));
 		.ifPresent(cnpj -> cnpj.formatTo(formatterflagswidthprecision));
 	}
 
 	public int compareTo(CpfCnpj o) {
 		return ComparisonChain.start()
 				.compare(this..orElse(null), o.cpf.orElse(null), Ordering.natural().nullsLast())
 				.compare(this..orElse(null), o.cnpj.orElse(null), Ordering.natural().nullsLast())
 				.result();
 	}
	public boolean isCpf() {
		return .isPresent();
	}
	public boolean isCnpj() {
		return .isPresent();
	}
	public Optional<CpfgetCpf() {
		return ;
	}
	public Optional<CnpjgetCnpj() {
		return ;
	}
		throw new InvalidObjectException("Proxy required");
	}
	private Object writeReplace() {
		return new SerializationProxy(this.toString());
	}
	private static class SerializationProxy implements Serializable {
		private final String value;
		private SerializationProxy(String value) {
			this. = value;
		}
		private Object readResolve() {
			return CpfCnpj.of();
		}
	}
New to GrepCode? Check out our FAQ X