Print

Print


Author: [log in to unmask]
Date: Tue Apr 14 18:59:28 2015
New Revision: 2699

Log:
Add copy constructor.

Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java	Tue Apr 14 18:59:28 2015
@@ -22,7 +22,7 @@
  *
  * @author <a href="mailto:[log in to unmask]">Jeremy McCormick</a>
  */
-@Table(names = { "conditions" })
+@Table(names = {"conditions"})
 @Converter(converter = ConditionsRecordConverter.class)
 public final class ConditionsRecord extends BaseConditionsObject {
 
@@ -33,106 +33,45 @@
     public static class ConditionsRecordCollection extends BaseConditionsObjectCollection<ConditionsRecord> {
 
         /**
-         * Sort using a comparator and leave the original collection unchanged.
-         *
-         * @param comparator the comparison to use for sorting
-         * @return the sorted collection
-         */
-        public final ConditionsRecordCollection sorted(final Comparator<ConditionsRecord> comparator) {
-            final List<ConditionsRecord> list = new ArrayList<ConditionsRecord>(this);
-            Collections.sort(list, comparator);
-            final ConditionsRecordCollection collection = new ConditionsRecordCollection();
-            collection.addAll(list);
-            return collection;
-        }
-
-        /**
-         * Sort and return collection by updated date.
-         *
-         * @return the sorted collection
-         */
-        public final ConditionsRecordCollection sortedByUpdated() {
-            return sorted(new UpdatedComparator());
-        }
-
-        /**
-         * Sort and return collection by creation date.
-         *
-         * @return the sorted collection
-         */
-        public final ConditionsRecordCollection sortedByCreated() {
-            return sorted(new CreatedComparator());
-        }
-
-        /**
-         * Sort and return by run start number.
-         *
-         * @return the sorted collection
-         */
-        public final ConditionsRecordCollection sortedByRunStart() {
-            return sorted(new RunStartComparator());
-        }
-
-        /**
-         * Sort and return by key (table name).
-         *
-         * @return the sorted collection
-         */
-        public final ConditionsRecordCollection sortedByKey() {
-            return sorted(new KeyComparator());
-        }
-
-        /**
-         * Sort the collection in place.
-         *
-         * @param comparator the comparison to use for sorting
-         */
-        public final void sort(final Comparator<ConditionsRecord> comparator) {
-            final List<ConditionsRecord> list = new ArrayList<ConditionsRecord>(this);
-            Collections.sort(list, comparator);
-            this.clear();
-            this.addAll(list);
-        }
-
-        /**
-         * Sort in place by updated date.
-         */
-        public final void sortByUpdated() {
-            this.sort(new UpdatedComparator());
-        }
-
-        /**
-         * Sort in place by creation date.
-         */
-        public final void sortByCreated() {
-            sort(new CreatedComparator());
-        }
-
-        /**
-         * Sort in place by run start.
-         */
-        public final void sortByRunStart() {
-            sort(new RunStartComparator());
-        }
-
-        /**
-         * Sort in place by key.
-         */
-        public final void sortByKey() {
-            sort(new KeyComparator());
-        }
-
-        /**
-         * Get the unique conditions keys from the records in this collection.
-         *
-         * @return the set of unique conditions keys
-         */
-        public final Set<String> getConditionsKeys() {
-            final Set<String> conditionsKeys = new HashSet<String>();
-            for (ConditionsRecord record : this) {
-                conditionsKeys.add(record.getName());
+         * Compare conditions records by creation date.
+         */
+        private static class CreatedComparator implements Comparator<ConditionsRecord> {
+            /**
+             * Compare the creation dates of two conditions records.
+             *
+             * @param c1 The first conditions record.
+             * @param c2 The second conditions record.
+             * @return -1, 0, or 1 if first date is less than, equal to, or greater than the second date.
+             */
+            @Override
+            public int compare(final ConditionsRecord c1, final ConditionsRecord c2) {
+                final Date date1 = c1.getCreated();
+                final Date date2 = c2.getCreated();
+                if (date1.before(date2)) {
+                    return -1;
+                } else if (date1.after(date2)) {
+                    return 1;
+                }
+                return 0;
             }
-            return conditionsKeys;
+        }
+
+        /**
+         * Compare conditions records by their key (table name).
+         */
+        private static class KeyComparator implements Comparator<ConditionsRecord> {
+            /**
+             * Compare the keys (names) of two conditions records.
+             *
+             * @param c1 The first conditions record.
+             * @param c2 The second conditions record.
+             * @return -1, 0, or 1 if first name is less than, equal to, or greater than the second (using alphabetic
+             *         comparison).
+             */
+            @Override
+            public int compare(final ConditionsRecord c1, final ConditionsRecord c2) {
+                return c1.getName().compareTo(c2.getName());
+            }
         }
 
         /**
@@ -141,6 +80,7 @@
         private static class RunStartComparator implements Comparator<ConditionsRecord> {
             /**
              * Compare the run start numbers of two conditions records.
+             *
              * @param c1 The first conditions record.
              * @param c2 The second conditions record.
              * @return -1, 0, or 1 if first run number is less than, equal to, or greater than the second.
@@ -162,6 +102,7 @@
         private static class UpdatedComparator implements Comparator<ConditionsRecord> {
             /**
              * Compare the updated dates of two conditions records.
+             *
              * @param c1 The first conditions record.
              * @param c2 The second conditions record.
              * @return -1, 0, or 1 if first date is less than, equal to, or greater than the second date.
@@ -180,44 +121,132 @@
         }
 
         /**
-         * Compare conditions records by creation date.
-         */
-        private static class CreatedComparator implements Comparator<ConditionsRecord> {
-            /**
-             * Compare the creation dates of two conditions records.
-             * @param c1 The first conditions record.
-             * @param c2 The second conditions record.
-             * @return -1, 0, or 1 if first date is less than, equal to, or greater than the second date.
-             */
-            @Override
-            public int compare(final ConditionsRecord c1, final ConditionsRecord c2) {
-                final Date date1 = c1.getCreated();
-                final Date date2 = c2.getCreated();
-                if (date1.before(date2)) {
-                    return -1;
-                } else if (date1.after(date2)) {
-                    return 1;
-                }
-                return 0;
+         * Get the unique conditions keys from the records in this collection.
+         *
+         * @return the set of unique conditions keys
+         */
+        public final Set<String> getConditionsKeys() {
+            final Set<String> conditionsKeys = new HashSet<String>();
+            for (final ConditionsRecord record : this) {
+                conditionsKeys.add(record.getName());
             }
-        }
-
-        /**
-         * Compare conditions records by their key (table name).
-         */
-        private static class KeyComparator implements Comparator<ConditionsRecord> {
-            /**
-             * Compare the keys (names) of two conditions records.
-             * @param c1 The first conditions record.
-             * @param c2 The second conditions record.
-             * @return -1, 0, or 1 if first name is less than, equal to, or greater than the second 
-             *         (using alphabetic comparison).
-             */
-            @Override
-            public int compare(final ConditionsRecord c1, final ConditionsRecord c2) {
-                return c1.getName().compareTo(c2.getName());
-            }
-        }
+            return conditionsKeys;
+        }
+
+        /**
+         * Sort the collection in place.
+         *
+         * @param comparator the comparison to use for sorting
+         */
+        @Override
+        public final void sort(final Comparator<ConditionsRecord> comparator) {
+            final List<ConditionsRecord> list = new ArrayList<ConditionsRecord>(this);
+            Collections.sort(list, comparator);
+            this.clear();
+            this.addAll(list);
+        }
+
+        /**
+         * Sort in place by creation date.
+         */
+        public final void sortByCreated() {
+            sort(new CreatedComparator());
+        }
+
+        /**
+         * Sort in place by key.
+         */
+        public final void sortByKey() {
+            sort(new KeyComparator());
+        }
+
+        /**
+         * Sort in place by run start.
+         */
+        public final void sortByRunStart() {
+            sort(new RunStartComparator());
+        }
+
+        /**
+         * Sort in place by updated date.
+         */
+        public final void sortByUpdated() {
+            this.sort(new UpdatedComparator());
+        }
+
+        /**
+         * Sort using a comparator and leave the original collection unchanged.
+         *
+         * @param comparator the comparison to use for sorting
+         * @return the sorted collection
+         */
+        @Override
+        public final ConditionsRecordCollection sorted(final Comparator<ConditionsRecord> comparator) {
+            final List<ConditionsRecord> list = new ArrayList<ConditionsRecord>(this);
+            Collections.sort(list, comparator);
+            final ConditionsRecordCollection collection = new ConditionsRecordCollection();
+            collection.addAll(list);
+            return collection;
+        }
+
+        /**
+         * Sort and return collection by creation date.
+         *
+         * @return the sorted collection
+         */
+        public final ConditionsRecordCollection sortedByCreated() {
+            return sorted(new CreatedComparator());
+        }
+
+        /**
+         * Sort and return by key (table name).
+         *
+         * @return the sorted collection
+         */
+        public final ConditionsRecordCollection sortedByKey() {
+            return sorted(new KeyComparator());
+        }
+
+        /**
+         * Sort and return by run start number.
+         *
+         * @return the sorted collection
+         */
+        public final ConditionsRecordCollection sortedByRunStart() {
+            return sorted(new RunStartComparator());
+        }
+
+        /**
+         * Sort and return collection by updated date.
+         *
+         * @return the sorted collection
+         */
+        public final ConditionsRecordCollection sortedByUpdated() {
+            return sorted(new UpdatedComparator());
+        }
+    }
+
+    /**
+     * Create a "blank" conditions record.
+     */
+    public ConditionsRecord() {
+    }
+
+    /**
+     * Copy constructor.
+     *
+     * @param record the <code>ConditionsRecord</code> to copy
+     */
+    public ConditionsRecord(final ConditionsRecord record) {
+        this.setFieldValue("collection_id", record.getCollectionId());
+        this.setFieldValue("run_start", record.getRunStart());
+        this.setFieldValue("run_end", record.getRunEnd());
+        this.setFieldValue("name", record.getName());
+        this.setFieldValue("table_name", record.getTableName());
+        this.setFieldValue("notes", record.getNotes());
+        this.setFieldValue("tag", record.getTag());
+        this.setFieldValue("created", record.getCreated());
+        this.setFieldValue("created_by", record.getCreatedBy());
     }
 
     /**
@@ -245,13 +274,109 @@
     }
 
     /**
-     * Create a "blank" conditions record.
-     */
-    public ConditionsRecord() {
+     * Get the collection ID, overriding this method from the parent class.
+     *
+     * @return the collection ID
+     */
+    @Field(names = {"collection_id"})
+    public int getCollectionId() {
+        return getFieldValue("collection_id");
+    }
+
+    /**
+     * Get the date this record was created.
+     *
+     * @return the date this record was created
+     */
+    @Field(names = {"created"})
+    public Date getCreated() {
+        return getFieldValue("created");
+    }
+
+    /**
+     * Get the name of the user who created this record.
+     *
+     * @return the name of the person who created the record
+     */
+    @Field(names = {"created_by"})
+    public String getCreatedBy() {
+        return getFieldValue("created_by");
+    }
+
+    /**
+     * Get the name of these conditions. This is called the "key" in the table meta data to distinguish it from
+     * "table name" but it is usually the same value.
+     *
+     * @return the name of the conditions
+     */
+    @Field(names = {"name"})
+    public String getName() {
+        return getFieldValue("name");
+    }
+
+    /**
+     * Get the notes.
+     *
+     * @return the notes about this condition
+     */
+    @Field(names = {"notes"})
+    public String getNotes() {
+        return getFieldValue("notes");
+    }
+
+    /**
+     * Get the ending run number.
+     *
+     * @return the ending run number
+     */
+    @Field(names = {"run_end"})
+    public int getRunEnd() {
+        return getFieldValue("run_end");
+    }
+
+    /**
+     * Get the starting run number.
+     *
+     * @return the starting run number
+     */
+    @Field(names = {"run_start"})
+    public int getRunStart() {
+        return getFieldValue("run_start");
+    }
+
+    /**
+     * Get the name of the table containing the actual raw conditions data.
+     *
+     * @return the name of the table with the conditions data
+     */
+    @Field(names = {"table_name"})
+    public String getTableName() {
+        return getFieldValue("table_name");
+    }
+
+    /**
+     * Get the string tag associated with these conditions.
+     *
+     * @return The string tag.
+     */
+    @Field(names = {"tag"})
+    public String getTag() {
+        return getFieldValue("tag");
+    }
+
+    /**
+     * Get the date this record was last updated.
+     *
+     * @return the date this record was updated
+     */
+    @Field(names = {"updated"})
+    public Date getUpdated() {
+        return getFieldValue("updated");
     }
 
     /**
      * Insert the conditions record into the database.
+     *
      * @throws ConditionsObjectException if there are errors inserting the record
      */
     public void insert() throws ConditionsObjectException {
@@ -273,111 +398,11 @@
     }
 
     /**
-     * Get the starting run number.
-     *
-     * @return the starting run number
-     */
-    @Field(names = { "run_start" })
-    public int getRunStart() {
-        return getFieldValue("run_start");
-    }
-
-    /**
-     * Get the ending run number.
-     *
-     * @return the ending run number
-     */
-    @Field(names = { "run_end" })
-    public int getRunEnd() {
-        return getFieldValue("run_end");
-    }
-
-    /**
-     * Get the date this record was last updated.
-     *
-     * @return the date this record was updated
-     */
-    @Field(names = { "updated" })
-    public Date getUpdated() {
-        return getFieldValue("updated");
-    }
-
-    /**
-     * Get the date this record was created.
-     *
-     * @return the date this record was created
-     */
-    @Field(names = { "created" })
-    public Date getCreated() {
-        return getFieldValue("created");
-    }
-
-    /**
-     * Get the name of the user who created this record.
-     *
-     * @return the name of the person who created the record
-     */
-    @Field(names = { "created_by" })
-    public String getCreatedBy() {
-        return getFieldValue("created_by");
-    }
-
-    /**
-     * Get the notes.
-     *
-     * @return the notes about this condition
-     */
-    @Field(names = { "notes" })
-    public String getNotes() {
-        return getFieldValue("notes");
-    }
-
-    /**
-     * Get the name of these conditions.  This is called the "key" in the table
-     * meta data to distinguish it from "table name" but it is usually the same value.
-     *
-     * @return the name of the conditions
-     */
-    @Field(names = { "name" })
-    public String getName() {
-        return getFieldValue("name");
-    }
-
-    /**
-     * Get the name of the table containing the actual raw conditions data.
-     *
-     * @return the name of the table with the conditions data
-     */
-    @Field(names = { "table_name" })
-    public String getTableName() {
-        return getFieldValue("table_name");
-    }
-
-    /**
-     * Get the collection ID, overriding this method from the parent class.
-     *
-     * @return the collection ID
-     */
-    @Field(names = { "collection_id" })
-    public int getCollectionId() {
-        return getFieldValue("collection_id");
-    }
-
-    /**
-     * Get the string tag associated with these conditions.
-     *
-     * @return The string tag.
-     */
-    @Field(names = { "tag" })
-    public String getTag() {
-        return getFieldValue("tag");
-    }
-
-    /**
      * Convert this record to a human readable string, one field per line.
      *
      * @return this object represented as a string
      */
+    @Override
     public String toString() {
         final StringBuffer sb = new StringBuffer();
         sb.append("id: " + getRowId() + '\n');