Пример #1
0
 public Object next() {
   if (resultIterator_ != null) {
     String tmp = null;
     try {
       // parse date and further information from result
       tmp = (String) resultIterator_.next();
       // Messages.debug(-1, "Rag::next before parse");
       Date d = dateFormatter3_.parse(tmp.substring(59, 73));
       // Messages.debug(-1, "Rag::next after parse");
       h_.put("URL", tmp);
       tmp = RandomDate.format(d);
       h_.put("U_DATETIME", EtcUtil.makeURLish(tmp));
       h_.put("DATETIME", tmp);
     } catch (Exception e) {
       Messages.warn(-1, "Rag::exception during parsing of s=%1 (%2)", tmp.substring(59, 73), e);
       // e.printStackTrace();
     }
   }
   return h_;
 }
Пример #2
0
  public List search(Hashtable h, MetaSearchRequest r) {
    // create tasks
    List taskList = null;
    String dateString = (String) h.get("DATETIME");
    Date date = null;
    long waitTime = MSR_DEFAULT_DURATION_;
    try {
      waitTime = Long.valueOf((String) h.get("WAIT_TIME")).longValue() * 1000;
    } catch (Exception e) {
    }
    if (dateString != null)
      try {
        Messages.debug(-1, "MetaSearch::search before parse");
        date = RandomDate.parse(dateString);
        Messages.debug(-1, "MetaSearch::search after parse date=%1", date);
      } catch (Exception e) {
        Messages.error(TFA01_, dateString);
      }
    else Messages.error(TFA01_, dateString);

    if (date != null) {
      Thread t = Thread.currentThread();
      taskList = taskFac_.makeTasks(h, date, r);
      // take precaution that the issueing Thread is interrupted when all tasks are done
      r.registerInterrupt(t, taskList.size());
      try {
        for (Iterator e = taskList.iterator(); e.hasNext(); ) executor_.execute((Task) e.next());
        // sleep
        t.sleep(waitTime);
      } catch (InterruptedException e) {
        // if all tasks have been done, before waitTime was over
      }

      // invalidate all tasks and interrupt the corresponding threads
      for (Iterator e = taskList.iterator(); e.hasNext(); ) ((Task) e.next()).cancel();
    }
    return taskList;
  }
Пример #3
0
  /*  Broken:
   *  http://sohowww.nascom.nasa.gov/data/synoptic/gif/000123/nanc_164Mz_fd_2023_1046.gif
   *  http://sohowww.nascom.nasa.gov/data/synoptic/gif/000123/nanc_164Mz_fd_2023_0916.gif
   *  http://sohowww.nascom.nasa.gov/data/synoptic/gif/000123/meud_halph_fd_2023_1356.gif
   *  http://sohowww.nascom.nasa.gov/data/synoptic/gif/000213/nanc_164Mz_fd_2113_0919.gif
   *
   *  Ok:
   *  http://sohowww.nascom.nasa.gov/data/synoptic/gif/000212/pdmo_cogha_fd_20000212_0814.gif
   *  http://sohowww.nascom.nasa.gov/data/synoptic/gif/000212/pdmo_cogha_fd_20000212_0945.gif
   */
  private static void determineAttributes_(Hashtable h, String url) {
    int idxl = url.lastIndexOf('/') + 1;
    int idxr = url.indexOf('_');
    String tmp = null;
    try {
      // Messages.debug(2, "Soho:DeterminAttrib1 idxl=%1 idxr=%2 url=%3", String.valueOf(idxl),
      // String.valueOf(idxr), url);
      tmp = (String) INSTITUTE_CODES_.get(url.substring(idxl, idxr));
      h.put("U_INSTITUTE_CODE", (tmp == null) ? "unknown" : EtcUtil.makeURLish(tmp));
      h.put("INSTITUTE_CODE", tmp);

      idxl = idxr + 1;
      idxr = url.indexOf('_', idxl);
      // Messages.debug(2, "Soho:DeterminAttrib2 idxl=%1 idxr=%2", String.valueOf(idxl),
      // String.valueOf(idxr));
      tmp = (String) TYPE_CODES_.get(url.substring(idxl, idxr));
      h.put("U_TYPE_CODE", (tmp == null) ? "unknown" : EtcUtil.makeURLish(tmp));
      h.put("TYPE_CODE", tmp);

      idxl = idxr + 1;
      idxr = url.indexOf('_', idxl);
      // Messages.debug(2, "Soho:DeterminAttrib3 idxl=%1 idxr=%2", String.valueOf(idxl),
      // String.valueOf(idxr));
      tmp = (String) INFO_CODES_.get(url.substring(idxl, idxr));
      h.put("U_INFO_CODE", (tmp == null) ? "unknown" : EtcUtil.makeURLish(tmp));

      idxl = idxr + 1;
      idxr = url.indexOf('_', idxl);
      // Messages.debug(2, "Soho:DeterminAttrib4 idxl=%1 idxr=%2", String.valueOf(idxl),
      // String.valueOf(idxr));
      tmp = url.substring(idxl, idxr);
      idxl = idxr + 1;
      idxr = url.indexOf('.', idxl);
      // Messages.debug(2, "Soho:DeterminAttrib5 idxl=%1 idxr=%2", String.valueOf(idxl),
      // String.valueOf(idxr));
      tmp += url.substring(idxl, idxr);
      Date d = null;
      if (tmp.length() == 12) {
        // Messages.debug(1, "Soho::determineAttributes before parse");
        d = dateFormatter2_.parse(tmp);
        tmp = RandomDate.format(d);
      } else if (tmp.length() == 8) tmp = "date not parsed";
      h.put("U_DATETIME", EtcUtil.makeURLish(tmp));
      h.put("DATETIME", tmp);

      idxl = url.lastIndexOf(".");
      // Messages.debug(2, "Soho:DeterminAttrib6 idxl=%1", String.valueOf(idxl));
      tmp = (String) FORMAT_CODES_.get(url.substring(idxl + 1));
      // Messages.debug(1, "Soho::determineAttributes formatcode=%1", tmp);
      h.put("U_FORMAT_CODE", (tmp == null) ? "unknown" : EtcUtil.makeURLish(tmp));
      // Messages.debug(3, SOH02_, url);
    } catch (Exception e) {
      Messages.warn(0, SOH01_, url);
      // Messages.debug(1, "Soho::exception during parsing (%1)", e);
      // e.printStackTrace();
      if (h.get("INSTITUTE_CODE") == null) h.put("INSTITUTE_CODE", "unknown");
      if (h.get("U_INSTITUTE_CODE") == null) h.put("U_INSTITUTE_CODE", "unknown");
      if (h.get("TYPE_CODE") == null) h.put("TYPE_CODE", "unknown");
      if (h.get("U_TYPE_CODE") == null) h.put("U_TYPE_CODE", "unknown");
      if (h.get("U_INFO_CODE") == null) h.put("U_INFO_CODE", "unknown");
      if (h.get("DATE_TIME") == null) h.put("DATE_TIME", "unknown");
      if (h.get("U_DATE_TIME") == null) h.put("U_DATE_TIME", "unknown");
      if (h.get("U_FORMAT_CODE") == null) h.put("U_FORMAT_CODE", "unknown");
    }
  }