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.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.util.FormattableFlags.ALTERNATE;
 import static java.util.FormattableFlags.LEFT_JUSTIFY;
 
 public class Cpf implements SerializableFormattableComparable<Cpf> {
 
 	private static final long serialVersionUID = 1L;
 
 	private final String value;
 
 	private Cpf(String value) {
 		this. = value;
 	}
 
 	public static Cpf of(String value) {
 		checkNotNull(value);
 		String digits = value.replaceAll("\\D""");
 		checkArgument(digits.matches("\\d{11}"));
 		checkArgument(!digits.matches("(\\d)\\1+"));
 		checkArgument(isValid(digits.substring(0, 10)));
 		return new Cpf(digits);
 	}
 
 	static boolean isValid(String digits) {
 		if (Long.parseLong(digits) % 10 == 0) {
 			return somaPonderada(digits) % 11 < 2;
 		}
 		else {
 			return somaPonderada(digits) % 11 == 0;
 		}
 	}
 
 	static int somaPonderada(String digits) {
 		char[] cs = digits.toCharArray();
 		int soma = 0;
 		for (int i = 0; i < cs.lengthi++) {
 			soma += Character.digit(cs[i], 10) * (cs.length - i);
 		}
 		return soma;
 	}
 
 	public boolean equals(Object obj) {
 		if (obj instanceof Cpf) {
 			Cpf other = (Cpfobj;
 			return Objects.equals(this.other.value);
 		}
 		return false;
 	}
 
 	public int hashCode() {
 		return Objects.hash(this.);
 	}
 
 	public String toString() {
 		return this.;
 	}
 
 	public void formatTo(Formatter formatterint flagsint widthint precision) {
 		StringBuilder sb = new StringBuilder();
 		boolean alternate = (flags & ) == ;
 		if (alternate) {
 			sb.append();
 		}
 		else {
			sb.append(String.format("%s.%s.%s-%s".substring(0, 3), .substring(3, 6),
		}
		int length = sb.length();
		if (length < width) {
			for (int i = 0; i < width - lengthi++) {
				if (alternate) {
					sb.insert(0, '0');
				}
				else {
					boolean leftJustified = (flags & ) == ;
					if (leftJustified) {
						sb.append(' ');
					}
					else {
						sb.insert(0, ' ');
					}
				}
			}
		}
		formatter.format(sb.toString());
	}
	public int compareTo(Cpf o) {
		return ComparisonChain.start().compare(this.o.value).result();
	}
New to GrepCode? Check out our FAQ X