Calendar dataToCal(ObjectData dataDate, ObjectData dataTime) {
   Calendar cal = Calendar.getInstance();
   int year1 = byteToInt(dataDate.get(0));
   int year2 = byteToInt(dataDate.get(1));
   int year = (year1 << 8) | year2;
   int month = byteToInt(dataDate.get(2)) - 1;
   int day = byteToInt(dataDate.get(3));
   int hour = byteToInt(dataTime.get(0));
   int min = byteToInt(dataTime.get(1));
   cal.set(year, month, day, hour, min, 0);
   cal.set(Calendar.MILLISECOND, 0);
   return cal;
 }
Exemple #2
0
  /** Returns the map of oids to object datas for the given least-derived type. */
  private Map getMap(ClassMetaData meta) {
    Map m = (Map) _metaOidMaps.get(meta);
    if (m != null) return m;

    // load datas from file and cache them
    Collection datas = _conf.getFileHandler().load(meta);
    m = new HashMap(datas.size());
    for (Iterator itr = datas.iterator(); itr.hasNext(); ) {
      ObjectData data = (ObjectData) itr.next();
      m.put(data.getId(), data);
    }
    _metaOidMaps.put(meta, m);
    return m;
  }
Exemple #3
0
  /**
   * End the datastore transaction.
   *
   * @param updates {@link ObjectData} instances to insert or update
   * @param deletes {@link ObjectData} instances to delete
   */
  public synchronized void endTransaction(Collection updates, Collection deletes) {
    // track dirty types
    Set dirty = new HashSet();
    try {
      // commit updates
      if (updates != null) {
        for (Iterator itr = updates.iterator(); itr.hasNext(); ) {
          ObjectData data = (ObjectData) itr.next();
          ClassMetaData meta = getLeastDerived(data.getMetaData());
          getMap(meta).put(data.getId(), data);
          dirty.add(meta);
        }
      }

      // commit deletes
      if (deletes != null) {
        for (Iterator itr = deletes.iterator(); itr.hasNext(); ) {
          ObjectData data = (ObjectData) itr.next();
          ClassMetaData meta = getLeastDerived(data.getMetaData());
          getMap(meta).remove(data.getId());
          dirty.add(meta);
        }
      }

      // write changes to dirty extents back to file
      XMLFileHandler fh = _conf.getFileHandler();
      for (Iterator itr = dirty.iterator(); itr.hasNext(); ) {
        ClassMetaData meta = (ClassMetaData) itr.next();
        fh.store(meta, getMap(meta).values());
      }
    } finally {
      // unlock store
      notify();
      _locked = false;
    }
  }