Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/virtuosotechnologies/asaph/model/opsemantics/GetFieldAsStringArraySemantics.java


1   /*
2   ================================================================================
3   
4     FILE:  GetFieldAsStringArraySemantics.java
5     
6     PROJECT:
7     
8       Asaph
9     
10    CONTENTS:
11    
12      An OpSemantics that sets the data to the string array value of a field
13    
14    PROGRAMMERS:
15    
16      Daniel Azuma (DA)  <dazuma@kagi.com>
17    
18    COPYRIGHT:
19    
20      Copyright (C) 2003  Daniel Azuma  (dazuma@kagi.com)
21      
22      This program is free software; you can redistribute it and/or
23      modify it under the terms of the GNU General Public License as
24      published by the Free Software Foundation; either version 2
25      of the License, or (at your option) any later version.
26      
27      This program is distributed in the hope that it will be useful,
28      but WITHOUT ANY WARRANTY; without even the implied warranty of
29      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30      GNU General Public License for more details.
31      
32      You should have received a copy of the GNU General Public
33      License along with this program; if not, write to
34        Free Software Foundation, Inc.
35        59 Temple Place, Suite 330
36        Boston, MA 02111-1307 USA
37  
38  ================================================================================
39  */
40  
41  
42  package com.virtuosotechnologies.asaph.model.opsemantics;
43  
44  
45  import java.util.Iterator;
46  
47  import com.virtuosotechnologies.asaph.model.SongOperation;
48  import com.virtuosotechnologies.asaph.model.SongIDResultSet;
49  import com.virtuosotechnologies.asaph.model.Song;
50  import com.virtuosotechnologies.asaph.model.SongDatabaseFailedException;
51  
52  import com.virtuosotechnologies.asaph.modelutils.SongUtils;
53  
54  
55  /**
56   * An OpSemantics that sets the data to the value of a field.
57   * SongOperations that implement this interface guarantee that perform()
58   * sets the data field of each entry in the result set to the field value String[]
59   * of the corresponding Song as would be set by SongUtils.getFieldValueAsStringArray(),
60   * or to null if an error occurs.
61   */
62  public interface GetFieldAsStringArraySemantics
63  extends SongOperation
64  {
65    /**
66     * Get the name of the field that is being read.
67     *
68     * @return field name
69     */
70    public String getFieldName();
71    
72    
73    /**
74     * The default implementation of GetFieldStringSemantics
75     */
76    public static class DefaultImplementation
77    implements GetFieldAsStringArraySemantics
78    {
79      private String fieldName_;
80      private SongUtils songUtils_;
81      
82      
83      /**
84       * Constructor
85       *
86       * @param fieldName name of the field to query
87       * @param songUtils SongUtils api
88       */
89      public DefaultImplementation(
90        String fieldName,
91        SongUtils songUtils)
92      {
93        fieldName_ = fieldName;
94        songUtils_ = songUtils;
95      }
96      
97      
98      /**
99       * Get the name of the field that is being read.
100      *
101      * @return field name
102      */
103     public String getFieldName()
104     {
105       return fieldName_;
106     }
107     
108     
109     /**
110      * Performs the operation on the given result set.
111      *
112      * @param resultSet the SongIDResultSet
113      * @exception SongDatabaseFailedException Catch-all exception for database-related
114      *     problems. This will often have a cause exception, which may be exceptions
115      *     like IOException or SQLException.
116      */
117     public void perform(
118       SongIDResultSet resultSet)
119     throws
120       SongDatabaseFailedException
121     {
122       for (Iterator iter = resultSet.getEntryCollection().iterator(); iter.hasNext(); )
123       {
124         SongIDResultSet.Entry entry = (SongIDResultSet.Entry)iter.next();
125         Song song = entry.getSong();
126         if (song == null)
127         {
128           entry.setData(null);
129         }
130         else
131         {
132           entry.setData(songUtils_.getFieldValueAsStringArray(song, fieldName_));
133         }
134       }
135     }
136     
137     
138     /**
139      * The equals method should return true if the given object is a SongOperation
140      * with the same semantics as this one. (i.e. it would perform the same operation.)
141      * This may be used to optimize performance. It is always safe to return false from
142      * this method, if the semantics of the given object cannot be determined.
143      * (This is similar to the equals method in java.util.Comparator.)
144      * As a corollary, it is safe just to fall back on the default implementation
145      * inherited from java.lang.Object.
146      *
147      * @param obj object to test
148      * @return true if the object is equal
149      */
150     public boolean equals(
151       Object obj)
152     {
153       if (obj instanceof GetFieldAsStringArraySemantics)
154       {
155         return ((GetFieldAsStringArraySemantics)obj).getFieldName().equals(fieldName_);
156       }
157       return false;
158     }
159   }
160 }