]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/data/DataPoint.java
Version 14, October 2012
[GpsPrune.git] / tim / prune / data / DataPoint.java
index bba7adc670f90078a8deb0a3280b6fa109ef8a39..34d7bd72055275f81339e1fe23c434d2008603c6 100644 (file)
@@ -17,7 +17,10 @@ public class DataPoint
        private Coordinate _latitude = null, _longitude = null;
        private Altitude _altitude;
        private Timestamp _timestamp = null;
+       /** Attached photo */
        private Photo _photo = null;
+       /** Attached audio clip */
+       private AudioClip _audio = null;
        private String _waypointName = null;
        private boolean _startOfSegment = false;
        private boolean _markedForDeletion = false;
@@ -35,6 +38,8 @@ public class DataPoint
                _fieldValues = inValueArray;
                // save list of fields
                _fieldList = inFieldList;
+               // Remove double quotes around values
+               removeQuotes(_fieldValues);
                // parse fields into objects
                parseFields(null, inAltFormat);
        }
@@ -161,7 +166,7 @@ public class DataPoint
                }
                else {
                        // use default altitude format from config
-                       parseFields(inField, Config.getConfigBoolean(Config.KEY_METRIC_UNITS)?Altitude.Format.METRES:Altitude.Format.FEET);
+                       parseFields(inField, Config.getUnitSet().getDefaultAltitudeFormat());
                }
        }
 
@@ -299,20 +304,51 @@ public class DataPoint
         * Set the photo for this data point
         * @param inPhoto Photo object
         */
-       public void setPhoto(Photo inPhoto)
-       {
+       public void setPhoto(Photo inPhoto) {
                _photo = inPhoto;
+               _modifyCount++;
        }
 
-
        /**
         * @return associated Photo object
         */
-       public Photo getPhoto()
-       {
+       public Photo getPhoto() {
                return _photo;
        }
 
+       /**
+        * Set the audio clip for this point
+        * @param inAudio audio object
+        */
+       public void setAudio(AudioClip inAudio) {
+               _audio = inAudio;
+               _modifyCount++;
+       }
+
+       /**
+        * @return associated audio object
+        */
+       public AudioClip getAudio() {
+               return _audio;
+       }
+
+       /**
+        * Attach the given media object according to type
+        * @param inMedia either a photo or an audio clip
+        */
+       public void attachMedia(MediaObject inMedia)
+       {
+               if (inMedia != null) {
+                       if (inMedia instanceof Photo) {
+                               setPhoto((Photo) inMedia);
+                               inMedia.setDataPoint(this);
+                       }
+                       else if (inMedia instanceof AudioClip) {
+                               setAudio((AudioClip) inMedia);
+                               inMedia.setDataPoint(this);
+                       }
+               }
+       }
 
        /**
         * @return true if the point is valid
@@ -322,6 +358,32 @@ public class DataPoint
                return _latitude.isValid() && _longitude.isValid();
        }
 
+       /**
+        * @return true if the point has either a photo or audio attached
+        */
+       public boolean hasMedia() {
+               return _photo != null || _audio != null;
+       }
+
+       /**
+        * @return name of attached photo and/or audio
+        */
+       public String getMediaName()
+       {
+               String mediaName = null;
+               if (_photo != null) mediaName = _photo.getName();
+               if (_audio != null)
+               {
+                       if (mediaName == null) {
+                               mediaName = _audio.getName();
+                       }
+                       else {
+                               mediaName = mediaName + ", " + _audio.getName();
+                       }
+               }
+               return mediaName;
+       }
+
        /**
         * Interpolate a set of points between this one and the given one
         * @param inEndPoint end point of interpolation
@@ -416,6 +478,41 @@ public class DataPoint
        }
 
 
+       /**
+        * Remove all single and double quotes surrounding each value
+        * @param inValues array of values
+        */
+       private static void removeQuotes(String[] inValues)
+       {
+               if (inValues == null) {return;}
+               for (int i=0; i<inValues.length; i++)
+               {
+                       inValues[i] = removeQuotes(inValues[i]);
+               }
+       }
+
+       /**
+        * Remove any single or double quotes surrounding a value
+        * @param inValue value to modify
+        * @return modified String
+        */
+       private static String removeQuotes(String inValue)
+       {
+               if (inValue == null) {return inValue;}
+               final int len = inValue.length();
+               if (len <= 1) {return inValue;}
+               // get the first and last characters
+               final char firstChar = inValue.charAt(0);
+               final char lastChar  = inValue.charAt(len-1);
+               if (firstChar == lastChar)
+               {
+                       if (firstChar == '\"' || firstChar == '\'') {
+                               return inValue.substring(1, len-1);
+                       }
+               }
+               return inValue;
+       }
+
        /**
         * Get string for debug
         * @see java.lang.Object#toString()