|
11 | 11 | import com.powsybl.psse.model.PsseVersion; |
12 | 12 | import de.siegmar.fastcsv.reader.CsvRecord; |
13 | 13 |
|
| 14 | +import java.util.Optional; |
| 15 | + |
14 | 16 | import static com.powsybl.psse.model.io.Util.parseDoubleFromRecord; |
15 | 17 | import static com.powsybl.psse.model.io.Util.parseIntFromRecord; |
16 | 18 | import static com.powsybl.psse.model.io.Util.parseStringFromRecord; |
@@ -51,24 +53,36 @@ public static PsseSubstationSwitchingDevice fromRecord(CsvRecord rec, PsseVersio |
51 | 53 | public static String[] toRecord(PsseSubstationSwitchingDevice psseSubstationSwitchingDevice, String[] headers) { |
52 | 54 | String[] row = new String[headers.length]; |
53 | 55 | for (int i = 0; i < headers.length; i++) { |
54 | | - row[i] = switch (headers[i]) { |
55 | | - case "ni", "inode" -> String.valueOf(psseSubstationSwitchingDevice.getNi()); |
56 | | - case "nj", "jnode" -> String.valueOf(psseSubstationSwitchingDevice.getNj()); |
57 | | - case "ckt", "swdid" -> String.valueOf(psseSubstationSwitchingDevice.getCkt()); |
58 | | - case "name" -> psseSubstationSwitchingDevice.getName(); |
59 | | - case "type" -> String.valueOf(psseSubstationSwitchingDevice.getType()); |
60 | | - case "stat", "status" -> String.valueOf(psseSubstationSwitchingDevice.getStatus()); |
61 | | - case "nstat" -> String.valueOf(psseSubstationSwitchingDevice.getNstat()); |
62 | | - case "x", "xpu" -> String.valueOf(psseSubstationSwitchingDevice.getX()); |
63 | | - case "rate1" -> String.valueOf(psseSubstationSwitchingDevice.getRate1()); |
64 | | - case "rate2" -> String.valueOf(psseSubstationSwitchingDevice.getRate2()); |
65 | | - case "rate3" -> String.valueOf(psseSubstationSwitchingDevice.getRate3()); |
66 | | - default -> throw new PsseException("Unsupported header: " + headers[i]); |
67 | | - }; |
| 56 | + if ("rsetnam".equals(headers[i])) { |
| 57 | + // This header seems to be expected, but no variable seems consistent with it |
| 58 | + continue; |
| 59 | + } |
| 60 | + Optional<String> optionalValue = psseSubstationSwitchingDevice.headerToString(headers[i]); |
| 61 | + if (optionalValue.isEmpty()) { |
| 62 | + throw new PsseException("Unsupported header: " + headers[i]); |
| 63 | + } |
| 64 | + row[i] = optionalValue.get(); |
68 | 65 | } |
69 | 66 | return row; |
70 | 67 | } |
71 | 68 |
|
| 69 | + public Optional<String> headerToString(String header) { |
| 70 | + return switch (header) { |
| 71 | + case "ni", "inode" -> Optional.of(String.valueOf(getNi())); |
| 72 | + case "nj", "jnode" -> Optional.of(String.valueOf(getNj())); |
| 73 | + case "ckt", "swdid" -> Optional.of(String.valueOf(getCkt())); |
| 74 | + case "name" -> Optional.of(getName()); |
| 75 | + case "type" -> Optional.of(String.valueOf(getType())); |
| 76 | + case "stat", "status" -> Optional.of(String.valueOf(getStatus())); |
| 77 | + case "nstat" -> Optional.of(String.valueOf(getNstat())); |
| 78 | + case "x", "xpu" -> Optional.of(String.valueOf(getX())); |
| 79 | + case "rate1" -> Optional.of(String.valueOf(getRate1())); |
| 80 | + case "rate2" -> Optional.of(String.valueOf(getRate2())); |
| 81 | + case "rate3" -> Optional.of(String.valueOf(getRate3())); |
| 82 | + default -> Optional.empty(); |
| 83 | + }; |
| 84 | + } |
| 85 | + |
72 | 86 | public int getNi() { |
73 | 87 | return ni; |
74 | 88 | } |
|
0 commit comments