package mil.nga.giat.asam.model;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import mil.nga.giat.asam.R;
import mil.nga.giat.asam.model.SubregionBean.GeoPoint;
import mil.nga.giat.asam.util.AsamLog;
import android.content.Context;
public class SubregionTextParser {
public List<SubregionBean> parseSubregions(Context context) {
BufferedReader in = null;
List<SubregionBean> subregions = new ArrayList<SubregionBean>();
try {
in = new BufferedReader(new InputStreamReader(context.getResources().openRawResource(R.raw.subregions)));
String line = null;
int subregionId = -1;
List<SubregionBean.GeoPoint> geoPoints;
while ((line = in.readLine()) != null) {
String[] entries = line.split(",");
int tmpId = Integer.parseInt(entries[0]);
subregionId = tmpId;
geoPoints = new ArrayList<SubregionBean.GeoPoint>();
for (int i = 1; i < entries.length; i += 2) {
double latitude = Double.parseDouble(entries[i]);
double longitude = Double.parseDouble(entries[i + 1]);
latitude = (latitude < 0) ? Math.max(-90.0, latitude) : Math.min(90.0, latitude);
longitude = (longitude < 0) ? Math.max(-180.0, longitude) : Math.min(180.0, longitude);
geoPoints.add(GeoPoint.newInstance(latitude, longitude));
}
subregions.add(new SubregionBean(subregionId, geoPoints));
}
}
catch (Exception caught) {
caught.printStackTrace();
}
finally {
if (in != null) {
try {
in.close();
}
catch (Exception ignore) {}
}
}
AsamLog.v(SubregionTextParser.class.getName() + ":subregions size: " + subregions.size());
return subregions;
}
}