/[projects]/android/TrainInfoServiceGoogle/src/dk/thoerup/traininfoservice/StationDAO.java
ViewVC logotype

Diff of /android/TrainInfoServiceGoogle/src/dk/thoerup/traininfoservice/StationDAO.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1106 by torben, Wed Sep 22 22:46:26 2010 UTC revision 1115 by torben, Thu Sep 23 15:08:39 2010 UTC
# Line 4  import java.io.IOException; Line 4  import java.io.IOException;
4  import java.util.ArrayList;  import java.util.ArrayList;
5  import java.util.Collections;  import java.util.Collections;
6  import java.util.Comparator;  import java.util.Comparator;
7  import java.util.Iterator;  import java.util.HashMap;
8  import java.util.List;  import java.util.List;
9    import java.util.Map;
10    import java.util.logging.Level;
11  import java.util.logging.Logger;  import java.util.logging.Logger;
12    
13    import javax.jdo.Extent;
14  import javax.jdo.PersistenceManager;  import javax.jdo.PersistenceManager;
15  import javax.jdo.Query;  import javax.jdo.Query;
16    
17    import net.sf.jsr107cache.Cache;
18    import net.sf.jsr107cache.CacheException;
19    import net.sf.jsr107cache.CacheManager;
20    
21    import com.google.appengine.api.memcache.jsr107cache.GCacheFactory;
22    
23  import dk.thoerup.android.traininfo.common.StationBean;  import dk.thoerup.android.traininfo.common.StationBean;
24  import dk.thoerup.android.traininfo.common.StationBean.StationEntry;  import dk.thoerup.android.traininfo.common.StationBean.StationEntry;
25  import dk.thoerup.traininfoservice.geo.Geo;  import dk.thoerup.traininfoservice.geo.Geo;
# Line 20  import dk.thoerup.traininfoservice.jdo.P Line 29  import dk.thoerup.traininfoservice.jdo.P
29  public class StationDAO {  public class StationDAO {
30          final static int LOCATION_LIMIT = 8;          final static int LOCATION_LIMIT = 8;
31          static final Logger logger = Logger.getLogger(StationDAO.class.getName());          static final Logger logger = Logger.getLogger(StationDAO.class.getName());
32            
33            final int TIMEOUT_SECONDS = 30*60;
34            
35            Cache cache;
36            
37            public StationDAO() {
38            Map props = new HashMap();
39            props.put(GCacheFactory.EXPIRATION_DELTA, TIMEOUT_SECONDS);        
40                    
41                    try {
42                cache = CacheManager.getInstance().getCacheFactory().createCache(props);            
43            } catch (CacheException e) {
44                    logger.log(Level.WARNING, "error creating cache", e);
45            }
46            
47            }
48    
49    
50          public StationEntry getById(int id)  {          public StationEntry getById(int id)  {
# Line 40  public class StationDAO { Line 65  public class StationDAO {
65                  PersistenceManager pm = null;                  PersistenceManager pm = null;
66                                    
67                  try {                  try {
68                          pm = PMF.get().getPersistenceManager();                          /*pm = PMF.get().getPersistenceManager();
69                                                    
70                                                    
71                                                    
72                          Query q = pm.newQuery(JdoStationBean.class);                          Query q = pm.newQuery(JdoStationBean.class);
73                          q.setOrdering("name");                                            q.setOrdering("name");                  
74                          List<JdoStationBean> beanList = (List<JdoStationBean>) q.execute();                          List<JdoStationBean> beanList = (List<JdoStationBean>) q.execute();*/
75                            
76                            List<JdoStationBean> beanList = getAllStations();
77                            
78                                                    
79                          StationBean stationBean = new StationBean();                          StationBean stationBean = new StationBean();
80                                                    
# Line 62  public class StationDAO { Line 90  public class StationDAO {
90                                          }                                          }
91                                  }                                  }
92                          }                          }
93                            
94                            Collections.sort(stationBean.entries, new Comparator<StationEntry>() {
95                                    @Override
96                                    public int compare(StationEntry arg0, StationEntry arg1) {
97                                            return arg0.getName().compareTo( arg1.getName() );
98                                    }                              
99                            });
100    
101                          return stationBean;                                              return stationBean;                    
102                  } finally {                  } finally {
103                          pm.close();                  //      pm.close();
104                    }
105            }
106            
107            public List<JdoStationBean> getAllStations() {
108                    final String key = "allstations";
109                    List<JdoStationBean> result = (List<JdoStationBean>) cache.get(key);
110                    
111                    if (result == null) {
112                            logger.info("getAllStations Cache miss");
113                            
114                            PersistenceManager pm = null;
115                            final double LAT = 0.4;
116                            final double LNG = 0.75;
117                            
118                            try {
119                                    pm = PMF.get().getPersistenceManager();
120                                    Extent<JdoStationBean> all = pm.getExtent(JdoStationBean.class, false);
121                                    
122                                    result = new ArrayList<JdoStationBean>();
123                                    for (JdoStationBean station : all) {
124                                            result.add(station);
125                                    }
126                                    
127                                    cache.put(key, result);
128                                    
129                            } finally {
130                                    pm.close();
131                            }
132                    } else {
133                            logger.info("getAllStations Cache hit");
134                  }                  }
135                    
136                    
137                    
138                    return result;
139                    
140          }          }
141                    
142    
143          //String limitExpression = (geolimit == true) ? "AND abs(latitude-?)<0.4 AND abs(longitude-?)<0.75 " : "";          //String limitExpression = (geolimit == true) ? "AND abs(latitude-?)<0.4 AND abs(longitude-?)<0.75 " : "";
144            /*
145          public List<JdoStationBean> getByLocationList(double latitude, double longitude, boolean geolimit)  {          public List<JdoStationBean> getByLocationList(double latitude, double longitude, boolean geolimit)  {
146                    
147                  PersistenceManager pm = null;                  PersistenceManager pm = null;
# Line 102  public class StationDAO { Line 173  public class StationDAO {
173                  } finally {                  } finally {
174                          pm.close();                          pm.close();
175                  }                  }
176          }          }*/
177    
178    
179          public StationBean getByLocation(double latitude, double longitude)  {          public StationBean getByLocation(double latitude, double longitude)  {
180                                    /*
181                  List<JdoStationBean> beanList = getByLocationList(latitude,longitude,true);                  List<JdoStationBean> beanList = getByLocationList(latitude,longitude,true);
182                                    
183                  if (beanList.size() < LOCATION_LIMIT ) {                  if (beanList.size() < LOCATION_LIMIT ) {
184                          logger.info("getByLocation failover: " +latitude + "," + longitude);                          logger.info("getByLocation failover: " +latitude + "," + longitude);
185                          beanList = getByLocationList(latitude,longitude, false);                          beanList = getByLocationList(latitude,longitude, false);
186                  }                  }*/
187                    
188                    List<JdoStationBean> beanList = getAllStations();
189    
190                  StationBean stationBean = new StationBean();                                      StationBean stationBean = new StationBean();                    
191    
# Line 204  public class StationDAO { Line 277  public class StationDAO {
277                                                    
278                          for(JdoStationBean bean : beanList) {                          for(JdoStationBean bean : beanList) {
279                                  stationBean.entries.add( bean.toStationEntry() );                                  stationBean.entries.add( bean.toStationEntry() );
280                          }                          }                      
281                            
282                                                    
283                  } finally {                  } finally {
284                          pm.close();                          pm.close();

Legend:
Removed from v.1106  
changed lines
  Added in v.1115

  ViewVC Help
Powered by ViewVC 1.1.20