Add jackson library
parent
ee78008de1
commit
bbda49daaf
|
@ -0,0 +1,22 @@
|
|||
package com.utopiaindustries.hseobservationsapp.helper;
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class DateTimeUtils {
|
||||
|
||||
public static final String HTML5_DATETIME_INPUT_FORMAT_WITH_SECONDS = "yyyy-MM-dd'T'HH:mm:ss";
|
||||
|
||||
/**
|
||||
* format localdatetime into a given format string
|
||||
*/
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
public static String getFormattedDateTimeString(LocalDateTime dateTime, String dateTimeFormat ) {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( dateTimeFormat );
|
||||
return dateTime.format( formatter );
|
||||
}
|
||||
}
|
|
@ -1,5 +1,11 @@
|
|||
package com.utopiaindustries.hseobservationsapp.helper;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonNaming;
|
||||
import com.utopiaindustries.hseobservationsapp.utils.jackson.ZonedDateTimeDeserializer;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package com.utopiaindustries.hseobservationsapp.utils.jackson;
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
|
||||
import com.utopiaindustries.hseobservationsapp.helper.DateTimeUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class LocalDateTimeDeserializer extends StdDeserializer<LocalDateTime> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
public LocalDateTimeDeserializer() {
|
||||
super( LocalDateTime.class );
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
@Override
|
||||
public LocalDateTime deserialize( JsonParser parser, DeserializationContext ctxt ) throws IOException, JsonProcessingException {
|
||||
JsonNode node = parser.getCodec().readTree( parser );
|
||||
String dateStr = node.asText();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( DateTimeUtils.HTML5_DATETIME_INPUT_FORMAT_WITH_SECONDS );
|
||||
return LocalDateTime.parse( dateStr, formatter );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package com.utopiaindustries.hseobservationsapp.utils.jackson;
|
||||
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.databind.JsonSerializer;
|
||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||
import com.utopiaindustries.hseobservationsapp.helper.DateTimeUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
|
||||
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern( DateTimeUtils.HTML5_DATETIME_INPUT_FORMAT_WITH_SECONDS );
|
||||
|
||||
@Override
|
||||
public void serialize( LocalDateTime value, JsonGenerator gen, SerializerProvider serializers ) throws IOException {
|
||||
gen.writeString( value.format( FORMATTER ) );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package com.utopiaindustries.hseobservationsapp.utils.jackson;
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class ZonedDateTimeDeserializer extends StdDeserializer<ZonedDateTime> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
public ZonedDateTimeDeserializer() {
|
||||
super( LocalDateTime.class );
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
@Override
|
||||
public ZonedDateTime deserialize( JsonParser parser, DeserializationContext ctxt ) throws IOException, JsonProcessingException {
|
||||
JsonNode node = parser.getCodec().readTree( parser );
|
||||
String dateStr = node.asText();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
|
||||
return ZonedDateTime.parse( dateStr, formatter );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue