converterutil.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 1,045 行 · 第 1/3 页
JAVA
1,045 行
*/
public static Date convertToDate(String source) {
// the lexical form of the date is '-'? yyyy '-' mm '-' dd zzzzzz?
Calendar calendar = Calendar.getInstance();
SimpleDateFormat simpleDateFormat = null;
boolean bc = false;
if (source.startsWith("-")) {
source = source.substring(1);
bc = true;
}
if ((source != null) && (source.length() >= 10)) {
if (source.length() == 10) {
//i.e this stirng has only the compulsory part
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
} else {
String restpart = source.substring(10);
if (restpart.startsWith("Z")) {
// this is a gmt time zone value
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'Z'");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
} else if (restpart.startsWith("+") || restpart.startsWith("-")) {
// this is a specific time format string
simpleDateFormat = new SimpleDateFormat("yyyy-MM-ddz");
// have to add the GMT part to process the message
source = source.substring(0, 10) + "GMT" + restpart;
} else {
throw new RuntimeException("In valid string sufix");
}
}
} else {
throw new RuntimeException("In valid string to parse");
}
Date date;
try {
date = simpleDateFormat.parse(source);
if (bc) {
calendar.setTime(date);
calendar.set(Calendar.ERA, GregorianCalendar.BC);
date = calendar.getTime();
}
} catch (ParseException e) {
throw new RuntimeException("In valid string to parse");
}
return date;
}
public static Time convertToTime(String s) {
return new Time(s);
}
public static Token convertToToken(String s) {
return new Token(s);
}
public static NormalizedString convertToNormalizedString(String s) {
return new NormalizedString(s);
}
public static UnsignedLong convertToUnsignedLong(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new UnsignedLong(s);
}
public static UnsignedInt convertToUnsignedInt(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new UnsignedInt(s);
}
public static UnsignedShort convertToUnsignedShort(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new UnsignedShort(s);
}
public static UnsignedByte convertToUnsignedByte(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new UnsignedByte(s);
}
public static NonNegativeInteger convertToNonNegativeInteger(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new NonNegativeInteger(s);
}
public static NegativeInteger convertToNegativeInteger(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new NegativeInteger(s);
}
public static PositiveInteger convertToPositiveInteger(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new PositiveInteger(s);
}
public static NonPositiveInteger convertToNonPositiveInteger(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new NonPositiveInteger(s);
}
public static Name convertToName(String s) {
return new Name(s);
}
public static NCName convertToNCName(String s) {
return new NCName(s);
}
public static Id convertToID(String s) {
return new Id(s);
}
public static Id convertToId(String s) {
return convertToID(s);
}
public static Language convertToLanguage(String s) {
return new Language(s);
}
public static NMToken convertToNMTOKEN(String s) {
return new NMToken(s);
}
public static NMTokens convertToNMTOKENS(String s) {
return new NMTokens(s);
}
public static Notation convertToNOTATION(String s) {
return null; //todo Need to fix this
// return new Notation(s);
}
public static Entity convertToENTITY(String s) {
return new Entity(s);
}
public static Entities convertToENTITIES(String s) {
return new Entities(s);
}
public static IDRef convertToIDREF(String s) {
return new IDRef(s);
}
public static IDRefs convertToIDREFS(String s) {
return new IDRefs(s);
}
public static URI convertToURI(String s){
return convertToAnyURI(s);
}
public static URI convertToAnyURI(String s) {
try {
return new URI(s);
} catch (URI.MalformedURIException e) {
throw new ObjectConversionException(
ADBMessages.getMessage("converter.cannotParse", s), e);
}
}
public static BigInteger convertToInteger(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return new BigInteger(s);
}
public static BigInteger convertToBigInteger(String s) {
if (s.startsWith("+")) {
s = s.substring(1);
}
return convertToInteger(s);
}
public static byte convertToByte(String s) {
return Byte.parseByte(s);
}
/**
* Code from Axis1 code base Note - We only follow the convention in the latest schema spec
*
* @param source
* @return Returns Calendar.
*/
public static Calendar convertToDateTime(String source) {
// the lexical representation of the date time as follows
// '-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
SimpleDateFormat simpleDateFormat = null;
Date date = null;
Calendar calendar = Calendar.getInstance();
if (source.startsWith("-")) {
source = source.substring(1);
calendar.set(Calendar.ERA, GregorianCalendar.BC);
}
try {
if ((source != null) && (source.length() >= 19)) {
if (source.length() == 19) {
// i.e. this does not have any additional assume this time in current local
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
} else {
String rest = source.substring(19);
if (rest.startsWith(".")) {
// i.e this have the ('.'s+) part
if (rest.endsWith("Z")) {
// this is in gmt time zone
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
} else if ((rest.lastIndexOf("+") > 0) || (rest.lastIndexOf("-") > 0)) {
// this is given in a general time zione
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSz");
if (rest.lastIndexOf("+") > 0) {
source = source.substring(0, source.lastIndexOf("+")) + "GMT" +
rest.substring(rest.lastIndexOf("+"));
} else if (rest.lastIndexOf("-") > 0) {
source = source.substring(0, source.lastIndexOf("-")) + "GMT" +
rest.substring(rest.lastIndexOf("-"));
}
} else {
// i.e it does not have time zone
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS");
}
} else {
if (rest.startsWith("Z")) {
// this is in gmt time zone
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
} else if (rest.startsWith("+") || rest.startsWith("-")) {
// this is given in a general time zione
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
source = source.substring(0, 19) + "GMT" + rest;
} else {
throw new NumberFormatException("in valid time zone attribute");
}
}
}
date = simpleDateFormat.parse(source);
calendar.setTime(date);
} else {
throw new NumberFormatException("date string can not be less than 19 charactors");
}
} catch (ParseException e) {
throw new NumberFormatException(e.getMessage());
}
return calendar;
}
/**
* Code from Axis1 code base
*
* @param source
* @return Returns QName.
*/
public static QName convertToQName(String source, String nameSpaceuri) {
source = source.trim();
int colon = source.lastIndexOf(":");
//context.getNamespaceURI(source.substring(0, colon));
String localPart = colon < 0 ? source : source.substring(colon + 1);
String perfix = colon <= 0 ? "" : source.substring(0, colon);
return new QName(nameSpaceuri, localPart, perfix);
}
/* ################################################################# */
/* java Primitive types to Object conversion methods */
public static Object convertToObject(String i) {
return i;
}
public static Object convertToObject(boolean i) {
return Boolean.valueOf(i);
}
public static Object convertToObject(double i) {
return new Double(i);
}
public static Object convertToObject(byte i) {
return new Byte(i);
}
public static Object convertToObject(char i) {
return new Character(i);
}
public static Object convertToObject(short i) {
return new Short(i);
}
/* list to array conversion methods */
public static Object convertToArray(Class baseArrayClass, String[] valueArray) {
//create a list using the string array
List valuesList = new ArrayList(valueArray.length);
for (int i = 0; i < valueArray.length; i++) {
valuesList.add(valueArray[i]);
}
return convertToArray(baseArrayClass, valuesList);
}
/**
* @param baseArrayClass
* @param objectList -> for primitive type array conversion we assume the content to be
* strings!
* @return Returns Object.
*/
public static Object convertToArray(Class baseArrayClass, List objectList) {
int listSize = objectList.size();
Object returnArray = null;
if (int.class.equals(baseArrayClass)) {
int[] array = new int[listSize];
for (int i = 0; i < listSize; i++) {
Object o = objectList.get(i);
if (o != null) {
array[i] = Integer.parseInt(o.toString());
} else {
array[i] = Integer.MIN_VALUE;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?