package net.osmand.swing;
import java.awt.Rectangle;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.prefs.Preferences;
import net.osmand.data.preparation.MapZooms;
import net.osmand.osm.LatLon;
public class DataExtractionSettings {
private static DataExtractionSettings settings = null;
public static DataExtractionSettings getSettings(){
if(settings == null){
settings = new DataExtractionSettings();
}
return settings;
}
Preferences preferences = Preferences.userRoot();
public File getTilesDirectory(){
return new File(getDefaultWorkingDir(), "tiles");
}
public File getDefaultWorkingDir(){
String workingDir = preferences.get("working_dir", System.getProperty("user.home"));
if(workingDir.equals(System.getProperty("user.home"))){
workingDir += "/osmand";
new File(workingDir).mkdir();
}
return new File(workingDir);
}
public void saveDefaultWorkingDir(File path){
preferences.put("working_dir", path.getAbsolutePath());
}
public File[] getDefaultRoutingFile(){
String routingFile = preferences.get("routing_file", null);
if(routingFile == null){
return null;
}
String[] files = routingFile.split(",");
List<File> fs = new ArrayList<File>();
for(String f : files){
if(new File(f.trim()).exists()){
fs.add(new File(f.trim()));
}
}
return fs.toArray(new File[fs.size()]);
}
public String getDefaultRoutingFilePath(){
File[] file = getDefaultRoutingFile();
String path = "";
if (file != null) {
for (int i = 0; i < file.length; i++) {
if (i > 0) {
path += ", ";
}
path += file[i].getAbsolutePath();
}
}
return path;
}
public void setDefaultRoutingPath(String path){
preferences.put("routing_file", path);
}
public LatLon getDefaultLocation(){
double lat = preferences.getDouble("default_lat", 53.9);
double lon = preferences.getDouble("default_lon", 27.56);
return new LatLon(lat, lon);
}
public void saveDefaultLocation(double lat, double lon){
preferences.putDouble("default_lat", lat);
preferences.putDouble("default_lon", lon);
}
public MapZooms getMapZooms(){
String value = preferences.get("map_zooms", MapZooms.MAP_ZOOMS_DEFAULT);
return MapZooms.parseZooms(value);
}
public String getMapZoomsValue(){
return preferences.get("map_zooms", MapZooms.MAP_ZOOMS_DEFAULT);
}
public void setMapZooms(String zooms){
// check string
MapZooms.parseZooms(zooms);
preferences.put("map_zooms", zooms);
}
public String getMapRenderingTypesFile(){
return preferences.get("rendering_types_file", "");
}
public void setMapRenderingTypesFile(String fileName){
preferences.put("rendering_types_file", fileName);
}
public int getDefaultZoom(){
return preferences.getInt("default_zoom", 5);
}
public void saveDefaultZoom(int zoom){
preferences.putInt("default_zoom", zoom);
}
public boolean getLoadEntityInfo(){
return preferences.getBoolean("load_entity_info", true);
}
public void setLoadEntityInfo(boolean loadEntityInfo){
preferences.putBoolean("load_entity_info", loadEntityInfo);
}
public Rectangle getWindowBounds(){
Rectangle r = new Rectangle();
r.x = preferences.getInt("window_x", 0);
r.y = preferences.getInt("window_y", 0);
r.width = preferences.getInt("window_width", 800);
r.height = preferences.getInt("window_height", 600);
return r;
}
public void saveWindowBounds(Rectangle r) {
preferences.putInt("window_x", r.x);
preferences.putInt("window_y", r.y);
preferences.putInt("window_width", r.width);
preferences.putInt("window_height", r.height);
}
public boolean useInternetToLoadImages(){
return preferences.getBoolean("use_internet", true);
}
public void setUseInterentToLoadImages(boolean b){
preferences.putBoolean("use_internet", b);
}
public boolean isSupressWarningsForDuplicatedId(){
return preferences.getBoolean("supress_duplicated_id", true);
}
public void setSupressWarningsForDuplicatedId(boolean b){
preferences.putBoolean("supress_duplicated_id", b);
}
String[] SUFFIXES = new String[] {"av.", "avenue", "просп.", "пер.", "пр.","заул.", "проспект", "переул.", "бул.", "бульвар", "тракт"};
String[] DEFAUTL_SUFFIXES = new String[] {"str.", "street", "улица", "ул."};
public String[] getSuffixesToNormalizeStreets(){
String s = preferences.get("suffixes_normalize_streets", null);
if(s == null){
return SUFFIXES;
}
List<String> l = new ArrayList<String>();
int i = 0;
int nextI = 0;
while((nextI=s.indexOf(',',i)) >= 0){
String t = s.substring(i, nextI).trim();
if(t.length() > 0){
l.add(t);
}
i = nextI + 1;
}
return l.toArray(new String[l.size()]);
}
public String[] getDefaultSuffixesToNormalizeStreets(){
String s = preferences.get("default_suffixes_normalize_streets", null);
if(s == null){
return DEFAUTL_SUFFIXES;
}
List<String> l = new ArrayList<String>();
int i = 0;
int nextI = 0;
while((nextI=s.indexOf(',',i)) >= 0){
String t = s.substring(i, nextI).trim();
if(t.length() > 0){
l.add(t);
}
i = nextI + 1;
}
return l.toArray(new String[l.size()]);
}
public String getSuffixesToNormalizeStreetsString(){
String s = preferences.get("suffixes_normalize_streets", null);
if(s == null){
StringBuilder b = new StringBuilder();
for(String st : SUFFIXES){
b.append(st).append(", ");
}
return b.toString();
}
return s;
}
public String getDefaultSuffixesToNormalizeStreetsString(){
String s = preferences.get("default_suffixes_normalize_streets", null);
if(s == null){
StringBuilder b = new StringBuilder();
for(String st : DEFAUTL_SUFFIXES){
b.append(st).append(", ");
}
return b.toString();
}
return s;
}
public void setDefaultSuffixesToNormalizeStreets(String s){
preferences.put("default_suffixes_normalize_streets", s);
}
public void setSuffixesToNormalizeStreets(String s){
preferences.put("suffixes_normalize_streets", s);
}
}