コード例 #1
0
ファイル: EnergyMeter.java プロジェクト: DevFactory/DSS
  @Override
  protected int makeLike(String energyMeterName) {
    EnergyMeterObj elem;
    int success = 0;

    /* See if we can find this EnergyMeter name in the present collection */
    EnergyMeterObj other = (EnergyMeterObj) find(energyMeterName);

    if (other != null) {
      elem = activeEnergyMeterObj;

      elem.setNumPhases(other.getNumPhases());
      elem.setNumConds(other.getNumConds()); // force reallocation of terminal stuff

      elem.setElementName(other.getElementName());
      elem.setMeteredElement(other.getMeteredElement()); // pointer to target circuit element
      elem.setMeteredTerminalIdx(other.getMeteredTerminalIdx());
      elem.setExcessFlag(other.isExcessFlag());

      elem.setMaxZoneKVANorm(other.getMaxZoneKVANorm());
      elem.setMaxZoneKVAEmerg(other.getMaxZoneKVAEmerg());

      elem.setDefinedZoneListSize(other.getDefinedZoneListSize());
      elem.setDefinedZoneList(new String[elem.getDefinedZoneListSize()]);

      // copy strings over (actually incr ref count on string)
      for (int i = 0; i < elem.getDefinedZoneListSize(); i++)
        elem.getDefinedZoneList()[i] = other.getDefinedZoneList()[i];

      elem.setLocalOnly(other.isLocalOnly());
      elem.setVoltageUEOnly(other.isVoltageUEOnly());

      /* Boolean flags */
      elem.setLosses(other.isLosses());
      elem.setLineLosses(other.isLineLosses());
      elem.setXfmrLosses(other.isXfmrLosses());
      elem.setSeqLosses(other.isSeqLosses());
      elem.setThreePhaseLosses(other.isThreePhaseLosses());
      elem.setVBaseLosses(other.isVBaseLosses());
      elem.setPhaseVoltageReport(other.isPhaseVoltageReport());

      for (int i = 0; i < elem.getParentClass().getNumProperties(); i++)
        elem.setPropertyValue(i, other.getPropertyValue(i));

      success = 1;
    } else {
      DSS.doSimpleMsg("Error in EnergyMeter makeLike: \"" + energyMeterName + "\" not found.", 521);
    }

    return success;
  }
コード例 #2
0
ファイル: EnergyMeter.java プロジェクト: DevFactory/DSS
  @Override
  public int edit() {
    Parser parser = Parser.getInstance();

    // continue parsing with contents of parser
    activeEnergyMeterObj = (EnergyMeterObj) elementList.getActive();
    DSS.activeCircuit.setActiveCktElement(activeEnergyMeterObj);

    boolean doRecalc = false;

    EnergyMeterObj elem = activeEnergyMeterObj;

    elem.setMeteredElementChanged(false);

    int paramPointer = -1;
    String paramName = parser.getNextParam();
    String param = parser.stringValue();

    while (param.length() > 0) {
      if (paramName.length() == 0) {
        paramPointer += 1;
      } else {
        paramPointer = commandList.getCommand(paramName);
      }

      if (paramPointer >= 0 && paramPointer < numProperties)
        elem.setPropertyValue(paramPointer, param);

      switch (paramPointer) {
        case -1:
          DSS.doSimpleMsg(
              "Unknown parameter \""
                  + paramName
                  + "\" for object \""
                  + getClassName()
                  + "."
                  + elem.getName()
                  + "\"",
              520);
          break;
        case 0:
          elem.setElementName(param.toLowerCase());
          break;
        case 1:
          elem.setMeteredTerminalIdx(parser.integerValue() - 1);
          break;
        case 2: /* Actions */
          switch (param.toLowerCase().charAt(0)) {
            case 'a':
              elem.allocateLoad();
              break;
            case 'c':
              elem.resetRegisters();
              break;
            case 'r':
              elem.reduceZone();
              break;
            case 's':
              elem.saveRegisters();
              break;
            case 't':
              elem.takeSample();
              break;
            case 'z':
              elem.zoneDump();
              break;
          }
          break;
        case 3:
          processOptions(param);
          break;
        case 4:
          elem.setMaxZoneKVANorm(parser.doubleValue());
          break;
        case 5:
          elem.setMaxZoneKVAEmerg(parser.doubleValue());
          break;
        case 6:
          parser.parseAsVector(elem.getNumPhases(), elem.getSensorCurrent()); // inits to zero
          break;
        case 7:
          Util.interpretAndAllocStrArray(
              param, elem.getDefinedZoneListSize(), elem.getDefinedZoneList());
          break;
        case 8:
          elem.setLocalOnly(Util.interpretYesNo(param));
          break;
        case 9:
          interpretRegisterMaskArray(elem.getTotalsMask());
          break;
        case 10:
          elem.setLosses(Util.interpretYesNo(param));
          break;
        case 11:
          elem.setLineLosses(Util.interpretYesNo(param));
          break;
        case 12:
          elem.setXfmrLosses(Util.interpretYesNo(param));
          break;
        case 13:
          elem.setSeqLosses(Util.interpretYesNo(param));
          break;
        case 14:
          elem.setThreePhaseLosses(Util.interpretYesNo(param));
          break;
        case 15:
          elem.setVBaseLosses(Util.interpretYesNo(param));
          break;
        case 16:
          elem.setPhaseVoltageReport(Util.interpretYesNo(param));
          break;
          /* case 10: aem.setHasFeeder(Utilities.interpretYesNo(Param)); break;*/
        default:
          classEdit(activeEnergyMeterObj, paramPointer - EnergyMeter.NumPropsThisClass);
          break;
      }

      switch (paramPointer) {
        case 0:
          elem.setMeteredElementChanged(true);
          doRecalc = true;
          break;
        case 1:
          elem.setMeteredElementChanged(true);
          doRecalc = true;
          break;
        case 10:
          if (elem.hasFeeder()) {
            doRecalc = true;
          } else {
            elem.removeFeederObj();
          }
          break;
      }

      paramName = parser.getNextParam();
      param = parser.stringValue();
    }

    if (doRecalc) elem.recalcElementData(); // when some basic data have changed

    return 0;
  }