@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; }
@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; }