D:\Sam\InterviewsMaterial\SiteWorx\SiteWorxTest\src\java\dataobjects\UserDigitsInputDAO.java
  1 /*
  2  * To change this template, choose Tools | Templates
  3  * and open the template in the editor.
  4  */
  5 package dataobjects;
  6 
  7 import java.util.ArrayList;
  8 import java.io.*;
  9 import java.util.*;
 10 import java.util.StringTokenizer;
 11 
 12 /**
 13  *
 14  * @author sameldin
 15  */
 16 import utils.*;
 17 import constants.*;
 18 import services.*;
 19 
 20 public class UserDigitsInputDAO 
 21 {
 22     private String      userFirstName                 = Constants.NO_VALUE_IN_STRING;
 23     private String      userLastName                  = Constants.NO_VALUE_IN_STRING;
 24     private String      userEmailAddress              = Constants.NO_VALUE_IN_STRING;
 25     private long        userID                        = Constants.NO_VALUE;
 26     private long        userStartingTimeStamp         = Constants.NO_VALUE;
 27     private String      stringOfDigits                = null;
 28     int      []         inputDigitsArray              = null;
 29     //================================================
 30     private int         totalCount                    = Constants.NO_VALUE;
 31     private long        sumValue                      = Constants.NO_VALUE;
 32     private double      averageValue                  = Constants.NO_VALUE;
 33     private double      medianValue                   = Constants.NO_VALUE;
 34     private int         highestValue                  = Constants.NO_VALUE;
 35     private int         lowestValue                   = Constants.NO_VALUE;
 36     
 37     
 38     public UserDigitsInputDAO()
 39     {
 40     }
 41     /**
 42      * @return the userFirstName
 43      */
 44     public String getUserFirstName() {
 45         return userFirstName;
 46     }
 47 
 48     /**
 49      * @param userFirstName the userFirstName to set
 50      */
 51     public void setUserFirstName(String userFirstName) {
 52         this.userFirstName = userFirstName;
 53     }
 54 
 55     /**
 56      * @return the userLastName
 57      */
 58     public String getUserLastName() {
 59         return userLastName;
 60     }
 61 
 62     /**
 63      * @param userLastName the userLastName to set
 64      */
 65     public void setUserLastName(String userLastName) {
 66         this.userLastName = userLastName;
 67     }
 68 
 69     /**
 70      * @return the userEmailAddress
 71      */
 72     public String getUserEmailAddress() {
 73         return userEmailAddress;
 74     }
 75 
 76     /**
 77      * @param userEmailAddress the userEmailAddress to set
 78      */
 79     public void setUserEmailAddress(String userEmailAddress) {
 80         this.userEmailAddress = userEmailAddress;
 81     }
 82 
 83     /**
 84      * @return the userID
 85      */
 86     public long getUserID() {
 87         return userID;
 88     }
 89 
 90     /**
 91      * @param userID the userID to set
 92      */
 93     public void setUserID(long userID) {
 94         this.userID = userID;
 95     }
 96 
 97     /**
 98      * @return the userStartingTimeStamp
 99      */
100     public long getUserStartingTimeStamp() {
101         return userStartingTimeStamp;
102     }
103 
104     /**
105      * @param userStartingTimeStamp the userStartingTimeStamp to set
106      */
107     public void setUserStartingTimeStamp(long userStartingTimeStamp) {
108         this.userStartingTimeStamp = userStartingTimeStamp;
109     }
110     /**
111      * @param toString for RanchersSignUpDataObject
112      */
113     public String toString() {
114                 return ("userFirstName                      "    + getUserFirstName()
115                                 + "userLastName             "    + getUserLastName()
116                                 + "userEmailAddress         "    + getUserEmailAddress()
117                                 + "user_ID                  "    + getUserID()
118                                 + "userStartingTimeStamp    "    + getUserStartingTimeStamp());
119         }
120 
121     /**
122      * @return the stringOfDigits
123      */
124     public String getStringOfDigits() 
125     {
126         return stringOfDigits;
127     }
128 
129     /**
130      * @param stringOfDigits the stringOfDigits to set
131      */
132     public void setStringOfDigits(String stringOfDigits) 
133     {
134         this.stringOfDigits = stringOfDigits;
135         if(stringOfDigits != null)
136         {
137             if(stringOfDigits.length() <= 0)
138             {
139                 inputDigitsArray = null;
140                 return;
141             }
142             int digitsCount = stringOfDigits.length() - stringOfDigits.replaceAll( ",", "").length() + 1;
143             // only one value and no comma
144             if(0 == digitsCount)
145             {
146                 inputDigitsArray = new int [1];
147                 try
148                 {
149                     int tempint = Integer.parseInt(stringOfDigits);
150                     inputDigitsArray[0] = tempint;
151                 }
152                 catch(NumberFormatException e)
153                 {
154                     inputDigitsArray[0] = 0;
155                 }
156             }
157             else if(digitsCount >= 1 )
158             {
159                 inputDigitsArray = new int [digitsCount];
160                 StringTokenizer  stringTokenizerHandle  = new StringTokenizer(stringOfDigits, ",");
161                 int counter = 0;
162                 while(stringTokenizerHandle.hasMoreTokens())
163                 {
164                     String nextIntvalueString = stringTokenizerHandle.nextToken();
165                     try
166                     {
167                         int tempint = Integer.parseInt(nextIntvalueString);
168                         inputDigitsArray[counter] = tempint;
169                     }
170                     catch(NumberFormatException e)
171                     {
172                         inputDigitsArray[counter] = 0;
173                     }
174                     counter++;
175                     // in case more digits than arrays size
176                     if(counter >= digitsCount)
177                         break;
178                 } // end of while loop
179             }
180             // sort the array
181             BinarySearch_BubbleSortServices.BubbleSortAscending(inputDigitsArray);
182         }// end - if stringOfDigits not equal NULL        
183     }
184 
185     /**
186      * @return the totalCount
187      */
188     public int getTotalCount() {
189         if(null == inputDigitsArray)
190             return(0);
191         return (inputDigitsArray.length);
192     }
193 
194     /**
195      * @return the sumValue
196      */
197     public long getSumValue() {
198         if(null == inputDigitsArray)
199             return(0);
200         sumValue = 0;
201         for(int count = 0; count < inputDigitsArray.length; count++)
202             sumValue += inputDigitsArray[count];
203         return sumValue;
204     }
205 
206 
207     /**
208      * @return the averageValue
209      */
210     public double getAverageValue() {
211         if(null == inputDigitsArray)
212             return(0);
213         sumValue = 0;
214         for(int count = 0; count < inputDigitsArray.length; count++)
215             sumValue += inputDigitsArray[count];
216         averageValue = sumValue / inputDigitsArray.length;
217         return averageValue;
218     }
219 
220     /**
221      * @return the medianValue
222      */
223     public double getMedianValue() {
224         if(null == inputDigitsArray)
225             return(0);
226         int OddEvenArraySize = inputDigitsArray.length;
227         if(1 == OddEvenArraySize)
228         {
229             medianValue = inputDigitsArray[0];
230             return medianValue;
231         }
232         if (2 == OddEvenArraySize)
233         {
234             medianValue = getSumValue() / 2;
235             return medianValue;
236         }
237         // odd
238         if (1 == (OddEvenArraySize % 2))
239         {
240             int index = (getTotalCount() / 2);
241             medianValue = inputDigitsArray[index];
242             return medianValue;
243         }        
244         // even
245         if (0 == (OddEvenArraySize % 2))
246         {
247             int index = (getTotalCount() / 2);
248             medianValue = (inputDigitsArray[index] + inputDigitsArray[index + 1]);
249             return medianValue;
250         }        
251         //default
252         return medianValue;
253     }
254 
255     /**
256      * @return the highestValue
257      */
258     public int getHighestValue() {
259         if(null == inputDigitsArray)
260             return(0);
261         highestValue = inputDigitsArray[inputDigitsArray.length - 1];
262         return highestValue;
263     }
264 
265     /**
266      * @return the lowestValue
267      */
268     public int getLowestValue() {
269         if(null == inputDigitsArray)
270             return(0);
271         lowestValue = inputDigitsArray[0];
272         return lowestValue;
273     }
274 }
275