⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiggle.java~2~

📁 一个用java写的地震分析软件(无源码)-used to write a seismic analysis software (without source)
💻 JAVA~2~
📖 第 1 页 / 共 5 页
字号:
    locEng.setUseTrialLocation(props.getBoolean("useTrialLocation"));
    locEng.setServer(address, port);
    locEng.reset();

 // do the location
    Solution sol =  mv.getSelectedSolution();

    boolean status = locEng.solve(sol);  // locate

 // failure, put message in tab pane
    if (!status) {
     // get error message from LocationEngine for display in text area
	    String str = locEng.getMessage();

	    statusPanel.setText(str);
	    System.out.println (str);

	    // pop a dialog
	    JOptionPane.showMessageDialog(null,  str, "Location failed",
				      JOptionPane.INFORMATION_MESSAGE);

	} else {
	    statusPanel.clear();

         sol.processingState.setValue("H");
         // This is a site-specific kludge (naughty, naughty)
         if (sol.getEventTypeString().equalsIgnoreCase("trigger"))
           sol.setEventType("local");

         // recalc the mags with the new location
        recalcPrefmag(sol);

         // update the text the tabs & frame title
         updateTextViews();

         tabPane.setSelectedIndex(TAB_LOCATION);

	}

    return status;
}

 /** Recalculate the prefered mag.
 * This is too specific, needs to be generalized. */
 void recalcPrefmag (Solution sol) {

 // no mag to recalc.
      if (sol.magnitude == null ||
          sol.magnitude.isNull()) return;

 // is this a mag with no supporting amps?


      if (sol.magnitude.hasReadings()) {

	  if (sol.magnitude.isCodaMag()) {
	     calcMC(sol);
	  } else {
	     calcML(sol);
	  }
      } else {
	 final String msg = "Magnitude has no supporting amps or codas\n"+
		        " and can not be recalculated.\n"+
		        "MAGNITUDE MAY BE INVALID FOR NEW LOCATION\n";

	System.out.println("Mag not recalculated, no suppporting readings.");
	JOptionPane.showMessageDialog(null, msg, "Old Magnitude Used",
				    JOptionPane.INFORMATION_MESSAGE);
      }
 }

/** Calculate the ML magnitude of this solution from scratch by scanning the
 * Waveforms. */
public void scanML (Solution sol) {

    if (!hasGoodLocation(sol)) return;	// no solution

    // Blow away the old amps associated with this solution,
    // otherwise repeated calls will accumulate duplicates of the same amps!
//    mv.ampList.removeAll(mv.ampList.getAssociated(sol));
    sol.ampList.clear();

    // TODO: allow different mag types
 	if (debug) System.out.println
		       (" Calculating mag (SoCalML) from scratch for: "+sol.toString());

  /* DK Changed code from old magnitude engine instantiation
	   to new generic method.

  *   SoCalML ml = new SoCalML();
	* set characteristics (should get from properties)
	* ml.setTrimResidual(1.0);
	* ml.setRequireCorrection(true);
	* ml.setUseLowGains(false);
  *
	* MagnitudeEngine magEng = new MagnitudeEngine(ml);
  *
	* Magnitude newMag =
  *    magEng.solveFromWaveforms(sol, mv.getWaveformList());
	**************************************************/

       // DK 10/28/02  New code for magnitude instantiation
      // BEGIN NEW
      MagnitudeMethod ml =
          MagnitudeMethod.CreateMagnitudeMethod(MLmagMethodClass);
      MagnitudeEngine magEng =
          MagnitudeEngine.CreateMagnitudeEngine(magEngineClass);
      magEng.ConfigureMagnitudeEngine(ml);
       // END NEW

	Magnitude newMag =    magEng.solve(sol, mv.getWaveformList());

	if (newMag != null) sol.magnitude = newMag;

	if (debug) {
          System.out.println ("Mag calc type: "+ magEng.getMagMethod().getName());
          System.out.println (sol.magnitude.neatDump());
	}
     // add new amps to MasterView's list
     sol.ampList.addAll(sol.ampList);
//done via listener from above     mv.makeLocalLists();            // update WFView lists

     updateTextViews();
     selectTab(TAB_MAGNITUDE);
}

/** Calculate the ML magnitude of currently selected solution from scratch by
 * examining the Waveforms. */
public void scanML () {

    scanML(mv.solList.getSelected());

}

