Esempio n. 1
0
 private <TFacade, TImpl extends TFacade, TKeysHolder> RemoveHolderData(
     final CacheHolder<TFacade, TImpl, TKeysHolder> item) {
   this.spaceIdentifier = item.ownGroup.ownSpace.identifier;
   this.define = item.ownGroup.define;
   this.defineIdentifier = item.ownGroup.define.GUIDIdentifier;
   this.value =
       OBJAContext.clone(item.unsafeGetValue(), false, item.ownGroup.define.implementStruct);
   KeyDefine<TFacade, TImpl, TKeysHolder> keyDefine = item.ownGroup.define.keyDefines[0];
   this.key1Value = keyDefine.getKeyValue1(item.forceGetKeysHolder());
   this.key2Value = keyDefine.getKeyValue2(item.forceGetKeysHolder());
   this.key3Value = keyDefine.getKeyValue3(item.forceGetKeysHolder());
 }
  // TODO Add a sort here to restore the sort after a filter
  public void refreshTable() {

    // First: Remember currently selected waypoint
    String wayPoint;
    Vector oldVisibleCaches = null;
    int sel = getSelectedCache();
    if ((sel >= 0)
        && (sel
            < cacheDB
                .size())) // sel > cacheDB.size() can happen if you load a new profile, which is
                          // smaller than the old profile and you selected one cache that exceeds
                          // the number of caches in the new profile
    wayPoint = cacheDB.get(sel).getWayPoint();
    else wayPoint = null;
    // Then: remember all caches that are visible before the refresh
    if (wayPoint != null) {
      oldVisibleCaches = new Vector(sel);
      for (int i = 0; i < sel; i++) {
        oldVisibleCaches.add(cacheDB.get(i));
      }
    }
    myMod.updateRows();

    // Check whether the currently selected cache is still visible
    int rownum = 0;
    if (wayPoint != null) {
      rownum =
          profile.cacheDB.getIndex(wayPoint); // Global.getProfile().cacheDB.getIndex(wayPoint);
      // If it is not visible: Go backward in the list of the
      // previously visible caches and look if you find
      // any cache that is now still visible.
      if ((rownum < 0) || (rownum >= myMod.numRows)) {
        if (oldVisibleCaches != null) {
          int i;
          for (i = sel - 1; i >= 0; i--) {
            CacheHolder checkCache = (CacheHolder) oldVisibleCaches.get(i);
            rownum =
                profile.cacheDB.getIndex(
                    checkCache
                        .getWayPoint()); // Global.getProfile().cacheDB.getIndex(checkCache.getWayPoint());
            if ((rownum >= 0) && (rownum < myMod.numRows)) break;
            rownum = 0;
          }
        }
      }
    }
    selectRow(rownum);

    tc.update(true); // Update and repaint
    if (statBar != null) statBar.updateDisplay("");
  }
Esempio n. 3
0
 private ModifyHolderData(
     final CacheHolder item, final Object newValue, final Object newKeysHolder) {
   this.spaceIdentifier = item.ownGroup.ownSpace.identifier;
   this.define = item.ownGroup.define;
   this.defineIdentifier = item.ownGroup.define.GUIDIdentifier;
   this.value =
       OBJAContext.clone(item.tryGetValue(), false, item.ownGroup.define.implementStruct);
   KeyDefine keyDefine = item.ownGroup.define.keyDefines[0];
   this.key1Value = keyDefine.getKeyValue1(item.forceGetKeysHolder());
   this.key2Value = keyDefine.getKeyValue2(item.forceGetKeysHolder());
   this.key3Value = keyDefine.getKeyValue3(item.forceGetKeysHolder());
   this.newValue = OBJAContext.clone(newValue, false, item.ownGroup.define.implementStruct);
   this.newKeysHolder =
       newValue == newKeysHolder ? this.newValue : OBJAContext.clone(newKeysHolder);
   this.userData =
       item.ownGroup.define.resourceService.internalExtractSerialUserData(
           newValue, newKeysHolder);
 }
Esempio n. 4
0
 private CreateHolderData(final CacheHolder item, final Object value, final Object keysHolder) {
   this.spaceIdentifier = item.ownGroup.ownSpace.identifier;
   this.define = item.ownGroup.define;
   this.defineIdentifier = item.ownGroup.define.GUIDIdentifier;
   this.value =
       OBJAContext.clone(item.tryGetValue(), false, item.ownGroup.define.implementStruct);
   this.keysHolder = (value == keysHolder ? this.value : OBJAContext.clone(keysHolder));
   this.userData =
       item.ownGroup.define.resourceService.internalExtractSerialUserData(value, keysHolder);
 }
