package com.qxlva.nhs.service;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Properties;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
public class LastQueriedUpperDateStore
{
private static final Logger LOGGER = LoggerFactory.getLogger(LastQueriedUpperDateStore.class);
private static final String FILESTORE_NAME
= "last_queried_upper_date.properties";
private static final String PROPERTY_NAME
= "last.queried.upper.date";
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
private LocalDateTime lastQueriedUpperDate;
@PostConstruct
@SuppressWarnings("squid:S3457")
public void initProperties()
{
try (InputStream input
= LastQueriedUpperDateStore.
class.
getClassLoader().
getResourceAsStream(FILESTORE_NAME
))
{
if (input == null)
{
LOGGER.info("No last queried upper date store found");
lastQueriedUpperDate = null;
return;
}
properties.load(input);
String lastQueriedUpperDateAsString
= properties.
getProperty(PROPERTY_NAME
);
lastQueriedUpperDate = LocalDateTime.parse(lastQueriedUpperDateAsString, FORMATTER);
}
{
LOGGER.error("Error reading last queried upper date property from file", e);
}
}
public LocalDateTime getLastQueriedUpperDate()
{
return lastQueriedUpperDate;
}
public void setLastQueriedUpperDate(LocalDateTime lastQueriedUpperDate)
{
this.lastQueriedUpperDate = lastQueriedUpperDate;
saveToFile();
}
private void saveToFile()
{
if (lastQueriedUpperDate == null)
{
return;
}
{
String formattedDateTime
= lastQueriedUpperDate.
format(FORMATTER
); // "1986-04-08 12:30"
// set the properties value
properties.setProperty(PROPERTY_NAME, formattedDateTime);
// save properties to project root folder
properties.store(output, "The last queried upper date time for the GUID Extractor tool");
}
{
LOGGER.error("Failed to store last queried upper date property in file due to IO Exception", e);
}
}
}