package org.ei.drishti.service.formSubmission;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import static java.text.MessageFormat.format;
@Component
public class ZiggyFileLoader {
private static Logger logger = LoggerFactory.getLogger(ZiggyFileLoader.class.toString());
private String jsDirectoryName;
private String formDirectoryName;
@Autowired
public ZiggyFileLoader(@Value("#{drishti['js.directory.name']}") String jsDirectoryName, @Value("#{drishti['form.directory.name']}") String formDirectoryName) {
this.jsDirectoryName = jsDirectoryName;
this.formDirectoryName = formDirectoryName;
}
public String getJSFiles() throws IOException, URISyntaxException {
File jsFolder = new File(this.getClass().getResource(jsDirectoryName).toURI());
File[] files = jsFolder.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.getName().endsWith(".js");
}
});
StringBuilder builder = new StringBuilder();
for (File file : files) {
builder.append(load(file));
}
return builder.toString();
}
public String loadAppData(String fileName) {
try {
File file = new File(this.getClass().getResource(formDirectoryName).getPath() + "/" + fileName);
return load(file);
} catch (IOException e) {
logger.error(format("Error while loading app data file: {0}, with exception: {1}", fileName, e));
}
return null;
}
public String load(File file) throws IOException {
FileInputStream inputStream = new FileInputStream(file);
return IOUtils.toString(inputStream, "UTF-8");
}
}