package br.ufrgs.inf.dsmoura.repository.controller.util;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Locale;
import java.util.Random;
import br.ufrgs.inf.dsmoura.repository.model.entity.ApplicationSubdomain;
import br.ufrgs.inf.dsmoura.repository.model.entity.AssetType;
import br.ufrgs.inf.dsmoura.repository.model.entity.ProgrammingLanguageDTO;
import br.ufrgs.inf.dsmoura.repository.model.entity.SoftwareLicenseDTO;
public class FieldsUtil {
private static final int LENGHT_NORMALIZED = 30;
public static String normalize(String str) {
return normalize(str, LENGHT_NORMALIZED);
}
public static String normalize(String str, int lenght) {
if (str == null) {
return str;
}
if (str.length() > lenght) {
return str.substring(0,lenght-3) + " ...";
}
return str;
}
public static String normalizeAverageScore(float averageScore) {
NumberFormat nFBR = NumberFormat.getInstance();
nFBR.setMaximumFractionDigits(2);
return nFBR.format( Math.floor(averageScore * 20) ); /* transform to percentage */
}
public static String getStrDate(Calendar calendar) {
if (calendar != null) {
DateFormat df1 = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("PT", "BR"));
return df1.format(calendar.getTime());
}
return "-";
}
public static String getRandomCode() {
int positiveCode = new Random().nextInt();
if (positiveCode < 0) {
positiveCode = -positiveCode;
}
return Integer.toHexString(positiveCode).toUpperCase();
}
public static String getPositiveHexHashCode(String s) {
int positiveCode = s.hashCode();
if (positiveCode < 0) {
positiveCode = -positiveCode;
}
return Integer.toHexString(positiveCode).toUpperCase();
}
public static Boolean isValidType(AssetType assetType) {
return assetType != null &&
assetType.getName() != null &&
assetType.getName().trim().length() > 0;
}
public static Boolean isValidSoftwareLicense(SoftwareLicenseDTO softwareLicenseDTO) {
return softwareLicenseDTO != null &&
softwareLicenseDTO.getName() != null &&
softwareLicenseDTO.getName().trim().length() > 0;
}
public static Boolean isValidProgrammingLanguage(ProgrammingLanguageDTO programmingLanguageDTO) {
return programmingLanguageDTO != null &&
programmingLanguageDTO.getName() != null &&
programmingLanguageDTO.getName().trim().length() > 0;
}
public static Boolean isValidApplicationSubdomain(ApplicationSubdomain applicationSubdomainDTO) {
return applicationSubdomainDTO != null &&
applicationSubdomainDTO.getName() != null &&
applicationSubdomainDTO.getName().trim().length() > 0;
}
public static Collection<String> extractUsernames(String usernamesCommaSeparated) {
Collection<String> list = new LinkedHashSet<String>();
if (usernamesCommaSeparated == null) {
return list;
}
while (usernamesCommaSeparated.contains(",")) {
int nextIndex = usernamesCommaSeparated.indexOf(",");
String next = usernamesCommaSeparated.substring(0, nextIndex);
list.add(next.trim());
usernamesCommaSeparated = usernamesCommaSeparated.substring(nextIndex+1);
}
if (usernamesCommaSeparated.length() > 0) {
list.add(usernamesCommaSeparated.trim());
}
return list;
}
}