package utils;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javafx.scene.image.ImageView;
import org.apache.log4j.Logger;
public class FileAppearanceManager {
private static FileAppearanceManager instance;
private final String PROPERTIES_FILE_PATH = "fileAppearance.properties";
private final String NORMAL_DESCRIPTOR = "normal";
private final String IGNORED_DESCRIPTOR = "ignored";
private final String NOTSYNCHRONIZED_DESCRIPTOR = "notSynchronized";
private final String DEFAULT = "default";
private List<String> fileExtensions;
private Map<String, String> normalPictures;
private Map<String, String> notSynchronizedPictures;
private Map<String, String> ignoredPictures;
private FileAppearanceManager() {
fileExtensions = new ArrayList<String>();
normalPictures = new HashMap<String, String>();
notSynchronizedPictures = new HashMap<String, String>();
ignoredPictures = new HashMap<String, String>();
try {
readPropertyFile();
} catch (IOException e) {
Logger.getLogger(getClass()).debug("Error: FileAppearanceConfiguration file not found.");
}
}
public ImageView getNormalPicture(String extension) {
return getPicture(normalPictures, extension);
}
public ImageView getNotSynchronizedPicture(String extension) {
return getPicture(notSynchronizedPictures, extension);
}
public ImageView getIgnoredPicture(String extension) {
return getPicture(ignoredPictures, extension);
}
private void readPropertyFile() throws FileNotFoundException, IOException {
Properties p = new Properties();
p.load(FileAppearanceManager.class.getResourceAsStream(PROPERTIES_FILE_PATH));
for (int i = 0; true; i++) {
String extension = p.getProperty(String.valueOf(i));
if (extension != null) {
fileExtensions.add(extension);
} else {
break;
}
}
for (int i = 0; i < fileExtensions.size(); i++) {
String pathToNormal = p.getProperty(String.valueOf(i) + NORMAL_DESCRIPTOR);
normalPictures.put(fileExtensions.get(i), pathToNormal);
String pathToIgnored = p.getProperty(String.valueOf(i) + IGNORED_DESCRIPTOR);
ignoredPictures.put(fileExtensions.get(i), pathToIgnored);
String pathToNotSynchronized = p.getProperty(String.valueOf(i) + NOTSYNCHRONIZED_DESCRIPTOR);
notSynchronizedPictures.put(fileExtensions.get(i), pathToNotSynchronized);
}
}
private ImageView getPicture(Map<String, String> map, String extension) {
String pathToImage = map.get(extension);
if (pathToImage != null) {
return new ImageView(pathToImage);
}
return new ImageView(map.get(DEFAULT));
}
public static FileAppearanceManager getInstance() {
if (instance == null) {
instance = new FileAppearanceManager();
}
return instance;
}
}