package org.anodyneos.xp.util;
public class XpCoerce {
public static final Object coerceToObject(char x) { return new Character(x); }
public static final Object coerceToObject(byte x) { return new Byte(x); }
public static final Object coerceToObject(boolean x) { return new Boolean(x); }
public static final Object coerceToObject(int x) { return new Integer(x); }
public static final Object coerceToObject(long x) { return new Long(x); }
public static final Object coerceToObject(float x) { return new Float(x); }
public static final Object coerceToObject(double x) { return new Double(x); }
public static final Object coerceToObject(Object x) { return x; }
public static final String coerceToString(char x) { return String.valueOf(x); }
public static final String coerceToString(char[] x) { return String.valueOf(x); }
public static final String coerceToString(byte x) { return String.valueOf(x); }
public static final String coerceToString(byte[] x) { return new String(x); }
public static final String coerceToString(boolean x) { return String.valueOf(x); }
public static final String coerceToString(int x) { return String.valueOf(x); }
public static final String coerceToString(long x) { return String.valueOf(x); }
public static final String coerceToString(float x) { return String.valueOf(x); }
public static final String coerceToString(double x) { return String.valueOf(x); }
public static final String coerceToString(Object x) { if (null == x) return null; else return x.toString(); }
public static final boolean coerceToBooleanType(String x) {
return "true".equalsIgnoreCase(x);
}
public static final byte coerceToByteType(String x) {
if(null == x || x.length()==0) {
return (byte)0;
} else {
return Byte.parseByte(x);
}
}
public static final char coerceToCharType(String x) {
if(null == x || x.length()==0) {
return (char)0;
} else {
return x.charAt(0);
}
}
public static final double coerceToDoubleType(String x) {
if(null == x || x.length()==0) {
return 0.0;
} else {
return Double.parseDouble(x);
}
}
public static final int coerceToIntType(String x) {
if(null == x || x.length()==0) {
return 0;
} else {
return Integer.parseInt(x);
}
}
public static final float coerceToFloatType(String x) {
if(null == x || x.length()==0) {
return 0f;
} else {
return Float.parseFloat(x);
}
}
public static final long coerceToLongType(String x) {
if(null == x || x.length()==0) {
return 0L;
} else {
return Long.parseLong(x);
}
}
public static final short coerceToShortType(String x) {
if(null == x || x.length()==0) {
return (short)0;
} else {
return Short.parseShort(x);
}
}
public static final Boolean coerceToBoolean(String x) { return Boolean.valueOf(x); }
public static final Byte coerceToByte(String x) { return new Byte(coerceToByteType(x)); }
public static final Character coerceToCharacter(String x) { return new Character(coerceToCharType(x)); }
public static final Double coerceToDouble(String x) { return new Double(coerceToDoubleType(x)); }
public static final Integer coerceToInteger(String x) { return new Integer(coerceToIntType(x)); }
public static final Float coerceToFloat(String x) { return new Float(coerceToFloatType(x)); }
public static final Long coerceToLong(String x) { return new Long(coerceToLongType(x)); }
public static final Short coerceToShort(String x) { return new Short(coerceToShortType(x)); }
public static final char CR = '\r';
public static final char LF = '\n';
public static String normalizeCRLF(String inStr) {
// From XML 1.0, 2.11: To simplify the tasks of applications, the characters passed to
// an application by the XML processor must be as if the XML processor normalized all line
// breaks in external parsed entities (including the document entity) on input, before
// parsing, by translating both the two-character sequence #xD #xA and any #xD that is not
// followed by #xA to a single #xA character.
if(inStr == null) {
return null;
}
String retStr;
int firstCR = inStr.indexOf(CR);
// first, find a CR - if none exist, return inStr, else, generate new string
if (firstCR == -1) {
retStr = inStr;
} else {
StringBuffer sb = new StringBuffer(inStr.length());
boolean lastWasCR = false;
char current;
for (int i = 0; i < inStr.length(); i++) {
current = inStr.charAt(i);
if (lastWasCR && (current != LF)) {
sb.append(LF);
}
if (current == CR) {
lastWasCR = true;
} else {
lastWasCR = false;
sb.append(current);
}
}
if (lastWasCR) {
sb.append(LF);
}
retStr = sb.toString();
}
return retStr;
}
}