Esempio n. 5
0
 private CreateTreeNodeData(final CacheHolder parent, final CacheHolder child) {
   this.define = child.ownGroup.define;
   this.defineIdentifier = this.define.GUIDIdentifier;
   this.spaceIdentifier = child.ownGroup.ownSpace.identifier;
   KeyDefine holderKeyDefine = child.ownGroup.define.keyDefines[0];
   if (parent == null) {
     this.parentValue = null;
     this.parentNull = true;
     this.parentKey1Value = null;
     this.parentKey2Value = null;
     this.parentKey3Value = null;
   } else {
     this.parentValue =
         OBJAContext.clone(parent.tryGetValue(), false, parent.ownGroup.define.implementStruct);
     this.parentNull = false;
     this.parentKey1Value = holderKeyDefine.getKeyValue1(parent.forceGetKeysHolder());
     this.parentKey2Value = holderKeyDefine.getKeyValue2(parent.forceGetKeysHolder());
     this.parentKey3Value = holderKeyDefine.getKeyValue3(parent.forceGetKeysHolder());
   }
   this.childValue =
       OBJAContext.clone(child.tryGetValue(), false, child.ownGroup.define.implementStruct);
   this.childKey1Value = holderKeyDefine.getKeyValue1(child.forceGetKeysHolder());
   this.childKey2Value = holderKeyDefine.getKeyValue2(child.forceGetKeysHolder());
   this.childKey3Value = holderKeyDefine.getKeyValue3(child.forceGetKeysHolder());
 }
Esempio n. 6
0
  @Scheduled(fixedRateString = "${sample_stat_fixed_rate}")
  private void sampleStatus() {
    log.info("sampling Status... ");

    OtrosWebStatus stats = cacheHolder.getStatus();
    stats.numThreads = logReader.getNumThreads();

    // statsHistory.add(status);
    log.info("logReader.getNumThreads(): " + logReader.getNumThreads());

    if (normalizedStatistics.numThreads.size() > MAX_RECORDS_IN_HISTORY) {
      normalizedStatistics.numThreads.remove(0);
      normalizedStatistics.numElementsInCache.remove(0);
      normalizedStatistics.timeOfMeasurements.remove(0);
    }
    normalizedStatistics.numThreads.add(logReader.getNumThreads());
    normalizedStatistics.numElementsInCache.add(stats.numElementsInCache);
    normalizedStatistics.timeOfMeasurements.add(new Date());
  }
