jimu-decompiled/sources/com/thoughtworks/xstream/converters/extended/SqlTimestampConverter.java
2025-05-13 19:24:51 +02:00

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);
}
}