/** Calculate the ML magnitude of this solution.
Does NOT re-examine the waveforms. */
public void calcML (Solution sol) {

    if (sol.magnitude == null) return;	// no mag

    // TODO: allow different mag types
 	if (debug) System.out.println (" Calculating mag (SoCalML) for: "+sol.toString());

	// DK Converted to new magnitude engine instantiation
	//  OLD MagnitudeEngine magEng = new MagnitudeEngine(new SoCalML());

	// BEGIN NEW
         MagnitudeMethod ml =
             MagnitudeMethod.CreateMagnitudeMethod(MLmagMethodClass);
         MagnitudeEngine magEng =
             MagnitudeEngine.CreateMagnitudeEngine(magEngineClass);
         magEng.ConfigureMagnitudeEngine(ml);
	// END NEW

	magEng.solve(sol.magnitude);

	//	if (debug) System.out.println (sol.magnitude.toDumpString()) ;

	updateTextViews();

	selectTab(TAB_MAGNITUDE);

	// NEED TO sort out amps!!!!

}
/** Calculate the ML magnitude of currently selected solution.
Does NOT re-examine the waveforms. */
public void calcML () {

    calcML(mv.solList.getSelected());
}
/** Calculate the MC magnitude of this solution from scratch. */
public void scanMC (Solution sol) {

    if (!hasGoodLocation(sol)) return;	// no solution

    // create on 1st use then reuse
     if (mcaMagEng == null) {
       mcaMagEng =
	 new org.trinet.util.magnitudeengines.JiggleMCA(props.getProperty("mcaConfigFile"), MasterChannelList.get());
       // Mca does not currently extend MagnitudeEngine
//       mcaMagEng =   MagnitudeEngine.CreateMagnitudeEngine(props.getProperty("MCAMagnitudeEngine"));
     }
     Magnitude newMag = mcaMagEng.calcSummaryMag(sol, mv.getWaveformList());


         /** New code from DK -- problem here because the
          * JiggleMCA - MCA - CodamagnitudeGenerator does NOT implement MagnitudeEngine and
          * Throws incompatible type exception.
          * Reverted to old code 11/25/02 until it can be fixed.
          * Also need to create ML, Mc etc. buttons
          * or whatever, dyamically as mag types are loaded at runtime.
          */
//    if (mcaMagEng == null)
//    {
//        mcaMagEng = MagnitudeEngine.CreateMagnitudeEngine("org.trinet.util.magnitudeengines.JiggleMCA");
//        mcaMagEng.ConfigureMagnitudeEngine(MagnitudeEngine.ConfigurationSourceFile,
//                                           "mcaConfigFile", null,
//                                           MasterChannelList.get()
//                                          );
//    }
//    Magnitude newMag = mcaMagEng.solve(sol, mv.getWaveformList());


    // Don't want to blow out previous mag if this one's no good
    // Ask operator before setting as preferred??
    if (newMag != null) sol.setPreferredMagnitude(newMag);

    // dump results to tab
    updateTextViews();
    //updateMagTab();
    selectTab(TAB_MAGNITUDE);

    return;
}

/** Calculate the MC magnitude of currently selected solution from scratch. */
public void scanMC () {

    scanMC(mv.getSelectedSolution());
}
/** Calculate the MC magnitude of this solution using the existing coda data.
Does NOT re-examine the waveforms. */
public void calcMC (Solution sol) {

    if (sol.magnitude == null) return;	// no mag

    // create on 1st use then reuse
	/* DK CLEANUP */
      if (mcaMagEng == null) mcaMagEng =
	  new org.trinet.util.magnitudeengines.JiggleMCA(props.getProperty("mcaConfigFile"), MasterChannelList.get());

      Magnitude newMag = mcaMagEng.calcSummaryMag(sol);

//    if (mcaMagEng == null)
//    {
//	    mcaMagEng = MagnitudeEngine.CreateMagnitudeEngine("org.trinet.util.magnitudeengines.JiggleMCA");
//            mcaMagEng.ConfigureMagnitudeEngine(MagnitudeEngine.ConfigurationSourceFile,
//                                         "mcaConfigFile",null,
//                                         MasterChannelList.get()
//                                        );
//    }
//    Magnitude newMag = mcaMagEng.solve(sol);


    // Don't want to blow out previous mag if this one's no good
    // Ask operator before setting as preferred??
    if (newMag != null) {
       sol.setPreferredMagnitude(newMag);
       // dump results to tab
       updateTextViews();
    } else {
 	  JOptionPane.showMessageDialog(null,
               "Mca calculation was not successful.\n"+
               mcaMagEng.getResultsMessage() + "\n",
               "Bad Mca",
               JOptionPane.INFORMATION_MESSAGE);
    }

    return;
}
/** Calculate the MC magnitude of this solution using the existing coda data.
Does NOT re-examine the waveforms. */
public void calcMC () {

    calcMC(mv.getSelectedSolution());
}