Esempio n. 7
0
 private RemoveReferenceData(final CacheHolder holder, final CacheHolder reference) {
   this.holderSpaceIdentifier = holder.ownGroup.ownSpace.identifier;
   this.holderDefine = holder.ownGroup.define;
   this.holderDefineIdentifier = this.holderDefine.GUIDIdentifier;
   this.holderValue =
       OBJAContext.clone(holder.tryGetValue(), false, this.holderDefine.implementStruct);
   KeyDefine holderKeyDefine = holder.ownGroup.define.keyDefines[0];
   this.holderKey1Value = holderKeyDefine.getKeyValue1(holder.forceGetKeysHolder());
   this.holderKey2Value = holderKeyDefine.getKeyValue2(holder.forceGetKeysHolder());
   this.holderKey3Value = holderKeyDefine.getKeyValue3(holder.forceGetKeysHolder());
   this.referenceSpaceIdentifier = reference.ownGroup.ownSpace.identifier;
   this.referenceDefine = reference.ownGroup.define;
   this.referenceDefineIdentifier = this.referenceDefine.GUIDIdentifier;
   this.referenceValue =
       OBJAContext.clone(reference.tryGetValue(), false, this.referenceDefine.implementStruct);
   KeyDefine referentKeyDefine = reference.ownGroup.define.keyDefines[0];
   this.referenceKey1Value = referentKeyDefine.getKeyValue1(reference.forceGetKeysHolder());
   this.referenceKey2Value = referentKeyDefine.getKeyValue2(reference.forceGetKeysHolder());
   this.referenceKey3Value = referentKeyDefine.getKeyValue3(reference.forceGetKeysHolder());
 }
  /**
   * Does the most work for exporting data
   *
   * @param variant 0, if no filechooser 1, if filechooser
   */
  public void doIt(int variant) {
    File outFile;
    String str;
    CacheHolder ch;
    CacheHolderDetail holder;
    ProgressBarForm pbf = new ProgressBarForm();
    Handle h = new Handle();

    if (variant == ASK_FILE) {
      outFile = getOutputFile();
      if (outFile == null) return;
    } else {
      outFile = new File(tmpFileName);
    }

    pbf.showMainTask = false;
    pbf.setTask(h, "Exporting ...");
    pbf.exec();

    int counter = 0;
    int expCount = 0;
    for (int i = 0; i < cacheDB.size(); i++) {
      ch = (CacheHolder) cacheDB.get(i);
      if (ch.is_black == false && ch.is_filtered == false) counter++;
    }

    try {
      PrintWriter outp = new PrintWriter(new BufferedWriter(new FileWriter(outFile)));
      str = this.header();
      if (str != null) outp.print(str);
      holder = new CacheHolderDetail();
      for (int i = 0; i < cacheDB.size(); i++) {
        ch = (CacheHolder) cacheDB.get(i);
        if (ch.is_black == false && ch.is_filtered == false) {
          expCount++;
          h.progress = (float) expCount / (float) counter;
          h.changed();
          if (needCacheDetails) holder = ch.getCacheDetails(false, false);
          else holder.update(ch);
          if (needCacheDetails && holder == null) continue;
          switch (this.howManyParams) {
            case NO_PARAMS:
              str = record(holder);
              break;
            case LAT_LON:
              if (holder.pos.isValid() == false) continue;
              str =
                  record(
                      holder,
                      holder.pos.getLatDeg(CWPoint.DD).replace('.', this.decimalSeparator),
                      holder.pos.getLonDeg(CWPoint.DD).replace('.', this.decimalSeparator));
              break;
            case LAT_LON | COUNT:
              if (holder.pos.isValid() == false) continue;
              str =
                  record(
                      holder,
                      holder.pos.getLatDeg(CWPoint.DD).replace('.', this.decimalSeparator),
                      holder.pos.getLonDeg(CWPoint.DD).replace('.', this.decimalSeparator),
                      i);
              break;
            default:
              str = null;
              break;
          }
          if (str != null) outp.print(str);
        } // if
      } // for
      switch (this.howManyParams & COUNT) {
        case NO_PARAMS:
          str = trailer();
          break;
        case COUNT:
          str = trailer(counter);
          break;
        default:
          str = null;
          break;
      }
      if (str != null) outp.print(str);
      outp.close();
      pbf.exit(0);
    } catch (IOException ioE) {
      Vm.debug("Error opening " + outFile.getName());
    }
    // try
  }
  public void doIt() {
    CacheHolderDetail det;
    CacheHolder ch;
    ProgressBarForm pbf = new ProgressBarForm();
    Handle h = new Handle();
    int exportErrors = 0;

    new String();
    FileChooser fc = new FileChooser(FileChooserBase.DIRECTORY_SELECT, pref.getExportPath(expName));
    fc.setTitle("Select target directory:");
    String targetDir;
    if (fc.execute() != FormBase.IDCANCEL) {
      targetDir = fc.getChosen() + "/";
      pref.setExportPath(expName, targetDir);
      Vector cache_index = new Vector();
      Vector cacheImg = new Vector();
      Vector logImg = new Vector();
      Vector mapImg = new Vector();
      Vector usrImg = new Vector();
      Vector logIcons = new Vector(15);
      String icon;

      Hashtable varParams;
      Hashtable imgParams;
      Hashtable logImgParams;
      Hashtable usrImgParams;
      Hashtable mapImgParams;

      // Generate index page
      int counter = cacheDB.countVisible();

      pbf.showMainTask = false;
      pbf.setTask(h, "Exporting ...");
      pbf.exec();

      for (int i = 0; i < counter; i++) {
        h.progress = (float) (i + 1) / (float) counter;
        h.changed();

        ch = cacheDB.get(i);
        if (ch.isVisible()) {
          if (ch.is_incomplete()) {
            exportErrors++;
            Global.getPref()
                .log("HTMLExport: skipping export of incomplete waypoint " + ch.getWayPoint());
            continue;
          }
          det = ch.getCacheDetails(false, false);
          varParams = new Hashtable();
          varParams.put("TYPE", CacheType.cw2ExportString(ch.getType()));
          varParams.put("WAYPOINT", ch.getWayPoint());
          varParams.put("NAME", ch.getCacheName());
          varParams.put("OWNER", ch.getCacheOwner());
          if (ch.isAddiWpt() || CacheType.CW_TYPE_CUSTOM == ch.getType()) {
            varParams.put("SIZE", "");
            varParams.put("DIFFICULTY", "");
            varParams.put("TERRAIN", "");
          } else {
            varParams.put(
                "SIZE",
                CacheSize.isValidSize(ch.getCacheSize())
                    ? CacheSize.cw2ExportString(ch.getCacheSize())
                    : "");
            varParams.put(
                "DIFFICULTY",
                CacheTerrDiff.isValidTD(ch.getHard()) ? CacheTerrDiff.longDT(ch.getHard()) : "");
            varParams.put(
                "TERRAIN",
                CacheTerrDiff.isValidTD(ch.getTerrain())
                    ? CacheTerrDiff.longDT(ch.getTerrain())
                    : "");
          }
          varParams.put("DISTANCE", ch.getDistance());
          varParams.put("BEARING", ch.bearing);
          varParams.put("LATLON", ch.LatLon);
          varParams.put("STATUS", ch.getCacheStatus());
          varParams.put("DATE", ch.getDateHidden());
          cache_index.add(varParams);
          // We can generate the individual page here!
          try {
            Template page_tpl = new Template(template_init_page);
            page_tpl.setParam("TYPE", varParams.get("TYPE").toString());
            page_tpl.setParam("SIZE", varParams.get("SIZE").toString());
            page_tpl.setParam("WAYPOINT", ch.getWayPoint());
            page_tpl.setParam("NAME", ch.getCacheName());
            page_tpl.setParam("OWNER", ch.getCacheOwner());
            page_tpl.setParam("DIFFICULTY", varParams.get("DIFFICULTY").toString());
            page_tpl.setParam("TERRAIN", varParams.get("TERRAIN").toString());
            page_tpl.setParam("DISTANCE", ch.getDistance());
            page_tpl.setParam("BEARING", ch.bearing);
            page_tpl.setParam("LATLON", ch.LatLon);
            page_tpl.setParam("STATUS", ch.getCacheStatus());
            page_tpl.setParam("DATE", ch.getDateHidden());
            if (det != null) {
              if (ch.is_HTML()) {
                page_tpl.setParam("DESCRIPTION", modifyLongDesc(det, targetDir));
              } else {
                page_tpl.setParam(
                    "DESCRIPTION", STRreplace.replace(det.LongDescription, "\n", "<br>"));
              }
              page_tpl.setParam("HINTS", det.Hints);
              page_tpl.setParam("DECRYPTEDHINTS", Common.rot13(det.Hints));

              StringBuffer sb = new StringBuffer(2000);
              for (int j = 0; j < det.CacheLogs.size(); j++) {
                sb.append(
                    STRreplace.replace(
                        det.CacheLogs.getLog(j).toHtml(),
                        "http://www.geocaching.com/images/icons/",
                        null));
                sb.append("<br>");
                icon = det.CacheLogs.getLog(j).getIcon();
                if (logIcons.find(icon) < 0)
                  logIcons.add(icon); // Add the icon to list of icons to copy to dest directory
              }

              page_tpl.setParam("LOGS", sb.toString());
              page_tpl.setParam("NOTES", STRreplace.replace(det.getCacheNotes(), "\n", "<br>"));

              cacheImg.clear();
              for (int j = 0; j < det.images.size(); j++) {
                imgParams = new Hashtable();
                String imgFile = new String(det.images.get(j).getFilename());
                imgParams.put("FILE", imgFile);
                imgParams.put("TEXT", det.images.get(j).getTitle());
                if (DataMover.copy(profile.dataDir + imgFile, targetDir + imgFile))
                  cacheImg.add(imgParams);
                else exportErrors++;
              }
              page_tpl.setParam("cacheImg", cacheImg);

              // Log images
              logImg.clear();
              for (int j = 0; j < det.logImages.size(); j++) {
                logImgParams = new Hashtable();
                String logImgFile = det.logImages.get(j).getFilename();
                logImgParams.put("FILE", logImgFile);
                logImgParams.put("TEXT", det.logImages.get(j).getTitle());
                if (DataMover.copy(profile.dataDir + logImgFile, targetDir + logImgFile))
                  logImg.add(logImgParams);
                else exportErrors++;
              }
              page_tpl.setParam("logImg", logImg);

              // User images
              usrImg.clear();
              for (int j = 0; j < det.userImages.size(); j++) {
                usrImgParams = new Hashtable();
                String usrImgFile = new String(det.userImages.get(j).getFilename());
                usrImgParams.put("FILE", usrImgFile);
                usrImgParams.put("TEXT", det.userImages.get(j).getTitle());
                if (DataMover.copy(profile.dataDir + usrImgFile, targetDir + usrImgFile))
                  usrImg.add(usrImgParams);
                else exportErrors++;
              }
              page_tpl.setParam("userImg", usrImg);

              // Map images
              mapImg.clear();
              mapImgParams = new Hashtable();

              String mapImgFile = new String(ch.getWayPoint() + "_map.gif");
              // check if map file exists
              File test = new File(profile.dataDir + mapImgFile);

              if (test.exists()) {
                mapImgParams.put("FILE", mapImgFile);
                mapImgParams.put("TEXT", mapImgFile);
                if (DataMover.copy(profile.dataDir + mapImgFile, targetDir + mapImgFile))
                  mapImg.add(mapImgParams);
                else exportErrors++;

                mapImgParams = new Hashtable();
                mapImgFile = ch.getWayPoint() + "_map_2.gif";
                mapImgParams.put("FILE", mapImgFile);
                mapImgParams.put("TEXT", mapImgFile);
                if (DataMover.copy(profile.dataDir + mapImgFile, targetDir + mapImgFile))
                  mapImg.add(mapImgParams);
                else exportErrors++;

                page_tpl.setParam("mapImg", mapImg);
              }
            } else {
              page_tpl.setParam("DESCRIPTION", "");
              page_tpl.setParam("HINTS", "");
              page_tpl.setParam("DECRYPTEDHINTS", "");
              page_tpl.setParam("LOGS", "");
              page_tpl.setParam("NOTES", "");
              page_tpl.setParam("cacheImg", cacheImg);
              page_tpl.setParam("logImg", ""); // ???
              page_tpl.setParam("userImg", ""); // ???
              page_tpl.setParam("mapImg", ""); // ???
              exportErrors++;
            }

            PrintWriter pagefile =
                new PrintWriter(
                    new BufferedWriter(new FileWriter(targetDir + ch.getWayPoint() + ".html")));
            pagefile.print(page_tpl.output());
            pagefile.close();
          } catch (IllegalArgumentException e) {
            exportErrors++;
            ch.setIncomplete(true);
            Global.getPref()
                .log(
                    "HTMLExport: " + ch.getWayPoint() + " is incomplete reason: ",
                    e,
                    Global.getPref().debug);
          } catch (Exception e) {
            exportErrors++;
            Global.getPref()
                .log(
                    "HTMLExport: error wehen exporting " + ch.getWayPoint() + " reason: ",
                    e,
                    Global.getPref().debug);
          }
        } // if is black, filtered
      }

      // Copy the log-icons to the destination directory
      for (int j = 0; j < logIcons.size(); j++) {
        icon = (String) logIcons.elementAt(j);
        if (!DataMover.copy(FileBase.getProgramDirectory() + "/" + icon, targetDir + icon))
          exportErrors++;
      }
      if (!DataMover.copy(
          FileBase.getProgramDirectory() + "/recommendedlog.gif", targetDir + "recommendedlog.gif"))
        exportErrors++;

      try {
        Template tpl = new Template(template_init_index);
        tpl.setParam("cache_index", cache_index);
        PrintWriter detfile;
        detfile = new PrintWriter(new BufferedWriter(new FileWriter(targetDir + "/index.html")));
        detfile.print(tpl.output());
        detfile.close();
        // sort by waypoint
        sortAndPrintIndex(tpl, cache_index, targetDir + "/index_wp.html", "WAYPOINT");
        // sort by name
        sortAndPrintIndex(tpl, cache_index, targetDir + "/index_alpha.html", "NAME", false);
        // sort by type
        sortAndPrintIndex(tpl, cache_index, targetDir + "/index_type.html", "TYPE", true);
        // sort by size
        sortAndPrintIndex(tpl, cache_index, targetDir + "/index_size.html", "SIZE", true);
        // sort by distance
        sortAndPrintIndex(tpl, cache_index, targetDir + "/index_dist.html", "DISTANCE", 10.0);
      } catch (Exception e) {
        Vm.debug("Problem writing HTML files\n");
        e.printStackTrace();
      } // try
    } // if
    pbf.exit(0);

    if (exportErrors > 0) {
      new MessageBox(
              "Export Error",
              exportErrors + " errors during export. See log for details.",
              FormBase.OKB)
          .execute();
    }
  }
Esempio n. 10
0
 public OtrosWebStatus getCurrentStatistics() {
   OtrosWebStatus stats = cacheHolder.getStatus();
   stats.numThreads = logReader.getNumThreads();
   return stats;
 }