fields[f] = Field.TIMESTAMP;
continue;
}
+ // check for tracksegment
+ if (!checkArrayHasField(fields, Field.NEW_SEGMENT) && fieldLooksLikeSegment(value, isHeader))
+ {
+ fields[f] = Field.NEW_SEGMENT;
+ continue;
+ }
+ // check for waypoint type
+ if (!checkArrayHasField(fields, Field.WAYPT_TYPE) && fieldLooksLikeWaypointType(value, isHeader))
+ {
+ fields[f] = Field.WAYPT_TYPE;
+ continue;
+ }
}
}
// Fill in the rest of the fields using just custom fields
else if (!checkArrayHasField(fields, Field.LONGITUDE)) {
fields[1] = Field.LONGITUDE;
}
+ // Longitude _could_ have overwritten latitude in position 1
+ if (!checkArrayHasField(fields, Field.LATITUDE)) {
+ fields[0] = Field.LATITUDE;
+ }
return fields;
}
String upperValue = inValue.toUpperCase();
return (upperValue.equals("ALTITUDE")
|| upperValue.equals("ALT")
+ || upperValue.equals("HMSL") // height above mean sea level
|| upperValue.equals(I18nManager.getText("fieldname.altitude").toUpperCase()));
}
else
return stamp.isValid();
}
}
+
+ /**
+ * Check whether the given String looks like a track segment field
+ * @param inValue value from file
+ * @param inIsHeader true if this is a header line, false for data
+ * @return true if it could be a track segment
+ */
+ private static boolean fieldLooksLikeSegment(String inValue, boolean inIsHeader)
+ {
+ if (inValue == null || inValue.equals("")) {return false;}
+ if (inIsHeader)
+ {
+ String upperValue = inValue.toUpperCase();
+ // This is a header line so look for english or local text
+ return upperValue.equals("SEGMENT")
+ || upperValue.equals(I18nManager.getText("fieldname.newsegment").toUpperCase());
+ }
+ else
+ {
+ // can't reliably identify it just using the value
+ return false;
+ }
+ }
+
+ /**
+ * Check whether the given String looks like a waypoint type
+ * @param inValue value from file
+ * @param inIsHeader true if this is a header line, false for data
+ * @return true if it could be a waypoint type
+ */
+ private static boolean fieldLooksLikeWaypointType(String inValue, boolean inIsHeader)
+ {
+ if (inValue == null || inValue.equals("")) {return false;}
+ if (inIsHeader)
+ {
+ String upperValue = inValue.toUpperCase();
+ // This is a header line so look for english or local text
+ return (upperValue.equals("TYPE")
+ || upperValue.equals(I18nManager.getText("fieldname.waypointtype").toUpperCase()));
+ }
+ else
+ {
+ // can't reliably identify it just using the value
+ return false;
+ }
+ }
}