Add jackson library

master
saad.siddiq 2025-06-03 18:00:14 +05:00
parent ee78008de1
commit bbda49daaf
5 changed files with 123 additions and 0 deletions

View File

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

View File

@ -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;

View File

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

View File

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

View File

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