Browse Source

Protocol config하는 중

v2
gudae01 1 year ago
parent
commit
1c04a221bd
  1. 2
      src/main/java/org/mobidgim/mobidigimproject/config/objectmapper/ObjectMapperConfig.java
  2. 59
      src/main/java/org/mobidgim/mobidigimproject/model/register/RegisterDTO.java
  3. 12
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogInputLevel.java
  4. 1
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogPort.java
  5. 15
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/CanInput.java
  6. 18
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DR.java
  7. 27
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/FixmodeOn.java
  8. 27
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/HeadingImuOn.java
  9. 28
      src/main/java/org/mobidgim/mobidigimproject/model/register/enums/HeadingOn.java
  10. 3
      src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/CanField.java
  11. 6
      src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/ModbusField.java
  12. 3
      src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/OpcUaField.java
  13. 17
      src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java
  14. 852
      src/main/resources/static/index.html

2
src/main/java/org/mobidgim/mobidigimproject/config/objectmapper/ObjectMapperConfig.java

@ -21,7 +21,7 @@ public class ObjectMapperConfig {
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy());
// objectMapper.setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy());
return objectMapper;
}

59
src/main/java/org/mobidgim/mobidigimproject/model/register/RegisterDTO.java

@ -18,7 +18,7 @@ import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RegisterDTO {
private AnalogInputLevel AnalogInputLevel;
private AnalogInputLevel analogInputLevel;
private AnalogPort ai0;
@ -48,10 +48,6 @@ public class RegisterDTO {
private FourByte fourByte;
private InputDataType inputDataType;
private OutputDataType outputDataType;
private Protocol protocol;
private SpeedDataSource speedDataSource;
@ -62,52 +58,19 @@ public class RegisterDTO {
private String meid;
private HeadingOn headingOn;
private HeadingImuOn headingImuOn;
private FixmodeOn fixmodeOn;
@JsonProperty("MODBUS")
private List<ModbusField> modbusFields;
private List<ModbusField> MODBUS;
@JsonProperty("OPC_UA")
private List<OpcUaField> opcUaFields;
private List<OpcUaField> OPC_UA;
@JsonProperty("CAN")
private List<CanField> canFields;
// @JsonProperty("ai0")
// public String getAi0AsString(){
// return BoolToString.convertToAnalogPortValue(ai0);
// }
//
// @JsonProperty("ai1")
// public String getAi1AsString(){
// return BoolToString.convertToAnalogPortValue(ai1);
// }
//
// @JsonProperty("ai2")
// public String getAi2AsString(){
// return BoolToString.convertToAnalogPortValue(ai2);
// }
//
// @JsonProperty("ai3")
// public String getAi3AsString(){
// return BoolToString.convertToAnalogPortValue(ai3);
// }
//
// @JsonProperty("di0")
// public String getDi0AsString(){
// return BoolToString.convertToAnalogPortValue(di0);
// }
//
// @JsonProperty("di1")
// public String getDi1AsString(){
// return BoolToString.convertToAnalogPortValue(di1);
// }
//
// @JsonProperty("di2")
// public String getDi2AsString(){
// return BoolToString.convertToAnalogPortValue(di2);
// }
//
// @JsonProperty("di3")
// public String getDi3AsString(){
// return BoolToString.convertToAnalogPortValue(di3);
// }
private List<CanField> CAN;
}

12
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogInputLevel.java

@ -1,5 +1,6 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@ -16,4 +17,15 @@ public enum AnalogInputLevel {
public String getAnalogInput() {
return analogInput;
}
@JsonCreator
public static AnalogInputLevel fromValue(String value) {
for (AnalogInputLevel level : AnalogInputLevel.values()) {
if (level.analogInput.equals(value)) {
return level;
}
}
// 만약 유효하지 않은 값이 들어왔을 때 처리 (예: 예외 발생 또는 기본값 반환)
throw new IllegalArgumentException("Unknown AnalogInputLevel value: " + value);
}
}

1
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogPort.java

@ -22,7 +22,6 @@ public enum AnalogPort {
return AnalogPort.NOT_USED;
}
for(AnalogPort analogPort : AnalogPort.values()) {
if(analogPort.portValue.equals(portValue)) {
return analogPort;

15
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/CanInput.java

@ -1,16 +1,27 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum CanInput {
On("on"),
Off("off");
ON("on"),
OFF("off");
private final String canInput;
@JsonValue
public String getCanInput() {
return canInput;
}
@JsonCreator
public static CanInput fromValue(String value) {
for (CanInput ci : CanInput.values()) {
if (ci.canInput.equalsIgnoreCase(value)) { // 대소문자 무시를 위해 equalsIgnoreCase 사용 권장
return ci;
}
}
throw new IllegalArgumentException("Unknown CanInput value: " + value);
}
}

18
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DR.java

@ -1,17 +1,27 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum DR {
On("on"),
Off("off");
ON("on"),
OFF("off");
private final String DR;
private final String dr;
@JsonValue
public String getDR() {
return DR;
return dr;
}
@JsonCreator // ⭐ 추가 ⭐
public static DR fromValue(String value) {
for (DR drEnum : DR.values()) {
if (drEnum.dr.equalsIgnoreCase(value)) { // 대소문자 무시 (JSON 값에 따라)
return drEnum;
}
}
throw new IllegalArgumentException("Unknown DR value: " + value);
}
}

27
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/FixmodeOn.java

@ -0,0 +1,27 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum FixmodeOn {
ON("on"),
OFF("off");
private final String fixmodeOn;
@JsonValue
public String getFixmodeOn() {
return fixmodeOn;
}
@JsonCreator // ⭐ 추가 ⭐
public static org.mobidgim.mobidigimproject.model.register.enums.FixmodeOn fromValue(String value) {
for (org.mobidgim.mobidigimproject.model.register.enums.FixmodeOn fixmodeOnEnum : org.mobidgim.mobidigimproject.model.register.enums.FixmodeOn.values()) {
if (fixmodeOnEnum.fixmodeOn.equalsIgnoreCase(value)) { // 대소문자 무시 (JSON 값에 따라)
return fixmodeOnEnum;
}
}
throw new IllegalArgumentException("Unknown DR value: " + value);
}
}

27
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/HeadingImuOn.java

@ -0,0 +1,27 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum HeadingImuOn {
ON("on"),
OFF("off");
private final String headingImuOn;
@JsonValue
public String getHeadingImuOn() {
return headingImuOn;
}
@JsonCreator // ⭐ 추가 ⭐
public static HeadingImuOn fromValue(String value) {
for (HeadingImuOn headingImuOnEnum : HeadingImuOn.values()) {
if (headingImuOnEnum.headingImuOn.equalsIgnoreCase(value)) { // 대소문자 무시 (JSON 값에 따라)
return headingImuOnEnum;
}
}
throw new IllegalArgumentException("Unknown HeadingImuOn value: " + value);
}
}

28
src/main/java/org/mobidgim/mobidigimproject/model/register/enums/HeadingOn.java

@ -0,0 +1,28 @@
package org.mobidgim.mobidigimproject.model.register.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public enum HeadingOn {
ON("on"),
OFF("off");
private final String headingOn;
@JsonValue
public String getHeadingOn() {
return headingOn;
}
@JsonCreator // ⭐ 추가 ⭐
public static HeadingOn fromValue(String value) {
for (HeadingOn headingOnEnum : HeadingOn.values()) {
if (headingOnEnum.headingOn.equalsIgnoreCase(value)) { // 대소문자 무시 (JSON 값에 따라)
return headingOnEnum;
}
}
throw new IllegalArgumentException("Unknown DR value: " + value);
}
}

3
src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/CanField.java

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import org.mobidgim.mobidigimproject.model.register.enums.OutputDataType;
@Getter
@Setter
@ -15,7 +16,7 @@ public class CanField {
private String id;
@JsonProperty("odt") // output data type
private String outputDataType;
private OutputDataType outputDataType;
@JsonProperty("dv") // default value
private String defaultValue;

6
src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/ModbusField.java

@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import org.mobidgim.mobidigimproject.model.register.enums.InputDataType;
import org.mobidgim.mobidigimproject.model.register.enums.OutputDataType;
@Getter
@Setter
@ -13,12 +15,12 @@ public class ModbusField {
private String field;
@JsonProperty("idt") // input data type
private String inputDataType;
private InputDataType inputDataType;
private String addr; // address
@JsonProperty("odt") // output data type
private String outputDataType;
private OutputDataType outputDataType;
@JsonProperty("dv") // default value
private String defaultValue;

3
src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/OpcUaField.java

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import org.mobidgim.mobidigimproject.model.register.enums.OutputDataType;
@Getter
@Setter
@ -17,7 +18,7 @@ public class OpcUaField {
private String addr; // address
@JsonProperty("odt") // output data type
private String outputDataType;
private OutputDataType outputDataType;
@JsonProperty("dv") // default value
private String defaultValue;

17
src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java

@ -1,6 +1,7 @@
package org.mobidgim.mobidigimproject.service;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import org.mobidgim.mobidigimproject.model.device.DeviceDTO;
@ -31,6 +32,8 @@ public class SettingService {
@Autowired
public SettingService(ObjectMapper mapper) {
this.mapper = mapper;
this.mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
}
@ -59,15 +62,15 @@ public class SettingService {
public RegisterDTO saveFileWithRegister(RegisterDTO request) throws IOException {
if (request.getProtocol() != Protocol.OPC_UA) {
request.setOpcUaFields(null);
request.setOPC_UA(null);
}
if (request.getProtocol() != Protocol.MODBUS) {
request.setModbusFields(null);
request.setMODBUS(null);
}
if (request.getCanInput() != CanInput.On) {
request.setCanFields(null);
if (request.getCanInput() != CanInput.ON) {
request.setCAN(null);
}
@ -90,7 +93,11 @@ public class SettingService {
String filename = "./temp/registerConfig.json";
Path filePath = Paths.get(filename);
String jsonString = Files.readString(filePath);
return this.mapper.readValue(jsonString, RegisterDTO.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
RegisterDTO registerDTO = mapper.readValue(jsonString, RegisterDTO.class);
return registerDTO;
}
}

852
src/main/resources/static/index.html

File diff suppressed because it is too large
Loading…
Cancel
Save