/**
 * Check to see if this solution id is locked by another user. If it is, pop a dialog
 * to inform the user and return 'false'. Otherwise, return true.  Also returns 'true'
 * if locking is not supported otherwise you would never be allowed access to events.
*/
public boolean handleLock(long id) {

// attempt lock. Remember, this returns 'true' if locking is NOT enabled
    solLock.setSolution(id);

    if (solLock.lock()) {
	return true;			// lock was successfull

   // lock failed, pop a dialog
    } else {
	 String str = "EVENT "+id+" IS LOCKED.\n\n" +
	           "Username:    "+solLock.getUsername()+"\n"+
	           "Hostname:    "+solLock.host+"\n"+
	           "Application: "+solLock.application+"\n"+
	           "Time:        "+EpochTime.toString(solLock.datetime).substring(0, 19);

      JOptionPane.showMessageDialog(null,
				      str, "Event Is Locked",
				      JOptionPane.INFORMATION_MESSAGE);

	 return false;
    }

}

/** Release all Solution Locks */
public void releaseAllSolutionLocks() {

    //    SolutionLock solLock = SolutionLock.create();

    if (solLock != null) solLock.unlockAllMyLocks();

}
/** Get an new MasterView instance. */
    private MasterView clearMasterView() {
       mv.destroy();
       mv = new MasterView(statusPanel);

	setMasterViewProperties();

        mv.setWaveFormLoadMode(MasterView.Cache);
        mv.setAlignmentMode(MasterView.AlignOnTime);

        mv.solList.addChangeListener(new SolListChangeListener (this));

        /* DK/JRR 032603 Add Repaint to handle corrupted redraw
				    problem when model is resized
				   Handle changes to the selected time/amp window. */
        mv.masterWFWindowModel.addChangeListener(new ChangeListener()
          {
            public void stateChanged (ChangeEvent changeEvent) {
             if (changeEvent.getSource() != null) {
                  repaint(); }
                                                  }
                                                               }
                                     );  // end of ChangeListener
				/* End DK/JRR 032603 Repaint */

	return mv;
    }


    private void setMasterViewProperties () {
       if (props != null) {
          mv.setChannelTimeWindowModel(props.getCurrentChannelTimeWindowModelInstance());
	  mv.setCacheSize(props.getInt("cacheAbove"), props.getInt("cacheBelow"));
          mv.setResidualStripValue(props.getDouble("pickStripValue"));
	  mv.setClockQualityThreshold(props.getDouble("clockQualityThreshold"));

	  mv.setChannelTimeWindowModel(props.getCurrentChannelTimeWindowModelInstance());
       }

    }


/** Clear the Master view, leaves GUI in virgin state, like at startup. */

    public void clearGUI () {

       releaseAllSolutionLocks();

       // nuke the old MasterView
       clearMasterView();
//       mv.destroy();
//       mv = new MasterView();
 //      mv.setChannelTimeWindowModel(props.getCurrentChannelTimeWindowModelInstance());
       // Clear main frame
       getContentPane().removeAll();

       // remake the GUI
       makeGUI();

     // put the catalog panel in the new catalog tab
       tabPanel[TAB_CATALOG].removeAll();
       tabPanel[TAB_CATALOG].add(catPanel, BorderLayout.CENTER);
       selectTab(TAB_CATALOG);
    }

    /**
 * Load one event from the dataSource. This is only one way to create a
 * MasterView. Others will be implemented later.  */

    public boolean loadSolution(Solution sol) {

	     return loadSolution(sol.id.longValue());
    }

/**
 * Load one event from the dbase. This is only one way to create a
 * MasterView. Others will be implemented later. Returns true if load successful. */

    public boolean loadSolution(long id) {

    String str = "";

    // Check that all modified solutions have been saved
    Solution sol[] = mv.solList.getArray();
    for (int i = 0; i< sol.length; i++) {

          if (sol[i].hasChanged() ) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -