80 lines
3.4 KiB
Java
80 lines
3.4 KiB
Java
package com.thoughtworks.xstream.converters.extended;
|
|
|
|
import com.thoughtworks.xstream.converters.ConversionException;
|
|
import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter;
|
|
import com.thoughtworks.xstream.core.util.ThreadSafeSimpleDateFormat;
|
|
import java.sql.Timestamp;
|
|
import java.text.ParseException;
|
|
import java.util.TimeZone;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class SqlTimestampConverter extends AbstractSingleValueConverter {
|
|
static /* synthetic */ Class class$java$sql$Timestamp;
|
|
private final ThreadSafeSimpleDateFormat format;
|
|
|
|
public SqlTimestampConverter() {
|
|
this(TimeZone.getTimeZone("UTC"));
|
|
}
|
|
|
|
static /* synthetic */ Class class$(String str) {
|
|
try {
|
|
return Class.forName(str);
|
|
} catch (ClassNotFoundException e) {
|
|
throw new NoClassDefFoundError().initCause(e);
|
|
}
|
|
}
|
|
|
|
@Override // com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter, com.thoughtworks.xstream.converters.ConverterMatcher
|
|
public boolean canConvert(Class cls) {
|
|
Class cls2 = class$java$sql$Timestamp;
|
|
if (cls2 == null) {
|
|
cls2 = class$("java.sql.Timestamp");
|
|
class$java$sql$Timestamp = cls2;
|
|
}
|
|
return cls == cls2;
|
|
}
|
|
|
|
@Override // com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter, com.thoughtworks.xstream.converters.SingleValueConverter
|
|
public Object fromString(String str) {
|
|
int lastIndexOf = str.lastIndexOf(46);
|
|
if (lastIndexOf > 0 && (str.length() - lastIndexOf < 2 || str.length() - lastIndexOf > 10)) {
|
|
throw new ConversionException("Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]");
|
|
}
|
|
try {
|
|
Timestamp timestamp = new Timestamp(this.format.parse(lastIndexOf < 0 ? str : str.substring(0, lastIndexOf)).getTime());
|
|
if (lastIndexOf > 0) {
|
|
StringBuffer stringBuffer = new StringBuffer(str.substring(lastIndexOf + 1));
|
|
while (stringBuffer.length() != 9) {
|
|
stringBuffer.append('0');
|
|
}
|
|
timestamp.setNanos(Integer.parseInt(stringBuffer.toString()));
|
|
}
|
|
return timestamp;
|
|
} catch (NumberFormatException e) {
|
|
throw new ConversionException("Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]", e);
|
|
} catch (ParseException e2) {
|
|
throw new ConversionException("Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]", e2);
|
|
}
|
|
}
|
|
|
|
@Override // com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter, com.thoughtworks.xstream.converters.SingleValueConverter
|
|
public String toString(Object obj) {
|
|
Timestamp timestamp = (Timestamp) obj;
|
|
StringBuffer stringBuffer = new StringBuffer(this.format.format(timestamp));
|
|
if (timestamp.getNanos() != 0) {
|
|
stringBuffer.append('.');
|
|
String valueOf = String.valueOf(timestamp.getNanos() + 1000000000);
|
|
int i = 10;
|
|
while (i > 2 && valueOf.charAt(i - 1) == '0') {
|
|
i--;
|
|
}
|
|
stringBuffer.append(valueOf.subSequence(1, i));
|
|
}
|
|
return stringBuffer.toString();
|
|
}
|
|
|
|
public SqlTimestampConverter(TimeZone timeZone) {
|
|
this.format = new ThreadSafeSimpleDateFormat("yyyy-MM-dd HH:mm:ss", timeZone, 0, 5, false);
|
|
}
|
|
}
|