Пример #1
0
 public Tower(BaseTower baseTower, BaseRace race, float x, float y) {
   this.baseTower = baseTower;
   this.x = x;
   this.y = y;
   this.race = new Race(race, baseTower.getRaces());
   cooldown = 0;
   health = baseTower.getHealth();
   this.id = IDGenerator.getNextID();
 }
  // add a new sport to sportData if does not exist
  public Map<String, Sport> addSport(String sportName, String sportLocation) {

    if (sportData.containsKey(sportName)) {
      System.out.println("Sport already exists.");

    } else {
      Integer sportID = idGenerator.generateSportID(sportData);
      Sport sport = new Sport(sportID, sportName, sportLocation);
      sportData.put(sportName, sport);
    }

    return sportData;
  }
Пример #3
0
 @Override
 protected String createReferenceKey(final Path currentPath, final Object item) {
   return idGenerator.next(item);
 }
 @Override
 protected Object createReferenceKey(Path currentPath, Object item) {
   return idGenerator.next(item);
 }
 public void removeIDGenerator(IDGenerator generator) {
   idGenerators.remove(generator.getName());
 }
 public void addIDGenerator(IDGenerator generator) {
   idGenerators.put(generator.getName(), generator);
 }
    void exportData(
        prisms.ui.UI ui,
        PrismsSynchronizer sync,
        JsonStreamWriter jsw,
        java.util.HashSet<String> namespaces,
        prisms.ui.UI.DefaultProgressInformer pi,
        boolean global)
        throws java.io.IOException, PrismsRecordException {
      DBRecordKeeper keeper = (DBRecordKeeper) sync.getKeeper();
      String namespace = keeper.getNamespace();
      if (namespaces.contains(namespace)) return;
      namespaces.add(namespace);
      for (PrismsSynchronizer depend : sync.getDepends())
        exportData(ui, depend, jsw, namespaces, pi, global);
      jsw.startObject();
      jsw.startProperty("namespace");
      jsw.writeString(namespace);
      jsw.startProperty("version");
      String v = null;
      SynchronizeImpl impl = null;
      for (SynchronizeImpl imp : sync.getImpls())
        if (prisms.arch.PrismsConfig.compareVersions(imp.getVersion(), v) > 0) {
          impl = imp;
          v = impl.getVersion();
        }

      jsw.writeString(v);
      SyncRecord syncRecord =
          new SyncRecord(
              new PrismsCenter("Export"),
              SyncRecord.Type.AUTOMATIC,
              System.currentTimeMillis(),
              false);
      pi.setProgressText("Exporting " + namespace + " items");
      ui.startTimedTask(pi);
      PrismsSynchronizer.SyncTransaction syncTrans = sync.transact(v, false, syncRecord, false, pi);
      PrismsSynchronizer.PS2ItemWriter itemWriter =
          new PrismsSynchronizer.PS2ItemWriter(
              syncTrans, jsw, new prisms.records.LatestCenterChange[0]);

      int[] centerIDs = global ? keeper.getAllCenterIDs() : new int[] {keeper.getCenterID()};
      SynchronizeImpl.ItemIterator iter = impl.getAllItems(centerIDs, syncRecord.getCenter());
      jsw.startProperty("items");
      jsw.startArray();
      while (iter.hasNext()) itemWriter.writeItem(iter.next());
      for (PrismsCenter center : keeper.getCenters()) itemWriter.writeItem(center);
      if (keeper.getAutoPurger() != null) itemWriter.writeItem(keeper.getAutoPurger());
      jsw.endArray();

      pi.setProgressText("Exporting " + namespace + " changes");
      prisms.util.Sorter<RecordKeeper.ChangeField> sorter;
      sorter = new prisms.util.Sorter<RecordKeeper.ChangeField>();
      sorter.addSort(RecordKeeper.ChangeField.CHANGE_TIME, true);
      prisms.util.Search changeSearch =
          global
              ? null
              : new prisms.records.ChangeSearch.IDRange(
                      Long.valueOf(IDGenerator.getMinID(keeper.getCenterID())),
                      Long.valueOf(IDGenerator.getMaxID(keeper.getCenterID())))
                  .and(new prisms.records.ChangeSearch.LocalOnlySearch(null));
      prisms.util.LongList changeIDs =
          new prisms.util.LongList(keeper.search(changeSearch, sorter));
      long[] batch = new long[changeIDs.size() < 200 ? changeIDs.size() : 200];
      jsw.startProperty("changes");
      jsw.startArray();
      for (int i = 0; i < changeIDs.size(); i += batch.length) {
        if (changeIDs.size() - i < batch.length) batch = new long[changeIDs.size() - i];
        changeIDs.arrayCopy(i, batch, 0, batch.length);
        ChangeRecord[] changes = keeper.getItems(batch);
        for (ChangeRecord change : changes)
          if (change != null
              && (change.type.subjectType instanceof PrismsChange || impl.shouldSend(change)))
            itemWriter.writeChange(change, false);
      }
      jsw.endArray();

      if (global) {
        pi.setProgressText("Exporting " + namespace + " sync records");
        jsw.startProperty("syncRecords");
        jsw.startArray();
        for (PrismsCenter center : keeper.getCenters()) exportSyncRecords(center, keeper, jsw);
        jsw.endArray();

        pi.setProgressText("Exporting " + namespace + " metadata");
        jsw.startProperty("latestChanges");
        jsw.startArray();
        prisms.util.IntList allCenterIDs = new prisms.util.IntList(keeper.getAllCenterIDs());
        for (int i = 0; i < allCenterIDs.size(); i++)
          for (int j = 0; j < allCenterIDs.size(); j++) {
            long changeTime = keeper.getLatestChange(allCenterIDs.get(i), allCenterIDs.get(j));
            if (changeTime > 0) {
              jsw.startObject();
              jsw.startProperty("center");
              jsw.writeNumber(Integer.valueOf(allCenterIDs.get(i)));
              jsw.startProperty("subjectCenter");
              jsw.writeNumber(Integer.valueOf(allCenterIDs.get(i)));
              jsw.startProperty("latestChange");
              jsw.writeNumber(Long.valueOf(changeTime));
              jsw.endObject();
            }
          }
        jsw.endArray();
      }
      jsw.endObject();
    }