package com.opendoorlogistics.core.distances.external;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.opendoorlogistics.api.geometry.LatLong;
import com.opendoorlogistics.core.distances.external.RoundingGrid.GridNeighboursResult;
import gnu.trove.impl.Constants;
import gnu.trove.list.array.TDoubleArrayList;
import gnu.trove.list.array.TIntArrayList;
import gnu.trove.map.hash.TObjectIntHashMap;
public class LoadedMatrixFile {
private final TObjectIntHashMap<LatLong> locationsToIndices = new TObjectIntHashMap<>(Constants.DEFAULT_CAPACITY, Constants.DEFAULT_LOAD_FACTOR, -1);
private final List<LatLong> locations = new ArrayList<>();
private final List<TDoubleArrayList> distancesKM = new ArrayList<>();
private final List<TDoubleArrayList> timeSeconds = new ArrayList<>();
private final File file;
private final FileVersionId fileVersionId;
public LoadedMatrixFile(File file) {
this.file = file;
fileVersionId = new FileVersionId(file);
}
public TObjectIntHashMap<LatLong> getLocationsToIndices() {
return locationsToIndices;
}
public List<LatLong> getLocations() {
return locations;
}
public List<TDoubleArrayList> getDistancesKM() {
return distancesKM;
}
public List<TDoubleArrayList> getTimeSeconds() {
return timeSeconds;
}
public enum ValueType{
SECONDS,
KM
}
public List<TDoubleArrayList> get(ValueType vt){
return vt == ValueType.SECONDS ? timeSeconds:distancesKM;
}
public double get(int row, int col, ValueType vt){
return get(vt).get(row).get(col);
}
public void set(int row, int col, ValueType vt, double value){
get(vt).get(row).set(col, value);
}
public File getFile() {
return file;
}
public FileVersionId getFileVersionId() {
return fileVersionId;
}
}